diff --git a/.git-credentials/config b/.git-credentials/config
new file mode 100644
index 0000000..d9b7967
--- /dev/null
+++ b/.git-credentials/config
@@ -0,0 +1 @@
+http://be00af92b4fc91fd6fecbe95751702a51021981a@localhost:3000
diff --git a/agents/backend/avatars/assistant.jpg b/agents/backend/avatars/assistant.jpg
new file mode 100644
index 0000000..7caaeeb
Binary files /dev/null and b/agents/backend/avatars/assistant.jpg differ
diff --git a/canvas/index.html b/canvas/index.html
new file mode 100644
index 0000000..5ff8690
--- /dev/null
+++ b/canvas/index.html
@@ -0,0 +1,90 @@
+
+
+
+
OpenClaw Canvas
+
+
+
+
+
OpenClaw Canvas
+
Interactive test page (auto-reload enabled)
+
+
+
+
+
+
+
+
+
+
+
Ready.
+
+
+
diff --git a/completions/openclaw.bash b/completions/openclaw.bash
new file mode 100644
index 0000000..58f606d
--- /dev/null
+++ b/completions/openclaw.bash
@@ -0,0 +1,282 @@
+
+_openclaw_completion() {
+ local cur prev opts
+ COMPREPLY=()
+ cur="${COMP_WORDS[COMP_CWORD]}"
+ prev="${COMP_WORDS[COMP_CWORD-1]}"
+
+ # Simple top-level completion for now
+ opts="completion crestodian setup onboard configure config backup migrate doctor dashboard reset uninstall message mcp transcripts agent agents status health sessions commitments tasks acp gateway daemon logs system models infer approvals exec-policy nodes devices node sandbox tui cron dns docs proxy hooks webhooks qr clawbot pairing plugins channels directory security secrets skills update --version --container --dev --profile --log-level --no-color"
+
+ case "${prev}" in
+ completion)
+ opts=" --shell --install --write-state --yes"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ crestodian)
+ opts=" --message --yes --json"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ setup)
+ opts=" --workspace --wizard --non-interactive --accept-risk --mode --import-from --import-source --import-secrets --remote-url --remote-token"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ onboard)
+ opts=" --workspace --reset --reset-scope --non-interactive --modern --accept-risk --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --custom-image-input --custom-text-input --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --tailscale-reset-on-exit --install-daemon --no-install-daemon --skip-daemon --daemon-runtime --skip-channels --skip-skills --skip-bootstrap --skip-search --skip-health --skip-ui --suppress-gateway-token-output --skip-hooks --node-manager --import-from --import-source --import-secrets --json"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ configure)
+ opts=" --section"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ config)
+ opts="get set patch unset file schema validate --section"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ backup)
+ opts="create verify "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ migrate)
+ opts="list plan apply --from --include-secrets --no-auth-credentials --overwrite --dry-run --yes --skill --plugin --backup-output --no-backup --force --json --verify-plugin-apps"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ doctor)
+ opts=" --no-workspace-suggestions --yes --repair --fix --force --non-interactive --generate-gateway-token --allow-exec --deep --lint --post-upgrade --json --severity-min --skip --only"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ dashboard)
+ opts=" --no-open --yes"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ reset)
+ opts=" --scope --yes --non-interactive --dry-run"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ uninstall)
+ opts=" --service --state --workspace --app --all --yes --non-interactive --dry-run"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ message)
+ opts="send broadcast poll react reactions read edit delete pin unpin pins permissions search thread emoji sticker role channel member voice event timeout kick ban "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ mcp)
+ opts="serve list show status probe doctor add set tools configure login logout reload unset "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ transcripts)
+ opts="list show path "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ agent)
+ opts=" --message --message-file --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --local --deliver --json --timeout"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ agents)
+ opts="list bindings bind unbind add set-identity delete "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ status)
+ opts=" --json --all --usage --deep --timeout --verbose --debug"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ health)
+ opts=" --json --timeout --verbose --debug"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ sessions)
+ opts="list cleanup tail export-trajectory compact --json --verbose --store --agent --all-agents --active --limit"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ commitments)
+ opts="list dismiss --json --agent --status --all"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ tasks)
+ opts="list audit maintenance show notify cancel flow --json --runtime --status"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ acp)
+ opts="client --url --token --token-file --password --password-file --session --session-label --require-existing --reset-session --no-prefix-cwd --provenance --verbose"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ gateway)
+ opts="run status install uninstall start stop restart call usage-cost health stability diagnostics probe discover --port --bind --token --auth --password --password-file --tailscale --tailscale-reset-on-exit --allow-unconfigured --dev --reset --force --verbose --cli-backend-logs --claude-cli-logs --ws-log --compact --raw-stream --raw-stream-path"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ daemon)
+ opts="status install uninstall start stop restart "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ logs)
+ opts=" --limit --max-bytes --follow --interval --json --plain --no-color --local-time --utc --url --token --timeout --expect-final"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ system)
+ opts="event heartbeat presence "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ models)
+ opts="list status set set-image aliases fallbacks image-fallbacks scan auth --status-json --status-plain --agent"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ infer)
+ opts="list inspect model image audio tts video web embedding "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ approvals)
+ opts="get set allowlist "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ exec-policy)
+ opts="show preset set "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ nodes)
+ opts="status describe list pending approve reject remove rename invoke notify push camera screen location "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ devices)
+ opts="list remove clear approve reject rotate revoke "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ node)
+ opts="run status install uninstall stop start restart "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ sandbox)
+ opts="list recreate explain "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ tui)
+ opts=" --local --url --token --password --session --deliver --thinking --message --timeout-ms --history-limit"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ cron)
+ opts="status list add rm enable disable get show runs run edit "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ dns)
+ opts="setup "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ docs)
+ opts=" "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ proxy)
+ opts="start run validate coverage sessions query blob purge "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ hooks)
+ opts="list info check enable disable relay install update "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ webhooks)
+ opts="gmail "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ qr)
+ opts=" --remote --url --public-url --token --password --setup-code-only --no-ascii --json"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ clawbot)
+ opts="qr "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ pairing)
+ opts="list approve "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ plugins)
+ opts="list search inspect enable disable uninstall install update registry doctor build validate init marketplace "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ channels)
+ opts="list status capabilities resolve logs add remove login logout "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ directory)
+ opts="self peers groups "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ security)
+ opts="audit "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ secrets)
+ opts="reload audit configure apply "
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ skills)
+ opts="search install update verify workshop list info check --agent"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ update)
+ opts="repair finalize wizard status --json --no-restart --dry-run --channel --tag --timeout --yes"
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ ;;
+ esac
+
+ if [[ ${cur} == -* ]] ; then
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+ return 0
+ fi
+
+ COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
+}
+
+complete -F _openclaw_completion openclaw
diff --git a/completions/openclaw.fish b/completions/openclaw.fish
new file mode 100644
index 0000000..74c9647
--- /dev/null
+++ b/completions/openclaw.fish
@@ -0,0 +1,2201 @@
+
+function __openclaw_command_path_matches
+ set -l expected
+ set -l value_options
+ set -l reading_value_options 0
+ for arg in $argv
+ if test "$arg" = "--"
+ set reading_value_options 1
+ continue
+ end
+ if test $reading_value_options -eq 1
+ set -a value_options $arg
+ else
+ set -a expected $arg
+ end
+ end
+ set -l tokens (commandline -opc)
+ set -e tokens[1]
+ set -l command_tokens
+ set -l skip_next 0
+ for token in $tokens
+ if test $skip_next -eq 1
+ set skip_next 0
+ continue
+ end
+ set -l flag (string split -m1 "=" -- $token)[1]
+ if contains -- $flag $value_options
+ if not string match -q -- "*=*" $token
+ set skip_next 1
+ end
+ continue
+ end
+ if string match -q -- "-*" $token
+ continue
+ end
+ set -a command_tokens $token
+ end
+ for i in (seq (count $expected))
+ if test "$command_tokens[$i]" != "$expected[$i]"
+ return 1
+ end
+ end
+ return 0
+end
+complete -c openclaw -n "__fish_use_subcommand" -a "completion" -d 'Generate shell completion script'
+complete -c openclaw -n "__fish_use_subcommand" -a "crestodian" -d 'Open the ring-zero setup and repair helper'
+complete -c openclaw -n "__fish_use_subcommand" -a "setup" -d 'Create baseline config/workspace files; use --wizard for full onboarding'
+complete -c openclaw -n "__fish_use_subcommand" -a "onboard" -d 'Guided setup for auth, models, Gateway, workspace, channels, and skills'
+complete -c openclaw -n "__fish_use_subcommand" -a "configure" -d 'Interactive configuration for credentials, channels, gateway, and agent defaults'
+complete -c openclaw -n "__fish_use_subcommand" -a "config" -d 'Non-interactive config helpers (get/set/patch/unset/file/schema/validate). Run without subcommand for guided setup.'
+complete -c openclaw -n "__fish_use_subcommand" -a "backup" -d 'Create and verify local backup archives for OpenClaw state'
+complete -c openclaw -n "__fish_use_subcommand" -a "migrate" -d 'Import state from another agent system'
+complete -c openclaw -n "__fish_use_subcommand" -a "doctor" -d 'Health checks + quick fixes for the gateway and channels'
+complete -c openclaw -n "__fish_use_subcommand" -a "dashboard" -d 'Open the Control UI with your current token'
+complete -c openclaw -n "__fish_use_subcommand" -a "reset" -d 'Reset local config/state (keeps the CLI installed)'
+complete -c openclaw -n "__fish_use_subcommand" -a "uninstall" -d 'Uninstall the gateway service + local data (CLI remains)'
+complete -c openclaw -n "__fish_use_subcommand" -a "message" -d 'Send, read, and manage messages and channel actions'
+complete -c openclaw -n "__fish_use_subcommand" -a "mcp" -d 'Manage OpenClaw mcp.servers config and channel bridge'
+complete -c openclaw -n "__fish_use_subcommand" -a "transcripts" -d 'Inspect stored transcripts'
+complete -c openclaw -n "__fish_use_subcommand" -a "agent" -d 'Run an agent turn via the Gateway (use --local for embedded)'
+complete -c openclaw -n "__fish_use_subcommand" -a "agents" -d 'Manage isolated agents (workspaces + auth + routing)'
+complete -c openclaw -n "__fish_use_subcommand" -a "status" -d 'Show channel health and recent session recipients'
+complete -c openclaw -n "__fish_use_subcommand" -a "health" -d 'Fetch health from the running gateway'
+complete -c openclaw -n "__fish_use_subcommand" -a "sessions" -d 'List stored conversation sessions'
+complete -c openclaw -n "__fish_use_subcommand" -a "commitments" -d 'List and manage inferred follow-up commitments'
+complete -c openclaw -n "__fish_use_subcommand" -a "tasks" -d 'Inspect durable background tasks and TaskFlow state'
+complete -c openclaw -n "__fish_use_subcommand" -a "acp" -d 'Run an ACP bridge backed by the Gateway'
+complete -c openclaw -n "__fish_use_subcommand" -a "gateway" -d 'Run, inspect, and query the WebSocket Gateway'
+complete -c openclaw -n "__fish_use_subcommand" -a "daemon" -d 'Manage the Gateway service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__fish_use_subcommand" -a "logs" -d 'Tail gateway file logs via RPC'
+complete -c openclaw -n "__fish_use_subcommand" -a "system" -d 'System tools (events, heartbeat, presence)'
+complete -c openclaw -n "__fish_use_subcommand" -a "models" -d 'Model discovery, scanning, and configuration'
+complete -c openclaw -n "__fish_use_subcommand" -a "infer" -d 'Run provider-backed inference commands through a stable CLI surface'
+complete -c openclaw -n "__fish_use_subcommand" -a "approvals" -d 'Manage exec approvals (gateway or node host)'
+complete -c openclaw -n "__fish_use_subcommand" -a "exec-policy" -d 'Show or synchronize requested exec policy with host approvals'
+complete -c openclaw -n "__fish_use_subcommand" -a "nodes" -d 'Manage gateway-owned nodes (pairing, status, invoke, and media)'
+complete -c openclaw -n "__fish_use_subcommand" -a "devices" -d 'Device pairing and auth tokens'
+complete -c openclaw -n "__fish_use_subcommand" -a "node" -d 'Run and manage the headless node host service'
+complete -c openclaw -n "__fish_use_subcommand" -a "sandbox" -d 'Manage sandbox containers (Docker-based agent isolation)'
+complete -c openclaw -n "__fish_use_subcommand" -a "tui" -d 'Open a terminal UI connected to the Gateway'
+complete -c openclaw -n "__fish_use_subcommand" -a "cron" -d 'Manage cron jobs (via Gateway)'
+complete -c openclaw -n "__fish_use_subcommand" -a "dns" -d 'DNS helpers for wide-area discovery (Tailscale + CoreDNS)'
+complete -c openclaw -n "__fish_use_subcommand" -a "docs" -d 'Search the live OpenClaw docs'
+complete -c openclaw -n "__fish_use_subcommand" -a "proxy" -d 'Run the OpenClaw debug proxy and inspect captured traffic'
+complete -c openclaw -n "__fish_use_subcommand" -a "hooks" -d 'Manage internal agent hooks'
+complete -c openclaw -n "__fish_use_subcommand" -a "webhooks" -d 'Webhook helpers and integrations'
+complete -c openclaw -n "__fish_use_subcommand" -a "qr" -d 'Generate a mobile pairing QR code and setup code'
+complete -c openclaw -n "__fish_use_subcommand" -a "clawbot" -d 'Legacy clawbot command aliases'
+complete -c openclaw -n "__fish_use_subcommand" -a "pairing" -d 'Secure DM pairing (approve inbound requests)'
+complete -c openclaw -n "__fish_use_subcommand" -a "plugins" -d 'Manage OpenClaw plugins and extensions'
+complete -c openclaw -n "__fish_use_subcommand" -a "channels" -d 'Manage connected chat channels and accounts'
+complete -c openclaw -n "__fish_use_subcommand" -a "directory" -d 'Lookup contact and group IDs (self, peers, groups) for supported chat channels'
+complete -c openclaw -n "__fish_use_subcommand" -a "security" -d 'Audit local config and state for common security foot-guns'
+complete -c openclaw -n "__fish_use_subcommand" -a "secrets" -d 'Secrets runtime controls'
+complete -c openclaw -n "__fish_use_subcommand" -a "skills" -d 'List and inspect available skills'
+complete -c openclaw -n "__fish_use_subcommand" -a "update" -d 'Update OpenClaw and inspect update channel status'
+complete -c openclaw -n "__fish_use_subcommand" -s V -l version -d 'output the version number'
+complete -c openclaw -n "__fish_use_subcommand" -l container -d 'Run the CLI inside a running Podman/Docker container named (default: env OPENCLAW_CONTAINER)'
+complete -c openclaw -n "__fish_use_subcommand" -l dev -d 'Dev profile: isolate state under ~/.openclaw-dev, default gateway port 19001, and shift derived ports (browser/canvas)'
+complete -c openclaw -n "__fish_use_subcommand" -l profile -d 'Use a named profile (isolates OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATH under ~/.openclaw-)'
+complete -c openclaw -n "__fish_use_subcommand" -l log-level -d 'Global log level override for file + console (silent|fatal|error|warn|info|debug|trace)'
+complete -c openclaw -n "__fish_use_subcommand" -l no-color -d 'Disable ANSI colors'
+complete -c openclaw -n "__openclaw_command_path_matches completion -- --container --profile --log-level -s --shell" -s s -l shell -d 'Shell to generate completion for (default: zsh)'
+complete -c openclaw -n "__openclaw_command_path_matches completion -- --container --profile --log-level -s --shell" -s i -l install -d 'Install completion script to shell profile'
+complete -c openclaw -n "__openclaw_command_path_matches completion -- --container --profile --log-level -s --shell" -l write-state -d 'Write completion scripts to $OPENCLAW_STATE_DIR/completions (no stdout)'
+complete -c openclaw -n "__openclaw_command_path_matches completion -- --container --profile --log-level -s --shell" -s y -l yes -d 'Skip confirmation (non-interactive)'
+complete -c openclaw -n "__openclaw_command_path_matches crestodian -- --container --profile --log-level -m --message" -s m -l message -d 'Run one Crestodian request'
+complete -c openclaw -n "__openclaw_command_path_matches crestodian -- --container --profile --log-level -m --message" -l yes -d 'Approve persistent config writes for this request'
+complete -c openclaw -n "__openclaw_command_path_matches crestodian -- --container --profile --log-level -m --message" -l json -d 'Output startup overview as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l workspace -d 'Agent workspace directory (default: ~/.openclaw/workspace; stored as agents.defaults.workspace)'
+complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l wizard -d 'Run interactive onboarding'
+complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l non-interactive -d 'Run onboarding without prompts'
+complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l accept-risk -d 'Acknowledge that agents are powerful and full system access is risky (required for --non-interactive)'
+complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l mode -d 'Onboard mode: local|remote'
+complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l import-from -d 'Migration provider to run during onboarding'
+complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l import-source -d 'Source agent home for --import-from'
+complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l import-secrets -d 'Import supported secrets during onboarding migration'
+complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l remote-url -d 'Remote Gateway WebSocket URL'
+complete -c openclaw -n "__openclaw_command_path_matches setup -- --container --profile --log-level --workspace --mode --import-from --import-source --remote-url --remote-token" -l remote-token -d 'Remote Gateway token (optional)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l workspace -d 'Agent workspace directory (default: ~/.openclaw/workspace)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l reset -d 'Reset config + credentials + sessions before running onboard (workspace only with --reset-scope full)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l reset-scope -d 'Reset scope: config|config+creds+sessions|full'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l non-interactive -d 'Run without prompts'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l modern -d 'Use the conversational setup/repair assistant'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l accept-risk -d 'Acknowledge that agents are powerful and full system access is risky (required for --non-interactive)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l flow -d 'Onboard flow: quickstart|advanced|manual|import'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l mode -d 'Onboard mode: local|remote'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l auth-choice -d 'Auth: custom-api-key|skip|claude-cli|apiKey|anthropic-cli|setup-token|arceeai-api-key|byteplus-api-key|cerebras-api-key|openai-device-code|openai|chutes|chutes-api-key|cloudflare-ai-gateway-api-key|zai-cn|codex|qwen-api-key-cn|qwen-api-key|zai-coding-cn|zai-coding-global|cohere-api-key|copilot-proxy|deepinfra-api-key|deepseek-api-key|fireworks-api-key|google-gemini-cli|github-copilot|zai-global|gmi-api-key|gemini-api-key|google-vertex-api-key|groq-api-key|huggingface-api-key|kilocode-api-key|kimi-code-api-key|litellm-api-key|lmstudio|microsoft-foundry-apikey|microsoft-foundry-entra|minimax-cn-api|minimax-global-api|minimax-cn-oauth|minimax-global-oauth|mistral-api-key|moonshot-api-key|moonshot-api-key-cn|novita-api-key|nvidia-api-key|ollama|ollama-cloud|openai-api-key|opencode-go|opencode-zen|arceeai-openrouter|openrouter-api-key|openrouter-oauth|qianfan-api-key|qwen-oauth|sglang|qwen-standard-api-key-cn|qwen-standard-api-key|stepfun-standard-api-key-cn|stepfun-standard-api-key-intl|stepfun-plan-api-key-cn|stepfun-plan-api-key-intl|synthetic-api-key|tokenhub-api-key|together-api-key|venice-api-key|ai-gateway-api-key|vllm|volcengine-api-key|xai-api-key|xai-device-code|xai-oauth|xiaomi-api-key|xiaomi-token-plan-cn|xiaomi-token-plan-ams|xiaomi-token-plan-sgp|zai-api-key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l token-provider -d 'Token provider id (non-interactive; used with --auth-choice token)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l token -d 'Token value (non-interactive; used with --auth-choice token)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l token-profile-id -d 'Auth profile id (non-interactive; default: :manual)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l token-expires-in -d 'Optional token expiry duration (e.g. 365d, 12h)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l secret-input-mode -d 'API key persistence mode: plaintext|ref (default: plaintext)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l cloudflare-ai-gateway-account-id -d 'Cloudflare Account ID'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l cloudflare-ai-gateway-gateway-id -d 'Cloudflare AI Gateway ID'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l alibaba-model-studio-api-key -d 'Alibaba Model Studio API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l anthropic-api-key -d 'Anthropic API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l byteplus-api-key -d 'BytePlus API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l cohere-api-key -d 'Cohere API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l comfy-api-key -d 'Comfy Cloud API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l fal-api-key -d 'fal API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l github-copilot-token -d 'GitHub Copilot OAuth token'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gemini-api-key -d 'Gemini API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l huggingface-api-key -d 'Hugging Face API key (HF token)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l litellm-api-key -d 'LiteLLM API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l lmstudio-api-key -d 'LM Studio API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l minimax-api-key -d 'MiniMax API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l mistral-api-key -d 'Mistral API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l novita-api-key -d 'NovitaAI API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l nvidia-api-key -d 'NVIDIA API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l ollama-cloud-api-key -d 'Ollama Cloud API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l openai-api-key -d 'OpenAI API Key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l opencode-zen-api-key -d 'OpenCode API key (Zen catalog)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l opencode-go-api-key -d 'OpenCode API key (Go catalog)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l openrouter-api-key -d 'OpenRouter API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l runway-api-key -d 'Runway API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l synthetic-api-key -d 'Synthetic API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l together-api-key -d 'Together AI API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l volcengine-api-key -d 'Volcano Engine API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l vydra-api-key -d 'Vydra API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l xai-api-key -d 'xAI API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l xiaomi-api-key -d 'Xiaomi MiMo pay-as-you-go API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l xiaomi-token-plan-api-key -d 'Xiaomi MiMo Token Plan API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l deepseek-api-key -d 'DeepSeek API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l arceeai-api-key -d 'Arcee AI API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l cerebras-api-key -d 'Cerebras API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l chutes-api-key -d 'Chutes API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l cloudflare-ai-gateway-api-key -d 'Cloudflare AI Gateway API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l deepinfra-api-key -d 'DeepInfra API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gmi-api-key -d 'GMI Cloud API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l groq-api-key -d 'Groq API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l kilocode-api-key -d 'Kilo Gateway API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l kimi-code-api-key -d 'Kimi Code API key (subscription)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l pixverse-api-key -d 'PixVerse API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l qianfan-api-key -d 'QIANFAN API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l modelstudio-standard-api-key-cn -d 'Qwen Cloud standard API key (China)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l modelstudio-standard-api-key -d 'Qwen Cloud standard API key (Global/Intl)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l modelstudio-api-key-cn -d 'Qwen Cloud Coding Plan API key (China)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l modelstudio-api-key -d 'Qwen Cloud Coding Plan API key (Global/Intl)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l qwen-oauth-token -d 'Qwen OAuth token'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l fireworks-api-key -d 'Fireworks API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l moonshot-api-key -d 'Moonshot API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l tokenhub-api-key -d 'Tencent TokenHub API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l venice-api-key -d 'Venice API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l ai-gateway-api-key -d 'Vercel AI Gateway API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l zai-api-key -d 'Z.AI API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l stepfun-api-key -d 'StepFun API key'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l custom-base-url -d 'Custom provider base URL'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l custom-api-key -d 'Custom provider API key (optional)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l custom-model-id -d 'Custom provider model ID'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l custom-provider-id -d 'Custom provider ID (optional; auto-derived by default)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l custom-compatibility -d 'Custom provider API compatibility: openai|openai-responses|anthropic (default: openai)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l custom-image-input -d 'Mark the custom provider model as image-capable'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l custom-text-input -d 'Mark the custom provider model as text-only'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gateway-port -d 'Gateway port'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gateway-bind -d 'Gateway bind: loopback|tailnet|lan|auto|custom'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gateway-auth -d 'Gateway auth: token|password'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gateway-token -d 'Gateway token (token auth)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gateway-token-ref-env -d 'Gateway token SecretRef env var name (token auth; e.g. OPENCLAW_GATEWAY_TOKEN)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l gateway-password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l remote-url -d 'Remote Gateway WebSocket URL'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l remote-token -d 'Remote Gateway token (optional)'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l tailscale -d 'Tailscale: off|serve|funnel'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l tailscale-reset-on-exit -d 'Reset tailscale serve/funnel on exit'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l install-daemon -d 'Install gateway service'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l no-install-daemon -d 'Skip gateway service install'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-daemon -d 'Skip gateway service install'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l daemon-runtime -d 'Daemon runtime: node|bun'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-channels -d 'Skip channel setup'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-skills -d 'Skip skills setup'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-bootstrap -d 'Skip creating default agent workspace files'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-search -d 'Skip search provider setup'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-health -d 'Skip health check'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-ui -d 'Skip Control UI/TUI prompts'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l suppress-gateway-token-output -d 'Suppress token-bearing Gateway/UI output'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l skip-hooks -d 'Skip hook setup'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l node-manager -d 'Node manager for skills: npm|pnpm|bun'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l import-from -d 'Migration provider to run during onboarding'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l import-source -d 'Source agent home for --import-from'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l import-secrets -d 'Import supported secrets during onboarding migration'
+complete -c openclaw -n "__openclaw_command_path_matches onboard -- --container --profile --log-level --workspace --reset-scope --flow --mode --auth-choice --token-provider --token --token-profile-id --token-expires-in --secret-input-mode --cloudflare-ai-gateway-account-id --cloudflare-ai-gateway-gateway-id --alibaba-model-studio-api-key --anthropic-api-key --byteplus-api-key --cohere-api-key --comfy-api-key --fal-api-key --github-copilot-token --gemini-api-key --huggingface-api-key --litellm-api-key --lmstudio-api-key --minimax-api-key --mistral-api-key --novita-api-key --nvidia-api-key --ollama-cloud-api-key --openai-api-key --opencode-zen-api-key --opencode-go-api-key --openrouter-api-key --runway-api-key --synthetic-api-key --together-api-key --volcengine-api-key --vydra-api-key --xai-api-key --xiaomi-api-key --xiaomi-token-plan-api-key --deepseek-api-key --arceeai-api-key --cerebras-api-key --chutes-api-key --cloudflare-ai-gateway-api-key --deepinfra-api-key --gmi-api-key --groq-api-key --kilocode-api-key --kimi-code-api-key --pixverse-api-key --qianfan-api-key --modelstudio-standard-api-key-cn --modelstudio-standard-api-key --modelstudio-api-key-cn --modelstudio-api-key --qwen-oauth-token --fireworks-api-key --moonshot-api-key --tokenhub-api-key --venice-api-key --ai-gateway-api-key --zai-api-key --stepfun-api-key --custom-base-url --custom-api-key --custom-model-id --custom-provider-id --custom-compatibility --gateway-port --gateway-bind --gateway-auth --gateway-token --gateway-token-ref-env --gateway-password --remote-url --remote-token --tailscale --daemon-runtime --node-manager --import-from --import-source" -l json -d 'Output JSON summary'
+complete -c openclaw -n "__openclaw_command_path_matches configure -- --container --profile --log-level --section" -l section -d 'Configuration sections (repeatable). Options: workspace, model, web, gateway, daemon, channels, plugins, skills, health'
+complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -a "get" -d 'Get a config value by dot path'
+complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -a "set" -d 'Set config values by path (value mode, ref/provider builder mode, or batch JSON mode).
+Examples:
+openclaw config set gateway.port 19001 --strict-json
+openclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN
+openclaw config set secrets.providers.vault --provider-source file --provider-path /etc/openclaw/secrets.json --provider-mode json
+openclaw config set --batch-file ./config-set.batch.json --dry-run'
+complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -a "patch" -d 'Patch config from a JSON5 object in one validated write.
+Objects merge recursively, arrays/scalars replace, and null deletes a path.
+Examples:
+openclaw config patch --file ./openclaw.patch.json5 --dry-run
+openclaw config patch --stdin'
+complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -a "unset" -d 'Remove a config value by dot path'
+complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -a "file" -d 'Print the active config file path'
+complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -a "schema" -d 'Print the JSON schema for openclaw.json'
+complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -a "validate" -d 'Validate the current config against the schema without starting the gateway'
+complete -c openclaw -n "__openclaw_command_path_matches config -- --container --profile --log-level --section" -l section -d 'Configuration sections for guided setup (repeatable). Use with no subcommand.'
+complete -c openclaw -n "__openclaw_command_path_matches config get -- --container --profile --log-level --section" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l strict-json -d 'Strict JSON parsing (error instead of raw string fallback)'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l json -d 'Legacy alias for --strict-json'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l dry-run -d 'Validate changes without writing openclaw.json (checks run in builder/json/batch modes; exec SecretRefs are skipped unless --allow-exec is set)'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l allow-exec -d 'Dry-run only: allow exec SecretRef resolvability checks (may execute provider commands)'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l merge -d 'Merge object/map values instead of replacing the target path'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l replace -d 'Allow full replacement of protected map/list paths such as agents.defaults.models'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l ref-provider -d 'SecretRef builder: provider alias'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l ref-source -d 'SecretRef builder: source (env|file|exec)'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l ref-id -d 'SecretRef builder: ref id'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-source -d 'Provider builder: source (env|file|exec)'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-allowlist -d 'Provider builder (env): allowlist entry (repeatable)'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-path -d 'Provider builder (file): path'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-mode -d 'Provider builder (file): mode (singleValue|json)'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-timeout-ms -d 'Provider builder (file|exec): timeout ms'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-max-bytes -d 'Provider builder (file): max bytes'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-command -d 'Provider builder (exec): absolute command path'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-arg -d 'Provider builder (exec): command arg (repeatable)'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-no-output-timeout-ms -d 'Provider builder (exec): no-output timeout ms'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-max-output-bytes -d 'Provider builder (exec): max output bytes'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-json-only -d 'Provider builder (exec): require JSON output'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-env -d 'Provider builder (exec): env assignment (repeatable)'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-pass-env -d 'Provider builder (exec): pass host env var (repeatable)'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-trusted-dir -d 'Provider builder (exec): trusted directory (repeatable)'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-allow-insecure-path -d 'Provider builder (file|exec): bypass strict path permission checks'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l provider-allow-symlink-command -d 'Provider builder (exec): allow command symlink path'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l batch-json -d 'Batch mode: JSON array of set operations'
+complete -c openclaw -n "__openclaw_command_path_matches config set -- --container --profile --log-level --section --ref-provider --ref-source --ref-id --provider-source --provider-allowlist --provider-path --provider-mode --provider-timeout-ms --provider-max-bytes --provider-command --provider-arg --provider-no-output-timeout-ms --provider-max-output-bytes --provider-env --provider-pass-env --provider-trusted-dir --batch-json --batch-file" -l batch-file -d 'Batch mode: read JSON array of set operations from file'
+complete -c openclaw -n "__openclaw_command_path_matches config patch -- --container --profile --log-level --section --file --replace-path" -l file -d 'Read a JSON5 config patch object from file'
+complete -c openclaw -n "__openclaw_command_path_matches config patch -- --container --profile --log-level --section --file --replace-path" -l stdin -d 'Read a JSON5 config patch object from stdin'
+complete -c openclaw -n "__openclaw_command_path_matches config patch -- --container --profile --log-level --section --file --replace-path" -l dry-run -d 'Validate changes without writing openclaw.json (checks schema and SecretRef resolvability; exec SecretRefs are skipped unless --allow-exec is set)'
+complete -c openclaw -n "__openclaw_command_path_matches config patch -- --container --profile --log-level --section --file --replace-path" -l allow-exec -d 'Dry-run only: allow exec SecretRef resolvability checks (may execute provider commands)'
+complete -c openclaw -n "__openclaw_command_path_matches config patch -- --container --profile --log-level --section --file --replace-path" -l json -d 'Output dry-run result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches config patch -- --container --profile --log-level --section --file --replace-path" -l replace-path -d 'Replace the object or array at this dot/bracket path instead of recursively applying it (repeatable)'
+complete -c openclaw -n "__openclaw_command_path_matches config unset -- --container --profile --log-level --section" -l dry-run -d 'validate the removal without writing the config file'
+complete -c openclaw -n "__openclaw_command_path_matches config unset -- --container --profile --log-level --section" -l allow-exec -d 'allow exec SecretRef providers during --dry-run'
+complete -c openclaw -n "__openclaw_command_path_matches config unset -- --container --profile --log-level --section" -l json -d 'print dry-run result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches config validate -- --container --profile --log-level --section" -l json -d 'Output validation result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches backup -- --container --profile --log-level" -a "create" -d 'Write a backup archive for config, credentials, sessions, and workspaces'
+complete -c openclaw -n "__openclaw_command_path_matches backup -- --container --profile --log-level" -a "verify" -d 'Validate a backup archive and its embedded manifest'
+complete -c openclaw -n "__openclaw_command_path_matches backup create -- --container --profile --log-level --output" -l output -d 'Archive path or destination directory'
+complete -c openclaw -n "__openclaw_command_path_matches backup create -- --container --profile --log-level --output" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches backup create -- --container --profile --log-level --output" -l dry-run -d 'Print the backup plan without writing the archive'
+complete -c openclaw -n "__openclaw_command_path_matches backup create -- --container --profile --log-level --output" -l verify -d 'Verify the archive after writing it'
+complete -c openclaw -n "__openclaw_command_path_matches backup create -- --container --profile --log-level --output" -l only-config -d 'Back up only the active JSON config file'
+complete -c openclaw -n "__openclaw_command_path_matches backup create -- --container --profile --log-level --output" -l no-include-workspace -d 'Exclude workspace directories from the backup'
+complete -c openclaw -n "__openclaw_command_path_matches backup verify -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -a "list" -d 'List migration providers'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -a "plan" -d 'Preview a migration without changing OpenClaw state'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -a "apply" -d 'Apply a migration after a verified backup'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l from -d 'Source directory to migrate from'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l include-secrets -d 'Import supported credentials and secrets'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l no-auth-credentials -d 'Skip auth credential migration'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l overwrite -d 'Overwrite conflicting target files after item-level backups'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l dry-run -d 'Preview only; do not apply changes'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l yes -d 'Apply without prompting after preview'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l skill -d 'Select one skill to migrate by name or item id; repeat for multiple skills'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l plugin -d 'Select one Codex plugin to migrate by name or item id; repeat for multiple plugins'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l backup-output -d 'Pre-migration backup archive path or directory'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l no-backup -d 'Skip the pre-migration OpenClaw backup'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l force -d 'Allow dangerous options such as --no-backup'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches migrate -- --container --profile --log-level --from --skill --plugin --backup-output" -l verify-plugin-apps -d 'Codex only: verify source plugin app accessibility with app/list before planning native plugin activation'
+complete -c openclaw -n "__openclaw_command_path_matches migrate list -- --container --profile --log-level --from --skill --plugin --backup-output" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l from -d 'Source directory to migrate from'
+complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l include-secrets -d 'Import supported credentials and secrets'
+complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l no-auth-credentials -d 'Skip auth credential migration'
+complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l overwrite -d 'Overwrite conflicting target files after item-level backups'
+complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l skill -d 'Select one skill to migrate by name or item id; repeat for multiple skills'
+complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l plugin -d 'Select one Codex plugin to migrate by name or item id; repeat for multiple plugins'
+complete -c openclaw -n "__openclaw_command_path_matches migrate plan -- --container --profile --log-level --from --skill --plugin --backup-output" -l verify-plugin-apps -d 'Codex only: verify source plugin app accessibility with app/list before planning native plugin activation'
+complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l from -d 'Source directory to migrate from'
+complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l include-secrets -d 'Import supported credentials and secrets'
+complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l no-auth-credentials -d 'Skip auth credential migration'
+complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l overwrite -d 'Overwrite conflicting target files after item-level backups'
+complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l skill -d 'Select one skill to migrate by name or item id; repeat for multiple skills'
+complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l plugin -d 'Select one Codex plugin to migrate by name or item id; repeat for multiple plugins'
+complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l verify-plugin-apps -d 'Codex only: verify source plugin app accessibility with app/list before planning native plugin activation'
+complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l yes -d 'Apply without prompting'
+complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l backup-output -d 'Pre-migration backup archive path or directory'
+complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l no-backup -d 'Skip the pre-migration OpenClaw backup'
+complete -c openclaw -n "__openclaw_command_path_matches migrate apply -- --container --profile --log-level --from --skill --plugin --backup-output" -l force -d 'Allow dangerous options such as --no-backup'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l no-workspace-suggestions -d 'Disable workspace memory system suggestions'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l yes -d 'Accept defaults without prompting'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l repair -d 'Apply recommended repairs without prompting'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l fix -d 'Apply recommended repairs (alias for --repair)'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l force -d 'Apply aggressive repairs (overwrites custom service config)'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l non-interactive -d 'Run without prompts (safe migrations only)'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l generate-gateway-token -d 'Generate and configure a gateway token'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l allow-exec -d 'Allow doctor to execute exec SecretRefs while verifying configured secrets'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l deep -d 'Scan system services for extra gateway installs'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l lint -d 'Run read-only health checks and report findings'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l post-upgrade -d 'Emit plugin-compat findings only (machine-readable with --json)'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l json -d 'With --lint or --post-upgrade: emit machine-readable JSON output'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l severity-min -d 'With --lint: drop findings below this severity (info|warning|error)'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l skip -d 'With --lint: skip a specific check id (repeatable)'
+complete -c openclaw -n "__openclaw_command_path_matches doctor -- --container --profile --log-level --severity-min --skip --only" -l only -d 'With --lint: run only the specified check id (repeatable)'
+complete -c openclaw -n "__openclaw_command_path_matches dashboard -- --container --profile --log-level" -l no-open -d 'Print URL but do not launch a browser'
+complete -c openclaw -n "__openclaw_command_path_matches dashboard -- --container --profile --log-level" -l yes -d 'Start/install the gateway without prompting when needed'
+complete -c openclaw -n "__openclaw_command_path_matches reset -- --container --profile --log-level --scope" -l scope -d 'config|config+creds+sessions|full (default: interactive prompt)'
+complete -c openclaw -n "__openclaw_command_path_matches reset -- --container --profile --log-level --scope" -l yes -d 'Skip confirmation prompts'
+complete -c openclaw -n "__openclaw_command_path_matches reset -- --container --profile --log-level --scope" -l non-interactive -d 'Disable prompts (requires --scope + --yes)'
+complete -c openclaw -n "__openclaw_command_path_matches reset -- --container --profile --log-level --scope" -l dry-run -d 'Print actions without removing files'
+complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l service -d 'Remove the gateway service'
+complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l state -d 'Remove state + config'
+complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l workspace -d 'Remove workspace dirs'
+complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l app -d 'Remove the macOS app'
+complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l all -d 'Remove service + state + workspace + app'
+complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l yes -d 'Skip confirmation prompts'
+complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l non-interactive -d 'Disable prompts (requires --yes)'
+complete -c openclaw -n "__openclaw_command_path_matches uninstall -- --container --profile --log-level" -l dry-run -d 'Print actions without removing files'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "send" -d 'Send a message'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "broadcast" -d 'Broadcast a message to multiple targets'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "poll" -d 'Send a poll'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "react" -d 'Add or remove a reaction'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "reactions" -d 'List reactions on a message'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "read" -d 'Read recent messages'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "edit" -d 'Edit a message'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "delete" -d 'Delete a message'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "pin" -d 'Pin a message'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "unpin" -d 'Unpin a message'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "pins" -d 'List pinned messages'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "permissions" -d 'Fetch channel permissions'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "search" -d 'Search Discord messages'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "thread" -d 'Thread actions'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "emoji" -d 'Emoji actions'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "sticker" -d 'Sticker actions'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "role" -d 'Role actions'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "channel" -d 'Channel actions'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "member" -d 'Member actions'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "voice" -d 'Voice actions'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "event" -d 'Event actions'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "timeout" -d 'Timeout a member'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "kick" -d 'Kick a member'
+complete -c openclaw -n "__openclaw_command_path_matches message -- --container --profile --log-level" -a "ban" -d 'Ban a member'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -s m -l message -d 'Message body (required unless --media is set)'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l media -d 'Attach media (image/audio/video/document). Accepts local paths or URLs.'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l presentation -d 'Shared presentation payload as JSON (text, context, dividers, buttons, selects)'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l delivery -d 'Shared delivery preferences as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l pin -d 'Request that the delivered message be pinned when supported'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l reply-to -d 'Reply-to message id'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l thread-id -d 'Thread id (Telegram forum thread)'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l gif-playback -d 'Treat video media as GIF playback (WhatsApp only).'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l force-document -d 'Send media as document to avoid channel compression (Telegram, WhatsApp). Applies to images, GIFs, and videos.'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l silent -d 'Send message silently without notification (Telegram + Discord)'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message send -- --container --profile --log-level -m --message -t --target --media --presentation --delivery --reply-to --thread-id --channel --account" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l targets -d 'Recipient/channel targets (same format as --target); accepts ids or names when the directory is available.'
+complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l message -d 'Message to send'
+complete -c openclaw -n "__openclaw_command_path_matches message broadcast -- --container --profile --log-level --channel --account --targets --message --media" -l media -d 'Media URL'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l poll-question -d 'Poll question'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l poll-option -d 'Poll option (repeat 2-12 times)'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l poll-multi -d 'Allow multiple selections'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l poll-duration-hours -d 'Poll duration in hours (Discord)'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l poll-duration-seconds -d 'Poll duration in seconds (Telegram; 5-600)'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l poll-anonymous -d 'Send an anonymous poll (Telegram)'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l poll-public -d 'Send a non-anonymous poll (Telegram)'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -s m -l message -d 'Optional message body'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l silent -d 'Send poll silently without notification (Telegram + Discord where supported)'
+complete -c openclaw -n "__openclaw_command_path_matches message poll -- --container --profile --log-level -t --target --channel --account --poll-question --poll-option --poll-duration-hours --poll-duration-seconds -m --message --thread-id" -l thread-id -d 'Thread id (Telegram forum topic / Slack thread ts)'
+complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l message-id -d 'Message id'
+complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l emoji -d 'Emoji for reactions'
+complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l remove -d 'Remove reaction'
+complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l participant -d 'WhatsApp reaction participant'
+complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l from-me -d 'WhatsApp reaction fromMe'
+complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l target-author -d 'Signal reaction target author (uuid or phone)'
+complete -c openclaw -n "__openclaw_command_path_matches message react -- --container --profile --log-level -t --target --channel --account --message-id --emoji --participant --target-author --target-author-uuid" -l target-author-uuid -d 'Signal reaction target author uuid'
+complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -l message-id -d 'Message id'
+complete -c openclaw -n "__openclaw_command_path_matches message reactions -- --container --profile --log-level -t --target --channel --account --message-id --limit" -l limit -d 'Result limit'
+complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l limit -d 'Result limit'
+complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l message-id -d 'Read a specific message id'
+complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l before -d 'Read/search before id'
+complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l after -d 'Read/search after id'
+complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l around -d 'Read around id'
+complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l thread-id -d 'Thread id (Slack thread timestamp)'
+complete -c openclaw -n "__openclaw_command_path_matches message read -- --container --profile --log-level -t --target --channel --account --limit --message-id --before --after --around --thread-id" -l include-thread -d 'Include thread replies (Discord)'
+complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -l message-id -d 'Message id'
+complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -s m -l message -d 'Message body'
+complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message edit -- --container --profile --log-level --message-id -m --message -t --target --channel --account --thread-id" -l thread-id -d 'Thread id (Telegram forum thread)'
+complete -c openclaw -n "__openclaw_command_path_matches message delete -- --container --profile --log-level --message-id -t --target --channel --account" -l message-id -d 'Message id'
+complete -c openclaw -n "__openclaw_command_path_matches message delete -- --container --profile --log-level --message-id -t --target --channel --account" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message delete -- --container --profile --log-level --message-id -t --target --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message delete -- --container --profile --log-level --message-id -t --target --channel --account" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message delete -- --container --profile --log-level --message-id -t --target --channel --account" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message delete -- --container --profile --log-level --message-id -t --target --channel --account" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message delete -- --container --profile --log-level --message-id -t --target --channel --account" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message pin -- --container --profile --log-level -t --target --channel --account --message-id" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message pin -- --container --profile --log-level -t --target --channel --account --message-id" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message pin -- --container --profile --log-level -t --target --channel --account --message-id" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message pin -- --container --profile --log-level -t --target --channel --account --message-id" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message pin -- --container --profile --log-level -t --target --channel --account --message-id" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message pin -- --container --profile --log-level -t --target --channel --account --message-id" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message pin -- --container --profile --log-level -t --target --channel --account --message-id" -l message-id -d 'Message id'
+complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -l message-id -d 'Message id (or pinned message resource id for MSTeams)'
+complete -c openclaw -n "__openclaw_command_path_matches message unpin -- --container --profile --log-level -t --target --channel --account --message-id --pinned-message-id" -l pinned-message-id -d 'Pinned message resource id (MSTeams: from pin or list-pins, not the chat message id)'
+complete -c openclaw -n "__openclaw_command_path_matches message pins -- --container --profile --log-level -t --target --channel --account --limit" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message pins -- --container --profile --log-level -t --target --channel --account --limit" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message pins -- --container --profile --log-level -t --target --channel --account --limit" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message pins -- --container --profile --log-level -t --target --channel --account --limit" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message pins -- --container --profile --log-level -t --target --channel --account --limit" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message pins -- --container --profile --log-level -t --target --channel --account --limit" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message pins -- --container --profile --log-level -t --target --channel --account --limit" -l limit -d 'Result limit'
+complete -c openclaw -n "__openclaw_command_path_matches message permissions -- --container --profile --log-level -t --target --channel --account" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message permissions -- --container --profile --log-level -t --target --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message permissions -- --container --profile --log-level -t --target --channel --account" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message permissions -- --container --profile --log-level -t --target --channel --account" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message permissions -- --container --profile --log-level -t --target --channel --account" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message permissions -- --container --profile --log-level -t --target --channel --account" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l guild-id -d 'Guild id'
+complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l query -d 'Search query'
+complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l channel-id -d 'Channel id'
+complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l channel-ids -d 'Channel id (repeat)'
+complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l author-id -d 'Author id'
+complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l author-ids -d 'Author id (repeat)'
+complete -c openclaw -n "__openclaw_command_path_matches message search -- --container --profile --log-level --channel --account --guild-id --query --channel-id --channel-ids --author-id --author-ids --limit" -l limit -d 'Result limit'
+complete -c openclaw -n "__openclaw_command_path_matches message thread -- --container --profile --log-level" -a "create" -d 'Create a thread'
+complete -c openclaw -n "__openclaw_command_path_matches message thread -- --container --profile --log-level" -a "list" -d 'List threads'
+complete -c openclaw -n "__openclaw_command_path_matches message thread -- --container --profile --log-level" -a "reply" -d 'Reply in a thread'
+complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l thread-name -d 'Thread name'
+complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l message-id -d 'Message id (optional)'
+complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -s m -l message -d 'Initial thread message text'
+complete -c openclaw -n "__openclaw_command_path_matches message thread create -- --container --profile --log-level --thread-name -t --target --channel --account --message-id -m --message --auto-archive-min" -l auto-archive-min -d 'Thread auto-archive minutes'
+complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l guild-id -d 'Guild id'
+complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l channel-id -d 'Channel id'
+complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l include-archived -d 'Include archived threads'
+complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l before -d 'Read/search before id'
+complete -c openclaw -n "__openclaw_command_path_matches message thread list -- --container --profile --log-level --guild-id --channel --account --channel-id --before --limit" -l limit -d 'Result limit'
+complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -s m -l message -d 'Message body'
+complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -l media -d 'Attach media (image/audio/video/document). Accepts local paths or URLs.'
+complete -c openclaw -n "__openclaw_command_path_matches message thread reply -- --container --profile --log-level -m --message -t --target --channel --account --media --reply-to" -l reply-to -d 'Reply-to message id'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji -- --container --profile --log-level" -a "list" -d 'List emojis'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji -- --container --profile --log-level" -a "upload" -d 'Upload an emoji'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji list -- --container --profile --log-level --channel --account --guild-id" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji list -- --container --profile --log-level --channel --account --guild-id" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji list -- --container --profile --log-level --channel --account --guild-id" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji list -- --container --profile --log-level --channel --account --guild-id" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji list -- --container --profile --log-level --channel --account --guild-id" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji list -- --container --profile --log-level --channel --account --guild-id" -l guild-id -d 'Guild id (Discord)'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l guild-id -d 'Guild id'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l emoji-name -d 'Emoji name'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l media -d 'Emoji media (path or URL)'
+complete -c openclaw -n "__openclaw_command_path_matches message emoji upload -- --container --profile --log-level --guild-id --channel --account --emoji-name --media --role-ids" -l role-ids -d 'Role id (repeat)'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker -- --container --profile --log-level" -a "send" -d 'Send stickers'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker -- --container --profile --log-level" -a "upload" -d 'Upload a sticker'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -l sticker-id -d 'Sticker id (repeat)'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker send -- --container --profile --log-level -t --target --channel --account --sticker-id -m --message" -s m -l message -d 'Optional message body'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l guild-id -d 'Guild id'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l sticker-name -d 'Sticker name'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l sticker-desc -d 'Sticker description'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l sticker-tags -d 'Sticker tags'
+complete -c openclaw -n "__openclaw_command_path_matches message sticker upload -- --container --profile --log-level --guild-id --channel --account --sticker-name --sticker-desc --sticker-tags --media" -l media -d 'Sticker media (path or URL)'
+complete -c openclaw -n "__openclaw_command_path_matches message role -- --container --profile --log-level" -a "info" -d 'List roles'
+complete -c openclaw -n "__openclaw_command_path_matches message role -- --container --profile --log-level" -a "add" -d 'Add role to a member'
+complete -c openclaw -n "__openclaw_command_path_matches message role -- --container --profile --log-level" -a "remove" -d 'Remove role from a member'
+complete -c openclaw -n "__openclaw_command_path_matches message role info -- --container --profile --log-level --guild-id --channel --account" -l guild-id -d 'Guild id'
+complete -c openclaw -n "__openclaw_command_path_matches message role info -- --container --profile --log-level --guild-id --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message role info -- --container --profile --log-level --guild-id --channel --account" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message role info -- --container --profile --log-level --guild-id --channel --account" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message role info -- --container --profile --log-level --guild-id --channel --account" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message role info -- --container --profile --log-level --guild-id --channel --account" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l guild-id -d 'Guild id'
+complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l user-id -d 'User id'
+complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l role-id -d 'Role id'
+complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message role add -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l guild-id -d 'Guild id'
+complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l user-id -d 'User id'
+complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l role-id -d 'Role id'
+complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message role remove -- --container --profile --log-level --guild-id --user-id --role-id --channel --account" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message channel -- --container --profile --log-level" -a "info" -d 'Fetch channel info'
+complete -c openclaw -n "__openclaw_command_path_matches message channel -- --container --profile --log-level" -a "list" -d 'List channels'
+complete -c openclaw -n "__openclaw_command_path_matches message channel info -- --container --profile --log-level -t --target --channel --account" -s t -l target -d 'Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id'
+complete -c openclaw -n "__openclaw_command_path_matches message channel info -- --container --profile --log-level -t --target --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message channel info -- --container --profile --log-level -t --target --channel --account" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message channel info -- --container --profile --log-level -t --target --channel --account" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message channel info -- --container --profile --log-level -t --target --channel --account" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message channel info -- --container --profile --log-level -t --target --channel --account" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message channel list -- --container --profile --log-level --guild-id --channel --account" -l guild-id -d 'Guild id'
+complete -c openclaw -n "__openclaw_command_path_matches message channel list -- --container --profile --log-level --guild-id --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message channel list -- --container --profile --log-level --guild-id --channel --account" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message channel list -- --container --profile --log-level --guild-id --channel --account" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message channel list -- --container --profile --log-level --guild-id --channel --account" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message channel list -- --container --profile --log-level --guild-id --channel --account" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message member -- --container --profile --log-level" -a "info" -d 'Fetch member info'
+complete -c openclaw -n "__openclaw_command_path_matches message member info -- --container --profile --log-level --user-id --channel --account --guild-id" -l user-id -d 'User id'
+complete -c openclaw -n "__openclaw_command_path_matches message member info -- --container --profile --log-level --user-id --channel --account --guild-id" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message member info -- --container --profile --log-level --user-id --channel --account --guild-id" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message member info -- --container --profile --log-level --user-id --channel --account --guild-id" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message member info -- --container --profile --log-level --user-id --channel --account --guild-id" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message member info -- --container --profile --log-level --user-id --channel --account --guild-id" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message member info -- --container --profile --log-level --user-id --channel --account --guild-id" -l guild-id -d 'Guild id (Discord)'
+complete -c openclaw -n "__openclaw_command_path_matches message voice -- --container --profile --log-level" -a "status" -d 'Fetch voice status'
+complete -c openclaw -n "__openclaw_command_path_matches message voice status -- --container --profile --log-level --guild-id --user-id --channel --account" -l guild-id -d 'Guild id'
+complete -c openclaw -n "__openclaw_command_path_matches message voice status -- --container --profile --log-level --guild-id --user-id --channel --account" -l user-id -d 'User id'
+complete -c openclaw -n "__openclaw_command_path_matches message voice status -- --container --profile --log-level --guild-id --user-id --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message voice status -- --container --profile --log-level --guild-id --user-id --channel --account" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message voice status -- --container --profile --log-level --guild-id --user-id --channel --account" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message voice status -- --container --profile --log-level --guild-id --user-id --channel --account" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message voice status -- --container --profile --log-level --guild-id --user-id --channel --account" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message event -- --container --profile --log-level" -a "list" -d 'List scheduled events'
+complete -c openclaw -n "__openclaw_command_path_matches message event -- --container --profile --log-level" -a "create" -d 'Create a scheduled event'
+complete -c openclaw -n "__openclaw_command_path_matches message event list -- --container --profile --log-level --guild-id --channel --account" -l guild-id -d 'Guild id'
+complete -c openclaw -n "__openclaw_command_path_matches message event list -- --container --profile --log-level --guild-id --channel --account" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message event list -- --container --profile --log-level --guild-id --channel --account" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message event list -- --container --profile --log-level --guild-id --channel --account" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message event list -- --container --profile --log-level --guild-id --channel --account" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message event list -- --container --profile --log-level --guild-id --channel --account" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l guild-id -d 'Guild id'
+complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l event-name -d 'Event name'
+complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l start-time -d 'Event start time'
+complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l end-time -d 'Event end time'
+complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l desc -d 'Event description'
+complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l channel-id -d 'Channel id'
+complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l location -d 'Event location'
+complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l event-type -d 'Event type'
+complete -c openclaw -n "__openclaw_command_path_matches message event create -- --container --profile --log-level --guild-id --event-name --start-time --channel --account --end-time --desc --channel-id --location --event-type --image" -l image -d 'Cover image URL or local file path'
+complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l guild-id -d 'Guild id'
+complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l user-id -d 'User id'
+complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l duration-min -d 'Timeout duration minutes'
+complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l until -d 'Timeout until'
+complete -c openclaw -n "__openclaw_command_path_matches message timeout -- --container --profile --log-level --guild-id --user-id --channel --account --duration-min --until --reason" -l reason -d 'Moderation reason'
+complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l guild-id -d 'Guild id'
+complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l user-id -d 'User id'
+complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message kick -- --container --profile --log-level --guild-id --user-id --channel --account --reason" -l reason -d 'Moderation reason'
+complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l guild-id -d 'Guild id'
+complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l user-id -d 'User id'
+complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l channel -d 'Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch'
+complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l account -d 'Channel account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l dry-run -d 'Print payload and skip sending'
+complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l reason -d 'Moderation reason'
+complete -c openclaw -n "__openclaw_command_path_matches message ban -- --container --profile --log-level --guild-id --user-id --channel --account --reason --delete-days" -l delete-days -d 'Ban delete message days'
+complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "serve" -d 'Expose OpenClaw channels over MCP stdio'
+complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "list" -d 'List OpenClaw-managed MCP servers from mcp.servers'
+complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "show" -d 'Show one OpenClaw-managed MCP server or the full mcp.servers config'
+complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "status" -d 'Show configured MCP server transport status without connecting'
+complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "probe" -d 'Connect to configured MCP servers and list available capabilities'
+complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "doctor" -d 'Check configured MCP servers for static setup problems'
+complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "add" -d 'Add one MCP server from flags and probe it before saving'
+complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "set" -d 'Set one OpenClaw-managed MCP server from a JSON object'
+complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "tools" -d 'Update per-server MCP tool include/exclude filters'
+complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "configure" -d 'Update MCP server operator controls without replacing the server'
+complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "login" -d 'Authorize an OAuth MCP server'
+complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "logout" -d 'Clear stored OAuth credentials for an MCP server'
+complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "reload" -d 'Dispose cached MCP runtimes so new config is used on the next turn'
+complete -c openclaw -n "__openclaw_command_path_matches mcp -- --container --profile --log-level" -a "unset" -d 'Remove one OpenClaw-managed MCP server'
+complete -c openclaw -n "__openclaw_command_path_matches mcp serve -- --container --profile --log-level --url --token --token-file --password --password-file --claude-channel-mode" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches mcp serve -- --container --profile --log-level --url --token --token-file --password --password-file --claude-channel-mode" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches mcp serve -- --container --profile --log-level --url --token --token-file --password --password-file --claude-channel-mode" -l token-file -d 'Read gateway token from file'
+complete -c openclaw -n "__openclaw_command_path_matches mcp serve -- --container --profile --log-level --url --token --token-file --password --password-file --claude-channel-mode" -l password -d 'Gateway password (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches mcp serve -- --container --profile --log-level --url --token --token-file --password --password-file --claude-channel-mode" -l password-file -d 'Read gateway password from file'
+complete -c openclaw -n "__openclaw_command_path_matches mcp serve -- --container --profile --log-level --url --token --token-file --password --password-file --claude-channel-mode" -l claude-channel-mode -d 'Claude channel notification mode: auto, on, or off'
+complete -c openclaw -n "__openclaw_command_path_matches mcp serve -- --container --profile --log-level --url --token --token-file --password --password-file --claude-channel-mode" -s v -l verbose -d 'Verbose logging to stderr'
+complete -c openclaw -n "__openclaw_command_path_matches mcp list -- --container --profile --log-level" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches mcp show -- --container --profile --log-level" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches mcp status -- --container --profile --log-level" -s v -l verbose -d 'Show transport, auth, timeout, and filter details'
+complete -c openclaw -n "__openclaw_command_path_matches mcp status -- --container --profile --log-level" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches mcp probe -- --container --profile --log-level" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches mcp doctor -- --container --profile --log-level" -l probe -d 'Also connect to each checked server'
+complete -c openclaw -n "__openclaw_command_path_matches mcp doctor -- --container --profile --log-level" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l command -d 'Stdio command to spawn'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l arg -d 'Repeatable stdio argument'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l env -d 'Repeatable stdio environment entry'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l cwd -d 'Working directory for stdio server'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l url -d 'HTTP MCP server URL'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l transport -d 'HTTP transport: streamable-http or sse'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l header -d 'Repeatable HTTP header'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l auth -d 'HTTP auth mode: oauth'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l oauth-scope -d 'OAuth scope'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l oauth-redirect-url -d 'OAuth redirect URL'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l oauth-client-metadata-url -d 'OAuth client metadata URL'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l include -d 'Comma-separated MCP tool names or '\''*'\'' globs to expose'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l exclude -d 'Comma-separated MCP tool names or '\''*'\'' globs to hide'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l timeout -d 'Per-request timeout in seconds'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l connect-timeout -d 'Connection timeout in seconds'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l parallel -d 'Mark this server safe for concurrent tool calls'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l disabled -d 'Save the server disabled'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l ssl-verify -d 'Verify HTTPS certificates: true or false'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l client-cert -d 'HTTP mutual TLS client certificate path'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l client-key -d 'HTTP mutual TLS client key path'
+complete -c openclaw -n "__openclaw_command_path_matches mcp add -- --container --profile --log-level --command --arg --env --cwd --url --transport --header --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --include --exclude --timeout --connect-timeout --ssl-verify --client-cert --client-key" -l no-probe -d 'Save without connecting first'
+complete -c openclaw -n "__openclaw_command_path_matches mcp tools -- --container --profile --log-level --include --exclude" -l include -d 'Comma-separated MCP tool names or '\''*'\'' globs to expose'
+complete -c openclaw -n "__openclaw_command_path_matches mcp tools -- --container --profile --log-level --include --exclude" -l exclude -d 'Comma-separated MCP tool names or '\''*'\'' globs to hide'
+complete -c openclaw -n "__openclaw_command_path_matches mcp tools -- --container --profile --log-level --include --exclude" -l clear -d 'Clear this server'\''s MCP tool filter'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l enable -d 'Enable this saved server'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l disable -d 'Disable this saved server'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l include -d 'Comma-separated MCP tool names or '\''*'\'' globs to expose'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l exclude -d 'Comma-separated MCP tool names or '\''*'\'' globs to hide'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l clear-tools -d 'Clear this server'\''s MCP tool filter'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l timeout -d 'Per-request timeout in seconds'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l connect-timeout -d 'Connection timeout in seconds'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l clear-timeouts -d 'Clear request and connection timeout overrides'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l parallel -d 'Mark this server safe for concurrent tool calls'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l no-parallel -d 'Clear the concurrent tool-call marker'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l auth -d 'HTTP auth mode: oauth'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l clear-auth -d 'Clear auth and OAuth metadata'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l oauth-scope -d 'OAuth scope'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l oauth-redirect-url -d 'OAuth redirect URL'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l oauth-client-metadata-url -d 'OAuth client metadata URL'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l ssl-verify -d 'Verify HTTPS certificates: true or false'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l client-cert -d 'HTTP mutual TLS client certificate path'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l client-key -d 'HTTP mutual TLS client key path'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l clear-tls -d 'Clear TLS verification and mTLS overrides'
+complete -c openclaw -n "__openclaw_command_path_matches mcp configure -- --container --profile --log-level --include --exclude --timeout --connect-timeout --auth --oauth-scope --oauth-redirect-url --oauth-client-metadata-url --ssl-verify --client-cert --client-key" -l probe -d 'Probe the updated server before saving'
+complete -c openclaw -n "__openclaw_command_path_matches mcp login -- --container --profile --log-level --code" -l code -d 'Authorization code from the OAuth redirect'
+complete -c openclaw -n "__openclaw_command_path_matches transcripts -- --container --profile --log-level" -a "list" -d 'List stored transcript sessions'
+complete -c openclaw -n "__openclaw_command_path_matches transcripts -- --container --profile --log-level" -a "show" -d 'Print a transcript summary markdown file'
+complete -c openclaw -n "__openclaw_command_path_matches transcripts -- --container --profile --log-level" -a "path" -d 'Print a stored transcripts artifact path'
+complete -c openclaw -n "__openclaw_command_path_matches transcripts list -- --container --profile --log-level" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches transcripts show -- --container --profile --log-level" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches transcripts path -- --container --profile --log-level" -l dir -d 'Print the session directory'
+complete -c openclaw -n "__openclaw_command_path_matches transcripts path -- --container --profile --log-level" -l metadata -d 'Print metadata.json'
+complete -c openclaw -n "__openclaw_command_path_matches transcripts path -- --container --profile --log-level" -l transcript -d 'Print transcript.jsonl'
+complete -c openclaw -n "__openclaw_command_path_matches transcripts path -- --container --profile --log-level" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -s m -l message -d 'Message body for the agent'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l message-file -d 'Read the agent message body from a UTF-8 file'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -s t -l to -d 'Recipient number in E.164 used to derive the session key'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l session-key -d 'Explicit session key (agent::, or scoped to --agent)'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l session-id -d 'Use an explicit session id'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l agent -d 'Agent id (overrides routing bindings)'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l model -d 'Model override for this run (provider/model or model id)'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l thinking -d 'Thinking level: off | minimal | low | medium | high | xhigh | adaptive | max where supported'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l verbose -d 'Persist agent verbose level for the session'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l channel -d 'Delivery channel: last|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch (omit to use the main session channel)'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l reply-to -d 'Delivery target override (separate from session routing)'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l reply-channel -d 'Delivery channel override (separate from routing)'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l reply-account -d 'Delivery account id override'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l local -d 'Run the embedded agent locally (requires model provider API keys in your shell)'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l deliver -d 'Send the agent'\''s reply back to the selected channel'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches agent -- --container --profile --log-level -m --message --message-file -t --to --session-key --session-id --agent --model --thinking --verbose --channel --reply-to --reply-channel --reply-account --timeout" -l timeout -d 'Override agent command timeout (seconds, default 600 or config value)'
+complete -c openclaw -n "__openclaw_command_path_matches agents -- --container --profile --log-level" -a "list" -d 'List configured agents'
+complete -c openclaw -n "__openclaw_command_path_matches agents -- --container --profile --log-level" -a "bindings" -d 'List routing bindings'
+complete -c openclaw -n "__openclaw_command_path_matches agents -- --container --profile --log-level" -a "bind" -d 'Add routing bindings for an agent'
+complete -c openclaw -n "__openclaw_command_path_matches agents -- --container --profile --log-level" -a "unbind" -d 'Remove routing bindings for an agent'
+complete -c openclaw -n "__openclaw_command_path_matches agents -- --container --profile --log-level" -a "add" -d 'Add a new isolated agent'
+complete -c openclaw -n "__openclaw_command_path_matches agents -- --container --profile --log-level" -a "set-identity" -d 'Update an agent identity (name/theme/emoji/avatar)'
+complete -c openclaw -n "__openclaw_command_path_matches agents -- --container --profile --log-level" -a "delete" -d 'Delete an agent and prune workspace/state'
+complete -c openclaw -n "__openclaw_command_path_matches agents list -- --container --profile --log-level" -l json -d 'Output JSON instead of text'
+complete -c openclaw -n "__openclaw_command_path_matches agents list -- --container --profile --log-level" -l bindings -d 'Include routing bindings'
+complete -c openclaw -n "__openclaw_command_path_matches agents bindings -- --container --profile --log-level --agent" -l agent -d 'Filter by agent id'
+complete -c openclaw -n "__openclaw_command_path_matches agents bindings -- --container --profile --log-level --agent" -l json -d 'Output JSON instead of text'
+complete -c openclaw -n "__openclaw_command_path_matches agents bind -- --container --profile --log-level --agent --bind" -l agent -d 'Agent id (defaults to current default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches agents bind -- --container --profile --log-level --agent --bind" -l bind -d 'Binding to add (repeatable). If omitted, accountId is resolved by channel defaults/hooks.'
+complete -c openclaw -n "__openclaw_command_path_matches agents bind -- --container --profile --log-level --agent --bind" -l json -d 'Output JSON summary'
+complete -c openclaw -n "__openclaw_command_path_matches agents unbind -- --container --profile --log-level --agent --bind" -l agent -d 'Agent id (defaults to current default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches agents unbind -- --container --profile --log-level --agent --bind" -l bind -d 'Binding to remove (repeatable)'
+complete -c openclaw -n "__openclaw_command_path_matches agents unbind -- --container --profile --log-level --agent --bind" -l all -d 'Remove all bindings for this agent'
+complete -c openclaw -n "__openclaw_command_path_matches agents unbind -- --container --profile --log-level --agent --bind" -l json -d 'Output JSON summary'
+complete -c openclaw -n "__openclaw_command_path_matches agents add -- --container --profile --log-level --workspace --model --agent-dir --bind" -l workspace -d 'Workspace directory for the new agent'
+complete -c openclaw -n "__openclaw_command_path_matches agents add -- --container --profile --log-level --workspace --model --agent-dir --bind" -l model -d 'Model id for this agent'
+complete -c openclaw -n "__openclaw_command_path_matches agents add -- --container --profile --log-level --workspace --model --agent-dir --bind" -l agent-dir -d 'Agent state directory for this agent'
+complete -c openclaw -n "__openclaw_command_path_matches agents add -- --container --profile --log-level --workspace --model --agent-dir --bind" -l bind -d 'Route channel binding (repeatable)'
+complete -c openclaw -n "__openclaw_command_path_matches agents add -- --container --profile --log-level --workspace --model --agent-dir --bind" -l non-interactive -d 'Disable prompts; requires --workspace'
+complete -c openclaw -n "__openclaw_command_path_matches agents add -- --container --profile --log-level --workspace --model --agent-dir --bind" -l json -d 'Output JSON summary'
+complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l agent -d 'Agent id to update'
+complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l workspace -d 'Workspace directory used to locate the agent + IDENTITY.md'
+complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l identity-file -d 'Explicit IDENTITY.md path to read'
+complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l from-identity -d 'Read values from IDENTITY.md'
+complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l name -d 'Identity name'
+complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l theme -d 'Identity theme'
+complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l emoji -d 'Identity emoji'
+complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l avatar -d 'Identity avatar (workspace path, http(s) URL, or data URI)'
+complete -c openclaw -n "__openclaw_command_path_matches agents set-identity -- --container --profile --log-level --agent --workspace --identity-file --name --theme --emoji --avatar" -l json -d 'Output JSON summary'
+complete -c openclaw -n "__openclaw_command_path_matches agents delete -- --container --profile --log-level" -l force -d 'Skip confirmation'
+complete -c openclaw -n "__openclaw_command_path_matches agents delete -- --container --profile --log-level" -l json -d 'Output JSON summary'
+complete -c openclaw -n "__openclaw_command_path_matches status -- --container --profile --log-level --timeout" -l json -d 'Output JSON instead of text'
+complete -c openclaw -n "__openclaw_command_path_matches status -- --container --profile --log-level --timeout" -l all -d 'Full diagnosis (read-only, pasteable)'
+complete -c openclaw -n "__openclaw_command_path_matches status -- --container --profile --log-level --timeout" -l usage -d 'Show model provider usage/quota snapshots'
+complete -c openclaw -n "__openclaw_command_path_matches status -- --container --profile --log-level --timeout" -l deep -d 'Probe channels (WhatsApp Web + Telegram + Discord + Slack + Signal)'
+complete -c openclaw -n "__openclaw_command_path_matches status -- --container --profile --log-level --timeout" -l timeout -d 'Probe timeout in milliseconds'
+complete -c openclaw -n "__openclaw_command_path_matches status -- --container --profile --log-level --timeout" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches status -- --container --profile --log-level --timeout" -l debug -d 'Alias for --verbose'
+complete -c openclaw -n "__openclaw_command_path_matches health -- --container --profile --log-level --timeout" -l json -d 'Output JSON instead of text'
+complete -c openclaw -n "__openclaw_command_path_matches health -- --container --profile --log-level --timeout" -l timeout -d 'Connection timeout in milliseconds'
+complete -c openclaw -n "__openclaw_command_path_matches health -- --container --profile --log-level --timeout" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches health -- --container --profile --log-level --timeout" -l debug -d 'Alias for --verbose'
+complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -a "list" -d 'List stored conversation sessions'
+complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -a "cleanup" -d 'Run session-store maintenance now'
+complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -a "tail" -d 'Tail human-readable session trajectory progress'
+complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -a "export-trajectory" -d 'Export a redacted trajectory bundle for a stored session'
+complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -a "compact" -d 'Compact a stored session transcript via the running gateway'
+complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -l store -d 'Path to session store (default: resolved from config)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -l agent -d 'Agent id to inspect (default: configured default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -l all-agents -d 'Aggregate sessions across all configured agents'
+complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -l active -d 'Only show sessions updated within the past N minutes'
+complete -c openclaw -n "__openclaw_command_path_matches sessions -- --container --profile --log-level --store --agent --active --limit" -l limit -d 'Max sessions to show (default: 100; use "all" for full output)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions list -- --container --profile --log-level --store --agent --active --limit" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches sessions list -- --container --profile --log-level --store --agent --active --limit" -l verbose -d 'Verbose logging'
+complete -c openclaw -n "__openclaw_command_path_matches sessions list -- --container --profile --log-level --store --agent --active --limit" -l store -d 'Path to session store (default: resolved from config)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions list -- --container --profile --log-level --store --agent --active --limit" -l agent -d 'Agent id to inspect (default: configured default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions list -- --container --profile --log-level --store --agent --active --limit" -l all-agents -d 'Aggregate sessions across all configured agents'
+complete -c openclaw -n "__openclaw_command_path_matches sessions list -- --container --profile --log-level --store --agent --active --limit" -l active -d 'Only show sessions updated within the past N minutes'
+complete -c openclaw -n "__openclaw_command_path_matches sessions list -- --container --profile --log-level --store --agent --active --limit" -l limit -d 'Max sessions to show (default: 100; use "all" for full output)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l store -d 'Path to session store (default: resolved from config)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l agent -d 'Agent id to maintain (default: configured default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l all-agents -d 'Run maintenance across all configured agents'
+complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l dry-run -d 'Preview maintenance actions without writing'
+complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l enforce -d 'Apply maintenance even when configured mode is warn'
+complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l fix-missing -d 'Remove store entries whose transcript files are missing (bypasses age/count retention)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l fix-dm-scope -d 'Retire stale direct-DM session rows that no longer match session.dmScope=main'
+complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l active-key -d 'Protect this session key from budget-eviction'
+complete -c openclaw -n "__openclaw_command_path_matches sessions cleanup -- --container --profile --log-level --store --agent --active --limit --active-key" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches sessions tail -- --container --profile --log-level --store --agent --active --limit --session-key --tail" -l session-key -d 'Session key to tail (default: active sessions or latest)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions tail -- --container --profile --log-level --store --agent --active --limit --session-key --tail" -l tail -d 'Number of existing trajectory events to show'
+complete -c openclaw -n "__openclaw_command_path_matches sessions tail -- --container --profile --log-level --store --agent --active --limit --session-key --tail" -l follow -d 'Continue following for new trajectory events'
+complete -c openclaw -n "__openclaw_command_path_matches sessions tail -- --container --profile --log-level --store --agent --active --limit --session-key --tail" -l store -d 'Path to session store (default: resolved from config)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions tail -- --container --profile --log-level --store --agent --active --limit --session-key --tail" -l agent -d 'Agent id to inspect (default: configured default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions tail -- --container --profile --log-level --store --agent --active --limit --session-key --tail" -l all-agents -d 'Aggregate sessions across all configured agents'
+complete -c openclaw -n "__openclaw_command_path_matches sessions export-trajectory -- --container --profile --log-level --store --agent --active --limit --session-key --output --workspace --request-json-base64" -l session-key -d 'Session key to export'
+complete -c openclaw -n "__openclaw_command_path_matches sessions export-trajectory -- --container --profile --log-level --store --agent --active --limit --session-key --output --workspace --request-json-base64" -l output -d 'Output directory name inside .openclaw/trajectory-exports'
+complete -c openclaw -n "__openclaw_command_path_matches sessions export-trajectory -- --container --profile --log-level --store --agent --active --limit --session-key --output --workspace --request-json-base64" -l workspace -d 'Workspace root for the export (default: current directory)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions export-trajectory -- --container --profile --log-level --store --agent --active --limit --session-key --output --workspace --request-json-base64" -l store -d 'Path to session store (default: resolved from config)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions export-trajectory -- --container --profile --log-level --store --agent --active --limit --session-key --output --workspace --request-json-base64" -l agent -d 'Agent id for resolving the default session store'
+complete -c openclaw -n "__openclaw_command_path_matches sessions export-trajectory -- --container --profile --log-level --store --agent --active --limit --session-key --output --workspace --request-json-base64" -l request-json-base64 -d 'Base64url-encoded export request'
+complete -c openclaw -n "__openclaw_command_path_matches sessions export-trajectory -- --container --profile --log-level --store --agent --active --limit --session-key --output --workspace --request-json-base64" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches sessions compact -- --container --profile --log-level --store --agent --active --limit --max-lines --url --token --password --timeout" -l agent -d 'Agent id that owns the session (required for global keys)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions compact -- --container --profile --log-level --store --agent --active --limit --max-lines --url --token --password --timeout" -l max-lines -d 'Truncate to the last N transcript lines instead of LLM summarization'
+complete -c openclaw -n "__openclaw_command_path_matches sessions compact -- --container --profile --log-level --store --agent --active --limit --max-lines --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions compact -- --container --profile --log-level --store --agent --active --limit --max-lines --url --token --password --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions compact -- --container --profile --log-level --store --agent --active --limit --max-lines --url --token --password --timeout" -l password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions compact -- --container --profile --log-level --store --agent --active --limit --max-lines --url --token --password --timeout" -l timeout -d 'RPC timeout in milliseconds (summarization can be slow)'
+complete -c openclaw -n "__openclaw_command_path_matches sessions compact -- --container --profile --log-level --store --agent --active --limit --max-lines --url --token --password --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches commitments -- --container --profile --log-level --agent --status" -a "list" -d 'List inferred follow-up commitments'
+complete -c openclaw -n "__openclaw_command_path_matches commitments -- --container --profile --log-level --agent --status" -a "dismiss" -d 'Dismiss inferred follow-up commitments'
+complete -c openclaw -n "__openclaw_command_path_matches commitments -- --container --profile --log-level --agent --status" -l json -d 'Output JSON instead of text'
+complete -c openclaw -n "__openclaw_command_path_matches commitments -- --container --profile --log-level --agent --status" -l agent -d 'Agent id to inspect'
+complete -c openclaw -n "__openclaw_command_path_matches commitments -- --container --profile --log-level --agent --status" -l status -d 'Filter by status (pending, sent, dismissed, snoozed, expired)'
+complete -c openclaw -n "__openclaw_command_path_matches commitments -- --container --profile --log-level --agent --status" -l all -d 'Show all statuses'
+complete -c openclaw -n "__openclaw_command_path_matches commitments list -- --container --profile --log-level --agent --status" -l json -d 'Output JSON instead of text'
+complete -c openclaw -n "__openclaw_command_path_matches commitments list -- --container --profile --log-level --agent --status" -l agent -d 'Agent id to inspect'
+complete -c openclaw -n "__openclaw_command_path_matches commitments list -- --container --profile --log-level --agent --status" -l status -d 'Filter by status (pending, sent, dismissed, snoozed, expired)'
+complete -c openclaw -n "__openclaw_command_path_matches commitments list -- --container --profile --log-level --agent --status" -l all -d 'Show all statuses'
+complete -c openclaw -n "__openclaw_command_path_matches commitments dismiss -- --container --profile --log-level --agent --status" -l json -d 'Output JSON instead of text'
+complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -a "list" -d 'List tracked background tasks'
+complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -a "audit" -d 'Show stale or broken background tasks and TaskFlows'
+complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -a "maintenance" -d 'Preview or apply tasks and TaskFlow maintenance'
+complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -a "show" -d 'Show one background task by task id, run id, or session key'
+complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -a "notify" -d 'Set task notify policy'
+complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -a "cancel" -d 'Cancel a running background task'
+complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -a "flow" -d 'Inspect durable TaskFlow state under tasks'
+complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -l runtime -d 'Filter by kind (subagent, acp, cron, cli)'
+complete -c openclaw -n "__openclaw_command_path_matches tasks -- --container --profile --log-level --runtime --status" -l status -d 'Filter by status (queued, running, succeeded, failed, timed_out, cancelled, lost)'
+complete -c openclaw -n "__openclaw_command_path_matches tasks list -- --container --profile --log-level --runtime --status" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches tasks list -- --container --profile --log-level --runtime --status" -l runtime -d 'Filter by kind (subagent, acp, cron, cli)'
+complete -c openclaw -n "__openclaw_command_path_matches tasks list -- --container --profile --log-level --runtime --status" -l status -d 'Filter by status (queued, running, succeeded, failed, timed_out, cancelled, lost)'
+complete -c openclaw -n "__openclaw_command_path_matches tasks audit -- --container --profile --log-level --runtime --status --severity --code --limit" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches tasks audit -- --container --profile --log-level --runtime --status --severity --code --limit" -l severity -d 'Filter by severity (warn, error)'
+complete -c openclaw -n "__openclaw_command_path_matches tasks audit -- --container --profile --log-level --runtime --status --severity --code --limit" -l code -d 'Filter by finding code (stale_queued, stale_running, lost, delivery_failed, missing_cleanup, inconsistent_timestamps, restore_failed, stale_waiting, stale_blocked, cancel_stuck, missing_linked_tasks, blocked_task_missing)'
+complete -c openclaw -n "__openclaw_command_path_matches tasks audit -- --container --profile --log-level --runtime --status --severity --code --limit" -l limit -d 'Limit displayed findings'
+complete -c openclaw -n "__openclaw_command_path_matches tasks maintenance -- --container --profile --log-level --runtime --status" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches tasks maintenance -- --container --profile --log-level --runtime --status" -l apply -d 'Apply reconciliation, cleanup stamping, and pruning'
+complete -c openclaw -n "__openclaw_command_path_matches tasks show -- --container --profile --log-level --runtime --status" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches tasks flow -- --container --profile --log-level --runtime --status" -a "list" -d 'List tracked TaskFlows'
+complete -c openclaw -n "__openclaw_command_path_matches tasks flow -- --container --profile --log-level --runtime --status" -a "show" -d 'Show one TaskFlow by flow id or owner key'
+complete -c openclaw -n "__openclaw_command_path_matches tasks flow -- --container --profile --log-level --runtime --status" -a "cancel" -d 'Cancel a running TaskFlow'
+complete -c openclaw -n "__openclaw_command_path_matches tasks flow list -- --container --profile --log-level --runtime --status" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches tasks flow list -- --container --profile --log-level --runtime --status" -l status -d 'Filter by status (queued, running, waiting, blocked, succeeded, failed, cancelled, lost)'
+complete -c openclaw -n "__openclaw_command_path_matches tasks flow show -- --container --profile --log-level --runtime --status" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -a "client" -d 'Run an interactive ACP client against the local ACP bridge'
+complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l token-file -d 'Read gateway token from file'
+complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l password -d 'Gateway password (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l password-file -d 'Read gateway password from file'
+complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l session -d 'Default session key (e.g. agent:main:main)'
+complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l session-label -d 'Default session label to resolve'
+complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l require-existing -d 'Fail if the session key/label does not exist'
+complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l reset-session -d 'Reset the session key before first use'
+complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l no-prefix-cwd -d 'Do not prefix prompts with the working directory'
+complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -l provenance -d 'ACP provenance mode: off, meta, or meta+receipt'
+complete -c openclaw -n "__openclaw_command_path_matches acp -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance" -s v -l verbose -d 'Verbose logging to stderr'
+complete -c openclaw -n "__openclaw_command_path_matches acp client -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance --cwd --server --server-args" -l cwd -d 'Working directory for the ACP session'
+complete -c openclaw -n "__openclaw_command_path_matches acp client -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance --cwd --server --server-args" -l server -d 'ACP server command (default: openclaw)'
+complete -c openclaw -n "__openclaw_command_path_matches acp client -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance --cwd --server --server-args" -l server-args -d 'Extra arguments for the ACP server'
+complete -c openclaw -n "__openclaw_command_path_matches acp client -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance --cwd --server --server-args" -l server-verbose -d 'Enable verbose logging on the ACP server'
+complete -c openclaw -n "__openclaw_command_path_matches acp client -- --container --profile --log-level --url --token --token-file --password --password-file --session --session-label --provenance --cwd --server --server-args" -s v -l verbose -d 'Verbose client logging'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "run" -d 'Run the WebSocket Gateway (foreground)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "status" -d 'Show gateway service status + probe connectivity/capability'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "install" -d 'Install the Gateway service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "uninstall" -d 'Uninstall the Gateway service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "start" -d 'Start the Gateway service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "stop" -d 'Stop the Gateway service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "restart" -d 'Restart the Gateway service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "call" -d 'Call a Gateway method'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "usage-cost" -d 'Fetch usage cost summary from session logs'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "health" -d 'Fetch Gateway health'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "stability" -d 'Fetch payload-free Gateway stability diagnostics'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "diagnostics" -d 'Export local support diagnostics'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "probe" -d 'Show gateway reachability, auth capability, and read-probe summary (local + remote)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "discover" -d 'Discover gateways via Bonjour (local + wide-area if configured)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l port -d 'Port for the gateway WebSocket'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l bind -d 'Bind mode ("loopback"|"lan"|"tailnet"|"auto"|"custom"). Defaults to config gateway.bind (or loopback).'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l token -d 'Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l auth -d 'Gateway auth mode ("none"|"token"|"password"|"trusted-proxy")'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l password -d 'Password for auth mode=password'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l password-file -d 'Read gateway password from file'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l tailscale -d 'Tailscale exposure mode ("off"|"serve"|"funnel")'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l tailscale-reset-on-exit -d 'Reset Tailscale serve/funnel configuration on shutdown'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l allow-unconfigured -d 'Allow gateway start without enforcing gateway.mode=local in config (does not repair config)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l dev -d 'Create a dev config + workspace if missing (no BOOTSTRAP.md)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l reset -d 'Reset dev config + credentials + sessions + workspace (requires --dev)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l force -d 'Kill any existing listener on the target port before starting'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l verbose -d 'Verbose logging to stdout/stderr'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l cli-backend-logs -d 'Only show CLI backend logs in the console (includes stdout/stderr)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l claude-cli-logs -d 'Deprecated alias for --cli-backend-logs'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l ws-log -d 'WebSocket log style ("auto"|"full"|"compact")'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l compact -d 'Alias for "--ws-log compact"'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l raw-stream -d 'Log raw model stream events to jsonl'
+complete -c openclaw -n "__openclaw_command_path_matches gateway -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l raw-stream-path -d 'Raw stream jsonl path'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l port -d 'Port for the gateway WebSocket'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l bind -d 'Bind mode ("loopback"|"lan"|"tailnet"|"auto"|"custom"). Defaults to config gateway.bind (or loopback).'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l token -d 'Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l auth -d 'Gateway auth mode ("none"|"token"|"password"|"trusted-proxy")'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l password -d 'Password for auth mode=password'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l password-file -d 'Read gateway password from file'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l tailscale -d 'Tailscale exposure mode ("off"|"serve"|"funnel")'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l tailscale-reset-on-exit -d 'Reset Tailscale serve/funnel configuration on shutdown'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l allow-unconfigured -d 'Allow gateway start without enforcing gateway.mode=local in config (does not repair config)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l dev -d 'Create a dev config + workspace if missing (no BOOTSTRAP.md)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l reset -d 'Reset dev config + credentials + sessions + workspace (requires --dev)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l force -d 'Kill any existing listener on the target port before starting'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l verbose -d 'Verbose logging to stdout/stderr'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l cli-backend-logs -d 'Only show CLI backend logs in the console (includes stdout/stderr)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l claude-cli-logs -d 'Deprecated alias for --cli-backend-logs'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l ws-log -d 'WebSocket log style ("auto"|"full"|"compact")'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l compact -d 'Alias for "--ws-log compact"'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l raw-stream -d 'Log raw model stream events to jsonl'
+complete -c openclaw -n "__openclaw_command_path_matches gateway run -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l raw-stream-path -d 'Raw stream jsonl path'
+complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l url -d 'Gateway WebSocket URL (defaults to config/remote/local)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l no-probe -d 'Skip RPC probe'
+complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l require-rpc -d 'Exit non-zero when the RPC probe fails'
+complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l deep -d 'Scan system-level services'
+complete -c openclaw -n "__openclaw_command_path_matches gateway status -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches gateway install -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --runtime --wrapper" -l port -d 'Gateway port'
+complete -c openclaw -n "__openclaw_command_path_matches gateway install -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --runtime --wrapper" -l runtime -d 'Daemon runtime (node|bun). Default: node'
+complete -c openclaw -n "__openclaw_command_path_matches gateway install -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --runtime --wrapper" -l token -d 'Gateway token (token auth)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway install -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --runtime --wrapper" -l wrapper -d 'Executable wrapper for generated service ProgramArguments'
+complete -c openclaw -n "__openclaw_command_path_matches gateway install -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --runtime --wrapper" -l force -d 'Reinstall/overwrite if already installed'
+complete -c openclaw -n "__openclaw_command_path_matches gateway install -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --runtime --wrapper" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches gateway uninstall -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches gateway start -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches gateway stop -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches gateway stop -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -l disable -d 'Persistently suppress KeepAlive/RunAtLoad so the gateway does not respawn until next start (launchd only)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway restart -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --wait" -l force -d 'Restart immediately without waiting for active gateway work'
+complete -c openclaw -n "__openclaw_command_path_matches gateway restart -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --wait" -l safe -d 'Request an OpenClaw-aware restart after active work drains'
+complete -c openclaw -n "__openclaw_command_path_matches gateway restart -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --wait" -l skip-deferral -d 'Bypass the safe-restart deferral gate; requires --safe'
+complete -c openclaw -n "__openclaw_command_path_matches gateway restart -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --wait" -l wait -d 'Wait duration before forcing restart (ms, 10s, 5m; 0 waits indefinitely)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway restart -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --wait" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches gateway call -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --params --url --timeout" -l params -d 'JSON object string for params'
+complete -c openclaw -n "__openclaw_command_path_matches gateway call -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --params --url --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway call -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --params --url --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway call -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --params --url --timeout" -l password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway call -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --params --url --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches gateway call -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --params --url --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway call -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --params --url --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l days -d 'Number of days to include'
+complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l agent -d 'Scope the cost summary to a specific agent id'
+complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l all-agents -d 'Aggregate the cost summary across all agents'
+complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway usage-cost -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --days --agent --url --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches gateway health -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l port -d 'Local Gateway port'
+complete -c openclaw -n "__openclaw_command_path_matches gateway health -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway health -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway health -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway health -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches gateway health -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway health -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l limit -d 'Maximum number of recent events'
+complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l type -d 'Filter by diagnostic event type'
+complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l since-seq -d 'Only include events after this sequence'
+complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l bundle -d 'Read a persisted stability bundle instead of calling Gateway; pass "latest" for newest'
+complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l export -d 'Write a shareable support diagnostics export'
+complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l output -d 'Diagnostics export output .zip path'
+complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway stability -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --limit --type --since-seq --bundle --output --url --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path" -a "export" -d 'Write a shareable, payload-free diagnostics .zip'
+complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l output -d 'Output .zip path'
+complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l log-lines -d 'Maximum sanitized log lines to include'
+complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l log-bytes -d 'Maximum log bytes to inspect'
+complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l url -d 'Gateway WebSocket URL for health snapshot'
+complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l token -d 'Gateway token for health snapshot'
+complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l password -d 'Gateway password for health snapshot'
+complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l timeout -d 'Status/health snapshot timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l no-stability-bundle -d 'Skip persisted stability bundle lookup'
+complete -c openclaw -n "__openclaw_command_path_matches gateway diagnostics export -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --output --log-lines --log-bytes --url --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l url -d 'Explicit Gateway WebSocket URL (still probes localhost)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l port -d 'Local Gateway port'
+complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l ssh -d 'SSH target for remote gateway tunnel (user@host or user@host:port)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l ssh-identity -d 'SSH identity file path'
+complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l ssh-auto -d 'Try to derive an SSH target from Bonjour discovery'
+complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l token -d 'Gateway token (applies to all probes)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l password -d 'Gateway password (applies to all probes)'
+complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l timeout -d 'Overall probe budget in ms'
+complete -c openclaw -n "__openclaw_command_path_matches gateway probe -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --url --ssh --ssh-identity --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches gateway discover -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --timeout" -l timeout -d 'Per-command timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches gateway discover -- --container --profile --log-level --port --bind --token --auth --password --password-file --tailscale --ws-log --raw-stream-path --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches daemon -- --container --profile --log-level" -a "status" -d 'Show service install status + probe connectivity/capability'
+complete -c openclaw -n "__openclaw_command_path_matches daemon -- --container --profile --log-level" -a "install" -d 'Install the Gateway service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches daemon -- --container --profile --log-level" -a "uninstall" -d 'Uninstall the Gateway service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches daemon -- --container --profile --log-level" -a "start" -d 'Start the Gateway service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches daemon -- --container --profile --log-level" -a "stop" -d 'Stop the Gateway service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches daemon -- --container --profile --log-level" -a "restart" -d 'Restart the Gateway service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to config/remote/local)'
+complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l no-probe -d 'Skip RPC probe'
+complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l require-rpc -d 'Exit non-zero when the RPC probe fails'
+complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l deep -d 'Scan system-level services'
+complete -c openclaw -n "__openclaw_command_path_matches daemon status -- --container --profile --log-level --url --token --password --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches daemon install -- --container --profile --log-level --port --runtime --token --wrapper" -l port -d 'Gateway port'
+complete -c openclaw -n "__openclaw_command_path_matches daemon install -- --container --profile --log-level --port --runtime --token --wrapper" -l runtime -d 'Daemon runtime (node|bun). Default: node'
+complete -c openclaw -n "__openclaw_command_path_matches daemon install -- --container --profile --log-level --port --runtime --token --wrapper" -l token -d 'Gateway token (token auth)'
+complete -c openclaw -n "__openclaw_command_path_matches daemon install -- --container --profile --log-level --port --runtime --token --wrapper" -l wrapper -d 'Executable wrapper for generated service ProgramArguments'
+complete -c openclaw -n "__openclaw_command_path_matches daemon install -- --container --profile --log-level --port --runtime --token --wrapper" -l force -d 'Reinstall/overwrite if already installed'
+complete -c openclaw -n "__openclaw_command_path_matches daemon install -- --container --profile --log-level --port --runtime --token --wrapper" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches daemon uninstall -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches daemon start -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches daemon stop -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches daemon stop -- --container --profile --log-level" -l disable -d 'Persistently suppress KeepAlive/RunAtLoad so the gateway does not respawn until next start (launchd only)'
+complete -c openclaw -n "__openclaw_command_path_matches daemon restart -- --container --profile --log-level --wait" -l force -d 'Restart immediately without waiting for active gateway work'
+complete -c openclaw -n "__openclaw_command_path_matches daemon restart -- --container --profile --log-level --wait" -l safe -d 'Request an OpenClaw-aware restart after active work drains'
+complete -c openclaw -n "__openclaw_command_path_matches daemon restart -- --container --profile --log-level --wait" -l skip-deferral -d 'Bypass the safe-restart deferral gate; requires --safe'
+complete -c openclaw -n "__openclaw_command_path_matches daemon restart -- --container --profile --log-level --wait" -l wait -d 'Wait duration before forcing restart (ms, 10s, 5m; 0 waits indefinitely)'
+complete -c openclaw -n "__openclaw_command_path_matches daemon restart -- --container --profile --log-level --wait" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l limit -d 'Max lines to return'
+complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l max-bytes -d 'Max bytes to read'
+complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l follow -d 'Follow log output'
+complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l interval -d 'Polling interval in ms'
+complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l json -d 'Emit JSON log lines'
+complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l plain -d 'Plain text output (no ANSI styling)'
+complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l no-color -d 'Disable ANSI colors'
+complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l local-time -d 'Display timestamps in local timezone (default)'
+complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l utc -d 'Display timestamps in UTC'
+complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches logs -- --container --profile --log-level --limit --max-bytes --interval --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches system -- --container --profile --log-level" -a "event" -d 'Enqueue a system event and optionally trigger a heartbeat'
+complete -c openclaw -n "__openclaw_command_path_matches system -- --container --profile --log-level" -a "heartbeat" -d 'Heartbeat controls'
+complete -c openclaw -n "__openclaw_command_path_matches system -- --container --profile --log-level" -a "presence" -d 'List system presence entries'
+complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l text -d 'System event text'
+complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l mode -d 'Wake mode (now|next-heartbeat)'
+complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l session-key -d 'Target a specific session for the event (defaults to the agent'\''s main session)'
+complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches system event -- --container --profile --log-level --text --mode --session-key --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat -- --container --profile --log-level" -a "last" -d 'Show the last heartbeat event'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat -- --container --profile --log-level" -a "enable" -d 'Enable heartbeats'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat -- --container --profile --log-level" -a "disable" -d 'Disable heartbeats'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat last -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat last -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat last -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat last -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat last -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat enable -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat enable -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat enable -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat enable -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat enable -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat disable -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat disable -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat disable -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat disable -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches system heartbeat disable -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches system presence -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches system presence -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches system presence -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches system presence -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches system presence -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "list" -d 'List models (configured by default)'
+complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "status" -d 'Show configured model state'
+complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "set" -d 'Set the default model'
+complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "set-image" -d 'Set the image model'
+complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "aliases" -d 'Manage model aliases'
+complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "fallbacks" -d 'Manage model fallback list'
+complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "image-fallbacks" -d 'Manage image model fallback list'
+complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "scan" -d 'Scan OpenRouter free models for tools + images'
+complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -a "auth" -d 'Manage model auth profiles'
+complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -l status-json -d 'Output JSON (alias for `models status --json`)'
+complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -l status-plain -d 'Plain output (alias for `models status --plain`)'
+complete -c openclaw -n "__openclaw_command_path_matches models -- --container --profile --log-level --agent" -l agent -d 'Agent id to inspect (overrides OPENCLAW_AGENT_DIR)'
+complete -c openclaw -n "__openclaw_command_path_matches models list -- --container --profile --log-level --agent --provider" -l all -d 'Show full model catalog'
+complete -c openclaw -n "__openclaw_command_path_matches models list -- --container --profile --log-level --agent --provider" -l local -d 'Filter to local models'
+complete -c openclaw -n "__openclaw_command_path_matches models list -- --container --profile --log-level --agent --provider" -l provider -d 'Filter by provider id'
+complete -c openclaw -n "__openclaw_command_path_matches models list -- --container --profile --log-level --agent --provider" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches models list -- --container --profile --log-level --agent --provider" -l plain -d 'Plain line output'
+complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l plain -d 'Plain output'
+complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l check -d 'Exit non-zero if auth is expiring/expired (1=expired/missing, 2=expiring)'
+complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l probe -d 'Probe configured provider auth (live)'
+complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l probe-provider -d 'Only probe a single provider'
+complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l probe-profile -d 'Only probe specific auth profile ids (repeat or comma-separated)'
+complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l probe-timeout -d 'Per-probe timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l probe-concurrency -d 'Concurrent probes'
+complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l probe-max-tokens -d 'Probe max tokens (best-effort)'
+complete -c openclaw -n "__openclaw_command_path_matches models status -- --container --profile --log-level --agent --probe-provider --probe-profile --probe-timeout --probe-concurrency --probe-max-tokens" -l agent -d 'Agent id to inspect (overrides OPENCLAW_AGENT_DIR)'
+complete -c openclaw -n "__openclaw_command_path_matches models aliases -- --container --profile --log-level --agent" -a "list" -d 'List model aliases'
+complete -c openclaw -n "__openclaw_command_path_matches models aliases -- --container --profile --log-level --agent" -a "add" -d 'Add or update a model alias'
+complete -c openclaw -n "__openclaw_command_path_matches models aliases -- --container --profile --log-level --agent" -a "remove" -d 'Remove a model alias'
+complete -c openclaw -n "__openclaw_command_path_matches models aliases list -- --container --profile --log-level --agent" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches models aliases list -- --container --profile --log-level --agent" -l plain -d 'Plain output'
+complete -c openclaw -n "__openclaw_command_path_matches models fallbacks -- --container --profile --log-level --agent" -a "list" -d 'List fallback models'
+complete -c openclaw -n "__openclaw_command_path_matches models fallbacks -- --container --profile --log-level --agent" -a "add" -d 'Add a fallback model'
+complete -c openclaw -n "__openclaw_command_path_matches models fallbacks -- --container --profile --log-level --agent" -a "remove" -d 'Remove a fallback model'
+complete -c openclaw -n "__openclaw_command_path_matches models fallbacks -- --container --profile --log-level --agent" -a "clear" -d 'Clear all fallback models'
+complete -c openclaw -n "__openclaw_command_path_matches models fallbacks list -- --container --profile --log-level --agent" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches models fallbacks list -- --container --profile --log-level --agent" -l plain -d 'Plain output'
+complete -c openclaw -n "__openclaw_command_path_matches models image-fallbacks -- --container --profile --log-level --agent" -a "list" -d 'List image fallback models'
+complete -c openclaw -n "__openclaw_command_path_matches models image-fallbacks -- --container --profile --log-level --agent" -a "add" -d 'Add an image fallback model'
+complete -c openclaw -n "__openclaw_command_path_matches models image-fallbacks -- --container --profile --log-level --agent" -a "remove" -d 'Remove an image fallback model'
+complete -c openclaw -n "__openclaw_command_path_matches models image-fallbacks -- --container --profile --log-level --agent" -a "clear" -d 'Clear all image fallback models'
+complete -c openclaw -n "__openclaw_command_path_matches models image-fallbacks list -- --container --profile --log-level --agent" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches models image-fallbacks list -- --container --profile --log-level --agent" -l plain -d 'Plain output'
+complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l min-params -d 'Minimum parameter size (billions)'
+complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l max-age-days -d 'Skip models older than N days'
+complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l provider -d 'Filter by provider prefix'
+complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l max-candidates -d 'Max fallback candidates'
+complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l timeout -d 'Per-probe timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l concurrency -d 'Probe concurrency'
+complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l no-probe -d 'Skip live probes; list free candidates only'
+complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l yes -d 'Accept defaults without prompting'
+complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l no-input -d 'Disable prompts (use defaults)'
+complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l set-default -d 'Set agents.defaults.model to the first selection'
+complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l set-image -d 'Set agents.defaults.imageModel to the first image selection'
+complete -c openclaw -n "__openclaw_command_path_matches models scan -- --container --profile --log-level --agent --min-params --max-age-days --provider --max-candidates --timeout --concurrency" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "list" -d 'List saved auth profiles'
+complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "add" -d 'Interactive auth helper (provider auth or paste token)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "login" -d 'Run a provider plugin auth flow (OAuth/API key)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "setup-token" -d 'Run a provider CLI to create/sync a token (TTY required)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "paste-token" -d 'Paste a token into auth-profiles.json and update config'
+complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "paste-api-key" -d 'Paste an API key into auth-profiles.json and update config'
+complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "login-github-copilot" -d 'Login to GitHub Copilot via GitHub device flow (TTY required)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -a "order" -d 'Manage per-agent auth profile order overrides'
+complete -c openclaw -n "__openclaw_command_path_matches models auth -- --container --profile --log-level --agent" -l agent -d 'Agent id for auth commands'
+complete -c openclaw -n "__openclaw_command_path_matches models auth list -- --container --profile --log-level --agent --provider" -l provider -d 'Filter by provider id'
+complete -c openclaw -n "__openclaw_command_path_matches models auth list -- --container --profile --log-level --agent --provider" -l agent -d 'Agent id (default: configured default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth list -- --container --profile --log-level --agent --provider" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches models auth login -- --container --profile --log-level --agent --provider --method --profile-id" -l provider -d 'Provider id registered by a plugin'
+complete -c openclaw -n "__openclaw_command_path_matches models auth login -- --container --profile --log-level --agent --provider --method --profile-id" -l method -d 'Provider auth method id'
+complete -c openclaw -n "__openclaw_command_path_matches models auth login -- --container --profile --log-level --agent --provider --method --profile-id" -l device-code -d 'Use the provider device-code auth method'
+complete -c openclaw -n "__openclaw_command_path_matches models auth login -- --container --profile --log-level --agent --provider --method --profile-id" -l profile-id -d 'Auth profile id override for single-profile login methods'
+complete -c openclaw -n "__openclaw_command_path_matches models auth login -- --container --profile --log-level --agent --provider --method --profile-id" -l set-default -d 'Apply the provider'\''s default model recommendation'
+complete -c openclaw -n "__openclaw_command_path_matches models auth login -- --container --profile --log-level --agent --provider --method --profile-id" -l force -d 'Remove existing profiles for the provider before logging in (use when a cached OAuth profile is stuck or you want to switch accounts)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth setup-token -- --container --profile --log-level --agent --provider" -l provider -d 'Provider id'
+complete -c openclaw -n "__openclaw_command_path_matches models auth setup-token -- --container --profile --log-level --agent --provider" -l yes -d 'Skip confirmation'
+complete -c openclaw -n "__openclaw_command_path_matches models auth paste-token -- --container --profile --log-level --agent --provider --profile-id --expires-in" -l provider -d 'Provider id (e.g. anthropic)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth paste-token -- --container --profile --log-level --agent --provider --profile-id --expires-in" -l profile-id -d 'Auth profile id (default: :manual)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth paste-token -- --container --profile --log-level --agent --provider --profile-id --expires-in" -l expires-in -d 'Optional expiry duration (e.g. 365d, 12h). Stored as absolute expiresAt.'
+complete -c openclaw -n "__openclaw_command_path_matches models auth paste-api-key -- --container --profile --log-level --agent --provider --profile-id" -l provider -d 'Provider id (e.g. openai)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth paste-api-key -- --container --profile --log-level --agent --provider --profile-id" -l profile-id -d 'Auth profile id (default: :manual)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth login-github-copilot -- --container --profile --log-level --agent" -l yes -d 'Overwrite existing profile without prompting'
+complete -c openclaw -n "__openclaw_command_path_matches models auth order -- --container --profile --log-level --agent" -a "get" -d 'Show per-agent auth order override (from auth-state.json)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth order -- --container --profile --log-level --agent" -a "set" -d 'Set per-agent auth order override (writes auth-state.json)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth order -- --container --profile --log-level --agent" -a "clear" -d 'Clear per-agent auth order override (fall back to config/round-robin)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth order get -- --container --profile --log-level --agent --provider" -l provider -d 'Provider id (e.g. anthropic)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth order get -- --container --profile --log-level --agent --provider" -l agent -d 'Agent id (default: configured default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth order get -- --container --profile --log-level --agent --provider" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches models auth order set -- --container --profile --log-level --agent --provider" -l provider -d 'Provider id (e.g. anthropic)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth order set -- --container --profile --log-level --agent --provider" -l agent -d 'Agent id (default: configured default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth order clear -- --container --profile --log-level --agent --provider" -l provider -d 'Provider id (e.g. anthropic)'
+complete -c openclaw -n "__openclaw_command_path_matches models auth order clear -- --container --profile --log-level --agent --provider" -l agent -d 'Agent id (default: configured default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "list" -d 'List canonical capability ids and supported transports'
+complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "inspect" -d 'Inspect one canonical capability id'
+complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "model" -d 'Text inference and model catalog commands'
+complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "image" -d 'Image generation and description'
+complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "audio" -d 'Audio transcription'
+complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "tts" -d 'Text to speech'
+complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "video" -d 'Video generation and description'
+complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "web" -d 'Web capabilities'
+complete -c openclaw -n "__openclaw_command_path_matches infer -- --container --profile --log-level" -a "embedding" -d 'Embedding providers'
+complete -c openclaw -n "__openclaw_command_path_matches infer list -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer inspect -- --container --profile --log-level --name" -l name -d 'Capability id'
+complete -c openclaw -n "__openclaw_command_path_matches infer inspect -- --container --profile --log-level --name" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer model -- --container --profile --log-level" -a "run" -d 'Run a one-shot model turn'
+complete -c openclaw -n "__openclaw_command_path_matches infer model -- --container --profile --log-level" -a "list" -d 'List known models'
+complete -c openclaw -n "__openclaw_command_path_matches infer model -- --container --profile --log-level" -a "inspect" -d 'Inspect one model catalog entry'
+complete -c openclaw -n "__openclaw_command_path_matches infer model -- --container --profile --log-level" -a "providers" -d 'List model providers from the catalog'
+complete -c openclaw -n "__openclaw_command_path_matches infer model -- --container --profile --log-level" -a "auth" -d 'Provider auth helpers'
+complete -c openclaw -n "__openclaw_command_path_matches infer model run -- --container --profile --log-level --prompt --file --model --thinking" -l prompt -d 'Prompt text'
+complete -c openclaw -n "__openclaw_command_path_matches infer model run -- --container --profile --log-level --prompt --file --model --thinking" -l file -d 'Image file'
+complete -c openclaw -n "__openclaw_command_path_matches infer model run -- --container --profile --log-level --prompt --file --model --thinking" -l model -d 'Model override'
+complete -c openclaw -n "__openclaw_command_path_matches infer model run -- --container --profile --log-level --prompt --file --model --thinking" -l thinking -d 'Thinking level override'
+complete -c openclaw -n "__openclaw_command_path_matches infer model run -- --container --profile --log-level --prompt --file --model --thinking" -l local -d 'Force local execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer model run -- --container --profile --log-level --prompt --file --model --thinking" -l gateway -d 'Force gateway execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer model run -- --container --profile --log-level --prompt --file --model --thinking" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer model list -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer model inspect -- --container --profile --log-level --model" -l model -d 'Model id'
+complete -c openclaw -n "__openclaw_command_path_matches infer model inspect -- --container --profile --log-level --model" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer model providers -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer model auth -- --container --profile --log-level" -a "login" -d 'Run provider auth login'
+complete -c openclaw -n "__openclaw_command_path_matches infer model auth -- --container --profile --log-level" -a "logout" -d 'Remove saved auth profiles for one provider'
+complete -c openclaw -n "__openclaw_command_path_matches infer model auth -- --container --profile --log-level" -a "status" -d 'Show configured auth state'
+complete -c openclaw -n "__openclaw_command_path_matches infer model auth login -- --container --profile --log-level --provider --method" -l provider -d 'Provider id'
+complete -c openclaw -n "__openclaw_command_path_matches infer model auth login -- --container --profile --log-level --provider --method" -l method -d 'Provider auth method id'
+complete -c openclaw -n "__openclaw_command_path_matches infer model auth logout -- --container --profile --log-level --provider --agent" -l provider -d 'Provider id'
+complete -c openclaw -n "__openclaw_command_path_matches infer model auth logout -- --container --profile --log-level --provider --agent" -l agent -d 'Agent id (default: configured default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches infer model auth logout -- --container --profile --log-level --provider --agent" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer model auth status -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer image -- --container --profile --log-level" -a "generate" -d 'Generate images'
+complete -c openclaw -n "__openclaw_command_path_matches infer image -- --container --profile --log-level" -a "edit" -d 'Edit images with one or more input files'
+complete -c openclaw -n "__openclaw_command_path_matches infer image -- --container --profile --log-level" -a "describe" -d 'Describe one image file'
+complete -c openclaw -n "__openclaw_command_path_matches infer image -- --container --profile --log-level" -a "describe-many" -d 'Describe multiple image files'
+complete -c openclaw -n "__openclaw_command_path_matches infer image -- --container --profile --log-level" -a "providers" -d 'List image generation providers'
+complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l prompt -d 'Prompt text'
+complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l model -d 'Model override'
+complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l count -d 'Number of images'
+complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l size -d 'Size hint like 1024x1024'
+complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l aspect-ratio -d 'Aspect ratio hint like 16:9'
+complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l resolution -d 'Resolution hint: 1K, 2K, or 4K'
+complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l output-format -d 'Output format hint: png, jpeg, or webp'
+complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l background -d 'Background hint: transparent, opaque, or auto'
+complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l openai-background -d 'OpenAI background hint: transparent, opaque, or auto'
+complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l openai-moderation -d 'OpenAI moderation hint: low or auto'
+complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l quality -d 'Quality hint: low, medium, high, or auto'
+complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l timeout-ms -d 'Provider request timeout in milliseconds'
+complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l output -d 'Output path'
+complete -c openclaw -n "__openclaw_command_path_matches infer image generate -- --container --profile --log-level --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l file -d 'Input file'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l prompt -d 'Prompt text'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l model -d 'Model override'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l count -d 'Number of images'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l size -d 'Size hint like 1024x1024'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l aspect-ratio -d 'Aspect ratio hint like 16:9'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l resolution -d 'Resolution hint: 1K, 2K, or 4K'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l output-format -d 'Output format hint: png, jpeg, or webp'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l background -d 'Background hint: transparent, opaque, or auto'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l openai-background -d 'OpenAI background hint: transparent, opaque, or auto'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l openai-moderation -d 'OpenAI moderation hint: low or auto'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l quality -d 'Quality hint: low, medium, high, or auto'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l timeout-ms -d 'Provider request timeout in milliseconds'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l output -d 'Output path'
+complete -c openclaw -n "__openclaw_command_path_matches infer image edit -- --container --profile --log-level --file --prompt --model --count --size --aspect-ratio --resolution --output-format --background --openai-background --openai-moderation --quality --timeout-ms --output" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer image describe -- --container --profile --log-level --file --prompt --model --timeout-ms" -l file -d 'Image file'
+complete -c openclaw -n "__openclaw_command_path_matches infer image describe -- --container --profile --log-level --file --prompt --model --timeout-ms" -l prompt -d 'Prompt hint'
+complete -c openclaw -n "__openclaw_command_path_matches infer image describe -- --container --profile --log-level --file --prompt --model --timeout-ms" -l model -d 'Model override'
+complete -c openclaw -n "__openclaw_command_path_matches infer image describe -- --container --profile --log-level --file --prompt --model --timeout-ms" -l timeout-ms -d 'Provider request timeout in milliseconds'
+complete -c openclaw -n "__openclaw_command_path_matches infer image describe -- --container --profile --log-level --file --prompt --model --timeout-ms" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer image describe-many -- --container --profile --log-level --file --prompt --model --timeout-ms" -l file -d 'Image file'
+complete -c openclaw -n "__openclaw_command_path_matches infer image describe-many -- --container --profile --log-level --file --prompt --model --timeout-ms" -l prompt -d 'Prompt hint'
+complete -c openclaw -n "__openclaw_command_path_matches infer image describe-many -- --container --profile --log-level --file --prompt --model --timeout-ms" -l model -d 'Model override'
+complete -c openclaw -n "__openclaw_command_path_matches infer image describe-many -- --container --profile --log-level --file --prompt --model --timeout-ms" -l timeout-ms -d 'Provider request timeout in milliseconds'
+complete -c openclaw -n "__openclaw_command_path_matches infer image describe-many -- --container --profile --log-level --file --prompt --model --timeout-ms" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer image providers -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer audio -- --container --profile --log-level" -a "transcribe" -d 'Transcribe one audio file'
+complete -c openclaw -n "__openclaw_command_path_matches infer audio -- --container --profile --log-level" -a "providers" -d 'List audio transcription providers'
+complete -c openclaw -n "__openclaw_command_path_matches infer audio transcribe -- --container --profile --log-level --file --language --prompt --model" -l file -d 'Audio file'
+complete -c openclaw -n "__openclaw_command_path_matches infer audio transcribe -- --container --profile --log-level --file --language --prompt --model" -l language -d 'Language hint'
+complete -c openclaw -n "__openclaw_command_path_matches infer audio transcribe -- --container --profile --log-level --file --language --prompt --model" -l prompt -d 'Prompt hint'
+complete -c openclaw -n "__openclaw_command_path_matches infer audio transcribe -- --container --profile --log-level --file --language --prompt --model" -l model -d 'Model override'
+complete -c openclaw -n "__openclaw_command_path_matches infer audio transcribe -- --container --profile --log-level --file --language --prompt --model" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer audio providers -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "convert" -d 'Convert text to speech'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "voices" -d 'List voices for a TTS provider'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "providers" -d 'List speech providers'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "personas" -d 'List TTS personas'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "status" -d 'Show TTS status'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "enable" -d 'Enable TTS'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "disable" -d 'Disable TTS'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "set-provider" -d 'Set the active TTS provider'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts -- --container --profile --log-level" -a "set-persona" -d 'Set the active TTS persona'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l text -d 'Input text'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l channel -d 'Channel hint'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l voice -d 'Voice hint'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l model -d 'Model override'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l output -d 'Output path'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l local -d 'Force local execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l gateway -d 'Force gateway execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts convert -- --container --profile --log-level --text --channel --voice --model --output" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts voices -- --container --profile --log-level --provider" -l provider -d 'Speech provider id'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts voices -- --container --profile --log-level --provider" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts providers -- --container --profile --log-level" -l local -d 'Force local execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts providers -- --container --profile --log-level" -l gateway -d 'Force gateway execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts providers -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts personas -- --container --profile --log-level" -l local -d 'Force local execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts personas -- --container --profile --log-level" -l gateway -d 'Force gateway execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts personas -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts status -- --container --profile --log-level" -l gateway -d 'Force gateway execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts status -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts enable -- --container --profile --log-level" -l local -d 'Force local execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts enable -- --container --profile --log-level" -l gateway -d 'Force gateway execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts enable -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts disable -- --container --profile --log-level" -l local -d 'Force local execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts disable -- --container --profile --log-level" -l gateway -d 'Force gateway execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts disable -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts set-provider -- --container --profile --log-level --provider" -l provider -d 'Speech provider id'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts set-provider -- --container --profile --log-level --provider" -l local -d 'Force local execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts set-provider -- --container --profile --log-level --provider" -l gateway -d 'Force gateway execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts set-provider -- --container --profile --log-level --provider" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts set-persona -- --container --profile --log-level --persona" -l persona -d 'TTS persona id'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts set-persona -- --container --profile --log-level --persona" -l off -d 'Disable the active TTS persona'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts set-persona -- --container --profile --log-level --persona" -l local -d 'Force local execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts set-persona -- --container --profile --log-level --persona" -l gateway -d 'Force gateway execution'
+complete -c openclaw -n "__openclaw_command_path_matches infer tts set-persona -- --container --profile --log-level --persona" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer video -- --container --profile --log-level" -a "generate" -d 'Generate video'
+complete -c openclaw -n "__openclaw_command_path_matches infer video -- --container --profile --log-level" -a "describe" -d 'Describe one video file'
+complete -c openclaw -n "__openclaw_command_path_matches infer video -- --container --profile --log-level" -a "providers" -d 'List video generation and description providers'
+complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l prompt -d 'Prompt text'
+complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l model -d 'Model override'
+complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l size -d 'Size hint like 1280x720'
+complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l aspect-ratio -d 'Aspect ratio hint like 16:9'
+complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l resolution -d 'Resolution hint: 360P, 480P, 540P, 720P, 768P, or 1080P'
+complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l duration -d 'Target duration in seconds'
+complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l audio -d 'Enable generated audio when supported'
+complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l watermark -d 'Request provider watermark when supported'
+complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l timeout-ms -d 'Provider request timeout in milliseconds'
+complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l output -d 'Output path'
+complete -c openclaw -n "__openclaw_command_path_matches infer video generate -- --container --profile --log-level --prompt --model --size --aspect-ratio --resolution --duration --timeout-ms --output" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer video describe -- --container --profile --log-level --file --model" -l file -d 'Video file'
+complete -c openclaw -n "__openclaw_command_path_matches infer video describe -- --container --profile --log-level --file --model" -l model -d 'Model override'
+complete -c openclaw -n "__openclaw_command_path_matches infer video describe -- --container --profile --log-level --file --model" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer video providers -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer web -- --container --profile --log-level" -a "search" -d 'Run web search'
+complete -c openclaw -n "__openclaw_command_path_matches infer web -- --container --profile --log-level" -a "fetch" -d 'Fetch one URL'
+complete -c openclaw -n "__openclaw_command_path_matches infer web -- --container --profile --log-level" -a "providers" -d 'List web providers'
+complete -c openclaw -n "__openclaw_command_path_matches infer web search -- --container --profile --log-level --query --provider --limit" -l query -d 'Search query'
+complete -c openclaw -n "__openclaw_command_path_matches infer web search -- --container --profile --log-level --query --provider --limit" -l provider -d 'Provider id'
+complete -c openclaw -n "__openclaw_command_path_matches infer web search -- --container --profile --log-level --query --provider --limit" -l limit -d 'Result limit'
+complete -c openclaw -n "__openclaw_command_path_matches infer web search -- --container --profile --log-level --query --provider --limit" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer web fetch -- --container --profile --log-level --url --provider --format" -l url -d 'URL'
+complete -c openclaw -n "__openclaw_command_path_matches infer web fetch -- --container --profile --log-level --url --provider --format" -l provider -d 'Provider id'
+complete -c openclaw -n "__openclaw_command_path_matches infer web fetch -- --container --profile --log-level --url --provider --format" -l format -d 'Format hint'
+complete -c openclaw -n "__openclaw_command_path_matches infer web fetch -- --container --profile --log-level --url --provider --format" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer web providers -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer embedding -- --container --profile --log-level" -a "create" -d 'Create embeddings'
+complete -c openclaw -n "__openclaw_command_path_matches infer embedding -- --container --profile --log-level" -a "providers" -d 'List embedding providers'
+complete -c openclaw -n "__openclaw_command_path_matches infer embedding create -- --container --profile --log-level --text --provider --model" -l text -d 'Input text'
+complete -c openclaw -n "__openclaw_command_path_matches infer embedding create -- --container --profile --log-level --text --provider --model" -l provider -d 'Provider id'
+complete -c openclaw -n "__openclaw_command_path_matches infer embedding create -- --container --profile --log-level --text --provider --model" -l model -d 'Model override'
+complete -c openclaw -n "__openclaw_command_path_matches infer embedding create -- --container --profile --log-level --text --provider --model" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches infer embedding providers -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches approvals -- --container --profile --log-level" -a "get" -d 'Fetch exec approvals snapshot'
+complete -c openclaw -n "__openclaw_command_path_matches approvals -- --container --profile --log-level" -a "set" -d 'Replace exec approvals with a JSON file'
+complete -c openclaw -n "__openclaw_command_path_matches approvals -- --container --profile --log-level" -a "allowlist" -d 'Edit the per-agent allowlist'
+complete -c openclaw -n "__openclaw_command_path_matches approvals get -- --container --profile --log-level --node --url --token --timeout" -l node -d 'Target node id/name/IP'
+complete -c openclaw -n "__openclaw_command_path_matches approvals get -- --container --profile --log-level --node --url --token --timeout" -l gateway -d 'Force gateway approvals'
+complete -c openclaw -n "__openclaw_command_path_matches approvals get -- --container --profile --log-level --node --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches approvals get -- --container --profile --log-level --node --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches approvals get -- --container --profile --log-level --node --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches approvals get -- --container --profile --log-level --node --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l node -d 'Target node id/name/IP'
+complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l gateway -d 'Force gateway approvals'
+complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l file -d 'Path to JSON file to upload'
+complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l stdin -d 'Read JSON from stdin'
+complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches approvals set -- --container --profile --log-level --node --file --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist -- --container --profile --log-level" -a "add" -d 'Add a glob pattern to an allowlist'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist -- --container --profile --log-level" -a "remove" -d 'Remove a glob pattern from an allowlist'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist add -- --container --profile --log-level --node --agent --url --token --timeout" -l node -d 'Target node id/name/IP'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist add -- --container --profile --log-level --node --agent --url --token --timeout" -l gateway -d 'Force gateway approvals'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist add -- --container --profile --log-level --node --agent --url --token --timeout" -l agent -d 'Agent id (defaults to "*")'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist add -- --container --profile --log-level --node --agent --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist add -- --container --profile --log-level --node --agent --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist add -- --container --profile --log-level --node --agent --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist add -- --container --profile --log-level --node --agent --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist remove -- --container --profile --log-level --node --agent --url --token --timeout" -l node -d 'Target node id/name/IP'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist remove -- --container --profile --log-level --node --agent --url --token --timeout" -l gateway -d 'Force gateway approvals'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist remove -- --container --profile --log-level --node --agent --url --token --timeout" -l agent -d 'Agent id (defaults to "*")'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist remove -- --container --profile --log-level --node --agent --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist remove -- --container --profile --log-level --node --agent --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist remove -- --container --profile --log-level --node --agent --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches approvals allowlist remove -- --container --profile --log-level --node --agent --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches exec-policy -- --container --profile --log-level" -a "show" -d 'Show the local config policy, host approvals, and effective merge'
+complete -c openclaw -n "__openclaw_command_path_matches exec-policy -- --container --profile --log-level" -a "preset" -d 'Apply a synchronized preset: "yolo", "cautious", or "deny-all"'
+complete -c openclaw -n "__openclaw_command_path_matches exec-policy -- --container --profile --log-level" -a "set" -d 'Synchronize local config and host approvals using explicit values'
+complete -c openclaw -n "__openclaw_command_path_matches exec-policy show -- --container --profile --log-level" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches exec-policy preset -- --container --profile --log-level" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches exec-policy set -- --container --profile --log-level --host --security --ask --ask-fallback" -l host -d 'Exec host target: auto|sandbox|gateway|node'
+complete -c openclaw -n "__openclaw_command_path_matches exec-policy set -- --container --profile --log-level --host --security --ask --ask-fallback" -l security -d 'Exec security: deny|allowlist|full'
+complete -c openclaw -n "__openclaw_command_path_matches exec-policy set -- --container --profile --log-level --host --security --ask --ask-fallback" -l ask -d 'Exec ask mode: off|on-miss|always'
+complete -c openclaw -n "__openclaw_command_path_matches exec-policy set -- --container --profile --log-level --host --security --ask --ask-fallback" -l ask-fallback -d 'Host approvals fallback: deny|allowlist|full'
+complete -c openclaw -n "__openclaw_command_path_matches exec-policy set -- --container --profile --log-level --host --security --ask --ask-fallback" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "status" -d 'List known nodes with connection status and capabilities'
+complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "describe" -d 'Describe a node (capabilities + supported invoke commands)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "list" -d 'List pending and paired nodes'
+complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "pending" -d 'List pending pairing requests'
+complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "approve" -d 'Approve a pending pairing request'
+complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "reject" -d 'Reject a pending pairing request'
+complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "remove" -d 'Remove a paired node entry'
+complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "rename" -d 'Rename a paired node (display name override)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "invoke" -d 'Invoke a command on a paired node'
+complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "notify" -d 'Send a local notification on a node (mac only)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "push" -d 'Send an APNs test push to an iOS node'
+complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "camera" -d 'Capture camera media from a paired node'
+complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "screen" -d 'Capture screen recordings from a paired node'
+complete -c openclaw -n "__openclaw_command_path_matches nodes -- --container --profile --log-level" -a "location" -d 'Fetch location from a paired node'
+complete -c openclaw -n "__openclaw_command_path_matches nodes status -- --container --profile --log-level --last-connected --url --token --timeout" -l connected -d 'Only show connected nodes'
+complete -c openclaw -n "__openclaw_command_path_matches nodes status -- --container --profile --log-level --last-connected --url --token --timeout" -l last-connected -d 'Only show nodes connected within duration (e.g. 24h)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes status -- --container --profile --log-level --last-connected --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes status -- --container --profile --log-level --last-connected --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes status -- --container --profile --log-level --last-connected --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes status -- --container --profile --log-level --last-connected --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes describe -- --container --profile --log-level --node --url --token --timeout" -l node -d 'Node id, name, or IP'
+complete -c openclaw -n "__openclaw_command_path_matches nodes describe -- --container --profile --log-level --node --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes describe -- --container --profile --log-level --node --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes describe -- --container --profile --log-level --node --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes describe -- --container --profile --log-level --node --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes list -- --container --profile --log-level --last-connected --url --token --timeout" -l connected -d 'Only show connected nodes'
+complete -c openclaw -n "__openclaw_command_path_matches nodes list -- --container --profile --log-level --last-connected --url --token --timeout" -l last-connected -d 'Only show nodes connected within duration (e.g. 24h)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes list -- --container --profile --log-level --last-connected --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes list -- --container --profile --log-level --last-connected --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes list -- --container --profile --log-level --last-connected --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes list -- --container --profile --log-level --last-connected --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes pending -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes pending -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes pending -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes pending -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes approve -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes approve -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes approve -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes approve -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes reject -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes reject -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes reject -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes reject -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes remove -- --container --profile --log-level --node --url --token --timeout" -l node -d 'Node id, name, or IP'
+complete -c openclaw -n "__openclaw_command_path_matches nodes remove -- --container --profile --log-level --node --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes remove -- --container --profile --log-level --node --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes remove -- --container --profile --log-level --node --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes remove -- --container --profile --log-level --node --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes rename -- --container --profile --log-level --node --name --url --token --timeout" -l node -d 'Node id, name, or IP'
+complete -c openclaw -n "__openclaw_command_path_matches nodes rename -- --container --profile --log-level --node --name --url --token --timeout" -l name -d 'New display name'
+complete -c openclaw -n "__openclaw_command_path_matches nodes rename -- --container --profile --log-level --node --name --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes rename -- --container --profile --log-level --node --name --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes rename -- --container --profile --log-level --node --name --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes rename -- --container --profile --log-level --node --name --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l node -d 'Node id, name, or IP'
+complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l command -d 'Command (e.g. canvas.eval)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l params -d 'JSON object string for params'
+complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l invoke-timeout -d 'Node invoke timeout in ms (default 15000)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l idempotency-key -d 'Idempotency key (optional)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes invoke -- --container --profile --log-level --node --command --params --invoke-timeout --idempotency-key --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l node -d 'Node id, name, or IP'
+complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l title -d 'Notification title'
+complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l body -d 'Notification body'
+complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l sound -d 'Notification sound'
+complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l priority -d 'Notification priority'
+complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l delivery -d 'Delivery mode'
+complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l invoke-timeout -d 'Node invoke timeout in ms (default 15000)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes notify -- --container --profile --log-level --node --title --body --sound --priority --delivery --invoke-timeout --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l node -d 'Node id, name, or IP'
+complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l title -d 'Push title'
+complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l body -d 'Push body'
+complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l environment -d 'Override APNs environment'
+complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes push -- --container --profile --log-level --node --title --body --environment --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera -- --container --profile --log-level" -a "list" -d 'List available cameras on a node'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera -- --container --profile --log-level" -a "snap" -d 'Capture a photo from a node camera (prints the saved path)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera -- --container --profile --log-level" -a "clip" -d 'Capture a short video clip from a node camera (prints the saved path)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera list -- --container --profile --log-level --node --url --token --timeout" -l node -d 'Node id, name, or IP'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera list -- --container --profile --log-level --node --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera list -- --container --profile --log-level --node --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera list -- --container --profile --log-level --node --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera list -- --container --profile --log-level --node --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l node -d 'Node id, name, or IP'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l facing -d 'Camera facing'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l device-id -d 'Camera device id (from nodes camera list)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l max-width -d 'Max width in px (optional)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l quality -d 'JPEG quality (default 0.9)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l delay-ms -d 'Delay before capture in ms (macOS default 2000)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l invoke-timeout -d 'Node invoke timeout in ms (default 20000)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera snap -- --container --profile --log-level --node --facing --device-id --max-width --quality --delay-ms --invoke-timeout --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l node -d 'Node id, name, or IP'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l facing -d 'Camera facing'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l device-id -d 'Camera device id (from nodes camera list)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l duration -d 'Duration (default 3000ms; supports ms/s/m, e.g. 10s)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l no-audio -d 'Disable audio capture'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l invoke-timeout -d 'Node invoke timeout in ms (default 90000)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes camera clip -- --container --profile --log-level --node --facing --device-id --duration --invoke-timeout --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes screen -- --container --profile --log-level" -a "record" -d 'Capture a short screen recording from a node (prints the saved path)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l node -d 'Node id, name, or IP'
+complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l screen -d 'Screen index (0 = primary)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l duration -d 'Clip duration (ms or 10s)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l fps -d 'Frames per second'
+complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l no-audio -d 'Disable microphone audio capture'
+complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l out -d 'Output path'
+complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l invoke-timeout -d 'Node invoke timeout in ms (default 120000)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes screen record -- --container --profile --log-level --node --screen --duration --fps --out --invoke-timeout --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches nodes location -- --container --profile --log-level" -a "get" -d 'Fetch the current location from a node'
+complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l node -d 'Node id, name, or IP'
+complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l max-age -d 'Use cached location newer than this (ms)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l accuracy -d 'Desired accuracy (default: balanced/precise depending on node setting)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l location-timeout -d 'Location fix timeout (ms)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l invoke-timeout -d 'Node invoke timeout in ms (default 20000)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches nodes location get -- --container --profile --log-level --node --max-age --accuracy --location-timeout --invoke-timeout --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches devices -- --container --profile --log-level" -a "list" -d 'List pending and paired devices'
+complete -c openclaw -n "__openclaw_command_path_matches devices -- --container --profile --log-level" -a "remove" -d 'Remove a paired device entry'
+complete -c openclaw -n "__openclaw_command_path_matches devices -- --container --profile --log-level" -a "clear" -d 'Clear paired devices from the gateway table'
+complete -c openclaw -n "__openclaw_command_path_matches devices -- --container --profile --log-level" -a "approve" -d 'Approve a pending device pairing request'
+complete -c openclaw -n "__openclaw_command_path_matches devices -- --container --profile --log-level" -a "reject" -d 'Reject a pending device pairing request'
+complete -c openclaw -n "__openclaw_command_path_matches devices -- --container --profile --log-level" -a "rotate" -d 'Rotate a device token for a role'
+complete -c openclaw -n "__openclaw_command_path_matches devices -- --container --profile --log-level" -a "revoke" -d 'Revoke a device token for a role'
+complete -c openclaw -n "__openclaw_command_path_matches devices list -- --container --profile --log-level --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches devices list -- --container --profile --log-level --url --token --password --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches devices list -- --container --profile --log-level --url --token --password --timeout" -l password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches devices list -- --container --profile --log-level --url --token --password --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches devices list -- --container --profile --log-level --url --token --password --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches devices remove -- --container --profile --log-level --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches devices remove -- --container --profile --log-level --url --token --password --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches devices remove -- --container --profile --log-level --url --token --password --timeout" -l password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches devices remove -- --container --profile --log-level --url --token --password --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches devices remove -- --container --profile --log-level --url --token --password --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches devices clear -- --container --profile --log-level --url --token --password --timeout" -l pending -d 'Also reject all pending pairing requests'
+complete -c openclaw -n "__openclaw_command_path_matches devices clear -- --container --profile --log-level --url --token --password --timeout" -l yes -d 'Confirm destructive clear'
+complete -c openclaw -n "__openclaw_command_path_matches devices clear -- --container --profile --log-level --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches devices clear -- --container --profile --log-level --url --token --password --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches devices clear -- --container --profile --log-level --url --token --password --timeout" -l password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches devices clear -- --container --profile --log-level --url --token --password --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches devices clear -- --container --profile --log-level --url --token --password --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches devices approve -- --container --profile --log-level --url --token --password --timeout" -l latest -d 'Show the most recent pending request to approve explicitly'
+complete -c openclaw -n "__openclaw_command_path_matches devices approve -- --container --profile --log-level --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches devices approve -- --container --profile --log-level --url --token --password --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches devices approve -- --container --profile --log-level --url --token --password --timeout" -l password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches devices approve -- --container --profile --log-level --url --token --password --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches devices approve -- --container --profile --log-level --url --token --password --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches devices reject -- --container --profile --log-level --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches devices reject -- --container --profile --log-level --url --token --password --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches devices reject -- --container --profile --log-level --url --token --password --timeout" -l password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches devices reject -- --container --profile --log-level --url --token --password --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches devices reject -- --container --profile --log-level --url --token --password --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l device -d 'Device id'
+complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l role -d 'Role name'
+complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l scope -d 'Scopes to attach to the token (repeatable)'
+complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches devices rotate -- --container --profile --log-level --device --role --scope --url --token --password --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches devices revoke -- --container --profile --log-level --device --role --url --token --password --timeout" -l device -d 'Device id'
+complete -c openclaw -n "__openclaw_command_path_matches devices revoke -- --container --profile --log-level --device --role --url --token --password --timeout" -l role -d 'Role name'
+complete -c openclaw -n "__openclaw_command_path_matches devices revoke -- --container --profile --log-level --device --role --url --token --password --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches devices revoke -- --container --profile --log-level --device --role --url --token --password --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches devices revoke -- --container --profile --log-level --device --role --url --token --password --timeout" -l password -d 'Gateway password (password auth)'
+complete -c openclaw -n "__openclaw_command_path_matches devices revoke -- --container --profile --log-level --device --role --url --token --password --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches devices revoke -- --container --profile --log-level --device --role --url --token --password --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches node -- --container --profile --log-level" -a "run" -d 'Run the headless node host (foreground)'
+complete -c openclaw -n "__openclaw_command_path_matches node -- --container --profile --log-level" -a "status" -d 'Show node host status'
+complete -c openclaw -n "__openclaw_command_path_matches node -- --container --profile --log-level" -a "install" -d 'Install the node host service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches node -- --container --profile --log-level" -a "uninstall" -d 'Uninstall the node host service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches node -- --container --profile --log-level" -a "stop" -d 'Stop the node host service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches node -- --container --profile --log-level" -a "start" -d 'Start the node host service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches node -- --container --profile --log-level" -a "restart" -d 'Restart the node host service (launchd/systemd/schtasks)'
+complete -c openclaw -n "__openclaw_command_path_matches node run -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name" -l host -d 'Gateway host'
+complete -c openclaw -n "__openclaw_command_path_matches node run -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name" -l port -d 'Gateway port'
+complete -c openclaw -n "__openclaw_command_path_matches node run -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name" -l tls -d 'Use TLS for the gateway connection'
+complete -c openclaw -n "__openclaw_command_path_matches node run -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name" -l tls-fingerprint -d 'Expected TLS certificate fingerprint (sha256)'
+complete -c openclaw -n "__openclaw_command_path_matches node run -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name" -l node-id -d 'Override node id (clears pairing token)'
+complete -c openclaw -n "__openclaw_command_path_matches node run -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name" -l display-name -d 'Override node display name'
+complete -c openclaw -n "__openclaw_command_path_matches node status -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l host -d 'Gateway host'
+complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l port -d 'Gateway port'
+complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l tls -d 'Use TLS for the gateway connection'
+complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l tls-fingerprint -d 'Expected TLS certificate fingerprint (sha256)'
+complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l node-id -d 'Override node id (clears pairing token)'
+complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l display-name -d 'Override node display name'
+complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l runtime -d 'Service runtime (node|bun). Default: node'
+complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l force -d 'Reinstall/overwrite if already installed'
+complete -c openclaw -n "__openclaw_command_path_matches node install -- --container --profile --log-level --host --port --tls-fingerprint --node-id --display-name --runtime" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches node uninstall -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches node stop -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches node start -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches node restart -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches sandbox -- --container --profile --log-level" -a "list" -d 'List sandbox containers and their status'
+complete -c openclaw -n "__openclaw_command_path_matches sandbox -- --container --profile --log-level" -a "recreate" -d 'Remove containers to force recreation with updated config'
+complete -c openclaw -n "__openclaw_command_path_matches sandbox -- --container --profile --log-level" -a "explain" -d 'Explain effective sandbox/tool policy for a session/agent'
+complete -c openclaw -n "__openclaw_command_path_matches sandbox list -- --container --profile --log-level" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches sandbox list -- --container --profile --log-level" -l browser -d 'List browser containers only'
+complete -c openclaw -n "__openclaw_command_path_matches sandbox recreate -- --container --profile --log-level --session --agent" -l all -d 'Recreate all sandbox containers'
+complete -c openclaw -n "__openclaw_command_path_matches sandbox recreate -- --container --profile --log-level --session --agent" -l session -d 'Recreate container for specific session'
+complete -c openclaw -n "__openclaw_command_path_matches sandbox recreate -- --container --profile --log-level --session --agent" -l agent -d 'Recreate containers for specific agent'
+complete -c openclaw -n "__openclaw_command_path_matches sandbox recreate -- --container --profile --log-level --session --agent" -l browser -d 'Only recreate browser containers'
+complete -c openclaw -n "__openclaw_command_path_matches sandbox recreate -- --container --profile --log-level --session --agent" -l force -d 'Skip confirmation prompt'
+complete -c openclaw -n "__openclaw_command_path_matches sandbox explain -- --container --profile --log-level --session --agent" -l session -d 'Session key to inspect (defaults to agent main)'
+complete -c openclaw -n "__openclaw_command_path_matches sandbox explain -- --container --profile --log-level --session --agent" -l agent -d 'Agent id to inspect (defaults to derived agent)'
+complete -c openclaw -n "__openclaw_command_path_matches sandbox explain -- --container --profile --log-level --session --agent" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l local -d 'Run against the local embedded agent runtime'
+complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l password -d 'Gateway password (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l session -d 'Session key (default: "main", or "global" when scope is global)'
+complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l deliver -d 'Deliver assistant replies'
+complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l thinking -d 'Thinking level override'
+complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l message -d 'Send an initial message after connecting'
+complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l timeout-ms -d 'Agent timeout in ms (defaults to agents.defaults.timeoutSeconds)'
+complete -c openclaw -n "__openclaw_command_path_matches tui -- --container --profile --log-level --url --token --password --session --thinking --message --timeout-ms --history-limit" -l history-limit -d 'History entries to load'
+complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "status" -d 'Show cron scheduler status'
+complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "list" -d 'List cron jobs'
+complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "add" -d 'Add a cron job'
+complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "rm" -d 'Remove a cron job'
+complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "enable" -d 'Enable a cron job'
+complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "disable" -d 'Disable a cron job'
+complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "get" -d 'Get a cron job as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "show" -d 'Show a cron job'
+complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "runs" -d 'Show cron run history'
+complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "run" -d 'Run a cron job now (debug)'
+complete -c openclaw -n "__openclaw_command_path_matches cron -- --container --profile --log-level" -a "edit" -d 'Edit a cron job (patch fields)'
+complete -c openclaw -n "__openclaw_command_path_matches cron status -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches cron status -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches cron status -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches cron status -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches cron status -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches cron list -- --container --profile --log-level --agent --url --token --timeout" -l all -d 'Include disabled jobs'
+complete -c openclaw -n "__openclaw_command_path_matches cron list -- --container --profile --log-level --agent --url --token --timeout" -l agent -d 'Filter by agent id'
+complete -c openclaw -n "__openclaw_command_path_matches cron list -- --container --profile --log-level --agent --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches cron list -- --container --profile --log-level --agent --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches cron list -- --container --profile --log-level --agent --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches cron list -- --container --profile --log-level --agent --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches cron list -- --container --profile --log-level --agent --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l name -d 'Job name'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l description -d 'Optional description'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l disabled -d 'Create job disabled'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l delete-after-run -d 'Delete one-shot job after it succeeds'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l keep-after-run -d 'Keep one-shot job after it succeeds'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l agent -d 'Agent id for this job'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l session -d 'Session target (main|isolated)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l session-key -d 'Session key for job routing (e.g. agent:my-agent:my-session)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l wake -d 'Wake mode (now|next-heartbeat)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l at -d 'Run once at time (ISO with offset, or +duration). Use --tz for offset-less datetimes'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l every -d 'Run every duration (e.g. 10m, 1h)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l cron -d 'Cron expression (5-field or 6-field with seconds)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l tz -d 'Timezone for cron expressions (IANA; cron default: Gateway host local timezone)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l stagger -d 'Cron stagger window (e.g. 30s, 5m)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l exact -d 'Disable cron staggering (set stagger to 0)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l system-event -d 'System event payload (main session)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l message -d 'Agent message payload'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l command -d 'Command payload run as sh -lc on the Gateway'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l command-argv -d 'Command payload argv as JSON array of strings'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l command-cwd -d 'Working directory for command payloads'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l command-env -d 'Environment override for command payloads (repeatable)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l command-input -d 'stdin for command payloads'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l thinking -d 'Thinking level for agent jobs (off|minimal|low|medium|high|xhigh)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l model -d 'Model override for agent jobs (provider/model or alias)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l fallbacks -d 'Fallback model list for agent jobs'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l timeout-seconds -d 'Timeout seconds for agent or command jobs'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l no-output-timeout-seconds -d 'No-output timeout seconds for command jobs'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l output-max-bytes -d 'Maximum captured stdout/stderr bytes for command jobs'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l light-context -d 'Use lightweight bootstrap context for agent jobs'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l tools -d 'Tool allow-list (e.g. exec,read,write or exec read write)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l announce -d 'Fallback-deliver final text to a chat'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l deliver -d 'Deprecated (use --announce). Fallback-delivers final text to a chat.'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l no-deliver -d 'Disable runner fallback delivery'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l webhook -d 'POST the finished payload to a webhook URL'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l channel -d 'Delivery channel (last|)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l to -d 'Delivery destination (E.164, Telegram chatId, or Discord channel/user)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l thread-id -d 'Telegram forum topic thread id'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l account -d 'Channel account id for delivery (multi-account setups)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l best-effort-deliver -d 'Do not fail the job if delivery fails'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches cron add -- --container --profile --log-level --name --description --agent --session --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches cron rm -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches cron rm -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches cron rm -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches cron rm -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches cron rm -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches cron enable -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches cron enable -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches cron enable -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches cron enable -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches cron disable -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches cron disable -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches cron disable -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches cron disable -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches cron get -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches cron get -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches cron get -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches cron get -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches cron show -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches cron show -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches cron show -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches cron show -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches cron show -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches cron runs -- --container --profile --log-level --id --run-id --limit --url --token --timeout" -l id -d 'Job id'
+complete -c openclaw -n "__openclaw_command_path_matches cron runs -- --container --profile --log-level --id --run-id --limit --url --token --timeout" -l run-id -d 'Filter by cron run id'
+complete -c openclaw -n "__openclaw_command_path_matches cron runs -- --container --profile --log-level --id --run-id --limit --url --token --timeout" -l limit -d 'Max entries (default 50)'
+complete -c openclaw -n "__openclaw_command_path_matches cron runs -- --container --profile --log-level --id --run-id --limit --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches cron runs -- --container --profile --log-level --id --run-id --limit --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches cron runs -- --container --profile --log-level --id --run-id --limit --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches cron runs -- --container --profile --log-level --id --run-id --limit --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l due -d 'Run only when due (default behavior in older versions)'
+complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l wait -d 'Wait for the queued run to finish'
+complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l wait-timeout -d 'Maximum time to wait for --wait'
+complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l poll-interval -d 'Polling interval for --wait'
+complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches cron run -- --container --profile --log-level --wait-timeout --poll-interval --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l name -d 'Set name'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l description -d 'Set description'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l enable -d 'Enable job'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l disable -d 'Disable job'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l delete-after-run -d 'Delete one-shot job after it succeeds'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l keep-after-run -d 'Keep one-shot job after it succeeds'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l session -d 'Session target (main|isolated)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l agent -d 'Set agent id'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-agent -d 'Unset agent and use default'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l session-key -d 'Set session key for job routing'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-session-key -d 'Unset session key'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l wake -d 'Wake mode (now|next-heartbeat)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l at -d 'Set one-shot time (ISO, offset-less uses --tz) or duration like 20m'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l every -d 'Set interval duration like 10m'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l cron -d 'Set cron expression'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l tz -d 'Timezone for cron expressions (IANA; cron default: Gateway host local timezone)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l stagger -d 'Cron stagger window (e.g. 30s, 5m)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l exact -d 'Disable cron staggering (set stagger to 0)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l system-event -d 'Set systemEvent payload'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l message -d 'Set agentTurn payload message'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l command -d 'Set command payload run as sh -lc on the Gateway'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l command-argv -d 'Set command payload argv as JSON array of strings'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l command-cwd -d 'Set command payload working directory'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l command-env -d 'Set command payload environment overrides (repeatable)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l command-input -d 'Set command payload stdin'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l thinking -d 'Thinking level for agent jobs (off|minimal|low|medium|high|xhigh)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l model -d 'Model override for agent jobs'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l fallbacks -d 'Fallback model list for agent jobs'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-fallbacks -d 'Remove per-job fallback override'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-model -d 'Remove the per-job model override (restore normal cron model precedence)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l timeout-seconds -d 'Timeout seconds for agent or command jobs'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l no-output-timeout-seconds -d 'No-output timeout seconds for command jobs'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l output-max-bytes -d 'Maximum captured stdout/stderr bytes for command jobs'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l light-context -d 'Enable lightweight bootstrap context for agent jobs'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l no-light-context -d 'Disable lightweight bootstrap context for agent jobs'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l tools -d 'Tool allow-list (e.g. exec,read,write or exec read write)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-tools -d 'Remove tool allow-list (use all tools)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l announce -d 'Fallback-deliver final text to a chat'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l deliver -d 'Deprecated (use --announce). Fallback-delivers final text to a chat.'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l no-deliver -d 'Disable runner fallback delivery'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l webhook -d 'POST the finished payload to a webhook URL'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l channel -d 'Delivery channel (last|)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l to -d 'Delivery destination (E.164, Telegram chatId, or Discord channel/user)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l thread-id -d 'Telegram forum topic thread id'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l account -d 'Channel account id for delivery (multi-account setups)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-channel -d 'Unset the delivery channel'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-to -d 'Unset the delivery destination'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-thread-id -d 'Unset the Telegram forum topic thread id'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l clear-account -d 'Unset the per-job delivery account override'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l best-effort-deliver -d 'Do not fail job if delivery fails (also implies --announce when used alone)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l no-best-effort-deliver -d 'Fail job when delivery fails'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert -d 'Enable failure alerts for this job'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l no-failure-alert -d 'Disable failure alerts for this job'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-after -d 'Alert after N consecutive job errors'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-channel -d 'Failure alert channel (last|)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-to -d 'Failure alert destination'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-cooldown -d 'Minimum time between alerts (e.g. 1h, 30m)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-include-skipped -d 'Count consecutive skipped runs toward alerts'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-exclude-skipped -d 'Alert only on execution errors'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-mode -d 'Failure alert delivery mode (announce or webhook)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l failure-alert-account-id -d 'Account ID for failure alert channel (multi-account setups)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches cron edit -- --container --profile --log-level --name --description --session --agent --session-key --wake --at --every --cron --tz --stagger --system-event --message --command --command-argv --command-cwd --command-env --command-input --thinking --model --fallbacks --timeout-seconds --no-output-timeout-seconds --output-max-bytes --tools --webhook --channel --to --thread-id --account --failure-alert-after --failure-alert-channel --failure-alert-to --failure-alert-cooldown --failure-alert-mode --failure-alert-account-id --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches dns -- --container --profile --log-level" -a "setup" -d 'Set up CoreDNS to serve your discovery domain for unicast DNS-SD (Wide-Area Bonjour)'
+complete -c openclaw -n "__openclaw_command_path_matches dns setup -- --container --profile --log-level --domain" -l domain -d 'Wide-area discovery domain (e.g. openclaw.internal)'
+complete -c openclaw -n "__openclaw_command_path_matches dns setup -- --container --profile --log-level --domain" -l apply -d 'Install/update CoreDNS config and (re)start the service (requires sudo)'
+complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "start" -d 'Start the local explicit debug proxy'
+complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "run" -d 'Run a child command with OpenClaw debug proxy capture enabled'
+complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "validate" -d 'Validate the operator-managed network proxy'
+complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "coverage" -d 'Report current debug proxy transport coverage and remaining gaps'
+complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "sessions" -d 'List recent capture sessions'
+complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "query" -d 'Run a built-in query preset against captured traffic'
+complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "blob" -d 'Read a captured payload blob by id'
+complete -c openclaw -n "__openclaw_command_path_matches proxy -- --container --profile --log-level" -a "purge" -d 'Delete all captured traffic metadata and blobs'
+complete -c openclaw -n "__openclaw_command_path_matches proxy start -- --container --profile --log-level --host --port" -l host -d 'Bind host'
+complete -c openclaw -n "__openclaw_command_path_matches proxy start -- --container --profile --log-level --host --port" -l port -d 'Bind port'
+complete -c openclaw -n "__openclaw_command_path_matches proxy run -- --container --profile --log-level --host --port" -l host -d 'Bind host'
+complete -c openclaw -n "__openclaw_command_path_matches proxy run -- --container --profile --log-level --host --port" -l port -d 'Bind port'
+complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l json -d 'Print machine-readable JSON'
+complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l proxy-url -d 'Proxy URL to validate instead of config/env'
+complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l proxy-ca-file -d 'CA bundle file for verifying an HTTPS proxy endpoint'
+complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l allowed-url -d 'Destination expected to succeed through the proxy'
+complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l denied-url -d 'Destination expected to be blocked by the proxy'
+complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l apns-reachable -d 'Also verify sandbox APNs HTTP/2 is reachable through the proxy'
+complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l apns-authority -d 'APNs authority to probe with --apns-reachable'
+complete -c openclaw -n "__openclaw_command_path_matches proxy validate -- --container --profile --log-level --proxy-url --proxy-ca-file --allowed-url --denied-url --apns-authority --timeout-ms" -l timeout-ms -d 'Per-request timeout in milliseconds'
+complete -c openclaw -n "__openclaw_command_path_matches proxy sessions -- --container --profile --log-level --limit" -l limit -d 'Maximum sessions to show'
+complete -c openclaw -n "__openclaw_command_path_matches proxy query -- --container --profile --log-level --preset --session" -l preset -d 'Query preset: double-sends, retry-storms, cache-busting, ws-duplicate-frames, missing-ack, error-bursts'
+complete -c openclaw -n "__openclaw_command_path_matches proxy query -- --container --profile --log-level --preset --session" -l session -d 'Restrict to a capture session id'
+complete -c openclaw -n "__openclaw_command_path_matches proxy blob -- --container --profile --log-level --id" -l id -d 'Blob id'
+complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "list" -d 'List all hooks'
+complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "info" -d 'Show detailed information about a hook'
+complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "check" -d 'Check hooks eligibility status'
+complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "enable" -d 'Enable a hook'
+complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "disable" -d 'Disable a hook'
+complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "relay" -d 'Internal native harness hook relay'
+complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "install" -d 'Deprecated: install a hook pack via `openclaw plugins install`'
+complete -c openclaw -n "__openclaw_command_path_matches hooks -- --container --profile --log-level" -a "update" -d 'Deprecated: update hook packs via `openclaw plugins update`'
+complete -c openclaw -n "__openclaw_command_path_matches hooks list -- --container --profile --log-level" -l eligible -d 'Show only eligible hooks'
+complete -c openclaw -n "__openclaw_command_path_matches hooks list -- --container --profile --log-level" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches hooks list -- --container --profile --log-level" -s v -l verbose -d 'Show more details including missing requirements'
+complete -c openclaw -n "__openclaw_command_path_matches hooks info -- --container --profile --log-level" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches hooks check -- --container --profile --log-level" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches hooks relay -- --container --profile --log-level --provider --relay-id --generation --event --pre-tool-use-unavailable --timeout" -l provider -d 'Native harness provider'
+complete -c openclaw -n "__openclaw_command_path_matches hooks relay -- --container --profile --log-level --provider --relay-id --generation --event --pre-tool-use-unavailable --timeout" -l relay-id -d 'Native hook relay id'
+complete -c openclaw -n "__openclaw_command_path_matches hooks relay -- --container --profile --log-level --provider --relay-id --generation --event --pre-tool-use-unavailable --timeout" -l generation -d 'Native hook relay registration generation'
+complete -c openclaw -n "__openclaw_command_path_matches hooks relay -- --container --profile --log-level --provider --relay-id --generation --event --pre-tool-use-unavailable --timeout" -l event -d 'Native hook event'
+complete -c openclaw -n "__openclaw_command_path_matches hooks relay -- --container --profile --log-level --provider --relay-id --generation --event --pre-tool-use-unavailable --timeout" -l pre-tool-use-unavailable -d 'PreToolUse fallback mode when the originating relay is unavailable'
+complete -c openclaw -n "__openclaw_command_path_matches hooks relay -- --container --profile --log-level --provider --relay-id --generation --event --pre-tool-use-unavailable --timeout" -l timeout -d 'Gateway timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches hooks install -- --container --profile --log-level" -s l -l link -d 'Link a local path instead of copying'
+complete -c openclaw -n "__openclaw_command_path_matches hooks install -- --container --profile --log-level" -l pin -d 'Record npm installs as exact resolved @'
+complete -c openclaw -n "__openclaw_command_path_matches hooks update -- --container --profile --log-level" -l all -d 'Update all tracked hooks'
+complete -c openclaw -n "__openclaw_command_path_matches hooks update -- --container --profile --log-level" -l dry-run -d 'Show what would change without writing'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks -- --container --profile --log-level" -a "gmail" -d 'Gmail Pub/Sub hooks (via gogcli)'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail -- --container --profile --log-level" -a "setup" -d 'Configure Gmail watch + Pub/Sub + OpenClaw hooks'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail -- --container --profile --log-level" -a "run" -d 'Run gog watch serve + auto-renew loop'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l account -d 'Gmail account to watch'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l project -d 'GCP project id (OAuth client owner)'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l topic -d 'Pub/Sub topic name'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l subscription -d 'Pub/Sub subscription name'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l label -d 'Gmail label to watch'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l hook-url -d 'OpenClaw hook URL'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l hook-token -d 'OpenClaw hook token'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l push-token -d 'Push token for gog watch serve'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l bind -d 'gog watch serve bind host'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l port -d 'gog watch serve port'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l path -d 'gog watch serve path'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l include-body -d 'Include email body snippets'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l max-bytes -d 'Max bytes for body snippets'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l renew-minutes -d 'Renew watch every N minutes'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l tailscale -d 'Expose push endpoint via tailscale (funnel|serve|off)'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l tailscale-path -d 'Path for tailscale serve/funnel'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l tailscale-target -d 'Tailscale serve/funnel target (port, host:port, or URL)'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l push-endpoint -d 'Explicit Pub/Sub push endpoint'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail setup -- --container --profile --log-level --account --project --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target --push-endpoint" -l json -d 'Output JSON summary'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l account -d 'Gmail account to watch'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l topic -d 'Pub/Sub topic path (projects/.../topics/..)'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l subscription -d 'Pub/Sub subscription name'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l label -d 'Gmail label to watch'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l hook-url -d 'OpenClaw hook URL'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l hook-token -d 'OpenClaw hook token'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l push-token -d 'Push token for gog watch serve'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l bind -d 'gog watch serve bind host'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l port -d 'gog watch serve port'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l path -d 'gog watch serve path'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l include-body -d 'Include email body snippets'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l max-bytes -d 'Max bytes for body snippets'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l renew-minutes -d 'Renew watch every N minutes'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l tailscale -d 'Expose push endpoint via tailscale (funnel|serve|off)'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l tailscale-path -d 'Path for tailscale serve/funnel'
+complete -c openclaw -n "__openclaw_command_path_matches webhooks gmail run -- --container --profile --log-level --account --topic --subscription --label --hook-url --hook-token --push-token --bind --port --path --max-bytes --renew-minutes --tailscale --tailscale-path --tailscale-target" -l tailscale-target -d 'Tailscale serve/funnel target (port, host:port, or URL)'
+complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l remote -d 'Use gateway.remote.url and gateway.remote token/password (ignores device-pair publicUrl)'
+complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l url -d 'Override gateway URL used in the setup payload'
+complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l public-url -d 'Override gateway public URL used in the setup payload'
+complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l token -d 'Override gateway token for setup payload'
+complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l password -d 'Override gateway password for setup payload'
+complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l setup-code-only -d 'Print only the setup code'
+complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l no-ascii -d 'Skip ASCII QR rendering'
+complete -c openclaw -n "__openclaw_command_path_matches qr -- --container --profile --log-level --url --public-url --token --password" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches clawbot -- --container --profile --log-level" -a "qr" -d 'Generate a mobile pairing QR code and setup code'
+complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l remote -d 'Use gateway.remote.url and gateway.remote token/password (ignores device-pair publicUrl)'
+complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l url -d 'Override gateway URL used in the setup payload'
+complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l public-url -d 'Override gateway public URL used in the setup payload'
+complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l token -d 'Override gateway token for setup payload'
+complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l password -d 'Override gateway password for setup payload'
+complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l setup-code-only -d 'Print only the setup code'
+complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l no-ascii -d 'Skip ASCII QR rendering'
+complete -c openclaw -n "__openclaw_command_path_matches clawbot qr -- --container --profile --log-level --url --public-url --token --password" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches pairing -- --container --profile --log-level" -a "list" -d 'List pending pairing requests'
+complete -c openclaw -n "__openclaw_command_path_matches pairing -- --container --profile --log-level" -a "approve" -d 'Approve a pairing code and allow that sender'
+complete -c openclaw -n "__openclaw_command_path_matches pairing list -- --container --profile --log-level --channel --account" -l channel -d 'Channel ()'
+complete -c openclaw -n "__openclaw_command_path_matches pairing list -- --container --profile --log-level --channel --account" -l account -d 'Account id (for multi-account channels)'
+complete -c openclaw -n "__openclaw_command_path_matches pairing list -- --container --profile --log-level --channel --account" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches pairing approve -- --container --profile --log-level --channel --account" -l channel -d 'Channel ()'
+complete -c openclaw -n "__openclaw_command_path_matches pairing approve -- --container --profile --log-level --channel --account" -l account -d 'Account id (for multi-account channels)'
+complete -c openclaw -n "__openclaw_command_path_matches pairing approve -- --container --profile --log-level --channel --account" -l notify -d 'Notify the requester on the same channel'
+complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "list" -d 'List discovered plugins'
+complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "search" -d 'Search ClawHub plugin packages'
+complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "inspect" -d 'Inspect plugin details'
+complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "enable" -d 'Enable a plugin in config'
+complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "disable" -d 'Disable a plugin in config'
+complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "uninstall" -d 'Uninstall a plugin'
+complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "install" -d 'Install a plugin or hook pack (path, archive, npm spec, git repo, clawhub:package, or marketplace entry)'
+complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "update" -d 'Update installed plugins and tracked hook packs'
+complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "registry" -d 'Inspect or rebuild the persisted plugin registry'
+complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "doctor" -d 'Report plugin load issues'
+complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "build" -d 'Generate simple tool plugin metadata'
+complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "validate" -d 'Validate simple tool plugin metadata'
+complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "init" -d 'Create a simple tool plugin project'
+complete -c openclaw -n "__openclaw_command_path_matches plugins -- --container --profile --log-level" -a "marketplace" -d 'Inspect Claude-compatible plugin marketplaces'
+complete -c openclaw -n "__openclaw_command_path_matches plugins list -- --container --profile --log-level" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches plugins list -- --container --profile --log-level" -l enabled -d 'Only show enabled plugins'
+complete -c openclaw -n "__openclaw_command_path_matches plugins list -- --container --profile --log-level" -l verbose -d 'Show detailed entries'
+complete -c openclaw -n "__openclaw_command_path_matches plugins search -- --container --profile --log-level --limit" -l limit -d 'Max results'
+complete -c openclaw -n "__openclaw_command_path_matches plugins search -- --container --profile --log-level --limit" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches plugins inspect -- --container --profile --log-level" -l all -d 'Inspect all plugins'
+complete -c openclaw -n "__openclaw_command_path_matches plugins inspect -- --container --profile --log-level" -l runtime -d 'Load plugin runtime for hooks/tools/diagnostics'
+complete -c openclaw -n "__openclaw_command_path_matches plugins inspect -- --container --profile --log-level" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches plugins uninstall -- --container --profile --log-level" -l keep-files -d 'Keep installed files on disk'
+complete -c openclaw -n "__openclaw_command_path_matches plugins uninstall -- --container --profile --log-level" -l keep-config -d 'Deprecated alias for --keep-files'
+complete -c openclaw -n "__openclaw_command_path_matches plugins uninstall -- --container --profile --log-level" -l force -d 'Skip confirmation prompt'
+complete -c openclaw -n "__openclaw_command_path_matches plugins uninstall -- --container --profile --log-level" -l dry-run -d 'Show what would be removed without making changes'
+complete -c openclaw -n "__openclaw_command_path_matches plugins install -- --container --profile --log-level --marketplace" -s l -l link -d 'Link a local path instead of copying'
+complete -c openclaw -n "__openclaw_command_path_matches plugins install -- --container --profile --log-level --marketplace" -l force -d 'Overwrite an existing installed plugin or hook pack'
+complete -c openclaw -n "__openclaw_command_path_matches plugins install -- --container --profile --log-level --marketplace" -l pin -d 'Record npm installs as exact resolved @'
+complete -c openclaw -n "__openclaw_command_path_matches plugins install -- --container --profile --log-level --marketplace" -l dangerously-force-unsafe-install -d 'Deprecated no-op; security.installPolicy may still block'
+complete -c openclaw -n "__openclaw_command_path_matches plugins install -- --container --profile --log-level --marketplace" -l marketplace -d 'Install a Claude marketplace plugin from a local repo/path or git/GitHub source'
+complete -c openclaw -n "__openclaw_command_path_matches plugins update -- --container --profile --log-level" -l all -d 'Update all tracked plugins and hook packs'
+complete -c openclaw -n "__openclaw_command_path_matches plugins update -- --container --profile --log-level" -l dry-run -d 'Show what would change without writing'
+complete -c openclaw -n "__openclaw_command_path_matches plugins update -- --container --profile --log-level" -l dangerously-force-unsafe-install -d 'Deprecated no-op; security.installPolicy may still block'
+complete -c openclaw -n "__openclaw_command_path_matches plugins registry -- --container --profile --log-level" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches plugins registry -- --container --profile --log-level" -l refresh -d 'Rebuild the persisted registry from current plugin manifests'
+complete -c openclaw -n "__openclaw_command_path_matches plugins build -- --container --profile --log-level --root --entry" -l root -d 'Plugin package root'
+complete -c openclaw -n "__openclaw_command_path_matches plugins build -- --container --profile --log-level --root --entry" -l entry -d 'Plugin entry module relative to --root'
+complete -c openclaw -n "__openclaw_command_path_matches plugins build -- --container --profile --log-level --root --entry" -l check -d 'Fail if generated metadata is out of date'
+complete -c openclaw -n "__openclaw_command_path_matches plugins validate -- --container --profile --log-level --root --entry" -l root -d 'Plugin package root'
+complete -c openclaw -n "__openclaw_command_path_matches plugins validate -- --container --profile --log-level --root --entry" -l entry -d 'Plugin entry module relative to --root'
+complete -c openclaw -n "__openclaw_command_path_matches plugins init -- --container --profile --log-level --directory --name" -l directory -d 'Output directory'
+complete -c openclaw -n "__openclaw_command_path_matches plugins init -- --container --profile --log-level --directory --name" -l name -d 'Display name'
+complete -c openclaw -n "__openclaw_command_path_matches plugins init -- --container --profile --log-level --directory --name" -l force -d 'Overwrite an existing output directory'
+complete -c openclaw -n "__openclaw_command_path_matches plugins marketplace -- --container --profile --log-level" -a "list" -d 'List plugins published by a marketplace source'
+complete -c openclaw -n "__openclaw_command_path_matches plugins marketplace list -- --container --profile --log-level" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "list" -d 'List chat channels (configured by default; pass --all for installable catalog)'
+complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "status" -d 'Show gateway channel status (use status --deep for local)'
+complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "capabilities" -d 'Show provider capabilities (intents/scopes + supported features)'
+complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "resolve" -d 'Resolve channel/user names to IDs'
+complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "logs" -d 'Show recent channel logs from the gateway log file'
+complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "add" -d 'Add or update a channel account'
+complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "remove" -d 'Disable or delete a channel account'
+complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "login" -d 'Link a channel account (if supported)'
+complete -c openclaw -n "__openclaw_command_path_matches channels -- --container --profile --log-level" -a "logout" -d 'Log out of a channel session (if supported)'
+complete -c openclaw -n "__openclaw_command_path_matches channels list -- --container --profile --log-level" -l all -d 'Include bundled and installable catalog channels'
+complete -c openclaw -n "__openclaw_command_path_matches channels list -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches channels status -- --container --profile --log-level --channel --timeout" -l channel -d 'Only show one channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)'
+complete -c openclaw -n "__openclaw_command_path_matches channels status -- --container --profile --log-level --channel --timeout" -l probe -d 'Probe channel credentials'
+complete -c openclaw -n "__openclaw_command_path_matches channels status -- --container --profile --log-level --channel --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches channels status -- --container --profile --log-level --channel --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches channels capabilities -- --container --profile --log-level --channel --account --target --timeout" -l channel -d 'Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)'
+complete -c openclaw -n "__openclaw_command_path_matches channels capabilities -- --container --profile --log-level --channel --account --target --timeout" -l account -d 'Account id (only with --channel)'
+complete -c openclaw -n "__openclaw_command_path_matches channels capabilities -- --container --profile --log-level --channel --account --target --timeout" -l target -d 'Channel target for permission audit (Discord channel:)'
+complete -c openclaw -n "__openclaw_command_path_matches channels capabilities -- --container --profile --log-level --channel --account --target --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches channels capabilities -- --container --profile --log-level --channel --account --target --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches channels resolve -- --container --profile --log-level --channel --account --kind" -l channel -d 'Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)'
+complete -c openclaw -n "__openclaw_command_path_matches channels resolve -- --container --profile --log-level --channel --account --kind" -l account -d 'Account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches channels resolve -- --container --profile --log-level --channel --account --kind" -l kind -d 'Target kind (auto|user|group)'
+complete -c openclaw -n "__openclaw_command_path_matches channels resolve -- --container --profile --log-level --channel --account --kind" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches channels logs -- --container --profile --log-level --channel --lines" -l channel -d 'Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)'
+complete -c openclaw -n "__openclaw_command_path_matches channels logs -- --container --profile --log-level --channel --lines" -l lines -d 'Number of lines (default: 200)'
+complete -c openclaw -n "__openclaw_command_path_matches channels logs -- --container --profile --log-level --channel --lines" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l channel -d 'Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l account -d 'Account id (default when omitted)'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l name -d 'Display name for this account'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l token -d 'Channel token or credential payload'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l token-file -d 'Read channel token or credential payload from file'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l secret -d 'Channel shared secret'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l secret-file -d 'Read channel shared secret from file'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l bot-token -d 'Bot token'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l app-token -d 'App token'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l password -d 'Channel password or login secret'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l cli-path -d 'Channel CLI path'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l url -d 'Channel setup URL'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l base-url -d 'Channel base URL'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l http-url -d 'Channel HTTP service URL'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l auth-dir -d 'Channel auth directory override'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l use-env -d 'Use env-backed credentials when supported'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l db-path -d 'iMessage database path'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l service -d 'iMessage service (imessage|sms|auto)'
+complete -c openclaw -n "__openclaw_command_path_matches channels add -- --container --profile --log-level --channel --account --name --token --token-file --secret --secret-file --bot-token --app-token --password --cli-path --url --base-url --http-url --auth-dir --db-path --service --region" -l region -d 'iMessage region (for SMS)'
+complete -c openclaw -n "__openclaw_command_path_matches channels remove -- --container --profile --log-level --channel --account" -l channel -d 'Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)'
+complete -c openclaw -n "__openclaw_command_path_matches channels remove -- --container --profile --log-level --channel --account" -l account -d 'Account id (default when omitted)'
+complete -c openclaw -n "__openclaw_command_path_matches channels remove -- --container --profile --log-level --channel --account" -l delete -d 'Delete config entries (no prompt)'
+complete -c openclaw -n "__openclaw_command_path_matches channels login -- --container --profile --log-level --channel --account" -l channel -d 'Channel alias (auto when only one is configured)'
+complete -c openclaw -n "__openclaw_command_path_matches channels login -- --container --profile --log-level --channel --account" -l account -d 'Account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches channels login -- --container --profile --log-level --channel --account" -l verbose -d 'Verbose connection logs'
+complete -c openclaw -n "__openclaw_command_path_matches channels logout -- --container --profile --log-level --channel --account" -l channel -d 'Channel alias (auto when only one is configured)'
+complete -c openclaw -n "__openclaw_command_path_matches channels logout -- --container --profile --log-level --channel --account" -l account -d 'Account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches directory -- --container --profile --log-level" -a "self" -d 'Show the current account user'
+complete -c openclaw -n "__openclaw_command_path_matches directory -- --container --profile --log-level" -a "peers" -d 'Peer directory (contacts/users)'
+complete -c openclaw -n "__openclaw_command_path_matches directory -- --container --profile --log-level" -a "groups" -d 'Group directory'
+complete -c openclaw -n "__openclaw_command_path_matches directory self -- --container --profile --log-level --channel --account" -l channel -d 'Channel (auto when only one is configured)'
+complete -c openclaw -n "__openclaw_command_path_matches directory self -- --container --profile --log-level --channel --account" -l account -d 'Account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches directory self -- --container --profile --log-level --channel --account" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches directory peers -- --container --profile --log-level" -a "list" -d 'List peers'
+complete -c openclaw -n "__openclaw_command_path_matches directory peers list -- --container --profile --log-level --channel --account --query --limit" -l channel -d 'Channel (auto when only one is configured)'
+complete -c openclaw -n "__openclaw_command_path_matches directory peers list -- --container --profile --log-level --channel --account --query --limit" -l account -d 'Account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches directory peers list -- --container --profile --log-level --channel --account --query --limit" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches directory peers list -- --container --profile --log-level --channel --account --query --limit" -l query -d 'Optional search query'
+complete -c openclaw -n "__openclaw_command_path_matches directory peers list -- --container --profile --log-level --channel --account --query --limit" -l limit -d 'Limit results'
+complete -c openclaw -n "__openclaw_command_path_matches directory groups -- --container --profile --log-level" -a "list" -d 'List groups'
+complete -c openclaw -n "__openclaw_command_path_matches directory groups -- --container --profile --log-level" -a "members" -d 'List group members'
+complete -c openclaw -n "__openclaw_command_path_matches directory groups list -- --container --profile --log-level --channel --account --query --limit" -l channel -d 'Channel (auto when only one is configured)'
+complete -c openclaw -n "__openclaw_command_path_matches directory groups list -- --container --profile --log-level --channel --account --query --limit" -l account -d 'Account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches directory groups list -- --container --profile --log-level --channel --account --query --limit" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches directory groups list -- --container --profile --log-level --channel --account --query --limit" -l query -d 'Optional search query'
+complete -c openclaw -n "__openclaw_command_path_matches directory groups list -- --container --profile --log-level --channel --account --query --limit" -l limit -d 'Limit results'
+complete -c openclaw -n "__openclaw_command_path_matches directory groups members -- --container --profile --log-level --group-id --channel --account --limit" -l group-id -d 'Group id'
+complete -c openclaw -n "__openclaw_command_path_matches directory groups members -- --container --profile --log-level --group-id --channel --account --limit" -l channel -d 'Channel (auto when only one is configured)'
+complete -c openclaw -n "__openclaw_command_path_matches directory groups members -- --container --profile --log-level --group-id --channel --account --limit" -l account -d 'Account id (accountId)'
+complete -c openclaw -n "__openclaw_command_path_matches directory groups members -- --container --profile --log-level --group-id --channel --account --limit" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches directory groups members -- --container --profile --log-level --group-id --channel --account --limit" -l limit -d 'Limit results'
+complete -c openclaw -n "__openclaw_command_path_matches security -- --container --profile --log-level" -a "audit" -d 'Audit config + local state for common security foot-guns'
+complete -c openclaw -n "__openclaw_command_path_matches security audit -- --container --profile --log-level --auth --token --password" -l deep -d 'Attempt live Gateway probes and plugin-owned collector checks'
+complete -c openclaw -n "__openclaw_command_path_matches security audit -- --container --profile --log-level --auth --token --password" -l auth -d 'Runtime gateway auth mode ("none"|"token"|"password"|"trusted-proxy")'
+complete -c openclaw -n "__openclaw_command_path_matches security audit -- --container --profile --log-level --auth --token --password" -l token -d 'Use explicit gateway token for deep probe auth'
+complete -c openclaw -n "__openclaw_command_path_matches security audit -- --container --profile --log-level --auth --token --password" -l password -d 'Use explicit gateway password for deep probe auth'
+complete -c openclaw -n "__openclaw_command_path_matches security audit -- --container --profile --log-level --auth --token --password" -l fix -d 'Apply safe fixes (tighten defaults + chmod state/config)'
+complete -c openclaw -n "__openclaw_command_path_matches security audit -- --container --profile --log-level --auth --token --password" -l json -d 'Print JSON'
+complete -c openclaw -n "__openclaw_command_path_matches secrets -- --container --profile --log-level" -a "reload" -d 'Re-resolve secret references and atomically swap runtime snapshot'
+complete -c openclaw -n "__openclaw_command_path_matches secrets -- --container --profile --log-level" -a "audit" -d 'Audit plaintext secrets, unresolved refs, and precedence drift'
+complete -c openclaw -n "__openclaw_command_path_matches secrets -- --container --profile --log-level" -a "configure" -d 'Interactive secrets helper (provider setup + SecretRef mapping + preflight)'
+complete -c openclaw -n "__openclaw_command_path_matches secrets -- --container --profile --log-level" -a "apply" -d 'Apply a previously generated secrets plan'
+complete -c openclaw -n "__openclaw_command_path_matches secrets reload -- --container --profile --log-level --url --token --timeout" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches secrets reload -- --container --profile --log-level --url --token --timeout" -l url -d 'Gateway WebSocket URL (defaults to gateway.remote.url when configured)'
+complete -c openclaw -n "__openclaw_command_path_matches secrets reload -- --container --profile --log-level --url --token --timeout" -l token -d 'Gateway token (if required)'
+complete -c openclaw -n "__openclaw_command_path_matches secrets reload -- --container --profile --log-level --url --token --timeout" -l timeout -d 'Timeout in ms'
+complete -c openclaw -n "__openclaw_command_path_matches secrets reload -- --container --profile --log-level --url --token --timeout" -l expect-final -d 'Wait for final response (agent)'
+complete -c openclaw -n "__openclaw_command_path_matches secrets audit -- --container --profile --log-level" -l check -d 'Exit non-zero when findings are present'
+complete -c openclaw -n "__openclaw_command_path_matches secrets audit -- --container --profile --log-level" -l allow-exec -d 'Allow exec SecretRef resolution during audit (may execute provider commands)'
+complete -c openclaw -n "__openclaw_command_path_matches secrets audit -- --container --profile --log-level" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l apply -d 'Apply changes immediately after preflight'
+complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l yes -d 'Skip apply confirmation prompt'
+complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l providers-only -d 'Configure secrets.providers only, skip credential mapping'
+complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l skip-provider-setup -d 'Skip provider setup and only map credential fields to existing providers'
+complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l agent -d 'Agent id for auth-profiles targets (default: configured default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l allow-exec -d 'Allow exec SecretRef preflight checks (may execute provider commands)'
+complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l plan-out -d 'Write generated plan JSON to a file'
+complete -c openclaw -n "__openclaw_command_path_matches secrets configure -- --container --profile --log-level --agent --plan-out" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches secrets apply -- --container --profile --log-level --from" -l from -d 'Path to plan JSON'
+complete -c openclaw -n "__openclaw_command_path_matches secrets apply -- --container --profile --log-level --from" -l dry-run -d 'Validate/preflight only'
+complete -c openclaw -n "__openclaw_command_path_matches secrets apply -- --container --profile --log-level --from" -l allow-exec -d 'Allow exec SecretRef checks (may execute provider commands)'
+complete -c openclaw -n "__openclaw_command_path_matches secrets apply -- --container --profile --log-level --from" -l json -d 'Output JSON'
+complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "search" -d 'Search ClawHub skills'
+complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "install" -d 'Install a skill from ClawHub, git, or a local directory'
+complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "update" -d 'Update ClawHub-installed skills in the active or shared managed directory'
+complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "verify" -d 'Verify a ClawHub skill with ClawHub'
+complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "workshop" -d 'Manage pending skill proposals'
+complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "list" -d 'List all available skills'
+complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "info" -d 'Show detailed information about a skill'
+complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -a "check" -d 'Check which skills are ready, visible, or missing requirements'
+complete -c openclaw -n "__openclaw_command_path_matches skills -- --container --profile --log-level --agent" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches skills search -- --container --profile --log-level --agent --limit" -l limit -d 'Max results'
+complete -c openclaw -n "__openclaw_command_path_matches skills search -- --container --profile --log-level --agent --limit" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches skills install -- --container --profile --log-level --agent --version --as" -l version -d 'Install a specific version'
+complete -c openclaw -n "__openclaw_command_path_matches skills install -- --container --profile --log-level --agent --version --as" -l force -d 'Overwrite an existing workspace skill'
+complete -c openclaw -n "__openclaw_command_path_matches skills install -- --container --profile --log-level --agent --version --as" -l force-install -d 'Install a pending GitHub-backed skill before ClawHub scan completes'
+complete -c openclaw -n "__openclaw_command_path_matches skills install -- --container --profile --log-level --agent --version --as" -l global -d 'Install into the shared managed skills directory'
+complete -c openclaw -n "__openclaw_command_path_matches skills install -- --container --profile --log-level --agent --version --as" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches skills install -- --container --profile --log-level --agent --version --as" -l as -d 'Install a git/local skill under this slug'
+complete -c openclaw -n "__openclaw_command_path_matches skills update -- --container --profile --log-level --agent" -l all -d 'Update all tracked ClawHub skills'
+complete -c openclaw -n "__openclaw_command_path_matches skills update -- --container --profile --log-level --agent" -l force-install -d 'Install a pending GitHub-backed skill before ClawHub scan completes'
+complete -c openclaw -n "__openclaw_command_path_matches skills update -- --container --profile --log-level --agent" -l global -d 'Update skills in the shared managed skills directory'
+complete -c openclaw -n "__openclaw_command_path_matches skills update -- --container --profile --log-level --agent" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches skills verify -- --container --profile --log-level --agent --version --tag" -l version -d 'Verify a specific version'
+complete -c openclaw -n "__openclaw_command_path_matches skills verify -- --container --profile --log-level --agent --version --tag" -l tag -d 'Verify a dist tag'
+complete -c openclaw -n "__openclaw_command_path_matches skills verify -- --container --profile --log-level --agent --version --tag" -l card -d 'Print the generated Skill Card Markdown'
+complete -c openclaw -n "__openclaw_command_path_matches skills verify -- --container --profile --log-level --agent --version --tag" -l global -d 'Resolve installed skill metadata from the shared managed skills directory'
+complete -c openclaw -n "__openclaw_command_path_matches skills verify -- --container --profile --log-level --agent --version --tag" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "list" -d 'List pending and completed skill proposals'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "inspect" -d 'Inspect a skill proposal'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "propose-create" -d 'Create a pending proposal for a new workspace skill'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "propose-update" -d 'Create a pending proposal for an existing workspace skill'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "revise" -d 'Revise a pending skill proposal'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "apply" -d 'Apply a pending skill proposal'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "reject" -d 'Reject a pending skill proposal'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -a "quarantine" -d 'Quarantine a skill proposal'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop -- --container --profile --log-level --agent" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop list -- --container --profile --log-level --agent" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop inspect -- --container --profile --log-level --agent" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-create -- --container --profile --log-level --agent --name --description --proposal --proposal-dir --goal --evidence" -l name -d 'Skill name'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-create -- --container --profile --log-level --agent --name --description --proposal --proposal-dir --goal --evidence" -l description -d 'Skill description'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-create -- --container --profile --log-level --agent --name --description --proposal --proposal-dir --goal --evidence" -l proposal -d 'Path to PROPOSAL.md draft content'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-create -- --container --profile --log-level --agent --name --description --proposal --proposal-dir --goal --evidence" -l proposal-dir -d 'Path to proposal directory with PROPOSAL.md and UTF-8 text support files'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-create -- --container --profile --log-level --agent --name --description --proposal --proposal-dir --goal --evidence" -l goal -d 'Proposal or improvement goal'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-create -- --container --profile --log-level --agent --name --description --proposal --proposal-dir --goal --evidence" -l evidence -d 'Evidence or notes for the proposal'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-create -- --container --profile --log-level --agent --name --description --proposal --proposal-dir --goal --evidence" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-update -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l proposal -d 'Path to PROPOSAL.md draft content'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-update -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l proposal-dir -d 'Path to proposal directory with PROPOSAL.md and UTF-8 text support files'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-update -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l description -d 'Concise proposal description'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-update -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l goal -d 'Proposal or improvement goal'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-update -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l evidence -d 'Evidence or notes for the proposal'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop propose-update -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop revise -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l proposal -d 'Path to revised PROPOSAL.md draft content'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop revise -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l proposal-dir -d 'Path to revised proposal directory with PROPOSAL.md and UTF-8 text support files'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop revise -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l description -d 'Replacement proposal description'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop revise -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l goal -d 'Replacement research or improvement goal'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop revise -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l evidence -d 'Replacement evidence or notes for the proposal'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop revise -- --container --profile --log-level --agent --proposal --proposal-dir --description --goal --evidence" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop apply -- --container --profile --log-level --agent" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop reject -- --container --profile --log-level --agent --reason" -l reason -d 'Reason for rejection'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop reject -- --container --profile --log-level --agent --reason" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop quarantine -- --container --profile --log-level --agent --reason" -l reason -d 'Reason for quarantine'
+complete -c openclaw -n "__openclaw_command_path_matches skills workshop quarantine -- --container --profile --log-level --agent --reason" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches skills list -- --container --profile --log-level --agent" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches skills list -- --container --profile --log-level --agent" -l eligible -d 'Show only eligible (ready to use) skills'
+complete -c openclaw -n "__openclaw_command_path_matches skills list -- --container --profile --log-level --agent" -s v -l verbose -d 'Show more details including missing requirements'
+complete -c openclaw -n "__openclaw_command_path_matches skills list -- --container --profile --log-level --agent" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches skills info -- --container --profile --log-level --agent" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches skills info -- --container --profile --log-level --agent" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches skills check -- --container --profile --log-level --agent" -l agent -d 'Target agent workspace (defaults to cwd-inferred, then default agent)'
+complete -c openclaw -n "__openclaw_command_path_matches skills check -- --container --profile --log-level --agent" -l json -d 'Output as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -a "repair" -d 'Repair post-update doctor and plugin convergence'
+complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -a "finalize" -d 'Repair post-update doctor and plugin convergence'
+complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -a "wizard" -d 'Interactive update wizard'
+complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -a "status" -d 'Show update channel and version status'
+complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -l no-restart -d 'Skip restarting the gateway service after a successful update'
+complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -l dry-run -d 'Preview update actions without making changes'
+complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -l channel -d 'Persist update channel (git + npm)'
+complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -l tag -d 'Override the package target for this update (dist-tag, version, or package spec)'
+complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -l timeout -d 'Timeout for each update step in seconds (default: 1800)'
+complete -c openclaw -n "__openclaw_command_path_matches update -- --container --profile --log-level --channel --tag --timeout" -l yes -d 'Skip confirmation prompts (non-interactive)'
+complete -c openclaw -n "__openclaw_command_path_matches update repair -- --container --profile --log-level --channel --tag --timeout" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches update repair -- --container --profile --log-level --channel --tag --timeout" -l channel -d 'Persist update channel before repair'
+complete -c openclaw -n "__openclaw_command_path_matches update repair -- --container --profile --log-level --channel --tag --timeout" -l timeout -d 'Timeout for update repair steps in seconds (default: 1800)'
+complete -c openclaw -n "__openclaw_command_path_matches update repair -- --container --profile --log-level --channel --tag --timeout" -l yes -d 'Skip confirmation prompts (non-interactive)'
+complete -c openclaw -n "__openclaw_command_path_matches update repair -- --container --profile --log-level --channel --tag --timeout" -l no-restart -d 'Accepted for update command parity; repair never restarts'
+complete -c openclaw -n "__openclaw_command_path_matches update finalize -- --container --profile --log-level --channel --tag --timeout" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches update finalize -- --container --profile --log-level --channel --tag --timeout" -l channel -d 'Persist update channel before repair'
+complete -c openclaw -n "__openclaw_command_path_matches update finalize -- --container --profile --log-level --channel --tag --timeout" -l timeout -d 'Timeout for update repair steps in seconds (default: 1800)'
+complete -c openclaw -n "__openclaw_command_path_matches update finalize -- --container --profile --log-level --channel --tag --timeout" -l yes -d 'Skip confirmation prompts (non-interactive)'
+complete -c openclaw -n "__openclaw_command_path_matches update finalize -- --container --profile --log-level --channel --tag --timeout" -l no-restart -d 'Accepted for update command parity; repair never restarts'
+complete -c openclaw -n "__openclaw_command_path_matches update wizard -- --container --profile --log-level --channel --tag --timeout" -l timeout -d 'Timeout for each update step in seconds (default: 1800)'
+complete -c openclaw -n "__openclaw_command_path_matches update status -- --container --profile --log-level --channel --tag --timeout" -l json -d 'Output result as JSON'
+complete -c openclaw -n "__openclaw_command_path_matches update status -- --container --profile --log-level --channel --tag --timeout" -l timeout -d 'Timeout for update checks in seconds (default: 3)'
diff --git a/completions/openclaw.ps1 b/completions/openclaw.ps1
new file mode 100644
index 0000000..84f1217
--- /dev/null
+++ b/completions/openclaw.ps1
@@ -0,0 +1,2477 @@
+
+Register-ArgumentCompleter -Native -CommandName openclaw -ScriptBlock {
+ param($wordToComplete, $commandAst, $cursorPosition)
+
+ $commandElements = $commandAst.CommandElements
+ $commandPath = ""
+
+ # Reconstruct command path (simple approximation)
+ # Skip the executable name
+ for ($i = 1; $i -lt $commandElements.Count; $i++) {
+ $element = $commandElements[$i].Extent.Text
+ if ($element -like "-*") { break }
+ if ($i -eq $commandElements.Count - 1 -and $wordToComplete -ne "") { break } # Don't include current word being typed
+ $commandPath += "$element "
+ }
+ $commandPath = $commandPath.Trim()
+
+ # Root command
+ if ($commandPath -eq "") {
+ $completions = @('completion','crestodian','setup','onboard','configure','config','backup','migrate','doctor','dashboard','reset','uninstall','message','mcp','transcripts','agent','agents','status','health','sessions','commitments','tasks','acp','gateway','daemon','logs','system','models','infer','approvals','exec-policy','nodes','devices','node','sandbox','tui','cron','dns','docs','proxy','hooks','webhooks','qr','clawbot','pairing','plugins','channels','directory','security','secrets','skills','update','--version','--container','--dev','--profile','--log-level','--no-color')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+
+ if ($commandPath -eq 'completion') {
+ $completions = @('--shell','--install','--write-state','--yes')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'crestodian') {
+ $completions = @('--message','--yes','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'setup') {
+ $completions = @('--workspace','--wizard','--non-interactive','--accept-risk','--mode','--import-from','--import-source','--import-secrets','--remote-url','--remote-token')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'onboard') {
+ $completions = @('--workspace','--reset','--reset-scope','--non-interactive','--modern','--accept-risk','--flow','--mode','--auth-choice','--token-provider','--token','--token-profile-id','--token-expires-in','--secret-input-mode','--cloudflare-ai-gateway-account-id','--cloudflare-ai-gateway-gateway-id','--alibaba-model-studio-api-key','--anthropic-api-key','--byteplus-api-key','--cohere-api-key','--comfy-api-key','--fal-api-key','--github-copilot-token','--gemini-api-key','--huggingface-api-key','--litellm-api-key','--lmstudio-api-key','--minimax-api-key','--mistral-api-key','--novita-api-key','--nvidia-api-key','--ollama-cloud-api-key','--openai-api-key','--opencode-zen-api-key','--opencode-go-api-key','--openrouter-api-key','--runway-api-key','--synthetic-api-key','--together-api-key','--volcengine-api-key','--vydra-api-key','--xai-api-key','--xiaomi-api-key','--xiaomi-token-plan-api-key','--deepseek-api-key','--arceeai-api-key','--cerebras-api-key','--chutes-api-key','--cloudflare-ai-gateway-api-key','--deepinfra-api-key','--gmi-api-key','--groq-api-key','--kilocode-api-key','--kimi-code-api-key','--pixverse-api-key','--qianfan-api-key','--modelstudio-standard-api-key-cn','--modelstudio-standard-api-key','--modelstudio-api-key-cn','--modelstudio-api-key','--qwen-oauth-token','--fireworks-api-key','--moonshot-api-key','--tokenhub-api-key','--venice-api-key','--ai-gateway-api-key','--zai-api-key','--stepfun-api-key','--custom-base-url','--custom-api-key','--custom-model-id','--custom-provider-id','--custom-compatibility','--custom-image-input','--custom-text-input','--gateway-port','--gateway-bind','--gateway-auth','--gateway-token','--gateway-token-ref-env','--gateway-password','--remote-url','--remote-token','--tailscale','--tailscale-reset-on-exit','--install-daemon','--no-install-daemon','--skip-daemon','--daemon-runtime','--skip-channels','--skip-skills','--skip-bootstrap','--skip-search','--skip-health','--skip-ui','--suppress-gateway-token-output','--skip-hooks','--node-manager','--import-from','--import-source','--import-secrets','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'configure') {
+ $completions = @('--section')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'config') {
+ $completions = @('get','set','patch','unset','file','schema','validate','--section')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'config get') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'config set') {
+ $completions = @('--strict-json','--json','--dry-run','--allow-exec','--merge','--replace','--ref-provider','--ref-source','--ref-id','--provider-source','--provider-allowlist','--provider-path','--provider-mode','--provider-timeout-ms','--provider-max-bytes','--provider-command','--provider-arg','--provider-no-output-timeout-ms','--provider-max-output-bytes','--provider-json-only','--provider-env','--provider-pass-env','--provider-trusted-dir','--provider-allow-insecure-path','--provider-allow-symlink-command','--batch-json','--batch-file')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'config patch') {
+ $completions = @('--file','--stdin','--dry-run','--allow-exec','--json','--replace-path')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'config unset') {
+ $completions = @('--dry-run','--allow-exec','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'config validate') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'backup') {
+ $completions = @('create','verify')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'backup create') {
+ $completions = @('--output','--json','--dry-run','--verify','--only-config','--no-include-workspace')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'backup verify') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'migrate') {
+ $completions = @('list','plan','apply','--from','--include-secrets','--no-auth-credentials','--overwrite','--dry-run','--yes','--skill','--plugin','--backup-output','--no-backup','--force','--json','--verify-plugin-apps')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'migrate list') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'migrate plan') {
+ $completions = @('--from','--include-secrets','--no-auth-credentials','--overwrite','--json','--skill','--plugin','--verify-plugin-apps')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'migrate apply') {
+ $completions = @('--from','--include-secrets','--no-auth-credentials','--overwrite','--json','--skill','--plugin','--verify-plugin-apps','--yes','--backup-output','--no-backup','--force')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'doctor') {
+ $completions = @('--no-workspace-suggestions','--yes','--repair','--fix','--force','--non-interactive','--generate-gateway-token','--allow-exec','--deep','--lint','--post-upgrade','--json','--severity-min','--skip','--only')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'dashboard') {
+ $completions = @('--no-open','--yes')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'reset') {
+ $completions = @('--scope','--yes','--non-interactive','--dry-run')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'uninstall') {
+ $completions = @('--service','--state','--workspace','--app','--all','--yes','--non-interactive','--dry-run')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message') {
+ $completions = @('send','broadcast','poll','react','reactions','read','edit','delete','pin','unpin','pins','permissions','search','thread','emoji','sticker','role','channel','member','voice','event','timeout','kick','ban')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message send') {
+ $completions = @('--message','--target','--media','--presentation','--delivery','--pin','--reply-to','--thread-id','--gif-playback','--force-document','--silent','--channel','--account','--json','--dry-run','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message broadcast') {
+ $completions = @('--channel','--account','--json','--dry-run','--verbose','--targets','--message','--media')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message poll') {
+ $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--poll-question','--poll-option','--poll-multi','--poll-duration-hours','--poll-duration-seconds','--poll-anonymous','--poll-public','--message','--silent','--thread-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message react') {
+ $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--message-id','--emoji','--remove','--participant','--from-me','--target-author','--target-author-uuid')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message reactions') {
+ $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--message-id','--limit')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message read') {
+ $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--limit','--message-id','--before','--after','--around','--thread-id','--include-thread')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message edit') {
+ $completions = @('--message-id','--message','--target','--channel','--account','--json','--dry-run','--verbose','--thread-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message delete') {
+ $completions = @('--message-id','--target','--channel','--account','--json','--dry-run','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message pin') {
+ $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--message-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message unpin') {
+ $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--message-id','--pinned-message-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message pins') {
+ $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--limit')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message permissions') {
+ $completions = @('--target','--channel','--account','--json','--dry-run','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message search') {
+ $completions = @('--channel','--account','--json','--dry-run','--verbose','--guild-id','--query','--channel-id','--channel-ids','--author-id','--author-ids','--limit')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message thread') {
+ $completions = @('create','list','reply')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message thread create') {
+ $completions = @('--thread-name','--target','--channel','--account','--json','--dry-run','--verbose','--message-id','--message','--auto-archive-min')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message thread list') {
+ $completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose','--channel-id','--include-archived','--before','--limit')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message thread reply') {
+ $completions = @('--message','--target','--channel','--account','--json','--dry-run','--verbose','--media','--reply-to')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message emoji') {
+ $completions = @('list','upload')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message emoji list') {
+ $completions = @('--channel','--account','--json','--dry-run','--verbose','--guild-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message emoji upload') {
+ $completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose','--emoji-name','--media','--role-ids')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message sticker') {
+ $completions = @('send','upload')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message sticker send') {
+ $completions = @('--target','--channel','--account','--json','--dry-run','--verbose','--sticker-id','--message')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message sticker upload') {
+ $completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose','--sticker-name','--sticker-desc','--sticker-tags','--media')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message role') {
+ $completions = @('info','add','remove')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message role info') {
+ $completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message role add') {
+ $completions = @('--guild-id','--user-id','--role-id','--channel','--account','--json','--dry-run','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message role remove') {
+ $completions = @('--guild-id','--user-id','--role-id','--channel','--account','--json','--dry-run','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message channel') {
+ $completions = @('info','list')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message channel info') {
+ $completions = @('--target','--channel','--account','--json','--dry-run','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message channel list') {
+ $completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message member') {
+ $completions = @('info')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message member info') {
+ $completions = @('--user-id','--channel','--account','--json','--dry-run','--verbose','--guild-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message voice') {
+ $completions = @('status')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message voice status') {
+ $completions = @('--guild-id','--user-id','--channel','--account','--json','--dry-run','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message event') {
+ $completions = @('list','create')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message event list') {
+ $completions = @('--guild-id','--channel','--account','--json','--dry-run','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message event create') {
+ $completions = @('--guild-id','--event-name','--start-time','--channel','--account','--json','--dry-run','--verbose','--end-time','--desc','--channel-id','--location','--event-type','--image')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message timeout') {
+ $completions = @('--guild-id','--user-id','--channel','--account','--json','--dry-run','--verbose','--duration-min','--until','--reason')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message kick') {
+ $completions = @('--guild-id','--user-id','--channel','--account','--json','--dry-run','--verbose','--reason')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'message ban') {
+ $completions = @('--guild-id','--user-id','--channel','--account','--json','--dry-run','--verbose','--reason','--delete-days')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'mcp') {
+ $completions = @('serve','list','show','status','probe','doctor','add','set','tools','configure','login','logout','reload','unset')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'mcp serve') {
+ $completions = @('--url','--token','--token-file','--password','--password-file','--claude-channel-mode','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'mcp list') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'mcp show') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'mcp status') {
+ $completions = @('--verbose','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'mcp probe') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'mcp doctor') {
+ $completions = @('--probe','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'mcp add') {
+ $completions = @('--command','--arg','--env','--cwd','--url','--transport','--header','--auth','--oauth-scope','--oauth-redirect-url','--oauth-client-metadata-url','--include','--exclude','--timeout','--connect-timeout','--parallel','--disabled','--ssl-verify','--client-cert','--client-key','--no-probe')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'mcp tools') {
+ $completions = @('--include','--exclude','--clear')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'mcp configure') {
+ $completions = @('--enable','--disable','--include','--exclude','--clear-tools','--timeout','--connect-timeout','--clear-timeouts','--parallel','--no-parallel','--auth','--clear-auth','--oauth-scope','--oauth-redirect-url','--oauth-client-metadata-url','--ssl-verify','--client-cert','--client-key','--clear-tls','--probe')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'mcp login') {
+ $completions = @('--code')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'transcripts') {
+ $completions = @('list','show','path')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'transcripts list') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'transcripts show') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'transcripts path') {
+ $completions = @('--dir','--metadata','--transcript','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'agent') {
+ $completions = @('--message','--message-file','--to','--session-key','--session-id','--agent','--model','--thinking','--verbose','--channel','--reply-to','--reply-channel','--reply-account','--local','--deliver','--json','--timeout')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'agents') {
+ $completions = @('list','bindings','bind','unbind','add','set-identity','delete')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'agents list') {
+ $completions = @('--json','--bindings')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'agents bindings') {
+ $completions = @('--agent','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'agents bind') {
+ $completions = @('--agent','--bind','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'agents unbind') {
+ $completions = @('--agent','--bind','--all','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'agents add') {
+ $completions = @('--workspace','--model','--agent-dir','--bind','--non-interactive','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'agents set-identity') {
+ $completions = @('--agent','--workspace','--identity-file','--from-identity','--name','--theme','--emoji','--avatar','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'agents delete') {
+ $completions = @('--force','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'status') {
+ $completions = @('--json','--all','--usage','--deep','--timeout','--verbose','--debug')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'health') {
+ $completions = @('--json','--timeout','--verbose','--debug')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'sessions') {
+ $completions = @('list','cleanup','tail','export-trajectory','compact','--json','--verbose','--store','--agent','--all-agents','--active','--limit')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'sessions list') {
+ $completions = @('--json','--verbose','--store','--agent','--all-agents','--active','--limit')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'sessions cleanup') {
+ $completions = @('--store','--agent','--all-agents','--dry-run','--enforce','--fix-missing','--fix-dm-scope','--active-key','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'sessions tail') {
+ $completions = @('--session-key','--tail','--follow','--store','--agent','--all-agents')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'sessions export-trajectory') {
+ $completions = @('--session-key','--output','--workspace','--store','--agent','--request-json-base64','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'sessions compact') {
+ $completions = @('--agent','--max-lines','--url','--token','--password','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'commitments') {
+ $completions = @('list','dismiss','--json','--agent','--status','--all')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'commitments list') {
+ $completions = @('--json','--agent','--status','--all')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'commitments dismiss') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'tasks') {
+ $completions = @('list','audit','maintenance','show','notify','cancel','flow','--json','--runtime','--status')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'tasks list') {
+ $completions = @('--json','--runtime','--status')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'tasks audit') {
+ $completions = @('--json','--severity','--code','--limit')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'tasks maintenance') {
+ $completions = @('--json','--apply')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'tasks show') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'tasks flow') {
+ $completions = @('list','show','cancel')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'tasks flow list') {
+ $completions = @('--json','--status')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'tasks flow show') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'acp') {
+ $completions = @('client','--url','--token','--token-file','--password','--password-file','--session','--session-label','--require-existing','--reset-session','--no-prefix-cwd','--provenance','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'acp client') {
+ $completions = @('--cwd','--server','--server-args','--server-verbose','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway') {
+ $completions = @('run','status','install','uninstall','start','stop','restart','call','usage-cost','health','stability','diagnostics','probe','discover','--port','--bind','--token','--auth','--password','--password-file','--tailscale','--tailscale-reset-on-exit','--allow-unconfigured','--dev','--reset','--force','--verbose','--cli-backend-logs','--claude-cli-logs','--ws-log','--compact','--raw-stream','--raw-stream-path')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway run') {
+ $completions = @('--port','--bind','--token','--auth','--password','--password-file','--tailscale','--tailscale-reset-on-exit','--allow-unconfigured','--dev','--reset','--force','--verbose','--cli-backend-logs','--claude-cli-logs','--ws-log','--compact','--raw-stream','--raw-stream-path')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway status') {
+ $completions = @('--url','--token','--password','--timeout','--no-probe','--require-rpc','--deep','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway install') {
+ $completions = @('--port','--runtime','--token','--wrapper','--force','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway uninstall') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway start') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway stop') {
+ $completions = @('--json','--disable')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway restart') {
+ $completions = @('--force','--safe','--skip-deferral','--wait','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway call') {
+ $completions = @('--params','--url','--token','--password','--timeout','--expect-final','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway usage-cost') {
+ $completions = @('--days','--agent','--all-agents','--url','--token','--password','--timeout','--expect-final','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway health') {
+ $completions = @('--port','--url','--token','--password','--timeout','--expect-final','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway stability') {
+ $completions = @('--limit','--type','--since-seq','--bundle','--export','--output','--url','--token','--password','--timeout','--expect-final','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway diagnostics') {
+ $completions = @('export')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway diagnostics export') {
+ $completions = @('--output','--log-lines','--log-bytes','--url','--token','--password','--timeout','--no-stability-bundle','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway probe') {
+ $completions = @('--url','--port','--ssh','--ssh-identity','--ssh-auto','--token','--password','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'gateway discover') {
+ $completions = @('--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'daemon') {
+ $completions = @('status','install','uninstall','start','stop','restart')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'daemon status') {
+ $completions = @('--url','--token','--password','--timeout','--no-probe','--require-rpc','--deep','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'daemon install') {
+ $completions = @('--port','--runtime','--token','--wrapper','--force','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'daemon uninstall') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'daemon start') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'daemon stop') {
+ $completions = @('--json','--disable')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'daemon restart') {
+ $completions = @('--force','--safe','--skip-deferral','--wait','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'logs') {
+ $completions = @('--limit','--max-bytes','--follow','--interval','--json','--plain','--no-color','--local-time','--utc','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'system') {
+ $completions = @('event','heartbeat','presence')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'system event') {
+ $completions = @('--text','--mode','--session-key','--json','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'system heartbeat') {
+ $completions = @('last','enable','disable')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'system heartbeat last') {
+ $completions = @('--json','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'system heartbeat enable') {
+ $completions = @('--json','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'system heartbeat disable') {
+ $completions = @('--json','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'system presence') {
+ $completions = @('--json','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models') {
+ $completions = @('list','status','set','set-image','aliases','fallbacks','image-fallbacks','scan','auth','--status-json','--status-plain','--agent')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models list') {
+ $completions = @('--all','--local','--provider','--json','--plain')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models status') {
+ $completions = @('--json','--plain','--check','--probe','--probe-provider','--probe-profile','--probe-timeout','--probe-concurrency','--probe-max-tokens','--agent')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models aliases') {
+ $completions = @('list','add','remove')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models aliases list') {
+ $completions = @('--json','--plain')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models fallbacks') {
+ $completions = @('list','add','remove','clear')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models fallbacks list') {
+ $completions = @('--json','--plain')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models image-fallbacks') {
+ $completions = @('list','add','remove','clear')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models image-fallbacks list') {
+ $completions = @('--json','--plain')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models scan') {
+ $completions = @('--min-params','--max-age-days','--provider','--max-candidates','--timeout','--concurrency','--no-probe','--yes','--no-input','--set-default','--set-image','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models auth') {
+ $completions = @('list','add','login','setup-token','paste-token','paste-api-key','login-github-copilot','order','--agent')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models auth list') {
+ $completions = @('--provider','--agent','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models auth login') {
+ $completions = @('--provider','--method','--device-code','--profile-id','--set-default','--force')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models auth setup-token') {
+ $completions = @('--provider','--yes')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models auth paste-token') {
+ $completions = @('--provider','--profile-id','--expires-in')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models auth paste-api-key') {
+ $completions = @('--provider','--profile-id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models auth login-github-copilot') {
+ $completions = @('--yes')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models auth order') {
+ $completions = @('get','set','clear')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models auth order get') {
+ $completions = @('--provider','--agent','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models auth order set') {
+ $completions = @('--provider','--agent')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'models auth order clear') {
+ $completions = @('--provider','--agent')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer') {
+ $completions = @('list','inspect','model','image','audio','tts','video','web','embedding')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer list') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer inspect') {
+ $completions = @('--name','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer model') {
+ $completions = @('run','list','inspect','providers','auth')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer model run') {
+ $completions = @('--prompt','--file','--model','--thinking','--local','--gateway','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer model list') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer model inspect') {
+ $completions = @('--model','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer model providers') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer model auth') {
+ $completions = @('login','logout','status')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer model auth login') {
+ $completions = @('--provider','--method')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer model auth logout') {
+ $completions = @('--provider','--agent','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer model auth status') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer image') {
+ $completions = @('generate','edit','describe','describe-many','providers')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer image generate') {
+ $completions = @('--prompt','--model','--count','--size','--aspect-ratio','--resolution','--output-format','--background','--openai-background','--openai-moderation','--quality','--timeout-ms','--output','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer image edit') {
+ $completions = @('--file','--prompt','--model','--count','--size','--aspect-ratio','--resolution','--output-format','--background','--openai-background','--openai-moderation','--quality','--timeout-ms','--output','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer image describe') {
+ $completions = @('--file','--prompt','--model','--timeout-ms','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer image describe-many') {
+ $completions = @('--file','--prompt','--model','--timeout-ms','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer image providers') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer audio') {
+ $completions = @('transcribe','providers')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer audio transcribe') {
+ $completions = @('--file','--language','--prompt','--model','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer audio providers') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer tts') {
+ $completions = @('convert','voices','providers','personas','status','enable','disable','set-provider','set-persona')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer tts convert') {
+ $completions = @('--text','--channel','--voice','--model','--output','--local','--gateway','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer tts voices') {
+ $completions = @('--provider','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer tts providers') {
+ $completions = @('--local','--gateway','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer tts personas') {
+ $completions = @('--local','--gateway','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer tts status') {
+ $completions = @('--gateway','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer tts enable') {
+ $completions = @('--local','--gateway','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer tts disable') {
+ $completions = @('--local','--gateway','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer tts set-provider') {
+ $completions = @('--provider','--local','--gateway','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer tts set-persona') {
+ $completions = @('--persona','--off','--local','--gateway','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer video') {
+ $completions = @('generate','describe','providers')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer video generate') {
+ $completions = @('--prompt','--model','--size','--aspect-ratio','--resolution','--duration','--audio','--watermark','--timeout-ms','--output','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer video describe') {
+ $completions = @('--file','--model','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer video providers') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer web') {
+ $completions = @('search','fetch','providers')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer web search') {
+ $completions = @('--query','--provider','--limit','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer web fetch') {
+ $completions = @('--url','--provider','--format','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer web providers') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer embedding') {
+ $completions = @('create','providers')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer embedding create') {
+ $completions = @('--text','--provider','--model','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'infer embedding providers') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'approvals') {
+ $completions = @('get','set','allowlist')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'approvals get') {
+ $completions = @('--node','--gateway','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'approvals set') {
+ $completions = @('--node','--gateway','--file','--stdin','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'approvals allowlist') {
+ $completions = @('add','remove')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'approvals allowlist add') {
+ $completions = @('--node','--gateway','--agent','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'approvals allowlist remove') {
+ $completions = @('--node','--gateway','--agent','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'exec-policy') {
+ $completions = @('show','preset','set')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'exec-policy show') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'exec-policy preset') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'exec-policy set') {
+ $completions = @('--host','--security','--ask','--ask-fallback','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes') {
+ $completions = @('status','describe','list','pending','approve','reject','remove','rename','invoke','notify','push','camera','screen','location')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes status') {
+ $completions = @('--connected','--last-connected','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes describe') {
+ $completions = @('--node','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes list') {
+ $completions = @('--connected','--last-connected','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes pending') {
+ $completions = @('--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes approve') {
+ $completions = @('--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes reject') {
+ $completions = @('--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes remove') {
+ $completions = @('--node','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes rename') {
+ $completions = @('--node','--name','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes invoke') {
+ $completions = @('--node','--command','--params','--invoke-timeout','--idempotency-key','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes notify') {
+ $completions = @('--node','--title','--body','--sound','--priority','--delivery','--invoke-timeout','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes push') {
+ $completions = @('--node','--title','--body','--environment','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes camera') {
+ $completions = @('list','snap','clip')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes camera list') {
+ $completions = @('--node','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes camera snap') {
+ $completions = @('--node','--facing','--device-id','--max-width','--quality','--delay-ms','--invoke-timeout','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes camera clip') {
+ $completions = @('--node','--facing','--device-id','--duration','--no-audio','--invoke-timeout','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes screen') {
+ $completions = @('record')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes screen record') {
+ $completions = @('--node','--screen','--duration','--fps','--no-audio','--out','--invoke-timeout','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes location') {
+ $completions = @('get')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'nodes location get') {
+ $completions = @('--node','--max-age','--accuracy','--location-timeout','--invoke-timeout','--url','--token','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'devices') {
+ $completions = @('list','remove','clear','approve','reject','rotate','revoke')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'devices list') {
+ $completions = @('--url','--token','--password','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'devices remove') {
+ $completions = @('--url','--token','--password','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'devices clear') {
+ $completions = @('--pending','--yes','--url','--token','--password','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'devices approve') {
+ $completions = @('--latest','--url','--token','--password','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'devices reject') {
+ $completions = @('--url','--token','--password','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'devices rotate') {
+ $completions = @('--device','--role','--scope','--url','--token','--password','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'devices revoke') {
+ $completions = @('--device','--role','--url','--token','--password','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'node') {
+ $completions = @('run','status','install','uninstall','stop','start','restart')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'node run') {
+ $completions = @('--host','--port','--tls','--tls-fingerprint','--node-id','--display-name')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'node status') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'node install') {
+ $completions = @('--host','--port','--tls','--tls-fingerprint','--node-id','--display-name','--runtime','--force','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'node uninstall') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'node stop') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'node start') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'node restart') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'sandbox') {
+ $completions = @('list','recreate','explain')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'sandbox list') {
+ $completions = @('--json','--browser')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'sandbox recreate') {
+ $completions = @('--all','--session','--agent','--browser','--force')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'sandbox explain') {
+ $completions = @('--session','--agent','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'tui') {
+ $completions = @('--local','--url','--token','--password','--session','--deliver','--thinking','--message','--timeout-ms','--history-limit')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'cron') {
+ $completions = @('status','list','add','rm','enable','disable','get','show','runs','run','edit')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'cron status') {
+ $completions = @('--json','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'cron list') {
+ $completions = @('--all','--agent','--json','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'cron add') {
+ $completions = @('--name','--description','--disabled','--delete-after-run','--keep-after-run','--agent','--session','--session-key','--wake','--at','--every','--cron','--tz','--stagger','--exact','--system-event','--message','--command','--command-argv','--command-cwd','--command-env','--command-input','--thinking','--model','--fallbacks','--timeout-seconds','--no-output-timeout-seconds','--output-max-bytes','--light-context','--tools','--announce','--deliver','--no-deliver','--webhook','--channel','--to','--thread-id','--account','--best-effort-deliver','--json','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'cron rm') {
+ $completions = @('--json','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'cron enable') {
+ $completions = @('--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'cron disable') {
+ $completions = @('--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'cron get') {
+ $completions = @('--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'cron show') {
+ $completions = @('--json','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'cron runs') {
+ $completions = @('--id','--run-id','--limit','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'cron run') {
+ $completions = @('--due','--wait','--wait-timeout','--poll-interval','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'cron edit') {
+ $completions = @('--name','--description','--enable','--disable','--delete-after-run','--keep-after-run','--session','--agent','--clear-agent','--session-key','--clear-session-key','--wake','--at','--every','--cron','--tz','--stagger','--exact','--system-event','--message','--command','--command-argv','--command-cwd','--command-env','--command-input','--thinking','--model','--fallbacks','--clear-fallbacks','--clear-model','--timeout-seconds','--no-output-timeout-seconds','--output-max-bytes','--light-context','--no-light-context','--tools','--clear-tools','--announce','--deliver','--no-deliver','--webhook','--channel','--to','--thread-id','--account','--clear-channel','--clear-to','--clear-thread-id','--clear-account','--best-effort-deliver','--no-best-effort-deliver','--failure-alert','--no-failure-alert','--failure-alert-after','--failure-alert-channel','--failure-alert-to','--failure-alert-cooldown','--failure-alert-include-skipped','--failure-alert-exclude-skipped','--failure-alert-mode','--failure-alert-account-id','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'dns') {
+ $completions = @('setup')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'dns setup') {
+ $completions = @('--domain','--apply')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'proxy') {
+ $completions = @('start','run','validate','coverage','sessions','query','blob','purge')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'proxy start') {
+ $completions = @('--host','--port')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'proxy run') {
+ $completions = @('--host','--port')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'proxy validate') {
+ $completions = @('--json','--proxy-url','--proxy-ca-file','--allowed-url','--denied-url','--apns-reachable','--apns-authority','--timeout-ms')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'proxy sessions') {
+ $completions = @('--limit')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'proxy query') {
+ $completions = @('--preset','--session')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'proxy blob') {
+ $completions = @('--id')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'hooks') {
+ $completions = @('list','info','check','enable','disable','relay','install','update')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'hooks list') {
+ $completions = @('--eligible','--json','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'hooks info') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'hooks check') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'hooks relay') {
+ $completions = @('--provider','--relay-id','--generation','--event','--pre-tool-use-unavailable','--timeout')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'hooks install') {
+ $completions = @('--link','--pin')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'hooks update') {
+ $completions = @('--all','--dry-run')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'webhooks') {
+ $completions = @('gmail')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'webhooks gmail') {
+ $completions = @('setup','run')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'webhooks gmail setup') {
+ $completions = @('--account','--project','--topic','--subscription','--label','--hook-url','--hook-token','--push-token','--bind','--port','--path','--include-body','--max-bytes','--renew-minutes','--tailscale','--tailscale-path','--tailscale-target','--push-endpoint','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'webhooks gmail run') {
+ $completions = @('--account','--topic','--subscription','--label','--hook-url','--hook-token','--push-token','--bind','--port','--path','--include-body','--max-bytes','--renew-minutes','--tailscale','--tailscale-path','--tailscale-target')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'qr') {
+ $completions = @('--remote','--url','--public-url','--token','--password','--setup-code-only','--no-ascii','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'clawbot') {
+ $completions = @('qr')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'clawbot qr') {
+ $completions = @('--remote','--url','--public-url','--token','--password','--setup-code-only','--no-ascii','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'pairing') {
+ $completions = @('list','approve')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'pairing list') {
+ $completions = @('--channel','--account','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'pairing approve') {
+ $completions = @('--channel','--account','--notify')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'plugins') {
+ $completions = @('list','search','inspect','enable','disable','uninstall','install','update','registry','doctor','build','validate','init','marketplace')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'plugins list') {
+ $completions = @('--json','--enabled','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'plugins search') {
+ $completions = @('--limit','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'plugins inspect') {
+ $completions = @('--all','--runtime','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'plugins uninstall') {
+ $completions = @('--keep-files','--keep-config','--force','--dry-run')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'plugins install') {
+ $completions = @('--link','--force','--pin','--dangerously-force-unsafe-install','--marketplace')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'plugins update') {
+ $completions = @('--all','--dry-run','--dangerously-force-unsafe-install')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'plugins registry') {
+ $completions = @('--json','--refresh')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'plugins build') {
+ $completions = @('--root','--entry','--check')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'plugins validate') {
+ $completions = @('--root','--entry')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'plugins init') {
+ $completions = @('--directory','--name','--force')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'plugins marketplace') {
+ $completions = @('list')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'plugins marketplace list') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels') {
+ $completions = @('list','status','capabilities','resolve','logs','add','remove','login','logout')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels list') {
+ $completions = @('--all','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels status') {
+ $completions = @('--channel','--probe','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels capabilities') {
+ $completions = @('--channel','--account','--target','--timeout','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels resolve') {
+ $completions = @('--channel','--account','--kind','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels logs') {
+ $completions = @('--channel','--lines','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels add') {
+ $completions = @('--channel','--account','--name','--token','--token-file','--secret','--secret-file','--bot-token','--app-token','--password','--cli-path','--url','--base-url','--http-url','--auth-dir','--use-env','--db-path','--service','--region')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels remove') {
+ $completions = @('--channel','--account','--delete')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels login') {
+ $completions = @('--channel','--account','--verbose')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'channels logout') {
+ $completions = @('--channel','--account')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'directory') {
+ $completions = @('self','peers','groups')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'directory self') {
+ $completions = @('--channel','--account','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'directory peers') {
+ $completions = @('list')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'directory peers list') {
+ $completions = @('--channel','--account','--json','--query','--limit')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'directory groups') {
+ $completions = @('list','members')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'directory groups list') {
+ $completions = @('--channel','--account','--json','--query','--limit')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'directory groups members') {
+ $completions = @('--group-id','--channel','--account','--json','--limit')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'security') {
+ $completions = @('audit')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'security audit') {
+ $completions = @('--deep','--auth','--token','--password','--fix','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'secrets') {
+ $completions = @('reload','audit','configure','apply')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'secrets reload') {
+ $completions = @('--json','--url','--token','--timeout','--expect-final')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'secrets audit') {
+ $completions = @('--check','--allow-exec','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'secrets configure') {
+ $completions = @('--apply','--yes','--providers-only','--skip-provider-setup','--agent','--allow-exec','--plan-out','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'secrets apply') {
+ $completions = @('--from','--dry-run','--allow-exec','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills') {
+ $completions = @('search','install','update','verify','workshop','list','info','check','--agent')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills search') {
+ $completions = @('--limit','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills install') {
+ $completions = @('--version','--force','--force-install','--global','--agent','--as')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills update') {
+ $completions = @('--all','--force-install','--global','--agent')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills verify') {
+ $completions = @('--version','--tag','--card','--global','--agent')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills workshop') {
+ $completions = @('list','inspect','propose-create','propose-update','revise','apply','reject','quarantine','--agent')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills workshop list') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills workshop inspect') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills workshop propose-create') {
+ $completions = @('--name','--description','--proposal','--proposal-dir','--goal','--evidence','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills workshop propose-update') {
+ $completions = @('--proposal','--proposal-dir','--description','--goal','--evidence','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills workshop revise') {
+ $completions = @('--proposal','--proposal-dir','--description','--goal','--evidence','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills workshop apply') {
+ $completions = @('--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills workshop reject') {
+ $completions = @('--reason','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills workshop quarantine') {
+ $completions = @('--reason','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills list') {
+ $completions = @('--json','--eligible','--verbose','--agent')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills info') {
+ $completions = @('--json','--agent')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'skills check') {
+ $completions = @('--agent','--json')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'update') {
+ $completions = @('repair','finalize','wizard','status','--json','--no-restart','--dry-run','--channel','--tag','--timeout','--yes')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'update repair') {
+ $completions = @('--json','--channel','--timeout','--yes','--no-restart')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'update finalize') {
+ $completions = @('--json','--channel','--timeout','--yes','--no-restart')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'update wizard') {
+ $completions = @('--timeout')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+ if ($commandPath -eq 'update status') {
+ $completions = @('--json','--timeout')
+ $completions | Where-Object { $_ -like "$wordToComplete*" } | ForEach-Object {
+ [System.Management.Automation.CompletionResult]::new($_, $_, 'ParameterName', $_)
+ }
+ }
+
+}
diff --git a/completions/openclaw.zsh b/completions/openclaw.zsh
new file mode 100644
index 0000000..716df9b
--- /dev/null
+++ b/completions/openclaw.zsh
@@ -0,0 +1,4620 @@
+
+#compdef openclaw
+
+_openclaw_root_completion() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "(--version -V)"{--version,-V}"[output the version number]" \
+ "--container[Run the CLI inside a running Podman/Docker container named (default: env OPENCLAW_CONTAINER)]" \
+ "--dev[Dev profile: isolate state under ~/.openclaw-dev, default gateway port 19001, and shift derived ports (browser/canvas)]" \
+ "--profile[Use a named profile (isolates OPENCLAW_STATE_DIR/OPENCLAW_CONFIG_PATH under ~/.openclaw-)]" \
+ "--log-level[Global log level override for file + console (silent|fatal|error|warn|info|debug|trace)]" \
+ "--no-color[Disable ANSI colors]" \
+ "1: :_values 'command' 'completion[Generate shell completion script]' 'crestodian[Open the ring-zero setup and repair helper]' 'setup[Create baseline config/workspace files; use --wizard for full onboarding]' 'onboard[Guided setup for auth, models, Gateway, workspace, channels, and skills]' 'configure[Interactive configuration for credentials, channels, gateway, and agent defaults]' 'config[Non-interactive config helpers (get/set/patch/unset/file/schema/validate). Run without subcommand for guided setup.]' 'backup[Create and verify local backup archives for OpenClaw state]' 'migrate[Import state from another agent system]' 'doctor[Health checks + quick fixes for the gateway and channels]' 'dashboard[Open the Control UI with your current token]' 'reset[Reset local config/state (keeps the CLI installed)]' 'uninstall[Uninstall the gateway service + local data (CLI remains)]' 'message[Send, read, and manage messages and channel actions]' 'mcp[Manage OpenClaw mcp.servers config and channel bridge]' 'transcripts[Inspect stored transcripts]' 'agent[Run an agent turn via the Gateway (use --local for embedded)]' 'agents[Manage isolated agents (workspaces + auth + routing)]' 'status[Show channel health and recent session recipients]' 'health[Fetch health from the running gateway]' 'sessions[List stored conversation sessions]' 'commitments[List and manage inferred follow-up commitments]' 'tasks[Inspect durable background tasks and TaskFlow state]' 'acp[Run an ACP bridge backed by the Gateway]' 'gateway[Run, inspect, and query the WebSocket Gateway]' 'daemon[Manage the Gateway service (launchd/systemd/schtasks)]' 'logs[Tail gateway file logs via RPC]' 'system[System tools (events, heartbeat, presence)]' 'models[Model discovery, scanning, and configuration]' 'infer[Run provider-backed inference commands through a stable CLI surface]' 'approvals[Manage exec approvals (gateway or node host)]' 'exec-policy[Show or synchronize requested exec policy with host approvals]' 'nodes[Manage gateway-owned nodes (pairing, status, invoke, and media)]' 'devices[Device pairing and auth tokens]' 'node[Run and manage the headless node host service]' 'sandbox[Manage sandbox containers (Docker-based agent isolation)]' 'tui[Open a terminal UI connected to the Gateway]' 'cron[Manage cron jobs (via Gateway)]' 'dns[DNS helpers for wide-area discovery (Tailscale + CoreDNS)]' 'docs[Search the live OpenClaw docs]' 'proxy[Run the OpenClaw debug proxy and inspect captured traffic]' 'hooks[Manage internal agent hooks]' 'webhooks[Webhook helpers and integrations]' 'qr[Generate a mobile pairing QR code and setup code]' 'clawbot[Legacy clawbot command aliases]' 'pairing[Secure DM pairing (approve inbound requests)]' 'plugins[Manage OpenClaw plugins and extensions]' 'channels[Manage connected chat channels and accounts]' 'directory[Lookup contact and group IDs (self, peers, groups) for supported chat channels]' 'security[Audit local config and state for common security foot-guns]' 'secrets[Secrets runtime controls]' 'skills[List and inspect available skills]' 'update[Update OpenClaw and inspect update channel status]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (completion) _openclaw_completion ;;
+ (crestodian) _openclaw_crestodian ;;
+ (setup) _openclaw_setup ;;
+ (onboard) _openclaw_onboard ;;
+ (configure) _openclaw_configure ;;
+ (config) _openclaw_config ;;
+ (backup) _openclaw_backup ;;
+ (migrate) _openclaw_migrate ;;
+ (doctor) _openclaw_doctor ;;
+ (dashboard) _openclaw_dashboard ;;
+ (reset) _openclaw_reset ;;
+ (uninstall) _openclaw_uninstall ;;
+ (message) _openclaw_message ;;
+ (mcp) _openclaw_mcp ;;
+ (transcripts) _openclaw_transcripts ;;
+ (agent) _openclaw_agent ;;
+ (agents) _openclaw_agents ;;
+ (status) _openclaw_status ;;
+ (health) _openclaw_health ;;
+ (sessions) _openclaw_sessions ;;
+ (commitments) _openclaw_commitments ;;
+ (tasks) _openclaw_tasks ;;
+ (acp) _openclaw_acp ;;
+ (gateway) _openclaw_gateway ;;
+ (daemon) _openclaw_daemon ;;
+ (logs) _openclaw_logs ;;
+ (system) _openclaw_system ;;
+ (models) _openclaw_models ;;
+ (infer) _openclaw_infer ;;
+ (approvals) _openclaw_approvals ;;
+ (exec-policy) _openclaw_exec_policy ;;
+ (nodes) _openclaw_nodes ;;
+ (devices) _openclaw_devices ;;
+ (node) _openclaw_node ;;
+ (sandbox) _openclaw_sandbox ;;
+ (tui) _openclaw_tui ;;
+ (cron) _openclaw_cron ;;
+ (dns) _openclaw_dns ;;
+ (docs) _openclaw_docs ;;
+ (proxy) _openclaw_proxy ;;
+ (hooks) _openclaw_hooks ;;
+ (webhooks) _openclaw_webhooks ;;
+ (qr) _openclaw_qr ;;
+ (clawbot) _openclaw_clawbot ;;
+ (pairing) _openclaw_pairing ;;
+ (plugins) _openclaw_plugins ;;
+ (channels) _openclaw_channels ;;
+ (directory) _openclaw_directory ;;
+ (security) _openclaw_security ;;
+ (secrets) _openclaw_secrets ;;
+ (skills) _openclaw_skills ;;
+ (update) _openclaw_update ;;
+ esac
+ ;;
+ esac
+}
+
+
+_openclaw_completion() {
+ _arguments -C \
+ "(--shell -s)"{--shell,-s}"[Shell to generate completion for (default: zsh)]" \
+ "(--install -i)"{--install,-i}"[Install completion script to shell profile]" \
+ "--write-state[Write completion scripts to \$OPENCLAW_STATE_DIR/completions (no stdout)]" \
+ "(--yes -y)"{--yes,-y}"[Skip confirmation (non-interactive)]"
+}
+
+_openclaw_crestodian() {
+ _arguments -C \
+ "(--message -m)"{--message,-m}"[Run one Crestodian request]" \
+ "--yes[Approve persistent config writes for this request]" \
+ "--json[Output startup overview as JSON]"
+}
+
+_openclaw_setup() {
+ _arguments -C \
+ "--workspace[Agent workspace directory (default: ~/.openclaw/workspace; stored as agents.defaults.workspace)]" \
+ "--wizard[Run interactive onboarding]" \
+ "--non-interactive[Run onboarding without prompts]" \
+ "--accept-risk[Acknowledge that agents are powerful and full system access is risky (required for --non-interactive)]" \
+ "--mode[Onboard mode: local|remote]" \
+ "--import-from[Migration provider to run during onboarding]" \
+ "--import-source[Source agent home for --import-from]" \
+ "--import-secrets[Import supported secrets during onboarding migration]" \
+ "--remote-url[Remote Gateway WebSocket URL]" \
+ "--remote-token[Remote Gateway token (optional)]"
+}
+
+_openclaw_onboard() {
+ _arguments -C \
+ "--workspace[Agent workspace directory (default: ~/.openclaw/workspace)]" \
+ "--reset[Reset config + credentials + sessions before running onboard (workspace only with --reset-scope full)]" \
+ "--reset-scope[Reset scope: config|config+creds+sessions|full]" \
+ "--non-interactive[Run without prompts]" \
+ "--modern[Use the conversational setup/repair assistant]" \
+ "--accept-risk[Acknowledge that agents are powerful and full system access is risky (required for --non-interactive)]" \
+ "--flow[Onboard flow: quickstart|advanced|manual|import]" \
+ "--mode[Onboard mode: local|remote]" \
+ "--auth-choice[Auth: custom-api-key|skip|claude-cli|apiKey|anthropic-cli|setup-token|arceeai-api-key|byteplus-api-key|cerebras-api-key|openai-device-code|openai|chutes|chutes-api-key|cloudflare-ai-gateway-api-key|zai-cn|codex|qwen-api-key-cn|qwen-api-key|zai-coding-cn|zai-coding-global|cohere-api-key|copilot-proxy|deepinfra-api-key|deepseek-api-key|fireworks-api-key|google-gemini-cli|github-copilot|zai-global|gmi-api-key|gemini-api-key|google-vertex-api-key|groq-api-key|huggingface-api-key|kilocode-api-key|kimi-code-api-key|litellm-api-key|lmstudio|microsoft-foundry-apikey|microsoft-foundry-entra|minimax-cn-api|minimax-global-api|minimax-cn-oauth|minimax-global-oauth|mistral-api-key|moonshot-api-key|moonshot-api-key-cn|novita-api-key|nvidia-api-key|ollama|ollama-cloud|openai-api-key|opencode-go|opencode-zen|arceeai-openrouter|openrouter-api-key|openrouter-oauth|qianfan-api-key|qwen-oauth|sglang|qwen-standard-api-key-cn|qwen-standard-api-key|stepfun-standard-api-key-cn|stepfun-standard-api-key-intl|stepfun-plan-api-key-cn|stepfun-plan-api-key-intl|synthetic-api-key|tokenhub-api-key|together-api-key|venice-api-key|ai-gateway-api-key|vllm|volcengine-api-key|xai-api-key|xai-device-code|xai-oauth|xiaomi-api-key|xiaomi-token-plan-cn|xiaomi-token-plan-ams|xiaomi-token-plan-sgp|zai-api-key]" \
+ "--token-provider[Token provider id (non-interactive; used with --auth-choice token)]" \
+ "--token[Token value (non-interactive; used with --auth-choice token)]" \
+ "--token-profile-id[Auth profile id (non-interactive; default: :manual)]" \
+ "--token-expires-in[Optional token expiry duration (e.g. 365d, 12h)]" \
+ "--secret-input-mode[API key persistence mode: plaintext|ref (default: plaintext)]" \
+ "--cloudflare-ai-gateway-account-id[Cloudflare Account ID]" \
+ "--cloudflare-ai-gateway-gateway-id[Cloudflare AI Gateway ID]" \
+ "--alibaba-model-studio-api-key[Alibaba Model Studio API key]" \
+ "--anthropic-api-key[Anthropic API key]" \
+ "--byteplus-api-key[BytePlus API key]" \
+ "--cohere-api-key[Cohere API key]" \
+ "--comfy-api-key[Comfy Cloud API key]" \
+ "--fal-api-key[fal API key]" \
+ "--github-copilot-token[GitHub Copilot OAuth token]" \
+ "--gemini-api-key[Gemini API key]" \
+ "--huggingface-api-key[Hugging Face API key (HF token)]" \
+ "--litellm-api-key[LiteLLM API key]" \
+ "--lmstudio-api-key[LM Studio API key]" \
+ "--minimax-api-key[MiniMax API key]" \
+ "--mistral-api-key[Mistral API key]" \
+ "--novita-api-key[NovitaAI API key]" \
+ "--nvidia-api-key[NVIDIA API key]" \
+ "--ollama-cloud-api-key[Ollama Cloud API key]" \
+ "--openai-api-key[OpenAI API Key]" \
+ "--opencode-zen-api-key[OpenCode API key (Zen catalog)]" \
+ "--opencode-go-api-key[OpenCode API key (Go catalog)]" \
+ "--openrouter-api-key[OpenRouter API key]" \
+ "--runway-api-key[Runway API key]" \
+ "--synthetic-api-key[Synthetic API key]" \
+ "--together-api-key[Together AI API key]" \
+ "--volcengine-api-key[Volcano Engine API key]" \
+ "--vydra-api-key[Vydra API key]" \
+ "--xai-api-key[xAI API key]" \
+ "--xiaomi-api-key[Xiaomi MiMo pay-as-you-go API key]" \
+ "--xiaomi-token-plan-api-key[Xiaomi MiMo Token Plan API key]" \
+ "--deepseek-api-key[DeepSeek API key]" \
+ "--arceeai-api-key[Arcee AI API key]" \
+ "--cerebras-api-key[Cerebras API key]" \
+ "--chutes-api-key[Chutes API key]" \
+ "--cloudflare-ai-gateway-api-key[Cloudflare AI Gateway API key]" \
+ "--deepinfra-api-key[DeepInfra API key]" \
+ "--gmi-api-key[GMI Cloud API key]" \
+ "--groq-api-key[Groq API key]" \
+ "--kilocode-api-key[Kilo Gateway API key]" \
+ "--kimi-code-api-key[Kimi Code API key (subscription)]" \
+ "--pixverse-api-key[PixVerse API key]" \
+ "--qianfan-api-key[QIANFAN API key]" \
+ "--modelstudio-standard-api-key-cn[Qwen Cloud standard API key (China)]" \
+ "--modelstudio-standard-api-key[Qwen Cloud standard API key (Global/Intl)]" \
+ "--modelstudio-api-key-cn[Qwen Cloud Coding Plan API key (China)]" \
+ "--modelstudio-api-key[Qwen Cloud Coding Plan API key (Global/Intl)]" \
+ "--qwen-oauth-token[Qwen OAuth token]" \
+ "--fireworks-api-key[Fireworks API key]" \
+ "--moonshot-api-key[Moonshot API key]" \
+ "--tokenhub-api-key[Tencent TokenHub API key]" \
+ "--venice-api-key[Venice API key]" \
+ "--ai-gateway-api-key[Vercel AI Gateway API key]" \
+ "--zai-api-key[Z.AI API key]" \
+ "--stepfun-api-key[StepFun API key]" \
+ "--custom-base-url[Custom provider base URL]" \
+ "--custom-api-key[Custom provider API key (optional)]" \
+ "--custom-model-id[Custom provider model ID]" \
+ "--custom-provider-id[Custom provider ID (optional; auto-derived by default)]" \
+ "--custom-compatibility[Custom provider API compatibility: openai|openai-responses|anthropic (default: openai)]" \
+ "--custom-image-input[Mark the custom provider model as image-capable]" \
+ "--custom-text-input[Mark the custom provider model as text-only]" \
+ "--gateway-port[Gateway port]" \
+ "--gateway-bind[Gateway bind: loopback|tailnet|lan|auto|custom]" \
+ "--gateway-auth[Gateway auth: token|password]" \
+ "--gateway-token[Gateway token (token auth)]" \
+ "--gateway-token-ref-env[Gateway token SecretRef env var name (token auth; e.g. OPENCLAW_GATEWAY_TOKEN)]" \
+ "--gateway-password[Gateway password (password auth)]" \
+ "--remote-url[Remote Gateway WebSocket URL]" \
+ "--remote-token[Remote Gateway token (optional)]" \
+ "--tailscale[Tailscale: off|serve|funnel]" \
+ "--tailscale-reset-on-exit[Reset tailscale serve/funnel on exit]" \
+ "--install-daemon[Install gateway service]" \
+ "--no-install-daemon[Skip gateway service install]" \
+ "--skip-daemon[Skip gateway service install]" \
+ "--daemon-runtime[Daemon runtime: node|bun]" \
+ "--skip-channels[Skip channel setup]" \
+ "--skip-skills[Skip skills setup]" \
+ "--skip-bootstrap[Skip creating default agent workspace files]" \
+ "--skip-search[Skip search provider setup]" \
+ "--skip-health[Skip health check]" \
+ "--skip-ui[Skip Control UI/TUI prompts]" \
+ "--suppress-gateway-token-output[Suppress token-bearing Gateway/UI output]" \
+ "--skip-hooks[Skip hook setup]" \
+ "--node-manager[Node manager for skills: npm|pnpm|bun]" \
+ "--import-from[Migration provider to run during onboarding]" \
+ "--import-source[Source agent home for --import-from]" \
+ "--import-secrets[Import supported secrets during onboarding migration]" \
+ "--json[Output JSON summary]"
+}
+
+_openclaw_configure() {
+ _arguments -C \
+ "--section[Configuration sections (repeatable). Options: workspace, model, web, gateway, daemon, channels, plugins, skills, health]"
+}
+
+_openclaw_config_get() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_config_set() {
+ _arguments -C \
+ "--strict-json[Strict JSON parsing (error instead of raw string fallback)]" \
+ "--json[Legacy alias for --strict-json]" \
+ "--dry-run[Validate changes without writing openclaw.json (checks run in builder/json/batch modes; exec SecretRefs are skipped unless --allow-exec is set)]" \
+ "--allow-exec[Dry-run only: allow exec SecretRef resolvability checks (may execute provider commands)]" \
+ "--merge[Merge object/map values instead of replacing the target path]" \
+ "--replace[Allow full replacement of protected map/list paths such as agents.defaults.models]" \
+ "--ref-provider[SecretRef builder: provider alias]" \
+ "--ref-source[SecretRef builder: source (env|file|exec)]" \
+ "--ref-id[SecretRef builder: ref id]" \
+ "--provider-source[Provider builder: source (env|file|exec)]" \
+ "--provider-allowlist[Provider builder (env): allowlist entry (repeatable)]" \
+ "--provider-path[Provider builder (file): path]" \
+ "--provider-mode[Provider builder (file): mode (singleValue|json)]" \
+ "--provider-timeout-ms[Provider builder (file|exec): timeout ms]" \
+ "--provider-max-bytes[Provider builder (file): max bytes]" \
+ "--provider-command[Provider builder (exec): absolute command path]" \
+ "--provider-arg[Provider builder (exec): command arg (repeatable)]" \
+ "--provider-no-output-timeout-ms[Provider builder (exec): no-output timeout ms]" \
+ "--provider-max-output-bytes[Provider builder (exec): max output bytes]" \
+ "--provider-json-only[Provider builder (exec): require JSON output]" \
+ "--provider-env[Provider builder (exec): env assignment (repeatable)]" \
+ "--provider-pass-env[Provider builder (exec): pass host env var (repeatable)]" \
+ "--provider-trusted-dir[Provider builder (exec): trusted directory (repeatable)]" \
+ "--provider-allow-insecure-path[Provider builder (file|exec): bypass strict path permission checks]" \
+ "--provider-allow-symlink-command[Provider builder (exec): allow command symlink path]" \
+ "--batch-json[Batch mode: JSON array of set operations]" \
+ "--batch-file[Batch mode: read JSON array of set operations from file]"
+}
+
+_openclaw_config_patch() {
+ _arguments -C \
+ "--file[Read a JSON5 config patch object from file]" \
+ "--stdin[Read a JSON5 config patch object from stdin]" \
+ "--dry-run[Validate changes without writing openclaw.json (checks schema and SecretRef resolvability; exec SecretRefs are skipped unless --allow-exec is set)]" \
+ "--allow-exec[Dry-run only: allow exec SecretRef resolvability checks (may execute provider commands)]" \
+ "--json[Output dry-run result as JSON]" \
+ "--replace-path[Replace the object or array at this dot/bracket path instead of recursively applying it (repeatable)]"
+}
+
+_openclaw_config_unset() {
+ _arguments -C \
+ "--dry-run[validate the removal without writing the config file]" \
+ "--allow-exec[allow exec SecretRef providers during --dry-run]" \
+ "--json[print dry-run result as JSON]"
+}
+
+_openclaw_config_file() {
+ _arguments -C \
+
+}
+
+_openclaw_config_schema() {
+ _arguments -C \
+
+}
+
+_openclaw_config_validate() {
+ _arguments -C \
+ "--json[Output validation result as JSON]"
+}
+
+_openclaw_config() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--section[Configuration sections for guided setup (repeatable). Use with no subcommand.]" \
+ "1: :_values 'command' 'get[Get a config value by dot path]' 'set[Set config values by path (value mode, ref/provider builder mode, or batch JSON mode).
+Examples:
+openclaw config set gateway.port 19001 --strict-json
+openclaw config set channels.discord.token --ref-provider default --ref-source env --ref-id DISCORD_BOT_TOKEN
+openclaw config set secrets.providers.vault --provider-source file --provider-path /etc/openclaw/secrets.json --provider-mode json
+openclaw config set --batch-file ./config-set.batch.json --dry-run]' 'patch[Patch config from a JSON5 object in one validated write.
+Objects merge recursively, arrays/scalars replace, and null deletes a path.
+Examples:
+openclaw config patch --file ./openclaw.patch.json5 --dry-run
+openclaw config patch --stdin]' 'unset[Remove a config value by dot path]' 'file[Print the active config file path]' 'schema[Print the JSON schema for openclaw.json]' 'validate[Validate the current config against the schema without starting the gateway]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (get) _openclaw_config_get ;;
+ (set) _openclaw_config_set ;;
+ (patch) _openclaw_config_patch ;;
+ (unset) _openclaw_config_unset ;;
+ (file) _openclaw_config_file ;;
+ (schema) _openclaw_config_schema ;;
+ (validate) _openclaw_config_validate ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_backup_create() {
+ _arguments -C \
+ "--output[Archive path or destination directory]" \
+ "--json[Output JSON]" \
+ "--dry-run[Print the backup plan without writing the archive]" \
+ "--verify[Verify the archive after writing it]" \
+ "--only-config[Back up only the active JSON config file]" \
+ "--no-include-workspace[Exclude workspace directories from the backup]"
+}
+
+_openclaw_backup_verify() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_backup() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'create[Write a backup archive for config, credentials, sessions, and workspaces]' 'verify[Validate a backup archive and its embedded manifest]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (create) _openclaw_backup_create ;;
+ (verify) _openclaw_backup_verify ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_migrate_list() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_migrate_plan() {
+ _arguments -C \
+ "--from[Source directory to migrate from]" \
+ "--include-secrets[Import supported credentials and secrets]" \
+ "--no-auth-credentials[Skip auth credential migration]" \
+ "--overwrite[Overwrite conflicting target files after item-level backups]" \
+ "--json[Output JSON]" \
+ "--skill[Select one skill to migrate by name or item id; repeat for multiple skills]" \
+ "--plugin[Select one Codex plugin to migrate by name or item id; repeat for multiple plugins]" \
+ "--verify-plugin-apps[Codex only: verify source plugin app accessibility with app/list before planning native plugin activation]"
+}
+
+_openclaw_migrate_apply() {
+ _arguments -C \
+ "--from[Source directory to migrate from]" \
+ "--include-secrets[Import supported credentials and secrets]" \
+ "--no-auth-credentials[Skip auth credential migration]" \
+ "--overwrite[Overwrite conflicting target files after item-level backups]" \
+ "--json[Output JSON]" \
+ "--skill[Select one skill to migrate by name or item id; repeat for multiple skills]" \
+ "--plugin[Select one Codex plugin to migrate by name or item id; repeat for multiple plugins]" \
+ "--verify-plugin-apps[Codex only: verify source plugin app accessibility with app/list before planning native plugin activation]" \
+ "--yes[Apply without prompting]" \
+ "--backup-output[Pre-migration backup archive path or directory]" \
+ "--no-backup[Skip the pre-migration OpenClaw backup]" \
+ "--force[Allow dangerous options such as --no-backup]"
+}
+
+_openclaw_migrate() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--from[Source directory to migrate from]" \
+ "--include-secrets[Import supported credentials and secrets]" \
+ "--no-auth-credentials[Skip auth credential migration]" \
+ "--overwrite[Overwrite conflicting target files after item-level backups]" \
+ "--dry-run[Preview only; do not apply changes]" \
+ "--yes[Apply without prompting after preview]" \
+ "--skill[Select one skill to migrate by name or item id; repeat for multiple skills]" \
+ "--plugin[Select one Codex plugin to migrate by name or item id; repeat for multiple plugins]" \
+ "--backup-output[Pre-migration backup archive path or directory]" \
+ "--no-backup[Skip the pre-migration OpenClaw backup]" \
+ "--force[Allow dangerous options such as --no-backup]" \
+ "--json[Output JSON]" \
+ "--verify-plugin-apps[Codex only: verify source plugin app accessibility with app/list before planning native plugin activation]" \
+ "1: :_values 'command' 'list[List migration providers]' 'plan[Preview a migration without changing OpenClaw state]' 'apply[Apply a migration after a verified backup]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_migrate_list ;;
+ (plan) _openclaw_migrate_plan ;;
+ (apply) _openclaw_migrate_apply ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_doctor() {
+ _arguments -C \
+ "--no-workspace-suggestions[Disable workspace memory system suggestions]" \
+ "--yes[Accept defaults without prompting]" \
+ "--repair[Apply recommended repairs without prompting]" \
+ "--fix[Apply recommended repairs (alias for --repair)]" \
+ "--force[Apply aggressive repairs (overwrites custom service config)]" \
+ "--non-interactive[Run without prompts (safe migrations only)]" \
+ "--generate-gateway-token[Generate and configure a gateway token]" \
+ "--allow-exec[Allow doctor to execute exec SecretRefs while verifying configured secrets]" \
+ "--deep[Scan system services for extra gateway installs]" \
+ "--lint[Run read-only health checks and report findings]" \
+ "--post-upgrade[Emit plugin-compat findings only (machine-readable with --json)]" \
+ "--json[With --lint or --post-upgrade: emit machine-readable JSON output]" \
+ "--severity-min[With --lint: drop findings below this severity (info|warning|error)]" \
+ "--skip[With --lint: skip a specific check id (repeatable)]" \
+ "--only[With --lint: run only the specified check id (repeatable)]"
+}
+
+_openclaw_dashboard() {
+ _arguments -C \
+ "--no-open[Print URL but do not launch a browser]" \
+ "--yes[Start/install the gateway without prompting when needed]"
+}
+
+_openclaw_reset() {
+ _arguments -C \
+ "--scope[config|config+creds+sessions|full (default: interactive prompt)]" \
+ "--yes[Skip confirmation prompts]" \
+ "--non-interactive[Disable prompts (requires --scope + --yes)]" \
+ "--dry-run[Print actions without removing files]"
+}
+
+_openclaw_uninstall() {
+ _arguments -C \
+ "--service[Remove the gateway service]" \
+ "--state[Remove state + config]" \
+ "--workspace[Remove workspace dirs]" \
+ "--app[Remove the macOS app]" \
+ "--all[Remove service + state + workspace + app]" \
+ "--yes[Skip confirmation prompts]" \
+ "--non-interactive[Disable prompts (requires --yes)]" \
+ "--dry-run[Print actions without removing files]"
+}
+
+_openclaw_message_send() {
+ _arguments -C \
+ "(--message -m)"{--message,-m}"[Message body (required unless --media is set)]" \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--media[Attach media (image/audio/video/document). Accepts local paths or URLs.]" \
+ "--presentation[Shared presentation payload as JSON (text, context, dividers, buttons, selects)]" \
+ "--delivery[Shared delivery preferences as JSON]" \
+ "--pin[Request that the delivered message be pinned when supported]" \
+ "--reply-to[Reply-to message id]" \
+ "--thread-id[Thread id (Telegram forum thread)]" \
+ "--gif-playback[Treat video media as GIF playback (WhatsApp only).]" \
+ "--force-document[Send media as document to avoid channel compression (Telegram, WhatsApp). Applies to images, GIFs, and videos.]" \
+ "--silent[Send message silently without notification (Telegram + Discord)]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]"
+}
+
+_openclaw_message_broadcast() {
+ _arguments -C \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--targets[Recipient/channel targets (same format as --target); accepts ids or names when the directory is available.]" \
+ "--message[Message to send]" \
+ "--media[Media URL]"
+}
+
+_openclaw_message_poll() {
+ _arguments -C \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--poll-question[Poll question]" \
+ "--poll-option[Poll option (repeat 2-12 times)]" \
+ "--poll-multi[Allow multiple selections]" \
+ "--poll-duration-hours[Poll duration in hours (Discord)]" \
+ "--poll-duration-seconds[Poll duration in seconds (Telegram; 5-600)]" \
+ "--poll-anonymous[Send an anonymous poll (Telegram)]" \
+ "--poll-public[Send a non-anonymous poll (Telegram)]" \
+ "(--message -m)"{--message,-m}"[Optional message body]" \
+ "--silent[Send poll silently without notification (Telegram + Discord where supported)]" \
+ "--thread-id[Thread id (Telegram forum topic / Slack thread ts)]"
+}
+
+_openclaw_message_react() {
+ _arguments -C \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--message-id[Message id]" \
+ "--emoji[Emoji for reactions]" \
+ "--remove[Remove reaction]" \
+ "--participant[WhatsApp reaction participant]" \
+ "--from-me[WhatsApp reaction fromMe]" \
+ "--target-author[Signal reaction target author (uuid or phone)]" \
+ "--target-author-uuid[Signal reaction target author uuid]"
+}
+
+_openclaw_message_reactions() {
+ _arguments -C \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--message-id[Message id]" \
+ "--limit[Result limit]"
+}
+
+_openclaw_message_read() {
+ _arguments -C \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--limit[Result limit]" \
+ "--message-id[Read a specific message id]" \
+ "--before[Read/search before id]" \
+ "--after[Read/search after id]" \
+ "--around[Read around id]" \
+ "--thread-id[Thread id (Slack thread timestamp)]" \
+ "--include-thread[Include thread replies (Discord)]"
+}
+
+_openclaw_message_edit() {
+ _arguments -C \
+ "--message-id[Message id]" \
+ "(--message -m)"{--message,-m}"[Message body]" \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--thread-id[Thread id (Telegram forum thread)]"
+}
+
+_openclaw_message_delete() {
+ _arguments -C \
+ "--message-id[Message id]" \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]"
+}
+
+_openclaw_message_pin() {
+ _arguments -C \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--message-id[Message id]"
+}
+
+_openclaw_message_unpin() {
+ _arguments -C \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--message-id[Message id (or pinned message resource id for MSTeams)]" \
+ "--pinned-message-id[Pinned message resource id (MSTeams: from pin or list-pins, not the chat message id)]"
+}
+
+_openclaw_message_pins() {
+ _arguments -C \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--limit[Result limit]"
+}
+
+_openclaw_message_permissions() {
+ _arguments -C \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]"
+}
+
+_openclaw_message_search() {
+ _arguments -C \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--guild-id[Guild id]" \
+ "--query[Search query]" \
+ "--channel-id[Channel id]" \
+ "--channel-ids[Channel id (repeat)]" \
+ "--author-id[Author id]" \
+ "--author-ids[Author id (repeat)]" \
+ "--limit[Result limit]"
+}
+
+_openclaw_message_thread_create() {
+ _arguments -C \
+ "--thread-name[Thread name]" \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--message-id[Message id (optional)]" \
+ "(--message -m)"{--message,-m}"[Initial thread message text]" \
+ "--auto-archive-min[Thread auto-archive minutes]"
+}
+
+_openclaw_message_thread_list() {
+ _arguments -C \
+ "--guild-id[Guild id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--channel-id[Channel id]" \
+ "--include-archived[Include archived threads]" \
+ "--before[Read/search before id]" \
+ "--limit[Result limit]"
+}
+
+_openclaw_message_thread_reply() {
+ _arguments -C \
+ "(--message -m)"{--message,-m}"[Message body]" \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--media[Attach media (image/audio/video/document). Accepts local paths or URLs.]" \
+ "--reply-to[Reply-to message id]"
+}
+
+_openclaw_message_thread() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'create[Create a thread]' 'list[List threads]' 'reply[Reply in a thread]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (create) _openclaw_message_thread_create ;;
+ (list) _openclaw_message_thread_list ;;
+ (reply) _openclaw_message_thread_reply ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_message_emoji_list() {
+ _arguments -C \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--guild-id[Guild id (Discord)]"
+}
+
+_openclaw_message_emoji_upload() {
+ _arguments -C \
+ "--guild-id[Guild id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--emoji-name[Emoji name]" \
+ "--media[Emoji media (path or URL)]" \
+ "--role-ids[Role id (repeat)]"
+}
+
+_openclaw_message_emoji() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List emojis]' 'upload[Upload an emoji]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_message_emoji_list ;;
+ (upload) _openclaw_message_emoji_upload ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_message_sticker_send() {
+ _arguments -C \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--sticker-id[Sticker id (repeat)]" \
+ "(--message -m)"{--message,-m}"[Optional message body]"
+}
+
+_openclaw_message_sticker_upload() {
+ _arguments -C \
+ "--guild-id[Guild id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--sticker-name[Sticker name]" \
+ "--sticker-desc[Sticker description]" \
+ "--sticker-tags[Sticker tags]" \
+ "--media[Sticker media (path or URL)]"
+}
+
+_openclaw_message_sticker() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'send[Send stickers]' 'upload[Upload a sticker]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (send) _openclaw_message_sticker_send ;;
+ (upload) _openclaw_message_sticker_upload ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_message_role_info() {
+ _arguments -C \
+ "--guild-id[Guild id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]"
+}
+
+_openclaw_message_role_add() {
+ _arguments -C \
+ "--guild-id[Guild id]" \
+ "--user-id[User id]" \
+ "--role-id[Role id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]"
+}
+
+_openclaw_message_role_remove() {
+ _arguments -C \
+ "--guild-id[Guild id]" \
+ "--user-id[User id]" \
+ "--role-id[Role id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]"
+}
+
+_openclaw_message_role() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'info[List roles]' 'add[Add role to a member]' 'remove[Remove role from a member]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (info) _openclaw_message_role_info ;;
+ (add) _openclaw_message_role_add ;;
+ (remove) _openclaw_message_role_remove ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_message_channel_info() {
+ _arguments -C \
+ "(--target -t)"{--target,-t}"[Recipient/channel: E.164 for WhatsApp/Signal, Telegram chat id/@username, Discord/Slack/Mattermost , or iMessage handle/chat_id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]"
+}
+
+_openclaw_message_channel_list() {
+ _arguments -C \
+ "--guild-id[Guild id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]"
+}
+
+_openclaw_message_channel() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'info[Fetch channel info]' 'list[List channels]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (info) _openclaw_message_channel_info ;;
+ (list) _openclaw_message_channel_list ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_message_member_info() {
+ _arguments -C \
+ "--user-id[User id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--guild-id[Guild id (Discord)]"
+}
+
+_openclaw_message_member() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'info[Fetch member info]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (info) _openclaw_message_member_info ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_message_voice_status() {
+ _arguments -C \
+ "--guild-id[Guild id]" \
+ "--user-id[User id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]"
+}
+
+_openclaw_message_voice() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'status[Fetch voice status]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (status) _openclaw_message_voice_status ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_message_event_list() {
+ _arguments -C \
+ "--guild-id[Guild id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]"
+}
+
+_openclaw_message_event_create() {
+ _arguments -C \
+ "--guild-id[Guild id]" \
+ "--event-name[Event name]" \
+ "--start-time[Event start time]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--end-time[Event end time]" \
+ "--desc[Event description]" \
+ "--channel-id[Channel id]" \
+ "--location[Event location]" \
+ "--event-type[Event type]" \
+ "--image[Cover image URL or local file path]"
+}
+
+_openclaw_message_event() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List scheduled events]' 'create[Create a scheduled event]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_message_event_list ;;
+ (create) _openclaw_message_event_create ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_message_timeout() {
+ _arguments -C \
+ "--guild-id[Guild id]" \
+ "--user-id[User id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--duration-min[Timeout duration minutes]" \
+ "--until[Timeout until]" \
+ "--reason[Moderation reason]"
+}
+
+_openclaw_message_kick() {
+ _arguments -C \
+ "--guild-id[Guild id]" \
+ "--user-id[User id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--reason[Moderation reason]"
+}
+
+_openclaw_message_ban() {
+ _arguments -C \
+ "--guild-id[Guild id]" \
+ "--user-id[User id]" \
+ "--channel[Channel: telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch]" \
+ "--account[Channel account id (accountId)]" \
+ "--json[Output result as JSON]" \
+ "--dry-run[Print payload and skip sending]" \
+ "--verbose[Verbose logging]" \
+ "--reason[Moderation reason]" \
+ "--delete-days[Ban delete message days]"
+}
+
+_openclaw_message() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'send[Send a message]' 'broadcast[Broadcast a message to multiple targets]' 'poll[Send a poll]' 'react[Add or remove a reaction]' 'reactions[List reactions on a message]' 'read[Read recent messages]' 'edit[Edit a message]' 'delete[Delete a message]' 'pin[Pin a message]' 'unpin[Unpin a message]' 'pins[List pinned messages]' 'permissions[Fetch channel permissions]' 'search[Search Discord messages]' 'thread[Thread actions]' 'emoji[Emoji actions]' 'sticker[Sticker actions]' 'role[Role actions]' 'channel[Channel actions]' 'member[Member actions]' 'voice[Voice actions]' 'event[Event actions]' 'timeout[Timeout a member]' 'kick[Kick a member]' 'ban[Ban a member]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (send) _openclaw_message_send ;;
+ (broadcast) _openclaw_message_broadcast ;;
+ (poll) _openclaw_message_poll ;;
+ (react) _openclaw_message_react ;;
+ (reactions) _openclaw_message_reactions ;;
+ (read) _openclaw_message_read ;;
+ (edit) _openclaw_message_edit ;;
+ (delete) _openclaw_message_delete ;;
+ (pin) _openclaw_message_pin ;;
+ (unpin) _openclaw_message_unpin ;;
+ (pins) _openclaw_message_pins ;;
+ (permissions) _openclaw_message_permissions ;;
+ (search) _openclaw_message_search ;;
+ (thread) _openclaw_message_thread ;;
+ (emoji) _openclaw_message_emoji ;;
+ (sticker) _openclaw_message_sticker ;;
+ (role) _openclaw_message_role ;;
+ (channel) _openclaw_message_channel ;;
+ (member) _openclaw_message_member ;;
+ (voice) _openclaw_message_voice ;;
+ (event) _openclaw_message_event ;;
+ (timeout) _openclaw_message_timeout ;;
+ (kick) _openclaw_message_kick ;;
+ (ban) _openclaw_message_ban ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_mcp_serve() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--token-file[Read gateway token from file]" \
+ "--password[Gateway password (if required)]" \
+ "--password-file[Read gateway password from file]" \
+ "--claude-channel-mode[Claude channel notification mode: auto, on, or off]" \
+ "(--verbose -v)"{--verbose,-v}"[Verbose logging to stderr]"
+}
+
+_openclaw_mcp_list() {
+ _arguments -C \
+ "--json[Print JSON]"
+}
+
+_openclaw_mcp_show() {
+ _arguments -C \
+ "--json[Print JSON]"
+}
+
+_openclaw_mcp_status() {
+ _arguments -C \
+ "(--verbose -v)"{--verbose,-v}"[Show transport, auth, timeout, and filter details]" \
+ "--json[Print JSON]"
+}
+
+_openclaw_mcp_probe() {
+ _arguments -C \
+ "--json[Print JSON]"
+}
+
+_openclaw_mcp_doctor() {
+ _arguments -C \
+ "--probe[Also connect to each checked server]" \
+ "--json[Print JSON]"
+}
+
+_openclaw_mcp_add() {
+ _arguments -C \
+ "--command[Stdio command to spawn]" \
+ "--arg[Repeatable stdio argument]" \
+ "--env[Repeatable stdio environment entry]" \
+ "--cwd[Working directory for stdio server]" \
+ "--url[HTTP MCP server URL]" \
+ "--transport[HTTP transport: streamable-http or sse]" \
+ "--header[Repeatable HTTP header]" \
+ "--auth[HTTP auth mode: oauth]" \
+ "--oauth-scope[OAuth scope]" \
+ "--oauth-redirect-url[OAuth redirect URL]" \
+ "--oauth-client-metadata-url[OAuth client metadata URL]" \
+ "--include[Comma-separated MCP tool names or '*' globs to expose]" \
+ "--exclude[Comma-separated MCP tool names or '*' globs to hide]" \
+ "--timeout[Per-request timeout in seconds]" \
+ "--connect-timeout[Connection timeout in seconds]" \
+ "--parallel[Mark this server safe for concurrent tool calls]" \
+ "--disabled[Save the server disabled]" \
+ "--ssl-verify[Verify HTTPS certificates: true or false]" \
+ "--client-cert[HTTP mutual TLS client certificate path]" \
+ "--client-key[HTTP mutual TLS client key path]" \
+ "--no-probe[Save without connecting first]"
+}
+
+_openclaw_mcp_set() {
+ _arguments -C \
+
+}
+
+_openclaw_mcp_tools() {
+ _arguments -C \
+ "--include[Comma-separated MCP tool names or '*' globs to expose]" \
+ "--exclude[Comma-separated MCP tool names or '*' globs to hide]" \
+ "--clear[Clear this server's MCP tool filter]"
+}
+
+_openclaw_mcp_configure() {
+ _arguments -C \
+ "--enable[Enable this saved server]" \
+ "--disable[Disable this saved server]" \
+ "--include[Comma-separated MCP tool names or '*' globs to expose]" \
+ "--exclude[Comma-separated MCP tool names or '*' globs to hide]" \
+ "--clear-tools[Clear this server's MCP tool filter]" \
+ "--timeout[Per-request timeout in seconds]" \
+ "--connect-timeout[Connection timeout in seconds]" \
+ "--clear-timeouts[Clear request and connection timeout overrides]" \
+ "--parallel[Mark this server safe for concurrent tool calls]" \
+ "--no-parallel[Clear the concurrent tool-call marker]" \
+ "--auth[HTTP auth mode: oauth]" \
+ "--clear-auth[Clear auth and OAuth metadata]" \
+ "--oauth-scope[OAuth scope]" \
+ "--oauth-redirect-url[OAuth redirect URL]" \
+ "--oauth-client-metadata-url[OAuth client metadata URL]" \
+ "--ssl-verify[Verify HTTPS certificates: true or false]" \
+ "--client-cert[HTTP mutual TLS client certificate path]" \
+ "--client-key[HTTP mutual TLS client key path]" \
+ "--clear-tls[Clear TLS verification and mTLS overrides]" \
+ "--probe[Probe the updated server before saving]"
+}
+
+_openclaw_mcp_login() {
+ _arguments -C \
+ "--code[Authorization code from the OAuth redirect]"
+}
+
+_openclaw_mcp_logout() {
+ _arguments -C \
+
+}
+
+_openclaw_mcp_reload() {
+ _arguments -C \
+
+}
+
+_openclaw_mcp_unset() {
+ _arguments -C \
+
+}
+
+_openclaw_mcp() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'serve[Expose OpenClaw channels over MCP stdio]' 'list[List OpenClaw-managed MCP servers from mcp.servers]' 'show[Show one OpenClaw-managed MCP server or the full mcp.servers config]' 'status[Show configured MCP server transport status without connecting]' 'probe[Connect to configured MCP servers and list available capabilities]' 'doctor[Check configured MCP servers for static setup problems]' 'add[Add one MCP server from flags and probe it before saving]' 'set[Set one OpenClaw-managed MCP server from a JSON object]' 'tools[Update per-server MCP tool include/exclude filters]' 'configure[Update MCP server operator controls without replacing the server]' 'login[Authorize an OAuth MCP server]' 'logout[Clear stored OAuth credentials for an MCP server]' 'reload[Dispose cached MCP runtimes so new config is used on the next turn]' 'unset[Remove one OpenClaw-managed MCP server]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (serve) _openclaw_mcp_serve ;;
+ (list) _openclaw_mcp_list ;;
+ (show) _openclaw_mcp_show ;;
+ (status) _openclaw_mcp_status ;;
+ (probe) _openclaw_mcp_probe ;;
+ (doctor) _openclaw_mcp_doctor ;;
+ (add) _openclaw_mcp_add ;;
+ (set) _openclaw_mcp_set ;;
+ (tools) _openclaw_mcp_tools ;;
+ (configure) _openclaw_mcp_configure ;;
+ (login) _openclaw_mcp_login ;;
+ (logout) _openclaw_mcp_logout ;;
+ (reload) _openclaw_mcp_reload ;;
+ (unset) _openclaw_mcp_unset ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_transcripts_list() {
+ _arguments -C \
+ "--json[Print JSON]"
+}
+
+_openclaw_transcripts_show() {
+ _arguments -C \
+ "--json[Print JSON]"
+}
+
+_openclaw_transcripts_path() {
+ _arguments -C \
+ "--dir[Print the session directory]" \
+ "--metadata[Print metadata.json]" \
+ "--transcript[Print transcript.jsonl]" \
+ "--json[Print JSON]"
+}
+
+_openclaw_transcripts() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List stored transcript sessions]' 'show[Print a transcript summary markdown file]' 'path[Print a stored transcripts artifact path]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_transcripts_list ;;
+ (show) _openclaw_transcripts_show ;;
+ (path) _openclaw_transcripts_path ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_agent() {
+ _arguments -C \
+ "(--message -m)"{--message,-m}"[Message body for the agent]" \
+ "--message-file[Read the agent message body from a UTF-8 file]" \
+ "(--to -t)"{--to,-t}"[Recipient number in E.164 used to derive the session key]" \
+ "--session-key[Explicit session key (agent::, or scoped to --agent)]" \
+ "--session-id[Use an explicit session id]" \
+ "--agent[Agent id (overrides routing bindings)]" \
+ "--model[Model override for this run (provider/model or model id)]" \
+ "--thinking[Thinking level: off | minimal | low | medium | high | xhigh | adaptive | max where supported]" \
+ "--verbose[Persist agent verbose level for the session]" \
+ "--channel[Delivery channel: last|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch (omit to use the main session channel)]" \
+ "--reply-to[Delivery target override (separate from session routing)]" \
+ "--reply-channel[Delivery channel override (separate from routing)]" \
+ "--reply-account[Delivery account id override]" \
+ "--local[Run the embedded agent locally (requires model provider API keys in your shell)]" \
+ "--deliver[Send the agent's reply back to the selected channel]" \
+ "--json[Output result as JSON]" \
+ "--timeout[Override agent command timeout (seconds, default 600 or config value)]"
+}
+
+_openclaw_agents_list() {
+ _arguments -C \
+ "--json[Output JSON instead of text]" \
+ "--bindings[Include routing bindings]"
+}
+
+_openclaw_agents_bindings() {
+ _arguments -C \
+ "--agent[Filter by agent id]" \
+ "--json[Output JSON instead of text]"
+}
+
+_openclaw_agents_bind() {
+ _arguments -C \
+ "--agent[Agent id (defaults to current default agent)]" \
+ "--bind[Binding to add (repeatable). If omitted, accountId is resolved by channel defaults/hooks.]" \
+ "--json[Output JSON summary]"
+}
+
+_openclaw_agents_unbind() {
+ _arguments -C \
+ "--agent[Agent id (defaults to current default agent)]" \
+ "--bind[Binding to remove (repeatable)]" \
+ "--all[Remove all bindings for this agent]" \
+ "--json[Output JSON summary]"
+}
+
+_openclaw_agents_add() {
+ _arguments -C \
+ "--workspace[Workspace directory for the new agent]" \
+ "--model[Model id for this agent]" \
+ "--agent-dir[Agent state directory for this agent]" \
+ "--bind[Route channel binding (repeatable)]" \
+ "--non-interactive[Disable prompts; requires --workspace]" \
+ "--json[Output JSON summary]"
+}
+
+_openclaw_agents_set_identity() {
+ _arguments -C \
+ "--agent[Agent id to update]" \
+ "--workspace[Workspace directory used to locate the agent + IDENTITY.md]" \
+ "--identity-file[Explicit IDENTITY.md path to read]" \
+ "--from-identity[Read values from IDENTITY.md]" \
+ "--name[Identity name]" \
+ "--theme[Identity theme]" \
+ "--emoji[Identity emoji]" \
+ "--avatar[Identity avatar (workspace path, http(s) URL, or data URI)]" \
+ "--json[Output JSON summary]"
+}
+
+_openclaw_agents_delete() {
+ _arguments -C \
+ "--force[Skip confirmation]" \
+ "--json[Output JSON summary]"
+}
+
+_openclaw_agents() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List configured agents]' 'bindings[List routing bindings]' 'bind[Add routing bindings for an agent]' 'unbind[Remove routing bindings for an agent]' 'add[Add a new isolated agent]' 'set-identity[Update an agent identity (name/theme/emoji/avatar)]' 'delete[Delete an agent and prune workspace/state]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_agents_list ;;
+ (bindings) _openclaw_agents_bindings ;;
+ (bind) _openclaw_agents_bind ;;
+ (unbind) _openclaw_agents_unbind ;;
+ (add) _openclaw_agents_add ;;
+ (set-identity) _openclaw_agents_set_identity ;;
+ (delete) _openclaw_agents_delete ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_status() {
+ _arguments -C \
+ "--json[Output JSON instead of text]" \
+ "--all[Full diagnosis (read-only, pasteable)]" \
+ "--usage[Show model provider usage/quota snapshots]" \
+ "--deep[Probe channels (WhatsApp Web + Telegram + Discord + Slack + Signal)]" \
+ "--timeout[Probe timeout in milliseconds]" \
+ "--verbose[Verbose logging]" \
+ "--debug[Alias for --verbose]"
+}
+
+_openclaw_health() {
+ _arguments -C \
+ "--json[Output JSON instead of text]" \
+ "--timeout[Connection timeout in milliseconds]" \
+ "--verbose[Verbose logging]" \
+ "--debug[Alias for --verbose]"
+}
+
+_openclaw_sessions_list() {
+ _arguments -C \
+ "--json[Output as JSON]" \
+ "--verbose[Verbose logging]" \
+ "--store[Path to session store (default: resolved from config)]" \
+ "--agent[Agent id to inspect (default: configured default agent)]" \
+ "--all-agents[Aggregate sessions across all configured agents]" \
+ "--active[Only show sessions updated within the past N minutes]" \
+ "--limit[Max sessions to show (default: 100; use \"all\" for full output)]"
+}
+
+_openclaw_sessions_cleanup() {
+ _arguments -C \
+ "--store[Path to session store (default: resolved from config)]" \
+ "--agent[Agent id to maintain (default: configured default agent)]" \
+ "--all-agents[Run maintenance across all configured agents]" \
+ "--dry-run[Preview maintenance actions without writing]" \
+ "--enforce[Apply maintenance even when configured mode is warn]" \
+ "--fix-missing[Remove store entries whose transcript files are missing (bypasses age/count retention)]" \
+ "--fix-dm-scope[Retire stale direct-DM session rows that no longer match session.dmScope=main]" \
+ "--active-key[Protect this session key from budget-eviction]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_sessions_tail() {
+ _arguments -C \
+ "--session-key[Session key to tail (default: active sessions or latest)]" \
+ "--tail[Number of existing trajectory events to show]" \
+ "--follow[Continue following for new trajectory events]" \
+ "--store[Path to session store (default: resolved from config)]" \
+ "--agent[Agent id to inspect (default: configured default agent)]" \
+ "--all-agents[Aggregate sessions across all configured agents]"
+}
+
+_openclaw_sessions_export_trajectory() {
+ _arguments -C \
+ "--session-key[Session key to export]" \
+ "--output[Output directory name inside .openclaw/trajectory-exports]" \
+ "--workspace[Workspace root for the export (default: current directory)]" \
+ "--store[Path to session store (default: resolved from config)]" \
+ "--agent[Agent id for resolving the default session store]" \
+ "--request-json-base64[Base64url-encoded export request]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_sessions_compact() {
+ _arguments -C \
+ "--agent[Agent id that owns the session (required for global keys)]" \
+ "--max-lines[Truncate to the last N transcript lines instead of LLM summarization]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[RPC timeout in milliseconds (summarization can be slow)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_sessions() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--json[Output as JSON]" \
+ "--verbose[Verbose logging]" \
+ "--store[Path to session store (default: resolved from config)]" \
+ "--agent[Agent id to inspect (default: configured default agent)]" \
+ "--all-agents[Aggregate sessions across all configured agents]" \
+ "--active[Only show sessions updated within the past N minutes]" \
+ "--limit[Max sessions to show (default: 100; use \"all\" for full output)]" \
+ "1: :_values 'command' 'list[List stored conversation sessions]' 'cleanup[Run session-store maintenance now]' 'tail[Tail human-readable session trajectory progress]' 'export-trajectory[Export a redacted trajectory bundle for a stored session]' 'compact[Compact a stored session transcript via the running gateway]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_sessions_list ;;
+ (cleanup) _openclaw_sessions_cleanup ;;
+ (tail) _openclaw_sessions_tail ;;
+ (export-trajectory) _openclaw_sessions_export_trajectory ;;
+ (compact) _openclaw_sessions_compact ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_commitments_list() {
+ _arguments -C \
+ "--json[Output JSON instead of text]" \
+ "--agent[Agent id to inspect]" \
+ "--status[Filter by status (pending, sent, dismissed, snoozed, expired)]" \
+ "--all[Show all statuses]"
+}
+
+_openclaw_commitments_dismiss() {
+ _arguments -C \
+ "--json[Output JSON instead of text]"
+}
+
+_openclaw_commitments() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--json[Output JSON instead of text]" \
+ "--agent[Agent id to inspect]" \
+ "--status[Filter by status (pending, sent, dismissed, snoozed, expired)]" \
+ "--all[Show all statuses]" \
+ "1: :_values 'command' 'list[List inferred follow-up commitments]' 'dismiss[Dismiss inferred follow-up commitments]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_commitments_list ;;
+ (dismiss) _openclaw_commitments_dismiss ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_tasks_list() {
+ _arguments -C \
+ "--json[Output as JSON]" \
+ "--runtime[Filter by kind (subagent, acp, cron, cli)]" \
+ "--status[Filter by status (queued, running, succeeded, failed, timed_out, cancelled, lost)]"
+}
+
+_openclaw_tasks_audit() {
+ _arguments -C \
+ "--json[Output as JSON]" \
+ "--severity[Filter by severity (warn, error)]" \
+ "--code[Filter by finding code (stale_queued, stale_running, lost, delivery_failed, missing_cleanup, inconsistent_timestamps, restore_failed, stale_waiting, stale_blocked, cancel_stuck, missing_linked_tasks, blocked_task_missing)]" \
+ "--limit[Limit displayed findings]"
+}
+
+_openclaw_tasks_maintenance() {
+ _arguments -C \
+ "--json[Output as JSON]" \
+ "--apply[Apply reconciliation, cleanup stamping, and pruning]"
+}
+
+_openclaw_tasks_show() {
+ _arguments -C \
+ "--json[Output as JSON]"
+}
+
+_openclaw_tasks_notify() {
+ _arguments -C \
+
+}
+
+_openclaw_tasks_cancel() {
+ _arguments -C \
+
+}
+
+_openclaw_tasks_flow_list() {
+ _arguments -C \
+ "--json[Output as JSON]" \
+ "--status[Filter by status (queued, running, waiting, blocked, succeeded, failed, cancelled, lost)]"
+}
+
+_openclaw_tasks_flow_show() {
+ _arguments -C \
+ "--json[Output as JSON]"
+}
+
+_openclaw_tasks_flow_cancel() {
+ _arguments -C \
+
+}
+
+_openclaw_tasks_flow() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List tracked TaskFlows]' 'show[Show one TaskFlow by flow id or owner key]' 'cancel[Cancel a running TaskFlow]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_tasks_flow_list ;;
+ (show) _openclaw_tasks_flow_show ;;
+ (cancel) _openclaw_tasks_flow_cancel ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_tasks() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--json[Output as JSON]" \
+ "--runtime[Filter by kind (subagent, acp, cron, cli)]" \
+ "--status[Filter by status (queued, running, succeeded, failed, timed_out, cancelled, lost)]" \
+ "1: :_values 'command' 'list[List tracked background tasks]' 'audit[Show stale or broken background tasks and TaskFlows]' 'maintenance[Preview or apply tasks and TaskFlow maintenance]' 'show[Show one background task by task id, run id, or session key]' 'notify[Set task notify policy]' 'cancel[Cancel a running background task]' 'flow[Inspect durable TaskFlow state under tasks]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_tasks_list ;;
+ (audit) _openclaw_tasks_audit ;;
+ (maintenance) _openclaw_tasks_maintenance ;;
+ (show) _openclaw_tasks_show ;;
+ (notify) _openclaw_tasks_notify ;;
+ (cancel) _openclaw_tasks_cancel ;;
+ (flow) _openclaw_tasks_flow ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_acp_client() {
+ _arguments -C \
+ "--cwd[Working directory for the ACP session]" \
+ "--server[ACP server command (default: openclaw)]" \
+ "--server-args[Extra arguments for the ACP server]" \
+ "--server-verbose[Enable verbose logging on the ACP server]" \
+ "(--verbose -v)"{--verbose,-v}"[Verbose client logging]"
+}
+
+_openclaw_acp() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--token-file[Read gateway token from file]" \
+ "--password[Gateway password (if required)]" \
+ "--password-file[Read gateway password from file]" \
+ "--session[Default session key (e.g. agent:main:main)]" \
+ "--session-label[Default session label to resolve]" \
+ "--require-existing[Fail if the session key/label does not exist]" \
+ "--reset-session[Reset the session key before first use]" \
+ "--no-prefix-cwd[Do not prefix prompts with the working directory]" \
+ "--provenance[ACP provenance mode: off, meta, or meta+receipt]" \
+ "(--verbose -v)"{--verbose,-v}"[Verbose logging to stderr]" \
+ "1: :_values 'command' 'client[Run an interactive ACP client against the local ACP bridge]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (client) _openclaw_acp_client ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_gateway_run() {
+ _arguments -C \
+ "--port[Port for the gateway WebSocket]" \
+ "--bind[Bind mode (\"loopback\"|\"lan\"|\"tailnet\"|\"auto\"|\"custom\"). Defaults to config gateway.bind (or loopback).]" \
+ "--token[Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)]" \
+ "--auth[Gateway auth mode (\"none\"|\"token\"|\"password\"|\"trusted-proxy\")]" \
+ "--password[Password for auth mode=password]" \
+ "--password-file[Read gateway password from file]" \
+ "--tailscale[Tailscale exposure mode (\"off\"|\"serve\"|\"funnel\")]" \
+ "--tailscale-reset-on-exit[Reset Tailscale serve/funnel configuration on shutdown]" \
+ "--allow-unconfigured[Allow gateway start without enforcing gateway.mode=local in config (does not repair config)]" \
+ "--dev[Create a dev config + workspace if missing (no BOOTSTRAP.md)]" \
+ "--reset[Reset dev config + credentials + sessions + workspace (requires --dev)]" \
+ "--force[Kill any existing listener on the target port before starting]" \
+ "--verbose[Verbose logging to stdout/stderr]" \
+ "--cli-backend-logs[Only show CLI backend logs in the console (includes stdout/stderr)]" \
+ "--claude-cli-logs[Deprecated alias for --cli-backend-logs]" \
+ "--ws-log[WebSocket log style (\"auto\"|\"full\"|\"compact\")]" \
+ "--compact[Alias for \"--ws-log compact\"]" \
+ "--raw-stream[Log raw model stream events to jsonl]" \
+ "--raw-stream-path[Raw stream jsonl path]"
+}
+
+_openclaw_gateway_status() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to config/remote/local)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--no-probe[Skip RPC probe]" \
+ "--require-rpc[Exit non-zero when the RPC probe fails]" \
+ "--deep[Scan system-level services]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_install() {
+ _arguments -C \
+ "--port[Gateway port]" \
+ "--runtime[Daemon runtime (node|bun). Default: node]" \
+ "--token[Gateway token (token auth)]" \
+ "--wrapper[Executable wrapper for generated service ProgramArguments]" \
+ "--force[Reinstall/overwrite if already installed]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_uninstall() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_start() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_stop() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--disable[Persistently suppress KeepAlive/RunAtLoad so the gateway does not respawn until next start (launchd only)]"
+}
+
+_openclaw_gateway_restart() {
+ _arguments -C \
+ "--force[Restart immediately without waiting for active gateway work]" \
+ "--safe[Request an OpenClaw-aware restart after active work drains]" \
+ "--skip-deferral[Bypass the safe-restart deferral gate; requires --safe]" \
+ "--wait[Wait duration before forcing restart (ms, 10s, 5m; 0 waits indefinitely)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_call() {
+ _arguments -C \
+ "--params[JSON object string for params]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_usage_cost() {
+ _arguments -C \
+ "--days[Number of days to include]" \
+ "--agent[Scope the cost summary to a specific agent id]" \
+ "--all-agents[Aggregate the cost summary across all agents]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_health() {
+ _arguments -C \
+ "--port[Local Gateway port]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_stability() {
+ _arguments -C \
+ "--limit[Maximum number of recent events]" \
+ "--type[Filter by diagnostic event type]" \
+ "--since-seq[Only include events after this sequence]" \
+ "--bundle[Read a persisted stability bundle instead of calling Gateway; pass \"latest\" for newest]" \
+ "--export[Write a shareable support diagnostics export]" \
+ "--output[Diagnostics export output .zip path]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_diagnostics_export() {
+ _arguments -C \
+ "--output[Output .zip path]" \
+ "--log-lines[Maximum sanitized log lines to include]" \
+ "--log-bytes[Maximum log bytes to inspect]" \
+ "--url[Gateway WebSocket URL for health snapshot]" \
+ "--token[Gateway token for health snapshot]" \
+ "--password[Gateway password for health snapshot]" \
+ "--timeout[Status/health snapshot timeout in ms]" \
+ "--no-stability-bundle[Skip persisted stability bundle lookup]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_diagnostics() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'export[Write a shareable, payload-free diagnostics .zip]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (export) _openclaw_gateway_diagnostics_export ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_gateway_probe() {
+ _arguments -C \
+ "--url[Explicit Gateway WebSocket URL (still probes localhost)]" \
+ "--port[Local Gateway port]" \
+ "--ssh[SSH target for remote gateway tunnel (user@host or user@host:port)]" \
+ "--ssh-identity[SSH identity file path]" \
+ "--ssh-auto[Try to derive an SSH target from Bonjour discovery]" \
+ "--token[Gateway token (applies to all probes)]" \
+ "--password[Gateway password (applies to all probes)]" \
+ "--timeout[Overall probe budget in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway_discover() {
+ _arguments -C \
+ "--timeout[Per-command timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_gateway() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--port[Port for the gateway WebSocket]" \
+ "--bind[Bind mode (\"loopback\"|\"lan\"|\"tailnet\"|\"auto\"|\"custom\"). Defaults to config gateway.bind (or loopback).]" \
+ "--token[Shared token required in connect.params.auth.token (default: OPENCLAW_GATEWAY_TOKEN env if set)]" \
+ "--auth[Gateway auth mode (\"none\"|\"token\"|\"password\"|\"trusted-proxy\")]" \
+ "--password[Password for auth mode=password]" \
+ "--password-file[Read gateway password from file]" \
+ "--tailscale[Tailscale exposure mode (\"off\"|\"serve\"|\"funnel\")]" \
+ "--tailscale-reset-on-exit[Reset Tailscale serve/funnel configuration on shutdown]" \
+ "--allow-unconfigured[Allow gateway start without enforcing gateway.mode=local in config (does not repair config)]" \
+ "--dev[Create a dev config + workspace if missing (no BOOTSTRAP.md)]" \
+ "--reset[Reset dev config + credentials + sessions + workspace (requires --dev)]" \
+ "--force[Kill any existing listener on the target port before starting]" \
+ "--verbose[Verbose logging to stdout/stderr]" \
+ "--cli-backend-logs[Only show CLI backend logs in the console (includes stdout/stderr)]" \
+ "--claude-cli-logs[Deprecated alias for --cli-backend-logs]" \
+ "--ws-log[WebSocket log style (\"auto\"|\"full\"|\"compact\")]" \
+ "--compact[Alias for \"--ws-log compact\"]" \
+ "--raw-stream[Log raw model stream events to jsonl]" \
+ "--raw-stream-path[Raw stream jsonl path]" \
+ "1: :_values 'command' 'run[Run the WebSocket Gateway (foreground)]' 'status[Show gateway service status + probe connectivity/capability]' 'install[Install the Gateway service (launchd/systemd/schtasks)]' 'uninstall[Uninstall the Gateway service (launchd/systemd/schtasks)]' 'start[Start the Gateway service (launchd/systemd/schtasks)]' 'stop[Stop the Gateway service (launchd/systemd/schtasks)]' 'restart[Restart the Gateway service (launchd/systemd/schtasks)]' 'call[Call a Gateway method]' 'usage-cost[Fetch usage cost summary from session logs]' 'health[Fetch Gateway health]' 'stability[Fetch payload-free Gateway stability diagnostics]' 'diagnostics[Export local support diagnostics]' 'probe[Show gateway reachability, auth capability, and read-probe summary (local + remote)]' 'discover[Discover gateways via Bonjour (local + wide-area if configured)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (run) _openclaw_gateway_run ;;
+ (status) _openclaw_gateway_status ;;
+ (install) _openclaw_gateway_install ;;
+ (uninstall) _openclaw_gateway_uninstall ;;
+ (start) _openclaw_gateway_start ;;
+ (stop) _openclaw_gateway_stop ;;
+ (restart) _openclaw_gateway_restart ;;
+ (call) _openclaw_gateway_call ;;
+ (usage-cost) _openclaw_gateway_usage_cost ;;
+ (health) _openclaw_gateway_health ;;
+ (stability) _openclaw_gateway_stability ;;
+ (diagnostics) _openclaw_gateway_diagnostics ;;
+ (probe) _openclaw_gateway_probe ;;
+ (discover) _openclaw_gateway_discover ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_daemon_status() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to config/remote/local)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--no-probe[Skip RPC probe]" \
+ "--require-rpc[Exit non-zero when the RPC probe fails]" \
+ "--deep[Scan system-level services]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_daemon_install() {
+ _arguments -C \
+ "--port[Gateway port]" \
+ "--runtime[Daemon runtime (node|bun). Default: node]" \
+ "--token[Gateway token (token auth)]" \
+ "--wrapper[Executable wrapper for generated service ProgramArguments]" \
+ "--force[Reinstall/overwrite if already installed]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_daemon_uninstall() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_daemon_start() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_daemon_stop() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--disable[Persistently suppress KeepAlive/RunAtLoad so the gateway does not respawn until next start (launchd only)]"
+}
+
+_openclaw_daemon_restart() {
+ _arguments -C \
+ "--force[Restart immediately without waiting for active gateway work]" \
+ "--safe[Request an OpenClaw-aware restart after active work drains]" \
+ "--skip-deferral[Bypass the safe-restart deferral gate; requires --safe]" \
+ "--wait[Wait duration before forcing restart (ms, 10s, 5m; 0 waits indefinitely)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_daemon() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'status[Show service install status + probe connectivity/capability]' 'install[Install the Gateway service (launchd/systemd/schtasks)]' 'uninstall[Uninstall the Gateway service (launchd/systemd/schtasks)]' 'start[Start the Gateway service (launchd/systemd/schtasks)]' 'stop[Stop the Gateway service (launchd/systemd/schtasks)]' 'restart[Restart the Gateway service (launchd/systemd/schtasks)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (status) _openclaw_daemon_status ;;
+ (install) _openclaw_daemon_install ;;
+ (uninstall) _openclaw_daemon_uninstall ;;
+ (start) _openclaw_daemon_start ;;
+ (stop) _openclaw_daemon_stop ;;
+ (restart) _openclaw_daemon_restart ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_logs() {
+ _arguments -C \
+ "--limit[Max lines to return]" \
+ "--max-bytes[Max bytes to read]" \
+ "--follow[Follow log output]" \
+ "--interval[Polling interval in ms]" \
+ "--json[Emit JSON log lines]" \
+ "--plain[Plain text output (no ANSI styling)]" \
+ "--no-color[Disable ANSI colors]" \
+ "--local-time[Display timestamps in local timezone (default)]" \
+ "--utc[Display timestamps in UTC]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_system_event() {
+ _arguments -C \
+ "--text[System event text]" \
+ "--mode[Wake mode (now|next-heartbeat)]" \
+ "--session-key[Target a specific session for the event (defaults to the agent's main session)]" \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_system_heartbeat_last() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_system_heartbeat_enable() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_system_heartbeat_disable() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_system_heartbeat() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'last[Show the last heartbeat event]' 'enable[Enable heartbeats]' 'disable[Disable heartbeats]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (last) _openclaw_system_heartbeat_last ;;
+ (enable) _openclaw_system_heartbeat_enable ;;
+ (disable) _openclaw_system_heartbeat_disable ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_system_presence() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_system() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'event[Enqueue a system event and optionally trigger a heartbeat]' 'heartbeat[Heartbeat controls]' 'presence[List system presence entries]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (event) _openclaw_system_event ;;
+ (heartbeat) _openclaw_system_heartbeat ;;
+ (presence) _openclaw_system_presence ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_models_list() {
+ _arguments -C \
+ "--all[Show full model catalog]" \
+ "--local[Filter to local models]" \
+ "--provider[Filter by provider id]" \
+ "--json[Output JSON]" \
+ "--plain[Plain line output]"
+}
+
+_openclaw_models_status() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--plain[Plain output]" \
+ "--check[Exit non-zero if auth is expiring/expired (1=expired/missing, 2=expiring)]" \
+ "--probe[Probe configured provider auth (live)]" \
+ "--probe-provider[Only probe a single provider]" \
+ "--probe-profile[Only probe specific auth profile ids (repeat or comma-separated)]" \
+ "--probe-timeout[Per-probe timeout in ms]" \
+ "--probe-concurrency[Concurrent probes]" \
+ "--probe-max-tokens[Probe max tokens (best-effort)]" \
+ "--agent[Agent id to inspect (overrides OPENCLAW_AGENT_DIR)]"
+}
+
+_openclaw_models_set() {
+ _arguments -C \
+
+}
+
+_openclaw_models_set_image() {
+ _arguments -C \
+
+}
+
+_openclaw_models_aliases_list() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--plain[Plain output]"
+}
+
+_openclaw_models_aliases_add() {
+ _arguments -C \
+
+}
+
+_openclaw_models_aliases_remove() {
+ _arguments -C \
+
+}
+
+_openclaw_models_aliases() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List model aliases]' 'add[Add or update a model alias]' 'remove[Remove a model alias]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_models_aliases_list ;;
+ (add) _openclaw_models_aliases_add ;;
+ (remove) _openclaw_models_aliases_remove ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_models_fallbacks_list() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--plain[Plain output]"
+}
+
+_openclaw_models_fallbacks_add() {
+ _arguments -C \
+
+}
+
+_openclaw_models_fallbacks_remove() {
+ _arguments -C \
+
+}
+
+_openclaw_models_fallbacks_clear() {
+ _arguments -C \
+
+}
+
+_openclaw_models_fallbacks() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List fallback models]' 'add[Add a fallback model]' 'remove[Remove a fallback model]' 'clear[Clear all fallback models]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_models_fallbacks_list ;;
+ (add) _openclaw_models_fallbacks_add ;;
+ (remove) _openclaw_models_fallbacks_remove ;;
+ (clear) _openclaw_models_fallbacks_clear ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_models_image_fallbacks_list() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--plain[Plain output]"
+}
+
+_openclaw_models_image_fallbacks_add() {
+ _arguments -C \
+
+}
+
+_openclaw_models_image_fallbacks_remove() {
+ _arguments -C \
+
+}
+
+_openclaw_models_image_fallbacks_clear() {
+ _arguments -C \
+
+}
+
+_openclaw_models_image_fallbacks() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List image fallback models]' 'add[Add an image fallback model]' 'remove[Remove an image fallback model]' 'clear[Clear all image fallback models]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_models_image_fallbacks_list ;;
+ (add) _openclaw_models_image_fallbacks_add ;;
+ (remove) _openclaw_models_image_fallbacks_remove ;;
+ (clear) _openclaw_models_image_fallbacks_clear ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_models_scan() {
+ _arguments -C \
+ "--min-params[Minimum parameter size (billions)]" \
+ "--max-age-days[Skip models older than N days]" \
+ "--provider[Filter by provider prefix]" \
+ "--max-candidates[Max fallback candidates]" \
+ "--timeout[Per-probe timeout in ms]" \
+ "--concurrency[Probe concurrency]" \
+ "--no-probe[Skip live probes; list free candidates only]" \
+ "--yes[Accept defaults without prompting]" \
+ "--no-input[Disable prompts (use defaults)]" \
+ "--set-default[Set agents.defaults.model to the first selection]" \
+ "--set-image[Set agents.defaults.imageModel to the first image selection]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_models_auth_list() {
+ _arguments -C \
+ "--provider[Filter by provider id]" \
+ "--agent[Agent id (default: configured default agent)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_models_auth_add() {
+ _arguments -C \
+
+}
+
+_openclaw_models_auth_login() {
+ _arguments -C \
+ "--provider[Provider id registered by a plugin]" \
+ "--method[Provider auth method id]" \
+ "--device-code[Use the provider device-code auth method]" \
+ "--profile-id[Auth profile id override for single-profile login methods]" \
+ "--set-default[Apply the provider's default model recommendation]" \
+ "--force[Remove existing profiles for the provider before logging in (use when a cached OAuth profile is stuck or you want to switch accounts)]"
+}
+
+_openclaw_models_auth_setup_token() {
+ _arguments -C \
+ "--provider[Provider id]" \
+ "--yes[Skip confirmation]"
+}
+
+_openclaw_models_auth_paste_token() {
+ _arguments -C \
+ "--provider[Provider id (e.g. anthropic)]" \
+ "--profile-id[Auth profile id (default: :manual)]" \
+ "--expires-in[Optional expiry duration (e.g. 365d, 12h). Stored as absolute expiresAt.]"
+}
+
+_openclaw_models_auth_paste_api_key() {
+ _arguments -C \
+ "--provider[Provider id (e.g. openai)]" \
+ "--profile-id[Auth profile id (default: :manual)]"
+}
+
+_openclaw_models_auth_login_github_copilot() {
+ _arguments -C \
+ "--yes[Overwrite existing profile without prompting]"
+}
+
+_openclaw_models_auth_order_get() {
+ _arguments -C \
+ "--provider[Provider id (e.g. anthropic)]" \
+ "--agent[Agent id (default: configured default agent)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_models_auth_order_set() {
+ _arguments -C \
+ "--provider[Provider id (e.g. anthropic)]" \
+ "--agent[Agent id (default: configured default agent)]"
+}
+
+_openclaw_models_auth_order_clear() {
+ _arguments -C \
+ "--provider[Provider id (e.g. anthropic)]" \
+ "--agent[Agent id (default: configured default agent)]"
+}
+
+_openclaw_models_auth_order() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'get[Show per-agent auth order override (from auth-state.json)]' 'set[Set per-agent auth order override (writes auth-state.json)]' 'clear[Clear per-agent auth order override (fall back to config/round-robin)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (get) _openclaw_models_auth_order_get ;;
+ (set) _openclaw_models_auth_order_set ;;
+ (clear) _openclaw_models_auth_order_clear ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_models_auth() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--agent[Agent id for auth commands]" \
+ "1: :_values 'command' 'list[List saved auth profiles]' 'add[Interactive auth helper (provider auth or paste token)]' 'login[Run a provider plugin auth flow (OAuth/API key)]' 'setup-token[Run a provider CLI to create/sync a token (TTY required)]' 'paste-token[Paste a token into auth-profiles.json and update config]' 'paste-api-key[Paste an API key into auth-profiles.json and update config]' 'login-github-copilot[Login to GitHub Copilot via GitHub device flow (TTY required)]' 'order[Manage per-agent auth profile order overrides]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_models_auth_list ;;
+ (add) _openclaw_models_auth_add ;;
+ (login) _openclaw_models_auth_login ;;
+ (setup-token) _openclaw_models_auth_setup_token ;;
+ (paste-token) _openclaw_models_auth_paste_token ;;
+ (paste-api-key) _openclaw_models_auth_paste_api_key ;;
+ (login-github-copilot) _openclaw_models_auth_login_github_copilot ;;
+ (order) _openclaw_models_auth_order ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_models() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--status-json[Output JSON (alias for \`models status --json\`)]" \
+ "--status-plain[Plain output (alias for \`models status --plain\`)]" \
+ "--agent[Agent id to inspect (overrides OPENCLAW_AGENT_DIR)]" \
+ "1: :_values 'command' 'list[List models (configured by default)]' 'status[Show configured model state]' 'set[Set the default model]' 'set-image[Set the image model]' 'aliases[Manage model aliases]' 'fallbacks[Manage model fallback list]' 'image-fallbacks[Manage image model fallback list]' 'scan[Scan OpenRouter free models for tools + images]' 'auth[Manage model auth profiles]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_models_list ;;
+ (status) _openclaw_models_status ;;
+ (set) _openclaw_models_set ;;
+ (set-image) _openclaw_models_set_image ;;
+ (aliases) _openclaw_models_aliases ;;
+ (fallbacks) _openclaw_models_fallbacks ;;
+ (image-fallbacks) _openclaw_models_image_fallbacks ;;
+ (scan) _openclaw_models_scan ;;
+ (auth) _openclaw_models_auth ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_infer_list() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_inspect() {
+ _arguments -C \
+ "--name[Capability id]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_model_run() {
+ _arguments -C \
+ "--prompt[Prompt text]" \
+ "--file[Image file]" \
+ "--model[Model override]" \
+ "--thinking[Thinking level override]" \
+ "--local[Force local execution]" \
+ "--gateway[Force gateway execution]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_model_list() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_model_inspect() {
+ _arguments -C \
+ "--model[Model id]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_model_providers() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_model_auth_login() {
+ _arguments -C \
+ "--provider[Provider id]" \
+ "--method[Provider auth method id]"
+}
+
+_openclaw_infer_model_auth_logout() {
+ _arguments -C \
+ "--provider[Provider id]" \
+ "--agent[Agent id (default: configured default agent)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_model_auth_status() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_model_auth() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'login[Run provider auth login]' 'logout[Remove saved auth profiles for one provider]' 'status[Show configured auth state]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (login) _openclaw_infer_model_auth_login ;;
+ (logout) _openclaw_infer_model_auth_logout ;;
+ (status) _openclaw_infer_model_auth_status ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_infer_model() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'run[Run a one-shot model turn]' 'list[List known models]' 'inspect[Inspect one model catalog entry]' 'providers[List model providers from the catalog]' 'auth[Provider auth helpers]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (run) _openclaw_infer_model_run ;;
+ (list) _openclaw_infer_model_list ;;
+ (inspect) _openclaw_infer_model_inspect ;;
+ (providers) _openclaw_infer_model_providers ;;
+ (auth) _openclaw_infer_model_auth ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_infer_image_generate() {
+ _arguments -C \
+ "--prompt[Prompt text]" \
+ "--model[Model override]" \
+ "--count[Number of images]" \
+ "--size[Size hint like 1024x1024]" \
+ "--aspect-ratio[Aspect ratio hint like 16:9]" \
+ "--resolution[Resolution hint: 1K, 2K, or 4K]" \
+ "--output-format[Output format hint: png, jpeg, or webp]" \
+ "--background[Background hint: transparent, opaque, or auto]" \
+ "--openai-background[OpenAI background hint: transparent, opaque, or auto]" \
+ "--openai-moderation[OpenAI moderation hint: low or auto]" \
+ "--quality[Quality hint: low, medium, high, or auto]" \
+ "--timeout-ms[Provider request timeout in milliseconds]" \
+ "--output[Output path]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_image_edit() {
+ _arguments -C \
+ "--file[Input file]" \
+ "--prompt[Prompt text]" \
+ "--model[Model override]" \
+ "--count[Number of images]" \
+ "--size[Size hint like 1024x1024]" \
+ "--aspect-ratio[Aspect ratio hint like 16:9]" \
+ "--resolution[Resolution hint: 1K, 2K, or 4K]" \
+ "--output-format[Output format hint: png, jpeg, or webp]" \
+ "--background[Background hint: transparent, opaque, or auto]" \
+ "--openai-background[OpenAI background hint: transparent, opaque, or auto]" \
+ "--openai-moderation[OpenAI moderation hint: low or auto]" \
+ "--quality[Quality hint: low, medium, high, or auto]" \
+ "--timeout-ms[Provider request timeout in milliseconds]" \
+ "--output[Output path]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_image_describe() {
+ _arguments -C \
+ "--file[Image file]" \
+ "--prompt[Prompt hint]" \
+ "--model[Model override]" \
+ "--timeout-ms[Provider request timeout in milliseconds]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_image_describe_many() {
+ _arguments -C \
+ "--file[Image file]" \
+ "--prompt[Prompt hint]" \
+ "--model[Model override]" \
+ "--timeout-ms[Provider request timeout in milliseconds]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_image_providers() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_image() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'generate[Generate images]' 'edit[Edit images with one or more input files]' 'describe[Describe one image file]' 'describe-many[Describe multiple image files]' 'providers[List image generation providers]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (generate) _openclaw_infer_image_generate ;;
+ (edit) _openclaw_infer_image_edit ;;
+ (describe) _openclaw_infer_image_describe ;;
+ (describe-many) _openclaw_infer_image_describe_many ;;
+ (providers) _openclaw_infer_image_providers ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_infer_audio_transcribe() {
+ _arguments -C \
+ "--file[Audio file]" \
+ "--language[Language hint]" \
+ "--prompt[Prompt hint]" \
+ "--model[Model override]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_audio_providers() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_audio() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'transcribe[Transcribe one audio file]' 'providers[List audio transcription providers]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (transcribe) _openclaw_infer_audio_transcribe ;;
+ (providers) _openclaw_infer_audio_providers ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_infer_tts_convert() {
+ _arguments -C \
+ "--text[Input text]" \
+ "--channel[Channel hint]" \
+ "--voice[Voice hint]" \
+ "--model[Model override]" \
+ "--output[Output path]" \
+ "--local[Force local execution]" \
+ "--gateway[Force gateway execution]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_tts_voices() {
+ _arguments -C \
+ "--provider[Speech provider id]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_tts_providers() {
+ _arguments -C \
+ "--local[Force local execution]" \
+ "--gateway[Force gateway execution]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_tts_personas() {
+ _arguments -C \
+ "--local[Force local execution]" \
+ "--gateway[Force gateway execution]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_tts_status() {
+ _arguments -C \
+ "--gateway[Force gateway execution]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_tts_enable() {
+ _arguments -C \
+ "--local[Force local execution]" \
+ "--gateway[Force gateway execution]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_tts_disable() {
+ _arguments -C \
+ "--local[Force local execution]" \
+ "--gateway[Force gateway execution]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_tts_set_provider() {
+ _arguments -C \
+ "--provider[Speech provider id]" \
+ "--local[Force local execution]" \
+ "--gateway[Force gateway execution]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_tts_set_persona() {
+ _arguments -C \
+ "--persona[TTS persona id]" \
+ "--off[Disable the active TTS persona]" \
+ "--local[Force local execution]" \
+ "--gateway[Force gateway execution]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_tts() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'convert[Convert text to speech]' 'voices[List voices for a TTS provider]' 'providers[List speech providers]' 'personas[List TTS personas]' 'status[Show TTS status]' 'enable[Enable TTS]' 'disable[Disable TTS]' 'set-provider[Set the active TTS provider]' 'set-persona[Set the active TTS persona]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (convert) _openclaw_infer_tts_convert ;;
+ (voices) _openclaw_infer_tts_voices ;;
+ (providers) _openclaw_infer_tts_providers ;;
+ (personas) _openclaw_infer_tts_personas ;;
+ (status) _openclaw_infer_tts_status ;;
+ (enable) _openclaw_infer_tts_enable ;;
+ (disable) _openclaw_infer_tts_disable ;;
+ (set-provider) _openclaw_infer_tts_set_provider ;;
+ (set-persona) _openclaw_infer_tts_set_persona ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_infer_video_generate() {
+ _arguments -C \
+ "--prompt[Prompt text]" \
+ "--model[Model override]" \
+ "--size[Size hint like 1280x720]" \
+ "--aspect-ratio[Aspect ratio hint like 16:9]" \
+ "--resolution[Resolution hint: 360P, 480P, 540P, 720P, 768P, or 1080P]" \
+ "--duration[Target duration in seconds]" \
+ "--audio[Enable generated audio when supported]" \
+ "--watermark[Request provider watermark when supported]" \
+ "--timeout-ms[Provider request timeout in milliseconds]" \
+ "--output[Output path]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_video_describe() {
+ _arguments -C \
+ "--file[Video file]" \
+ "--model[Model override]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_video_providers() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_video() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'generate[Generate video]' 'describe[Describe one video file]' 'providers[List video generation and description providers]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (generate) _openclaw_infer_video_generate ;;
+ (describe) _openclaw_infer_video_describe ;;
+ (providers) _openclaw_infer_video_providers ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_infer_web_search() {
+ _arguments -C \
+ "--query[Search query]" \
+ "--provider[Provider id]" \
+ "--limit[Result limit]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_web_fetch() {
+ _arguments -C \
+ "--url[URL]" \
+ "--provider[Provider id]" \
+ "--format[Format hint]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_web_providers() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_web() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'search[Run web search]' 'fetch[Fetch one URL]' 'providers[List web providers]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (search) _openclaw_infer_web_search ;;
+ (fetch) _openclaw_infer_web_fetch ;;
+ (providers) _openclaw_infer_web_providers ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_infer_embedding_create() {
+ _arguments -C \
+ "--text[Input text]" \
+ "--provider[Provider id]" \
+ "--model[Model override]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_embedding_providers() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_infer_embedding() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'create[Create embeddings]' 'providers[List embedding providers]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (create) _openclaw_infer_embedding_create ;;
+ (providers) _openclaw_infer_embedding_providers ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_infer() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List canonical capability ids and supported transports]' 'inspect[Inspect one canonical capability id]' 'model[Text inference and model catalog commands]' 'image[Image generation and description]' 'audio[Audio transcription]' 'tts[Text to speech]' 'video[Video generation and description]' 'web[Web capabilities]' 'embedding[Embedding providers]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_infer_list ;;
+ (inspect) _openclaw_infer_inspect ;;
+ (model) _openclaw_infer_model ;;
+ (image) _openclaw_infer_image ;;
+ (audio) _openclaw_infer_audio ;;
+ (tts) _openclaw_infer_tts ;;
+ (video) _openclaw_infer_video ;;
+ (web) _openclaw_infer_web ;;
+ (embedding) _openclaw_infer_embedding ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_approvals_get() {
+ _arguments -C \
+ "--node[Target node id/name/IP]" \
+ "--gateway[Force gateway approvals]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_approvals_set() {
+ _arguments -C \
+ "--node[Target node id/name/IP]" \
+ "--gateway[Force gateway approvals]" \
+ "--file[Path to JSON file to upload]" \
+ "--stdin[Read JSON from stdin]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_approvals_allowlist_add() {
+ _arguments -C \
+ "--node[Target node id/name/IP]" \
+ "--gateway[Force gateway approvals]" \
+ "--agent[Agent id (defaults to \"*\")]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_approvals_allowlist_remove() {
+ _arguments -C \
+ "--node[Target node id/name/IP]" \
+ "--gateway[Force gateway approvals]" \
+ "--agent[Agent id (defaults to \"*\")]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_approvals_allowlist() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'add[Add a glob pattern to an allowlist]' 'remove[Remove a glob pattern from an allowlist]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (add) _openclaw_approvals_allowlist_add ;;
+ (remove) _openclaw_approvals_allowlist_remove ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_approvals() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'get[Fetch exec approvals snapshot]' 'set[Replace exec approvals with a JSON file]' 'allowlist[Edit the per-agent allowlist]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (get) _openclaw_approvals_get ;;
+ (set) _openclaw_approvals_set ;;
+ (allowlist) _openclaw_approvals_allowlist ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_exec_policy_show() {
+ _arguments -C \
+ "--json[Output as JSON]"
+}
+
+_openclaw_exec_policy_preset() {
+ _arguments -C \
+ "--json[Output as JSON]"
+}
+
+_openclaw_exec_policy_set() {
+ _arguments -C \
+ "--host[Exec host target: auto|sandbox|gateway|node]" \
+ "--security[Exec security: deny|allowlist|full]" \
+ "--ask[Exec ask mode: off|on-miss|always]" \
+ "--ask-fallback[Host approvals fallback: deny|allowlist|full]" \
+ "--json[Output as JSON]"
+}
+
+_openclaw_exec_policy() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'show[Show the local config policy, host approvals, and effective merge]' 'preset[Apply a synchronized preset: "yolo", "cautious", or "deny-all"]' 'set[Synchronize local config and host approvals using explicit values]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (show) _openclaw_exec_policy_show ;;
+ (preset) _openclaw_exec_policy_preset ;;
+ (set) _openclaw_exec_policy_set ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_nodes_status() {
+ _arguments -C \
+ "--connected[Only show connected nodes]" \
+ "--last-connected[Only show nodes connected within duration (e.g. 24h)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_describe() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_list() {
+ _arguments -C \
+ "--connected[Only show connected nodes]" \
+ "--last-connected[Only show nodes connected within duration (e.g. 24h)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_pending() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_approve() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_reject() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_remove() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_rename() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--name[New display name]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_invoke() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--command[Command (e.g. canvas.eval)]" \
+ "--params[JSON object string for params]" \
+ "--invoke-timeout[Node invoke timeout in ms (default 15000)]" \
+ "--idempotency-key[Idempotency key (optional)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_notify() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--title[Notification title]" \
+ "--body[Notification body]" \
+ "--sound[Notification sound]" \
+ "--priority[Notification priority]" \
+ "--delivery[Delivery mode]" \
+ "--invoke-timeout[Node invoke timeout in ms (default 15000)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_push() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--title[Push title]" \
+ "--body[Push body]" \
+ "--environment[Override APNs environment]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_camera_list() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_camera_snap() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--facing[Camera facing]" \
+ "--device-id[Camera device id (from nodes camera list)]" \
+ "--max-width[Max width in px (optional)]" \
+ "--quality[JPEG quality (default 0.9)]" \
+ "--delay-ms[Delay before capture in ms (macOS default 2000)]" \
+ "--invoke-timeout[Node invoke timeout in ms (default 20000)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_camera_clip() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--facing[Camera facing]" \
+ "--device-id[Camera device id (from nodes camera list)]" \
+ "--duration[Duration (default 3000ms; supports ms/s/m, e.g. 10s)]" \
+ "--no-audio[Disable audio capture]" \
+ "--invoke-timeout[Node invoke timeout in ms (default 90000)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_camera() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List available cameras on a node]' 'snap[Capture a photo from a node camera (prints the saved path)]' 'clip[Capture a short video clip from a node camera (prints the saved path)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_nodes_camera_list ;;
+ (snap) _openclaw_nodes_camera_snap ;;
+ (clip) _openclaw_nodes_camera_clip ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_nodes_screen_record() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--screen[Screen index (0 = primary)]" \
+ "--duration[Clip duration (ms or 10s)]" \
+ "--fps[Frames per second]" \
+ "--no-audio[Disable microphone audio capture]" \
+ "--out[Output path]" \
+ "--invoke-timeout[Node invoke timeout in ms (default 120000)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_screen() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'record[Capture a short screen recording from a node (prints the saved path)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (record) _openclaw_nodes_screen_record ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_nodes_location_get() {
+ _arguments -C \
+ "--node[Node id, name, or IP]" \
+ "--max-age[Use cached location newer than this (ms)]" \
+ "--accuracy[Desired accuracy (default: balanced/precise depending on node setting)]" \
+ "--location-timeout[Location fix timeout (ms)]" \
+ "--invoke-timeout[Node invoke timeout in ms (default 20000)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_nodes_location() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'get[Fetch the current location from a node]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (get) _openclaw_nodes_location_get ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_nodes() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'status[List known nodes with connection status and capabilities]' 'describe[Describe a node (capabilities + supported invoke commands)]' 'list[List pending and paired nodes]' 'pending[List pending pairing requests]' 'approve[Approve a pending pairing request]' 'reject[Reject a pending pairing request]' 'remove[Remove a paired node entry]' 'rename[Rename a paired node (display name override)]' 'invoke[Invoke a command on a paired node]' 'notify[Send a local notification on a node (mac only)]' 'push[Send an APNs test push to an iOS node]' 'camera[Capture camera media from a paired node]' 'screen[Capture screen recordings from a paired node]' 'location[Fetch location from a paired node]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (status) _openclaw_nodes_status ;;
+ (describe) _openclaw_nodes_describe ;;
+ (list) _openclaw_nodes_list ;;
+ (pending) _openclaw_nodes_pending ;;
+ (approve) _openclaw_nodes_approve ;;
+ (reject) _openclaw_nodes_reject ;;
+ (remove) _openclaw_nodes_remove ;;
+ (rename) _openclaw_nodes_rename ;;
+ (invoke) _openclaw_nodes_invoke ;;
+ (notify) _openclaw_nodes_notify ;;
+ (push) _openclaw_nodes_push ;;
+ (camera) _openclaw_nodes_camera ;;
+ (screen) _openclaw_nodes_screen ;;
+ (location) _openclaw_nodes_location ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_devices_list() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_devices_remove() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_devices_clear() {
+ _arguments -C \
+ "--pending[Also reject all pending pairing requests]" \
+ "--yes[Confirm destructive clear]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_devices_approve() {
+ _arguments -C \
+ "--latest[Show the most recent pending request to approve explicitly]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_devices_reject() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_devices_rotate() {
+ _arguments -C \
+ "--device[Device id]" \
+ "--role[Role name]" \
+ "--scope[Scopes to attach to the token (repeatable)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_devices_revoke() {
+ _arguments -C \
+ "--device[Device id]" \
+ "--role[Role name]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (password auth)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_devices() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List pending and paired devices]' 'remove[Remove a paired device entry]' 'clear[Clear paired devices from the gateway table]' 'approve[Approve a pending device pairing request]' 'reject[Reject a pending device pairing request]' 'rotate[Rotate a device token for a role]' 'revoke[Revoke a device token for a role]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_devices_list ;;
+ (remove) _openclaw_devices_remove ;;
+ (clear) _openclaw_devices_clear ;;
+ (approve) _openclaw_devices_approve ;;
+ (reject) _openclaw_devices_reject ;;
+ (rotate) _openclaw_devices_rotate ;;
+ (revoke) _openclaw_devices_revoke ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_node_run() {
+ _arguments -C \
+ "--host[Gateway host]" \
+ "--port[Gateway port]" \
+ "--tls[Use TLS for the gateway connection]" \
+ "--tls-fingerprint[Expected TLS certificate fingerprint (sha256)]" \
+ "--node-id[Override node id (clears pairing token)]" \
+ "--display-name[Override node display name]"
+}
+
+_openclaw_node_status() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_node_install() {
+ _arguments -C \
+ "--host[Gateway host]" \
+ "--port[Gateway port]" \
+ "--tls[Use TLS for the gateway connection]" \
+ "--tls-fingerprint[Expected TLS certificate fingerprint (sha256)]" \
+ "--node-id[Override node id (clears pairing token)]" \
+ "--display-name[Override node display name]" \
+ "--runtime[Service runtime (node|bun). Default: node]" \
+ "--force[Reinstall/overwrite if already installed]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_node_uninstall() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_node_stop() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_node_start() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_node_restart() {
+ _arguments -C \
+ "--json[Output JSON]"
+}
+
+_openclaw_node() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'run[Run the headless node host (foreground)]' 'status[Show node host status]' 'install[Install the node host service (launchd/systemd/schtasks)]' 'uninstall[Uninstall the node host service (launchd/systemd/schtasks)]' 'stop[Stop the node host service (launchd/systemd/schtasks)]' 'start[Start the node host service (launchd/systemd/schtasks)]' 'restart[Restart the node host service (launchd/systemd/schtasks)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (run) _openclaw_node_run ;;
+ (status) _openclaw_node_status ;;
+ (install) _openclaw_node_install ;;
+ (uninstall) _openclaw_node_uninstall ;;
+ (stop) _openclaw_node_stop ;;
+ (start) _openclaw_node_start ;;
+ (restart) _openclaw_node_restart ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_sandbox_list() {
+ _arguments -C \
+ "--json[Output result as JSON]" \
+ "--browser[List browser containers only]"
+}
+
+_openclaw_sandbox_recreate() {
+ _arguments -C \
+ "--all[Recreate all sandbox containers]" \
+ "--session[Recreate container for specific session]" \
+ "--agent[Recreate containers for specific agent]" \
+ "--browser[Only recreate browser containers]" \
+ "--force[Skip confirmation prompt]"
+}
+
+_openclaw_sandbox_explain() {
+ _arguments -C \
+ "--session[Session key to inspect (defaults to agent main)]" \
+ "--agent[Agent id to inspect (defaults to derived agent)]" \
+ "--json[Output result as JSON]"
+}
+
+_openclaw_sandbox() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List sandbox containers and their status]' 'recreate[Remove containers to force recreation with updated config]' 'explain[Explain effective sandbox/tool policy for a session/agent]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_sandbox_list ;;
+ (recreate) _openclaw_sandbox_recreate ;;
+ (explain) _openclaw_sandbox_explain ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_tui() {
+ _arguments -C \
+ "--local[Run against the local embedded agent runtime]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--password[Gateway password (if required)]" \
+ "--session[Session key (default: \"main\", or \"global\" when scope is global)]" \
+ "--deliver[Deliver assistant replies]" \
+ "--thinking[Thinking level override]" \
+ "--message[Send an initial message after connecting]" \
+ "--timeout-ms[Agent timeout in ms (defaults to agents.defaults.timeoutSeconds)]" \
+ "--history-limit[History entries to load]"
+}
+
+_openclaw_cron_status() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_list() {
+ _arguments -C \
+ "--all[Include disabled jobs]" \
+ "--agent[Filter by agent id]" \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_add() {
+ _arguments -C \
+ "--name[Job name]" \
+ "--description[Optional description]" \
+ "--disabled[Create job disabled]" \
+ "--delete-after-run[Delete one-shot job after it succeeds]" \
+ "--keep-after-run[Keep one-shot job after it succeeds]" \
+ "--agent[Agent id for this job]" \
+ "--session[Session target (main|isolated)]" \
+ "--session-key[Session key for job routing (e.g. agent:my-agent:my-session)]" \
+ "--wake[Wake mode (now|next-heartbeat)]" \
+ "--at[Run once at time (ISO with offset, or +duration). Use --tz for offset-less datetimes]" \
+ "--every[Run every duration (e.g. 10m, 1h)]" \
+ "--cron[Cron expression (5-field or 6-field with seconds)]" \
+ "--tz[Timezone for cron expressions (IANA; cron default: Gateway host local timezone)]" \
+ "--stagger[Cron stagger window (e.g. 30s, 5m)]" \
+ "--exact[Disable cron staggering (set stagger to 0)]" \
+ "--system-event[System event payload (main session)]" \
+ "--message[Agent message payload]" \
+ "--command[Command payload run as sh -lc on the Gateway]" \
+ "--command-argv[Command payload argv as JSON array of strings]" \
+ "--command-cwd[Working directory for command payloads]" \
+ "--command-env[Environment override for command payloads (repeatable)]" \
+ "--command-input[stdin for command payloads]" \
+ "--thinking[Thinking level for agent jobs (off|minimal|low|medium|high|xhigh)]" \
+ "--model[Model override for agent jobs (provider/model or alias)]" \
+ "--fallbacks[Fallback model list for agent jobs]" \
+ "--timeout-seconds[Timeout seconds for agent or command jobs]" \
+ "--no-output-timeout-seconds[No-output timeout seconds for command jobs]" \
+ "--output-max-bytes[Maximum captured stdout/stderr bytes for command jobs]" \
+ "--light-context[Use lightweight bootstrap context for agent jobs]" \
+ "--tools[Tool allow-list (e.g. exec,read,write or exec read write)]" \
+ "--announce[Fallback-deliver final text to a chat]" \
+ "--deliver[Deprecated (use --announce). Fallback-delivers final text to a chat.]" \
+ "--no-deliver[Disable runner fallback delivery]" \
+ "--webhook[POST the finished payload to a webhook URL]" \
+ "--channel[Delivery channel (last|)]" \
+ "--to[Delivery destination (E.164, Telegram chatId, or Discord channel/user)]" \
+ "--thread-id[Telegram forum topic thread id]" \
+ "--account[Channel account id for delivery (multi-account setups)]" \
+ "--best-effort-deliver[Do not fail the job if delivery fails]" \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_rm() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_enable() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_disable() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_get() {
+ _arguments -C \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_show() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_runs() {
+ _arguments -C \
+ "--id[Job id]" \
+ "--run-id[Filter by cron run id]" \
+ "--limit[Max entries (default 50)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_run() {
+ _arguments -C \
+ "--due[Run only when due (default behavior in older versions)]" \
+ "--wait[Wait for the queued run to finish]" \
+ "--wait-timeout[Maximum time to wait for --wait]" \
+ "--poll-interval[Polling interval for --wait]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron_edit() {
+ _arguments -C \
+ "--name[Set name]" \
+ "--description[Set description]" \
+ "--enable[Enable job]" \
+ "--disable[Disable job]" \
+ "--delete-after-run[Delete one-shot job after it succeeds]" \
+ "--keep-after-run[Keep one-shot job after it succeeds]" \
+ "--session[Session target (main|isolated)]" \
+ "--agent[Set agent id]" \
+ "--clear-agent[Unset agent and use default]" \
+ "--session-key[Set session key for job routing]" \
+ "--clear-session-key[Unset session key]" \
+ "--wake[Wake mode (now|next-heartbeat)]" \
+ "--at[Set one-shot time (ISO, offset-less uses --tz) or duration like 20m]" \
+ "--every[Set interval duration like 10m]" \
+ "--cron[Set cron expression]" \
+ "--tz[Timezone for cron expressions (IANA; cron default: Gateway host local timezone)]" \
+ "--stagger[Cron stagger window (e.g. 30s, 5m)]" \
+ "--exact[Disable cron staggering (set stagger to 0)]" \
+ "--system-event[Set systemEvent payload]" \
+ "--message[Set agentTurn payload message]" \
+ "--command[Set command payload run as sh -lc on the Gateway]" \
+ "--command-argv[Set command payload argv as JSON array of strings]" \
+ "--command-cwd[Set command payload working directory]" \
+ "--command-env[Set command payload environment overrides (repeatable)]" \
+ "--command-input[Set command payload stdin]" \
+ "--thinking[Thinking level for agent jobs (off|minimal|low|medium|high|xhigh)]" \
+ "--model[Model override for agent jobs]" \
+ "--fallbacks[Fallback model list for agent jobs]" \
+ "--clear-fallbacks[Remove per-job fallback override]" \
+ "--clear-model[Remove the per-job model override (restore normal cron model precedence)]" \
+ "--timeout-seconds[Timeout seconds for agent or command jobs]" \
+ "--no-output-timeout-seconds[No-output timeout seconds for command jobs]" \
+ "--output-max-bytes[Maximum captured stdout/stderr bytes for command jobs]" \
+ "--light-context[Enable lightweight bootstrap context for agent jobs]" \
+ "--no-light-context[Disable lightweight bootstrap context for agent jobs]" \
+ "--tools[Tool allow-list (e.g. exec,read,write or exec read write)]" \
+ "--clear-tools[Remove tool allow-list (use all tools)]" \
+ "--announce[Fallback-deliver final text to a chat]" \
+ "--deliver[Deprecated (use --announce). Fallback-delivers final text to a chat.]" \
+ "--no-deliver[Disable runner fallback delivery]" \
+ "--webhook[POST the finished payload to a webhook URL]" \
+ "--channel[Delivery channel (last|)]" \
+ "--to[Delivery destination (E.164, Telegram chatId, or Discord channel/user)]" \
+ "--thread-id[Telegram forum topic thread id]" \
+ "--account[Channel account id for delivery (multi-account setups)]" \
+ "--clear-channel[Unset the delivery channel]" \
+ "--clear-to[Unset the delivery destination]" \
+ "--clear-thread-id[Unset the Telegram forum topic thread id]" \
+ "--clear-account[Unset the per-job delivery account override]" \
+ "--best-effort-deliver[Do not fail job if delivery fails (also implies --announce when used alone)]" \
+ "--no-best-effort-deliver[Fail job when delivery fails]" \
+ "--failure-alert[Enable failure alerts for this job]" \
+ "--no-failure-alert[Disable failure alerts for this job]" \
+ "--failure-alert-after[Alert after N consecutive job errors]" \
+ "--failure-alert-channel[Failure alert channel (last|)]" \
+ "--failure-alert-to[Failure alert destination]" \
+ "--failure-alert-cooldown[Minimum time between alerts (e.g. 1h, 30m)]" \
+ "--failure-alert-include-skipped[Count consecutive skipped runs toward alerts]" \
+ "--failure-alert-exclude-skipped[Alert only on execution errors]" \
+ "--failure-alert-mode[Failure alert delivery mode (announce or webhook)]" \
+ "--failure-alert-account-id[Account ID for failure alert channel (multi-account setups)]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_cron() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'status[Show cron scheduler status]' 'list[List cron jobs]' 'add[Add a cron job]' 'rm[Remove a cron job]' 'enable[Enable a cron job]' 'disable[Disable a cron job]' 'get[Get a cron job as JSON]' 'show[Show a cron job]' 'runs[Show cron run history]' 'run[Run a cron job now (debug)]' 'edit[Edit a cron job (patch fields)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (status) _openclaw_cron_status ;;
+ (list) _openclaw_cron_list ;;
+ (add) _openclaw_cron_add ;;
+ (rm) _openclaw_cron_rm ;;
+ (enable) _openclaw_cron_enable ;;
+ (disable) _openclaw_cron_disable ;;
+ (get) _openclaw_cron_get ;;
+ (show) _openclaw_cron_show ;;
+ (runs) _openclaw_cron_runs ;;
+ (run) _openclaw_cron_run ;;
+ (edit) _openclaw_cron_edit ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_dns_setup() {
+ _arguments -C \
+ "--domain[Wide-area discovery domain (e.g. openclaw.internal)]" \
+ "--apply[Install/update CoreDNS config and (re)start the service (requires sudo)]"
+}
+
+_openclaw_dns() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'setup[Set up CoreDNS to serve your discovery domain for unicast DNS-SD (Wide-Area Bonjour)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (setup) _openclaw_dns_setup ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_docs() {
+ _arguments -C \
+
+}
+
+_openclaw_proxy_start() {
+ _arguments -C \
+ "--host[Bind host]" \
+ "--port[Bind port]"
+}
+
+_openclaw_proxy_run() {
+ _arguments -C \
+ "--host[Bind host]" \
+ "--port[Bind port]"
+}
+
+_openclaw_proxy_validate() {
+ _arguments -C \
+ "--json[Print machine-readable JSON]" \
+ "--proxy-url[Proxy URL to validate instead of config/env]" \
+ "--proxy-ca-file[CA bundle file for verifying an HTTPS proxy endpoint]" \
+ "--allowed-url[Destination expected to succeed through the proxy]" \
+ "--denied-url[Destination expected to be blocked by the proxy]" \
+ "--apns-reachable[Also verify sandbox APNs HTTP/2 is reachable through the proxy]" \
+ "--apns-authority[APNs authority to probe with --apns-reachable]" \
+ "--timeout-ms[Per-request timeout in milliseconds]"
+}
+
+_openclaw_proxy_coverage() {
+ _arguments -C \
+
+}
+
+_openclaw_proxy_sessions() {
+ _arguments -C \
+ "--limit[Maximum sessions to show]"
+}
+
+_openclaw_proxy_query() {
+ _arguments -C \
+ "--preset[Query preset: double-sends, retry-storms, cache-busting, ws-duplicate-frames, missing-ack, error-bursts]" \
+ "--session[Restrict to a capture session id]"
+}
+
+_openclaw_proxy_blob() {
+ _arguments -C \
+ "--id[Blob id]"
+}
+
+_openclaw_proxy_purge() {
+ _arguments -C \
+
+}
+
+_openclaw_proxy() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'start[Start the local explicit debug proxy]' 'run[Run a child command with OpenClaw debug proxy capture enabled]' 'validate[Validate the operator-managed network proxy]' 'coverage[Report current debug proxy transport coverage and remaining gaps]' 'sessions[List recent capture sessions]' 'query[Run a built-in query preset against captured traffic]' 'blob[Read a captured payload blob by id]' 'purge[Delete all captured traffic metadata and blobs]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (start) _openclaw_proxy_start ;;
+ (run) _openclaw_proxy_run ;;
+ (validate) _openclaw_proxy_validate ;;
+ (coverage) _openclaw_proxy_coverage ;;
+ (sessions) _openclaw_proxy_sessions ;;
+ (query) _openclaw_proxy_query ;;
+ (blob) _openclaw_proxy_blob ;;
+ (purge) _openclaw_proxy_purge ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_hooks_list() {
+ _arguments -C \
+ "--eligible[Show only eligible hooks]" \
+ "--json[Output as JSON]" \
+ "(--verbose -v)"{--verbose,-v}"[Show more details including missing requirements]"
+}
+
+_openclaw_hooks_info() {
+ _arguments -C \
+ "--json[Output as JSON]"
+}
+
+_openclaw_hooks_check() {
+ _arguments -C \
+ "--json[Output as JSON]"
+}
+
+_openclaw_hooks_enable() {
+ _arguments -C \
+
+}
+
+_openclaw_hooks_disable() {
+ _arguments -C \
+
+}
+
+_openclaw_hooks_relay() {
+ _arguments -C \
+ "--provider[Native harness provider]" \
+ "--relay-id[Native hook relay id]" \
+ "--generation[Native hook relay registration generation]" \
+ "--event[Native hook event]" \
+ "--pre-tool-use-unavailable[PreToolUse fallback mode when the originating relay is unavailable]" \
+ "--timeout[Gateway timeout in ms]"
+}
+
+_openclaw_hooks_install() {
+ _arguments -C \
+ "(--link -l)"{--link,-l}"[Link a local path instead of copying]" \
+ "--pin[Record npm installs as exact resolved @]"
+}
+
+_openclaw_hooks_update() {
+ _arguments -C \
+ "--all[Update all tracked hooks]" \
+ "--dry-run[Show what would change without writing]"
+}
+
+_openclaw_hooks() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List all hooks]' 'info[Show detailed information about a hook]' 'check[Check hooks eligibility status]' 'enable[Enable a hook]' 'disable[Disable a hook]' 'relay[Internal native harness hook relay]' 'install[Deprecated: install a hook pack via `openclaw plugins install`]' 'update[Deprecated: update hook packs via `openclaw plugins update`]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_hooks_list ;;
+ (info) _openclaw_hooks_info ;;
+ (check) _openclaw_hooks_check ;;
+ (enable) _openclaw_hooks_enable ;;
+ (disable) _openclaw_hooks_disable ;;
+ (relay) _openclaw_hooks_relay ;;
+ (install) _openclaw_hooks_install ;;
+ (update) _openclaw_hooks_update ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_webhooks_gmail_setup() {
+ _arguments -C \
+ "--account[Gmail account to watch]" \
+ "--project[GCP project id (OAuth client owner)]" \
+ "--topic[Pub/Sub topic name]" \
+ "--subscription[Pub/Sub subscription name]" \
+ "--label[Gmail label to watch]" \
+ "--hook-url[OpenClaw hook URL]" \
+ "--hook-token[OpenClaw hook token]" \
+ "--push-token[Push token for gog watch serve]" \
+ "--bind[gog watch serve bind host]" \
+ "--port[gog watch serve port]" \
+ "--path[gog watch serve path]" \
+ "--include-body[Include email body snippets]" \
+ "--max-bytes[Max bytes for body snippets]" \
+ "--renew-minutes[Renew watch every N minutes]" \
+ "--tailscale[Expose push endpoint via tailscale (funnel|serve|off)]" \
+ "--tailscale-path[Path for tailscale serve/funnel]" \
+ "--tailscale-target[Tailscale serve/funnel target (port, host:port, or URL)]" \
+ "--push-endpoint[Explicit Pub/Sub push endpoint]" \
+ "--json[Output JSON summary]"
+}
+
+_openclaw_webhooks_gmail_run() {
+ _arguments -C \
+ "--account[Gmail account to watch]" \
+ "--topic[Pub/Sub topic path (projects/.../topics/..)]" \
+ "--subscription[Pub/Sub subscription name]" \
+ "--label[Gmail label to watch]" \
+ "--hook-url[OpenClaw hook URL]" \
+ "--hook-token[OpenClaw hook token]" \
+ "--push-token[Push token for gog watch serve]" \
+ "--bind[gog watch serve bind host]" \
+ "--port[gog watch serve port]" \
+ "--path[gog watch serve path]" \
+ "--include-body[Include email body snippets]" \
+ "--max-bytes[Max bytes for body snippets]" \
+ "--renew-minutes[Renew watch every N minutes]" \
+ "--tailscale[Expose push endpoint via tailscale (funnel|serve|off)]" \
+ "--tailscale-path[Path for tailscale serve/funnel]" \
+ "--tailscale-target[Tailscale serve/funnel target (port, host:port, or URL)]"
+}
+
+_openclaw_webhooks_gmail() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'setup[Configure Gmail watch + Pub/Sub + OpenClaw hooks]' 'run[Run gog watch serve + auto-renew loop]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (setup) _openclaw_webhooks_gmail_setup ;;
+ (run) _openclaw_webhooks_gmail_run ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_webhooks() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'gmail[Gmail Pub/Sub hooks (via gogcli)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (gmail) _openclaw_webhooks_gmail ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_qr() {
+ _arguments -C \
+ "--remote[Use gateway.remote.url and gateway.remote token/password (ignores device-pair publicUrl)]" \
+ "--url[Override gateway URL used in the setup payload]" \
+ "--public-url[Override gateway public URL used in the setup payload]" \
+ "--token[Override gateway token for setup payload]" \
+ "--password[Override gateway password for setup payload]" \
+ "--setup-code-only[Print only the setup code]" \
+ "--no-ascii[Skip ASCII QR rendering]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_clawbot_qr() {
+ _arguments -C \
+ "--remote[Use gateway.remote.url and gateway.remote token/password (ignores device-pair publicUrl)]" \
+ "--url[Override gateway URL used in the setup payload]" \
+ "--public-url[Override gateway public URL used in the setup payload]" \
+ "--token[Override gateway token for setup payload]" \
+ "--password[Override gateway password for setup payload]" \
+ "--setup-code-only[Print only the setup code]" \
+ "--no-ascii[Skip ASCII QR rendering]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_clawbot() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'qr[Generate a mobile pairing QR code and setup code]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (qr) _openclaw_clawbot_qr ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_pairing_list() {
+ _arguments -C \
+ "--channel[Channel ()]" \
+ "--account[Account id (for multi-account channels)]" \
+ "--json[Print JSON]"
+}
+
+_openclaw_pairing_approve() {
+ _arguments -C \
+ "--channel[Channel ()]" \
+ "--account[Account id (for multi-account channels)]" \
+ "--notify[Notify the requester on the same channel]"
+}
+
+_openclaw_pairing() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List pending pairing requests]' 'approve[Approve a pairing code and allow that sender]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_pairing_list ;;
+ (approve) _openclaw_pairing_approve ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_plugins_list() {
+ _arguments -C \
+ "--json[Print JSON]" \
+ "--enabled[Only show enabled plugins]" \
+ "--verbose[Show detailed entries]"
+}
+
+_openclaw_plugins_search() {
+ _arguments -C \
+ "--limit[Max results]" \
+ "--json[Print JSON]"
+}
+
+_openclaw_plugins_inspect() {
+ _arguments -C \
+ "--all[Inspect all plugins]" \
+ "--runtime[Load plugin runtime for hooks/tools/diagnostics]" \
+ "--json[Print JSON]"
+}
+
+_openclaw_plugins_enable() {
+ _arguments -C \
+
+}
+
+_openclaw_plugins_disable() {
+ _arguments -C \
+
+}
+
+_openclaw_plugins_uninstall() {
+ _arguments -C \
+ "--keep-files[Keep installed files on disk]" \
+ "--keep-config[Deprecated alias for --keep-files]" \
+ "--force[Skip confirmation prompt]" \
+ "--dry-run[Show what would be removed without making changes]"
+}
+
+_openclaw_plugins_install() {
+ _arguments -C \
+ "(--link -l)"{--link,-l}"[Link a local path instead of copying]" \
+ "--force[Overwrite an existing installed plugin or hook pack]" \
+ "--pin[Record npm installs as exact resolved @]" \
+ "--dangerously-force-unsafe-install[Deprecated no-op; security.installPolicy may still block]" \
+ "--marketplace[Install a Claude marketplace plugin from a local repo/path or git/GitHub source]"
+}
+
+_openclaw_plugins_update() {
+ _arguments -C \
+ "--all[Update all tracked plugins and hook packs]" \
+ "--dry-run[Show what would change without writing]" \
+ "--dangerously-force-unsafe-install[Deprecated no-op; security.installPolicy may still block]"
+}
+
+_openclaw_plugins_registry() {
+ _arguments -C \
+ "--json[Print JSON]" \
+ "--refresh[Rebuild the persisted registry from current plugin manifests]"
+}
+
+_openclaw_plugins_doctor() {
+ _arguments -C \
+
+}
+
+_openclaw_plugins_build() {
+ _arguments -C \
+ "--root[Plugin package root]" \
+ "--entry[Plugin entry module relative to --root]" \
+ "--check[Fail if generated metadata is out of date]"
+}
+
+_openclaw_plugins_validate() {
+ _arguments -C \
+ "--root[Plugin package root]" \
+ "--entry[Plugin entry module relative to --root]"
+}
+
+_openclaw_plugins_init() {
+ _arguments -C \
+ "--directory[Output directory]" \
+ "--name[Display name]" \
+ "--force[Overwrite an existing output directory]"
+}
+
+_openclaw_plugins_marketplace_list() {
+ _arguments -C \
+ "--json[Print JSON]"
+}
+
+_openclaw_plugins_marketplace() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List plugins published by a marketplace source]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_plugins_marketplace_list ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_plugins() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List discovered plugins]' 'search[Search ClawHub plugin packages]' 'inspect[Inspect plugin details]' 'enable[Enable a plugin in config]' 'disable[Disable a plugin in config]' 'uninstall[Uninstall a plugin]' 'install[Install a plugin or hook pack (path, archive, npm spec, git repo, clawhub:package, or marketplace entry)]' 'update[Update installed plugins and tracked hook packs]' 'registry[Inspect or rebuild the persisted plugin registry]' 'doctor[Report plugin load issues]' 'build[Generate simple tool plugin metadata]' 'validate[Validate simple tool plugin metadata]' 'init[Create a simple tool plugin project]' 'marketplace[Inspect Claude-compatible plugin marketplaces]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_plugins_list ;;
+ (search) _openclaw_plugins_search ;;
+ (inspect) _openclaw_plugins_inspect ;;
+ (enable) _openclaw_plugins_enable ;;
+ (disable) _openclaw_plugins_disable ;;
+ (uninstall) _openclaw_plugins_uninstall ;;
+ (install) _openclaw_plugins_install ;;
+ (update) _openclaw_plugins_update ;;
+ (registry) _openclaw_plugins_registry ;;
+ (doctor) _openclaw_plugins_doctor ;;
+ (build) _openclaw_plugins_build ;;
+ (validate) _openclaw_plugins_validate ;;
+ (init) _openclaw_plugins_init ;;
+ (marketplace) _openclaw_plugins_marketplace ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_channels_list() {
+ _arguments -C \
+ "--all[Include bundled and installable catalog channels]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_channels_status() {
+ _arguments -C \
+ "--channel[Only show one channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)]" \
+ "--probe[Probe channel credentials]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_channels_capabilities() {
+ _arguments -C \
+ "--channel[Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)]" \
+ "--account[Account id (only with --channel)]" \
+ "--target[Channel target for permission audit (Discord channel:)]" \
+ "--timeout[Timeout in ms]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_channels_resolve() {
+ _arguments -C \
+ "--channel[Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)]" \
+ "--account[Account id (accountId)]" \
+ "--kind[Target kind (auto|user|group)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_channels_logs() {
+ _arguments -C \
+ "--channel[Channel (all|telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)]" \
+ "--lines[Number of lines (default: 200)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_channels_add() {
+ _arguments -C \
+ "--channel[Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)]" \
+ "--account[Account id (default when omitted)]" \
+ "--name[Display name for this account]" \
+ "--token[Channel token or credential payload]" \
+ "--token-file[Read channel token or credential payload from file]" \
+ "--secret[Channel shared secret]" \
+ "--secret-file[Read channel shared secret from file]" \
+ "--bot-token[Bot token]" \
+ "--app-token[App token]" \
+ "--password[Channel password or login secret]" \
+ "--cli-path[Channel CLI path]" \
+ "--url[Channel setup URL]" \
+ "--base-url[Channel base URL]" \
+ "--http-url[Channel HTTP service URL]" \
+ "--auth-dir[Channel auth directory override]" \
+ "--use-env[Use env-backed credentials when supported]" \
+ "--db-path[iMessage database path]" \
+ "--service[iMessage service (imessage|sms|auto)]" \
+ "--region[iMessage region (for SMS)]"
+}
+
+_openclaw_channels_remove() {
+ _arguments -C \
+ "--channel[Channel (telegram|whatsapp|discord|irc|googlechat|slack|signal|imessage|feishu|nostr|msteams|mattermost|nextcloud-talk|matrix|raft|line|zalo|clickclack|zalouser|sms|synology-chat|tlon|qa-channel|qqbot|twitch)]" \
+ "--account[Account id (default when omitted)]" \
+ "--delete[Delete config entries (no prompt)]"
+}
+
+_openclaw_channels_login() {
+ _arguments -C \
+ "--channel[Channel alias (auto when only one is configured)]" \
+ "--account[Account id (accountId)]" \
+ "--verbose[Verbose connection logs]"
+}
+
+_openclaw_channels_logout() {
+ _arguments -C \
+ "--channel[Channel alias (auto when only one is configured)]" \
+ "--account[Account id (accountId)]"
+}
+
+_openclaw_channels() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List chat channels (configured by default; pass --all for installable catalog)]' 'status[Show gateway channel status (use status --deep for local)]' 'capabilities[Show provider capabilities (intents/scopes + supported features)]' 'resolve[Resolve channel/user names to IDs]' 'logs[Show recent channel logs from the gateway log file]' 'add[Add or update a channel account]' 'remove[Disable or delete a channel account]' 'login[Link a channel account (if supported)]' 'logout[Log out of a channel session (if supported)]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_channels_list ;;
+ (status) _openclaw_channels_status ;;
+ (capabilities) _openclaw_channels_capabilities ;;
+ (resolve) _openclaw_channels_resolve ;;
+ (logs) _openclaw_channels_logs ;;
+ (add) _openclaw_channels_add ;;
+ (remove) _openclaw_channels_remove ;;
+ (login) _openclaw_channels_login ;;
+ (logout) _openclaw_channels_logout ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_directory_self() {
+ _arguments -C \
+ "--channel[Channel (auto when only one is configured)]" \
+ "--account[Account id (accountId)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_directory_peers_list() {
+ _arguments -C \
+ "--channel[Channel (auto when only one is configured)]" \
+ "--account[Account id (accountId)]" \
+ "--json[Output JSON]" \
+ "--query[Optional search query]" \
+ "--limit[Limit results]"
+}
+
+_openclaw_directory_peers() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List peers]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_directory_peers_list ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_directory_groups_list() {
+ _arguments -C \
+ "--channel[Channel (auto when only one is configured)]" \
+ "--account[Account id (accountId)]" \
+ "--json[Output JSON]" \
+ "--query[Optional search query]" \
+ "--limit[Limit results]"
+}
+
+_openclaw_directory_groups_members() {
+ _arguments -C \
+ "--group-id[Group id]" \
+ "--channel[Channel (auto when only one is configured)]" \
+ "--account[Account id (accountId)]" \
+ "--json[Output JSON]" \
+ "--limit[Limit results]"
+}
+
+_openclaw_directory_groups() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'list[List groups]' 'members[List group members]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_directory_groups_list ;;
+ (members) _openclaw_directory_groups_members ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_directory() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'self[Show the current account user]' 'peers[Peer directory (contacts/users)]' 'groups[Group directory]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (self) _openclaw_directory_self ;;
+ (peers) _openclaw_directory_peers ;;
+ (groups) _openclaw_directory_groups ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_security_audit() {
+ _arguments -C \
+ "--deep[Attempt live Gateway probes and plugin-owned collector checks]" \
+ "--auth[Runtime gateway auth mode (\"none\"|\"token\"|\"password\"|\"trusted-proxy\")]" \
+ "--token[Use explicit gateway token for deep probe auth]" \
+ "--password[Use explicit gateway password for deep probe auth]" \
+ "--fix[Apply safe fixes (tighten defaults + chmod state/config)]" \
+ "--json[Print JSON]"
+}
+
+_openclaw_security() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'audit[Audit config + local state for common security foot-guns]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (audit) _openclaw_security_audit ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_secrets_reload() {
+ _arguments -C \
+ "--json[Output JSON]" \
+ "--url[Gateway WebSocket URL (defaults to gateway.remote.url when configured)]" \
+ "--token[Gateway token (if required)]" \
+ "--timeout[Timeout in ms]" \
+ "--expect-final[Wait for final response (agent)]"
+}
+
+_openclaw_secrets_audit() {
+ _arguments -C \
+ "--check[Exit non-zero when findings are present]" \
+ "--allow-exec[Allow exec SecretRef resolution during audit (may execute provider commands)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_secrets_configure() {
+ _arguments -C \
+ "--apply[Apply changes immediately after preflight]" \
+ "--yes[Skip apply confirmation prompt]" \
+ "--providers-only[Configure secrets.providers only, skip credential mapping]" \
+ "--skip-provider-setup[Skip provider setup and only map credential fields to existing providers]" \
+ "--agent[Agent id for auth-profiles targets (default: configured default agent)]" \
+ "--allow-exec[Allow exec SecretRef preflight checks (may execute provider commands)]" \
+ "--plan-out[Write generated plan JSON to a file]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_secrets_apply() {
+ _arguments -C \
+ "--from[Path to plan JSON]" \
+ "--dry-run[Validate/preflight only]" \
+ "--allow-exec[Allow exec SecretRef checks (may execute provider commands)]" \
+ "--json[Output JSON]"
+}
+
+_openclaw_secrets() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ \
+ "1: :_values 'command' 'reload[Re-resolve secret references and atomically swap runtime snapshot]' 'audit[Audit plaintext secrets, unresolved refs, and precedence drift]' 'configure[Interactive secrets helper (provider setup + SecretRef mapping + preflight)]' 'apply[Apply a previously generated secrets plan]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (reload) _openclaw_secrets_reload ;;
+ (audit) _openclaw_secrets_audit ;;
+ (configure) _openclaw_secrets_configure ;;
+ (apply) _openclaw_secrets_apply ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_skills_search() {
+ _arguments -C \
+ "--limit[Max results]" \
+ "--json[Output as JSON]"
+}
+
+_openclaw_skills_install() {
+ _arguments -C \
+ "--version[Install a specific version]" \
+ "--force[Overwrite an existing workspace skill]" \
+ "--force-install[Install a pending GitHub-backed skill before ClawHub scan completes]" \
+ "--global[Install into the shared managed skills directory]" \
+ "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]" \
+ "--as[Install a git/local skill under this slug]"
+}
+
+_openclaw_skills_update() {
+ _arguments -C \
+ "--all[Update all tracked ClawHub skills]" \
+ "--force-install[Install a pending GitHub-backed skill before ClawHub scan completes]" \
+ "--global[Update skills in the shared managed skills directory]" \
+ "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]"
+}
+
+_openclaw_skills_verify() {
+ _arguments -C \
+ "--version[Verify a specific version]" \
+ "--tag[Verify a dist tag]" \
+ "--card[Print the generated Skill Card Markdown]" \
+ "--global[Resolve installed skill metadata from the shared managed skills directory]" \
+ "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]"
+}
+
+_openclaw_skills_workshop_list() {
+ _arguments -C \
+ "--json[Output as JSON]"
+}
+
+_openclaw_skills_workshop_inspect() {
+ _arguments -C \
+ "--json[Output as JSON]"
+}
+
+_openclaw_skills_workshop_propose_create() {
+ _arguments -C \
+ "--name[Skill name]" \
+ "--description[Skill description]" \
+ "--proposal[Path to PROPOSAL.md draft content]" \
+ "--proposal-dir[Path to proposal directory with PROPOSAL.md and UTF-8 text support files]" \
+ "--goal[Proposal or improvement goal]" \
+ "--evidence[Evidence or notes for the proposal]" \
+ "--json[Output as JSON]"
+}
+
+_openclaw_skills_workshop_propose_update() {
+ _arguments -C \
+ "--proposal[Path to PROPOSAL.md draft content]" \
+ "--proposal-dir[Path to proposal directory with PROPOSAL.md and UTF-8 text support files]" \
+ "--description[Concise proposal description]" \
+ "--goal[Proposal or improvement goal]" \
+ "--evidence[Evidence or notes for the proposal]" \
+ "--json[Output as JSON]"
+}
+
+_openclaw_skills_workshop_revise() {
+ _arguments -C \
+ "--proposal[Path to revised PROPOSAL.md draft content]" \
+ "--proposal-dir[Path to revised proposal directory with PROPOSAL.md and UTF-8 text support files]" \
+ "--description[Replacement proposal description]" \
+ "--goal[Replacement research or improvement goal]" \
+ "--evidence[Replacement evidence or notes for the proposal]" \
+ "--json[Output as JSON]"
+}
+
+_openclaw_skills_workshop_apply() {
+ _arguments -C \
+ "--json[Output as JSON]"
+}
+
+_openclaw_skills_workshop_reject() {
+ _arguments -C \
+ "--reason[Reason for rejection]" \
+ "--json[Output as JSON]"
+}
+
+_openclaw_skills_workshop_quarantine() {
+ _arguments -C \
+ "--reason[Reason for quarantine]" \
+ "--json[Output as JSON]"
+}
+
+_openclaw_skills_workshop() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]" \
+ "1: :_values 'command' 'list[List pending and completed skill proposals]' 'inspect[Inspect a skill proposal]' 'propose-create[Create a pending proposal for a new workspace skill]' 'propose-update[Create a pending proposal for an existing workspace skill]' 'revise[Revise a pending skill proposal]' 'apply[Apply a pending skill proposal]' 'reject[Reject a pending skill proposal]' 'quarantine[Quarantine a skill proposal]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (list) _openclaw_skills_workshop_list ;;
+ (inspect) _openclaw_skills_workshop_inspect ;;
+ (propose-create) _openclaw_skills_workshop_propose_create ;;
+ (propose-update) _openclaw_skills_workshop_propose_update ;;
+ (revise) _openclaw_skills_workshop_revise ;;
+ (apply) _openclaw_skills_workshop_apply ;;
+ (reject) _openclaw_skills_workshop_reject ;;
+ (quarantine) _openclaw_skills_workshop_quarantine ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_skills_list() {
+ _arguments -C \
+ "--json[Output as JSON]" \
+ "--eligible[Show only eligible (ready to use) skills]" \
+ "(--verbose -v)"{--verbose,-v}"[Show more details including missing requirements]" \
+ "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]"
+}
+
+_openclaw_skills_info() {
+ _arguments -C \
+ "--json[Output as JSON]" \
+ "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]"
+}
+
+_openclaw_skills_check() {
+ _arguments -C \
+ "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]" \
+ "--json[Output as JSON]"
+}
+
+_openclaw_skills() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--agent[Target agent workspace (defaults to cwd-inferred, then default agent)]" \
+ "1: :_values 'command' 'search[Search ClawHub skills]' 'install[Install a skill from ClawHub, git, or a local directory]' 'update[Update ClawHub-installed skills in the active or shared managed directory]' 'verify[Verify a ClawHub skill with ClawHub]' 'workshop[Manage pending skill proposals]' 'list[List all available skills]' 'info[Show detailed information about a skill]' 'check[Check which skills are ready, visible, or missing requirements]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (search) _openclaw_skills_search ;;
+ (install) _openclaw_skills_install ;;
+ (update) _openclaw_skills_update ;;
+ (verify) _openclaw_skills_verify ;;
+ (workshop) _openclaw_skills_workshop ;;
+ (list) _openclaw_skills_list ;;
+ (info) _openclaw_skills_info ;;
+ (check) _openclaw_skills_check ;;
+ esac
+ ;;
+ esac
+}
+
+_openclaw_update_repair() {
+ _arguments -C \
+ "--json[Output result as JSON]" \
+ "--channel[Persist update channel before repair]" \
+ "--timeout[Timeout for update repair steps in seconds (default: 1800)]" \
+ "--yes[Skip confirmation prompts (non-interactive)]" \
+ "--no-restart[Accepted for update command parity; repair never restarts]"
+}
+
+_openclaw_update_finalize() {
+ _arguments -C \
+ "--json[Output result as JSON]" \
+ "--channel[Persist update channel before repair]" \
+ "--timeout[Timeout for update repair steps in seconds (default: 1800)]" \
+ "--yes[Skip confirmation prompts (non-interactive)]" \
+ "--no-restart[Accepted for update command parity; repair never restarts]"
+}
+
+_openclaw_update_wizard() {
+ _arguments -C \
+ "--timeout[Timeout for each update step in seconds (default: 1800)]"
+}
+
+_openclaw_update_status() {
+ _arguments -C \
+ "--json[Output result as JSON]" \
+ "--timeout[Timeout for update checks in seconds (default: 3)]"
+}
+
+_openclaw_update() {
+ local -a commands
+ local -a options
+
+ _arguments -C \
+ "--json[Output result as JSON]" \
+ "--no-restart[Skip restarting the gateway service after a successful update]" \
+ "--dry-run[Preview update actions without making changes]" \
+ "--channel[Persist update channel (git + npm)]" \
+ "--tag[Override the package target for this update (dist-tag, version, or package spec)]" \
+ "--timeout[Timeout for each update step in seconds (default: 1800)]" \
+ "--yes[Skip confirmation prompts (non-interactive)]" \
+ "1: :_values 'command' 'repair[Repair post-update doctor and plugin convergence]' 'finalize[Repair post-update doctor and plugin convergence]' 'wizard[Interactive update wizard]' 'status[Show update channel and version status]'" \
+ "*::arg:->args"
+
+ case $state in
+ (args)
+ case $line[1] in
+ (repair) _openclaw_update_repair ;;
+ (finalize) _openclaw_update_finalize ;;
+ (wizard) _openclaw_update_wizard ;;
+ (status) _openclaw_update_status ;;
+ esac
+ ;;
+ esac
+}
+
+
+_openclaw_register_completion() {
+ if (( ! $+functions[compdef] )); then
+ return 0
+ fi
+
+ compdef _openclaw_root_completion openclaw
+ precmd_functions=(${precmd_functions:#_openclaw_register_completion})
+ unfunction _openclaw_register_completion 2>/dev/null
+}
+
+_openclaw_register_completion
+if (( ! $+functions[compdef] )); then
+ typeset -ga precmd_functions
+ if [[ -z "${precmd_functions[(r)_openclaw_register_completion]}" ]]; then
+ precmd_functions+=(_openclaw_register_completion)
+ fi
+fi
diff --git a/cron/jobs-state.json.migrated b/cron/jobs-state.json.migrated
new file mode 100644
index 0000000..c60018d
--- /dev/null
+++ b/cron/jobs-state.json.migrated
@@ -0,0 +1,80 @@
+{
+ "version": 1,
+ "jobs": {
+ "5d7aed00-aa6e-4c81-9c2b-d347e4832721": {
+ "updatedAtMs": 1780624800030,
+ "scheduleIdentity": "{\"version\":1,\"enabled\":true,\"schedule\":{\"kind\":\"cron\",\"expr\":\"0 10 * * 5\",\"tz\":\"Asia/Shanghai\"}}",
+ "state": {
+ "nextRunAtMs": 1781229600000,
+ "lastRunAtMs": 1780624800011,
+ "lastRunStatus": "ok",
+ "lastStatus": "ok",
+ "lastDurationMs": 19,
+ "lastDeliveryStatus": "not-requested",
+ "consecutiveErrors": 0,
+ "consecutiveSkipped": 0,
+ "lastFailureNotificationDeliveryStatus": "not-requested"
+ }
+ },
+ "12c1165b-ae83-4451-ab27-460455a1e4ae": {
+ "updatedAtMs": 1780304408419,
+ "scheduleIdentity": "{\"version\":1,\"enabled\":true,\"schedule\":{\"kind\":\"cron\",\"expr\":\"0 17 1 6 *\",\"tz\":\"Asia/Shanghai\"}}",
+ "state": {
+ "nextRunAtMs": 1811840400000,
+ "lastRunAtMs": 1780304403652,
+ "lastRunStatus": "ok",
+ "lastStatus": "ok",
+ "lastDurationMs": 4767,
+ "lastDelivered": true,
+ "lastDeliveryStatus": "delivered",
+ "lastFailureNotificationDeliveryStatus": "not-requested",
+ "consecutiveErrors": 0,
+ "consecutiveSkipped": 0
+ }
+ },
+ "057d94d0-7c9b-45f1-b824-add73ecb068c": {
+ "updatedAtMs": 1780910697142,
+ "scheduleIdentity": "{\"version\":1,\"enabled\":false,\"schedule\":{\"kind\":\"at\",\"at\":\"2026-06-08T09:00:00.000Z\"}}",
+ "state": {
+ "lastRunAtMs": 1780910426045,
+ "lastRunStatus": "error",
+ "lastStatus": "error",
+ "lastDurationMs": 271097,
+ "lastDiagnostics": {
+ "summary": "The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.",
+ "entries": [
+ {
+ "ts": 1780910697119,
+ "source": "tool",
+ "severity": "error",
+ "message": "LLM request timed out."
+ },
+ {
+ "ts": 1780910697119,
+ "source": "tool",
+ "severity": "error",
+ "message": "The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."
+ },
+ {
+ "ts": 1780910697141,
+ "source": "agent-run",
+ "severity": "error",
+ "message": "The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."
+ }
+ ]
+ },
+ "lastDiagnosticSummary": "The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.",
+ "lastErrorReason": "timeout",
+ "lastDelivered": false,
+ "lastDeliveryStatus": "not-delivered",
+ "lastDeliveryError": "The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.",
+ "lastFailureNotificationDelivered": false,
+ "lastFailureNotificationDeliveryStatus": "not-delivered",
+ "lastFailureNotificationDeliveryError": "The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.",
+ "consecutiveErrors": 4,
+ "consecutiveSkipped": 0,
+ "lastError": "The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/cron/jobs.json.migrated b/cron/jobs.json.migrated
new file mode 100644
index 0000000..900e0b9
--- /dev/null
+++ b/cron/jobs.json.migrated
@@ -0,0 +1,80 @@
+{
+ "version": 1,
+ "jobs": [
+ {
+ "id": "5d7aed00-aa6e-4c81-9c2b-d347e4832721",
+ "agentId": "main",
+ "sessionKey": "agent:main:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat",
+ "name": "周五周报提醒",
+ "enabled": true,
+ "createdAtMs": 1778669245552,
+ "schedule": {
+ "kind": "cron",
+ "expr": "0 10 * * 5",
+ "tz": "Asia/Shanghai"
+ },
+ "sessionTarget": "main",
+ "wakeMode": "now",
+ "payload": {
+ "kind": "systemEvent",
+ "text": "📋 周报提醒:今天是周五10:00,请告诉我这周的工作内容,我来生成周报草稿供你审核。审核通过后会在17:00-17:30之间随机时间发送给 liuqiang@witsoft.cn,抄送 wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn"
+ },
+ "state": {}
+ },
+ {
+ "id": "12c1165b-ae83-4451-ab27-460455a1e4ae",
+ "agentId": "travel",
+ "sessionKey": "agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat",
+ "name": "预约天安门城楼",
+ "description": "明天下午5点提醒预约天安门城楼",
+ "enabled": true,
+ "deleteAfterRun": true,
+ "createdAtMs": 1780239857701,
+ "schedule": {
+ "kind": "cron",
+ "expr": "0 17 1 6 *",
+ "tz": "Asia/Shanghai"
+ },
+ "sessionTarget": "session:agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat",
+ "wakeMode": "now",
+ "payload": {
+ "kind": "agentTurn",
+ "message": "⏰ 现在是6月1日下午5点,提醒杨轩:记得预约天安门城楼参观!预约方式:微信搜索「天安门城楼参观预约」小程序或官网。注意12号就要去北京了,提前约好哦!",
+ "timeoutSeconds": 300
+ },
+ "delivery": {
+ "mode": "announce",
+ "to": "o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat",
+ "channel": "openclaw-weixin",
+ "accountId": "4a0926e2cb5f-im-bot"
+ },
+ "state": {}
+ },
+ {
+ "id": "057d94d0-7c9b-45f1-b824-add73ecb068c",
+ "agentId": "travel",
+ "sessionKey": "agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat",
+ "name": "七天提醒-6月8日",
+ "enabled": false,
+ "deleteAfterRun": true,
+ "createdAtMs": 1780275491249,
+ "schedule": {
+ "kind": "at",
+ "at": "2026-06-08T09:00:00.000Z"
+ },
+ "sessionTarget": "isolated",
+ "wakeMode": "now",
+ "payload": {
+ "kind": "agentTurn",
+ "message": "⏰ 现在是下午5点,提醒你记得之前说的事情!📌"
+ },
+ "delivery": {
+ "mode": "announce",
+ "to": "o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat",
+ "channel": "openclaw-weixin",
+ "accountId": "4a0926e2cb5f-im-bot"
+ },
+ "state": {}
+ }
+ ]
+}
\ No newline at end of file
diff --git a/cron/runs/057d94d0-7c9b-45f1-b824-add73ecb068c.jsonl.migrated b/cron/runs/057d94d0-7c9b-45f1-b824-add73ecb068c.jsonl.migrated
new file mode 100644
index 0000000..4e2ac6e
--- /dev/null
+++ b/cron/runs/057d94d0-7c9b-45f1-b824-add73ecb068c.jsonl.migrated
@@ -0,0 +1,4 @@
+{"ts":1780909476852,"jobId":"057d94d0-7c9b-45f1-b824-add73ecb068c","action":"finished","status":"error","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","diagnostics":{"summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","entries":[{"ts":1780909476785,"source":"tool","severity":"error","message":"LLM request timed out."},{"ts":1780909476785,"source":"tool","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},{"ts":1780909476839,"source":"agent-run","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."}]},"delivered":false,"deliveryStatus":"not-delivered","deliveryError":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","failureNotificationDelivery":{"delivered":false,"status":"not-delivered","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},"delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":false,"delivered":false},"sessionId":"99a470f6-2a33-4452-b36e-7cc6fbc545da","sessionKey":"agent:travel:cron:057d94d0-7c9b-45f1-b824-add73ecb068c:run:99a470f6-2a33-4452-b36e-7cc6fbc545da","runAtMs":1780909203644,"durationMs":273197,"nextRunAtMs":1780909506841,"model":"deepseek-v4-flash","provider":"deepseek"}
+{"ts":1780909778142,"jobId":"057d94d0-7c9b-45f1-b824-add73ecb068c","action":"finished","status":"error","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","diagnostics":{"summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","entries":[{"ts":1780909778079,"source":"tool","severity":"error","message":"LLM request timed out."},{"ts":1780909778079,"source":"tool","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},{"ts":1780909778129,"source":"agent-run","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."}]},"delivered":false,"deliveryStatus":"not-delivered","deliveryError":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","failureNotificationDelivery":{"delivered":false,"status":"not-delivered","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},"delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":false,"delivered":false},"sessionId":"211ead5b-153c-4acc-9add-b216eec529c6","sessionKey":"agent:travel:cron:057d94d0-7c9b-45f1-b824-add73ecb068c:run:211ead5b-153c-4acc-9add-b216eec529c6","runAtMs":1780909510454,"durationMs":267677,"nextRunAtMs":1780909838131,"model":"deepseek-v4-flash","provider":"deepseek"}
+{"ts":1780910122408,"jobId":"057d94d0-7c9b-45f1-b824-add73ecb068c","action":"finished","status":"error","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","diagnostics":{"summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","entries":[{"ts":1780910122373,"source":"tool","severity":"error","message":"LLM request timed out."},{"ts":1780910122373,"source":"tool","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},{"ts":1780910122401,"source":"agent-run","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."}]},"delivered":false,"deliveryStatus":"not-delivered","deliveryError":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","failureNotificationDelivery":{"delivered":false,"status":"not-delivered","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},"delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":false,"delivered":false},"sessionId":"d22ed27e-9aed-4345-b5c2-d78598ee1ac6","sessionKey":"agent:travel:cron:057d94d0-7c9b-45f1-b824-add73ecb068c:run:d22ed27e-9aed-4345-b5c2-d78598ee1ac6","runAtMs":1780909845794,"durationMs":276608,"nextRunAtMs":1780910422402,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":16415,"output_tokens":348,"total_tokens":31263}}
+{"ts":1780910697147,"jobId":"057d94d0-7c9b-45f1-b824-add73ecb068c","action":"finished","status":"error","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","diagnostics":{"summary":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","entries":[{"ts":1780910697119,"source":"tool","severity":"error","message":"LLM request timed out."},{"ts":1780910697119,"source":"tool","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},{"ts":1780910697141,"source":"agent-run","severity":"error","message":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."}]},"delivered":false,"deliveryStatus":"not-delivered","deliveryError":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run.","failureNotificationDelivery":{"delivered":false,"status":"not-delivered","error":"The model did not produce a response before the model idle timeout. Please try again, or increase `models.providers..timeoutSeconds` for slow local or self-hosted providers. If `agents.defaults.timeoutSeconds` or a run-specific timeout is lower, raise that ceiling too; provider timeouts cannot extend the whole agent run."},"delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":false,"delivered":false},"sessionId":"df8c4392-a74f-4867-a418-f2ac120bc6a9","sessionKey":"agent:travel:cron:057d94d0-7c9b-45f1-b824-add73ecb068c:run:df8c4392-a74f-4867-a418-f2ac120bc6a9","runAtMs":1780910426045,"durationMs":271097,"model":"deepseek-v4-flash","provider":"deepseek"}
diff --git a/cron/runs/08a61ced-7f1d-47a7-b511-d1a4b18c4821.jsonl.migrated b/cron/runs/08a61ced-7f1d-47a7-b511-d1a4b18c4821.jsonl.migrated
new file mode 100644
index 0000000..dbca455
--- /dev/null
+++ b/cron/runs/08a61ced-7f1d-47a7-b511-d1a4b18c4821.jsonl.migrated
@@ -0,0 +1,2 @@
+{"ts":1780448437488,"jobId":"08a61ced-7f1d-47a7-b511-d1a4b18c4821","action":"finished","status":"error","error":"cron: job execution timed out (last phase: model-call-started)","diagnostics":{"summary":"cron: job execution timed out (last phase: model-call-started)","entries":[{"ts":1780448437480,"source":"cron-setup","severity":"error","message":"cron: job execution timed out (last phase: model-call-started)"}]},"deliveryStatus":"unknown","failureNotificationDelivery":{"status":"unknown"},"runAtMs":1780448404319,"durationMs":33161,"nextRunAtMs":1780448467480}
+{"ts":1780448472350,"jobId":"08a61ced-7f1d-47a7-b511-d1a4b18c4821","action":"finished","status":"ok","summary":"🚨 **天安门城楼预约提醒!**\n\n杨轩,今天是 **6月3日**,天安门城楼预约开放啦!\n\n**🎯 行动清单:**\n\n1. **预约日期**:6月13日(周六)\n2. **预约场次**:上午场(8:30-12:00)\n3. **预约入口**:微信小程序 → 搜索「天安门城楼参观预约」\n4. **关键时间**:⏰ 今天下午 **5点** 准时放票!\n\n**⚡ 提前准备:**\n- ✅ 在小程序里提前添加好参观人信息(姓名+身份证号)\n- ✅ 确保网络畅通\n- ⚠️ 天安门城楼票很抢手,建议提前几分钟进小程序等着,到点立刻提交!\n\n祝抢票顺利 🎫✨","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"3c732995-6ec5-4755-ae01-d8e261bee3f2","sessionKey":"agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat","runAtMs":1780448469600,"durationMs":2749,"nextRunAtMs":1780448467480,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":6264,"output_tokens":182,"total_tokens":14840}}
diff --git a/cron/runs/0d960664-8033-4b3b-bd6b-5d5849b82ea6.jsonl.migrated b/cron/runs/0d960664-8033-4b3b-bd6b-5d5849b82ea6.jsonl.migrated
new file mode 100644
index 0000000..0e806a1
--- /dev/null
+++ b/cron/runs/0d960664-8033-4b3b-bd6b-5d5849b82ea6.jsonl.migrated
@@ -0,0 +1 @@
+{"ts":1780390687025,"jobId":"0d960664-8033-4b3b-bd6b-5d5849b82ea6","action":"finished","status":"ok","summary":"This is the cron job firing — it's configured to deliver the announcement directly to the 杨轩 via openclaw-weixin. The delivery is set to \"announce\" mode, which means the message will be sent to the chat channel. Since this is an isolated agentTurn with `delivery.mode=announce`, the response will be delivered automatically.\n\n⏰ **现在是16:58,提醒杨轩:**\n\n🚨 **抢天安门城楼票!**\n\n- **日期:** 6月9日(周二)\n- **放票时间:** 17:00 准时开抢!\n- **平台:** 微信小程序「天安门城楼参观预约」\n\n🏃💨 还有不到2分钟,赶紧打开小程序等着!17:00准时点进去!\n\n> ⚠️ 天安门城楼的票非常抢手,提前准备好:\n> 1. 打开小程序并登录好\n> 2. 提前填好参观人信息\n> 3. 17:00一过立即点击预约\n> 4. 准备好手速和网速!","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"b2ec8579-d557-4b90-9af6-8662faaf156a","sessionKey":"agent:travel:cron:0d960664-8033-4b3b-bd6b-5d5849b82ea6:run:b2ec8579-d557-4b90-9af6-8662faaf156a","runAtMs":1780390681630,"durationMs":5388,"nextRunAtMs":1780390680000,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":14205,"output_tokens":297,"total_tokens":14111}}
diff --git a/cron/runs/12c1165b-ae83-4451-ab27-460455a1e4ae.jsonl.migrated b/cron/runs/12c1165b-ae83-4451-ab27-460455a1e4ae.jsonl.migrated
new file mode 100644
index 0000000..c296307
--- /dev/null
+++ b/cron/runs/12c1165b-ae83-4451-ab27-460455a1e4ae.jsonl.migrated
@@ -0,0 +1,2 @@
+{"ts":1780239872173,"jobId":"12c1165b-ae83-4451-ab27-460455a1e4ae","action":"finished","status":"ok","summary":"收到,但我看下时间——现在是**5月31日周日晚11点**,而提醒设置在**6月1日下午5点**。这个cron任务触发的时机不对,是我刚才**手动测试触发了**,所以提前收到了。\n\n**这不是真的到时间了!** 真正的提醒会在 **明天(6/1)下午5点** 准时推送给你,到时候再来通知你预约天安门城楼。\n\n放心,任务已经设好了,明天到了时间会自动提醒你的 😊","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"b8e58782-2b00-4427-9c33-f0f8576bf3ec","sessionKey":"agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat","runId":"manual:12c1165b-ae83-4451-ab27-460455a1e4ae:1780239859366:1","runAtMs":1780239859367,"durationMs":12804,"nextRunAtMs":1780304400000,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":46996,"output_tokens":106,"total_tokens":46996}}
+{"ts":1780304408424,"jobId":"12c1165b-ae83-4451-ab27-460455a1e4ae","action":"finished","status":"ok","summary":"好的,收到提醒!不过天安门城楼**6月8日闭馆**,所以今天抢的8号的票用不上。没关系,我这边已经帮你安排了:\n\n- ✅ **明天(6月2日)16:58** 会再次提醒你,抢 **6月9日(周二)** 的票\n- ✅ 今天可以先熟悉流程,不提交\n\n准备好明天17:00准时开抢就行!💪","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"58a71359-0817-42a3-b2a5-de43a1dc8ff2","sessionKey":"agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat","runAtMs":1780304403652,"durationMs":4767,"nextRunAtMs":1811840400000,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":20217,"output_tokens":94,"total_tokens":21625}}
diff --git a/cron/runs/23cee062-ec01-4509-b204-6b8d2eebb7ad.jsonl.migrated b/cron/runs/23cee062-ec01-4509-b204-6b8d2eebb7ad.jsonl.migrated
new file mode 100644
index 0000000..f0ca130
--- /dev/null
+++ b/cron/runs/23cee062-ec01-4509-b204-6b8d2eebb7ad.jsonl.migrated
@@ -0,0 +1,4 @@
+{"ts":1780408839067,"jobId":"23cee062-ec01-4509-b204-6b8d2eebb7ad","action":"finished","status":"error","error":"cron: job execution timed out (last phase: model-call-started)","diagnostics":{"summary":"cron: job execution timed out (last phase: model-call-started)","entries":[{"ts":1780408839059,"source":"cron-setup","severity":"error","message":"cron: job execution timed out (last phase: model-call-started)"}]},"deliveryStatus":"unknown","failureNotificationDelivery":{"status":"unknown"},"runAtMs":1780408805644,"durationMs":33415,"nextRunAtMs":1780408869059}
+{"ts":1780408904726,"jobId":"23cee062-ec01-4509-b204-6b8d2eebb7ad","action":"finished","status":"error","error":"cron: job execution timed out (last phase: model-call-started)","diagnostics":{"summary":"cron: job execution timed out (last phase: model-call-started)","entries":[{"ts":1780408904723,"source":"cron-setup","severity":"error","message":"cron: job execution timed out (last phase: model-call-started)"}]},"deliveryStatus":"unknown","failureNotificationDelivery":{"status":"unknown"},"runAtMs":1780408871867,"durationMs":32856,"nextRunAtMs":1780408964723}
+{"ts":1780409003047,"jobId":"23cee062-ec01-4509-b204-6b8d2eebb7ad","action":"finished","status":"error","error":"cron: job execution timed out (last phase: model-call-started)","diagnostics":{"summary":"cron: job execution timed out (last phase: model-call-started)","entries":[{"ts":1780409003041,"source":"cron-setup","severity":"error","message":"cron: job execution timed out (last phase: model-call-started)"}]},"deliveryStatus":"unknown","failureNotificationDelivery":{"status":"unknown"},"runAtMs":1780408970056,"durationMs":32985,"nextRunAtMs":1780409303041}
+{"ts":1780409308561,"jobId":"23cee062-ec01-4509-b204-6b8d2eebb7ad","action":"finished","status":"ok","summary":"⏰ **晚上10点提醒到!**\n\n别忘啦,**把带洗脸巾放进包里** 🧴🧳\n\n6月12号出发去北京,趁现在还有时间,把要带的东西慢慢收拾起来~还有什么需要我帮忙的吗?😊","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"2a799cd5-21a8-43c8-911d-ab5cedb9cbab","sessionKey":"agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat","runAtMs":1780409305930,"durationMs":2629,"nextRunAtMs":1780409303041,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":20120,"output_tokens":58,"total_tokens":21912}}
diff --git a/cron/runs/5d7aed00-aa6e-4c81-9c2b-d347e4832721.jsonl.migrated b/cron/runs/5d7aed00-aa6e-4c81-9c2b-d347e4832721.jsonl.migrated
new file mode 100644
index 0000000..ee5da70
--- /dev/null
+++ b/cron/runs/5d7aed00-aa6e-4c81-9c2b-d347e4832721.jsonl.migrated
@@ -0,0 +1,4 @@
+{"ts":1778833358417,"jobId":"5d7aed00-aa6e-4c81-9c2b-d347e4832721","action":"finished","status":"ok","summary":"📋 周报提醒:今天是周五10:00,请告诉我这周的工作内容,我来生成周报草稿供你审核。审核通过后会在17:00-17:30之间随机时间发送给 liuqiang@witsoft.cn,抄送 wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn","deliveryStatus":"not-requested","runAtMs":1778833351270,"durationMs":7145,"nextRunAtMs":1779415200000}
+{"ts":1779446924117,"jobId":"5d7aed00-aa6e-4c81-9c2b-d347e4832721","action":"finished","status":"ok","summary":"📋 周报提醒:今天是周五10:00,请告诉我这周的工作内容,我来生成周报草稿供你审核。审核通过后会在17:00-17:30之间随机时间发送给 liuqiang@witsoft.cn,抄送 wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn","deliveryStatus":"not-requested","runAtMs":1779446913505,"durationMs":10609,"nextRunAtMs":1780020000000}
+{"ts":1780020001414,"jobId":"5d7aed00-aa6e-4c81-9c2b-d347e4832721","action":"finished","status":"ok","summary":"📋 周报提醒:今天是周五10:00,请告诉我这周的工作内容,我来生成周报草稿供你审核。审核通过后会在17:00-17:30之间随机时间发送给 liuqiang@witsoft.cn,抄送 wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn","deliveryStatus":"not-requested","sessionKey":"agent:main:cron:5d7aed00-aa6e-4c81-9c2b-d347e4832721:run:1780020001403","runAtMs":1780020001403,"durationMs":8,"nextRunAtMs":1780624800000}
+{"ts":1780624800038,"jobId":"5d7aed00-aa6e-4c81-9c2b-d347e4832721","action":"finished","status":"ok","summary":"📋 周报提醒:今天是周五10:00,请告诉我这周的工作内容,我来生成周报草稿供你审核。审核通过后会在17:00-17:30之间随机时间发送给 liuqiang@witsoft.cn,抄送 wurd@witsoft.cn, chenm@witsoft.cn, zengli@witsoft.cn","deliveryStatus":"not-requested","sessionKey":"agent:main:cron:5d7aed00-aa6e-4c81-9c2b-d347e4832721:run:1780624800011","runAtMs":1780624800011,"durationMs":19,"nextRunAtMs":1781229600000}
diff --git a/cron/runs/80b2f7dc-f466-4479-9132-49b5207a7b4f.jsonl.migrated b/cron/runs/80b2f7dc-f466-4479-9132-49b5207a7b4f.jsonl.migrated
new file mode 100644
index 0000000..5d1f26d
--- /dev/null
+++ b/cron/runs/80b2f7dc-f466-4479-9132-49b5207a7b4f.jsonl.migrated
@@ -0,0 +1 @@
+{"ts":1780649884178,"jobId":"80b2f7dc-f466-4479-9132-49b5207a7b4f","action":"finished","status":"ok","summary":"⏰ **16:58 到点啦!该预约天安门城楼了!**\n\n预约方式:\n\n1️⃣ **微信小程序**:搜索「天安门城楼参观预约」\n2️⃣ **官网预约**:访问官方预约平台\n3️⃣ **预约时间**:需提前 **1-7天**,建议尽早约\n4️⃣ **参观须知**:记得带好 **身份证原件**\n\n📌 天安门城楼目前参观需按预约时段入场,过时可能无法进入,建议选上午时段避开人流高峰。\n\n需要我帮你查一下近期的可预约日期和时间段吗?","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"916ef8cf-10db-496f-b734-364fbb4799f7","sessionKey":"agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat","runAtMs":1780649880002,"durationMs":4172,"nextRunAtMs":1780649880000,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":12292,"output_tokens":129,"total_tokens":15748}}
diff --git a/cron/runs/b5ed5459-4a40-4de7-bbb0-9cb6afe9e510.jsonl.migrated b/cron/runs/b5ed5459-4a40-4de7-bbb0-9cb6afe9e510.jsonl.migrated
new file mode 100644
index 0000000..6d051cc
--- /dev/null
+++ b/cron/runs/b5ed5459-4a40-4de7-bbb0-9cb6afe9e510.jsonl.migrated
@@ -0,0 +1 @@
+{"ts":1780275307704,"jobId":"b5ed5459-4a40-4de7-bbb0-9cb6afe9e510","action":"finished","status":"ok","summary":"⏰ **喝水提醒!** 💧\n\n杨轩,早上好!现在已经 8:55 了,记得喝杯水再开始工作哦~ 🚰\n\n早起一杯水,精神一整天!今天记得多喝水 💪","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"51a9cb19-9381-4f4f-a292-388dce05ae12","sessionKey":"agent:travel:cron:b5ed5459-4a40-4de7-bbb0-9cb6afe9e510:run:51a9cb19-9381-4f4f-a292-388dce05ae12","runAtMs":1780275300003,"durationMs":7699,"nextRunAtMs":1780275300000,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":13677,"output_tokens":53,"total_tokens":13677}}
diff --git a/cron/runs/cf24cda0-8033-4208-bbd7-299fd03f108b.jsonl.migrated b/cron/runs/cf24cda0-8033-4208-bbd7-299fd03f108b.jsonl.migrated
new file mode 100644
index 0000000..06a4ca4
--- /dev/null
+++ b/cron/runs/cf24cda0-8033-4208-bbd7-299fd03f108b.jsonl.migrated
@@ -0,0 +1 @@
+{"ts":1780736285608,"jobId":"cf24cda0-8033-4208-bbd7-299fd03f108b","action":"finished","status":"ok","summary":"杨轩,⚠️ **天安门城楼抢票提醒!**\n\n现在是16:58,还有2分钟就要开抢了!\n\n**📌 抢票信息**\n- **参观日期:** 2026年6月13日(周六)\n- **开抢时间:** **17:00**(马上!)\n- **预约渠道:** 微信搜索「天安门城楼参观预约」小程序\n\n**📋 提前准备**\n- ✅ 身份证号提前复制好\n- ✅ 确认小程序已打开,登录状态正常\n- ✅ 网络通畅(建议用5G/WiFi双保险)\n\n6月13日是天安门城楼每周的预约日,通常放票后很快会被抢完,一定要准点冲!祝你好运 🍀","delivered":true,"deliveryStatus":"delivered","delivery":{"intended":{"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"resolved":{"ok":true,"channel":"openclaw-weixin","to":"o9cq80w6ZnnPGItW-GGACkwd69bA@im.wechat","accountId":"4a0926e2cb5f-im-bot","source":"explicit"},"fallbackUsed":true,"delivered":true},"sessionId":"e431996f-9842-4273-8ad9-a126648e73cb","sessionKey":"agent:travel:openclaw-weixin:direct:o9cq80w6znnpgitw-ggackwd69ba@im.wechat","runAtMs":1780736280020,"durationMs":5583,"nextRunAtMs":1780736280000,"model":"deepseek-v4-flash","provider":"deepseek","usage":{"input_tokens":6052,"output_tokens":166,"total_tokens":14628}}
diff --git a/flows/registry.sqlite-shm.migrated b/flows/registry.sqlite-shm.migrated
new file mode 100644
index 0000000..fe9ac28
Binary files /dev/null and b/flows/registry.sqlite-shm.migrated differ
diff --git a/flows/registry.sqlite-wal.migrated b/flows/registry.sqlite-wal.migrated
new file mode 100644
index 0000000..e69de29
diff --git a/flows/registry.sqlite.migrated b/flows/registry.sqlite.migrated
new file mode 100644
index 0000000..9064951
Binary files /dev/null and b/flows/registry.sqlite.migrated differ
diff --git a/gateway-supervisor-restart-handoff.json b/gateway-supervisor-restart-handoff.json
new file mode 100644
index 0000000..fcc3ab0
--- /dev/null
+++ b/gateway-supervisor-restart-handoff.json
@@ -0,0 +1 @@
+{"kind":"gateway-supervisor-restart-handoff","version":1,"intentId":"6a27f6fc-5ffd-48b8-bbd4-304eb9367aea","pid":378,"processInstanceId":"adf773e3-6c9c-419e-a85b-4091c0c10089","createdAt":1782953815876,"expiresAt":1782953875876,"reason":"update.run","source":"gateway-update","restartKind":"update-process","supervisorMode":"systemd"}
diff --git a/identity/device-auth.json b/identity/device-auth.json
new file mode 100644
index 0000000..367303e
--- /dev/null
+++ b/identity/device-auth.json
@@ -0,0 +1,18 @@
+{
+ "version": 1,
+ "deviceId": "e8510d8b751c9065aebddecb8951b0283fce5457af923f81b6d4a6bd72d421e7",
+ "tokens": {
+ "operator": {
+ "token": "2720025facf8497986551236793037ea",
+ "role": "operator",
+ "scopes": [
+ "operator.admin",
+ "operator.approvals",
+ "operator.pairing",
+ "operator.read",
+ "operator.write"
+ ],
+ "updatedAtMs": 1782957219692
+ }
+ }
+}
diff --git a/identity/device.json b/identity/device.json
new file mode 100644
index 0000000..c299abb
--- /dev/null
+++ b/identity/device.json
@@ -0,0 +1,7 @@
+{
+ "version": 1,
+ "deviceId": "e8510d8b751c9065aebddecb8951b0283fce5457af923f81b6d4a6bd72d421e7",
+ "publicKeyPem": "-----BEGIN PUBLIC KEY-----\nMCowBQYDK2VwAyEA9VxFgciddpb0jxue8QVIv/Ba2KbWva3sveVbxAkVYxY=\n-----END PUBLIC KEY-----\n",
+ "privateKeyPem": "-----BEGIN PRIVATE KEY-----\nMC4CAQAwBQYDK2VwBCIEIG2VSOr+cXn0yHoaaVWZCaZN6I9SuRw6CLm0tcMgWsFP\n-----END PRIVATE KEY-----\n",
+ "createdAtMs": 1773749978371
+}
diff --git a/media/inbound/2023年度工作总结-工业互联网-杨轩---fbaa8907-61e7-4e3c-a1fd-87e0408915c7.pptx b/media/inbound/2023年度工作总结-工业互联网-杨轩---fbaa8907-61e7-4e3c-a1fd-87e0408915c7.pptx
new file mode 100644
index 0000000..6b2eff6
Binary files /dev/null and b/media/inbound/2023年度工作总结-工业互联网-杨轩---fbaa8907-61e7-4e3c-a1fd-87e0408915c7.pptx differ
diff --git a/media/inbound/2023年度工作总结模板---f6c75239-438f-4c9b-8e3c-91b5768656f4.pptx b/media/inbound/2023年度工作总结模板---f6c75239-438f-4c9b-8e3c-91b5768656f4.pptx
new file mode 100644
index 0000000..2e07934
Binary files /dev/null and b/media/inbound/2023年度工作总结模板---f6c75239-438f-4c9b-8e3c-91b5768656f4.pptx differ
diff --git a/media/inbound/2025-08-01_1700_G5开发周报_2025-07-28_--_2025-08-01---f4fcb550-6faf-4f42-8184-3651025e7e9d.eml b/media/inbound/2025-08-01_1700_G5开发周报_2025-07-28_--_2025-08-01---f4fcb550-6faf-4f42-8184-3651025e7e9d.eml
new file mode 100644
index 0000000..de95886
--- /dev/null
+++ b/media/inbound/2025-08-01_1700_G5开发周报_2025-07-28_--_2025-08-01---f4fcb550-6faf-4f42-8184-3651025e7e9d.eml
@@ -0,0 +1,307 @@
+Date: Fri, 1 Aug 2025 17:00:01 +0800
+From: yangxuan
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?= ,
+ =?utf-8?Q?zengli=40witsoft.cn?=
+Message-ID:
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA3LTI4IC0tICAyMDI1LTA4?=
+ =?utf-8?B?LTAx44CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_29_="
+
+--=_mailmaster-6a18e4a4_0_29_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo77yIMjAyNS4wNy4yOC0wOC4wMe+8ieeahOW3peS9
+nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAggrkuIDjgIHmnKzlkajlt6XkvZzm
+gLvnu5MK6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1CuS7u+WKoTHvvJpHNeS4u+aVsOaNruWKqOaA
+geWtl+autemcgOaxgua1i+ivlee7k+adnyzlt7LkuI7plIDllK7mqKHlnZfogZTosIPnu5PmnZ8u
+5Li75pWw5o2uNS4xLjLniYjmnKzmnKzlkajkuIrnur8uCuS7u+WKoTLvvJpHM+WtmOi0p+euoeeQ
+hua1i+ivlee7k+adnywyMDI15bm0N+aciDMw5pel6L+b5YWl5YeG55Sf5Lqn6aqM6K+B6Zi25q61
+LgrluLjop4Tlt6XkvZwK5pel5bi45LqL5YqhMe+8mjIwMjUtMDctMjkg5Li75pWw5o2u5Yqo5oCB
+5a2X5q615LyY5YyWCuaXpeW4uOS6i+WKoTLvvJoyMDI1LTA3LTMwIOWtmOi0p+euoeeQhuWHhueU
+n+S6p+mqjOivgeS8mOWMlgrml6XluLjkuovliqEz77yaMjAyNS0wNy0zMSDlrZjotKfnrqHnkIbl
+h4bnlJ/kuqfpqozor4HmlK/mjIEK5pel5bi45LqL5YqhNO+8mjUuMS4z54mI5pys6ZyA5rGC6K+E
+5a6h5LiO5byA5Y+R5pa55qGI6K6+6K6hCuWtmOWcqOmXrumimOaIlumcgOaUr+aMgeS6i+mhuQrm
+l6AK5LqM44CB5LiL5ZGo5bel5L2c6K6h5YiSCumHjeeCueS7u+WKoQrorqHliJIx77yaRzXkuLvm
+lbDmja7kvJjljJbpnIDmsYLlvIDlj5EK6K6h5YiSMu+8mkcz5a2Y6LSn566h55CG5a6i5oi36K+V
+55So5byA5Y+R5pSv5pKRCuWFtuS7luS6i+mhuQrml6AK5aSH5rOo77ya5pegCkJlc3QgcmVnYXJk
+cyzmnajovakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMgMTEg
+5Y+36Iqx56We5aSn5Y6mIDItM0YK5omL5py677yaMTg3MjYxMjg0ODkK6YKu566x77yaeWFuZ3h1
+YW5Ad2l0c29mdC5jbg==
+
+--=_mailmaster-6a18e4a4_0_29_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2
+IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGRpdj48cCBjaWQ9Im4wIiBtZHR5
+cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIG1kLWZvY3VzIiBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7
+IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh
+dGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu
+cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv
+dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFu
+IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo77yIMjAyNS4w
+Ny4yOC0wOC4wMe+8ieeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOA
+gjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIiIG1kdHlwZT0iaHIiIGNsYXNz
+PSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xv
+cjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm
+cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0
+aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gt
+c2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRl
+cjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMx
+LCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVu
+ZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWst
+YWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7IGZvbnQt
+c2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0
+aW9uOiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hpdGUtc3Bh
+Y2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7
+T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2Eg
+TmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsiPjxzcGFuIG1kLWlubGlu
+ZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5s
+aW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48
+b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6
+IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1m
+YW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1
+b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZv
+bnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im41IiBtZHR5cGU9
+Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw
+b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9
+Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o
+ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl
+LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJz
+dHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi
+PjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9
+InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+
+6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48
+dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDog
+MzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i
+bjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy
+Z2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1kdHlwZT0icGFyYWdy
+YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAu
+NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBt
+ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2u5Yqo5oCB5a2X5q616ZyA5rGC5rWL6K+V57uT
+5p2fLOW3suS4jumUgOWUruaooeWdl+iBlOiwg+e7k+adny7kuLvmlbDmja41LjEuMueJiOacrOac
+rOWRqOS4iue6vy48L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i
+bjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJh
+Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg
+MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu
+IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7Ij7ku7vliqEy77yaRzPlrZjotKfnrqHnkIbmtYvor5Xnu5PmnZ8sMjAyNeW5tDfm
+nIgzMOaXpei/m+WFpeWHhueUn+S6p+mqjOivgemYtuautS48L3NwYW4+PC9wPjwvbGk+PC91bD48
+bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2
+ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7
+IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt
+ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i
+bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5bi46KeE5bel5L2cPC9z
+cGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0
+IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsi
+PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2Nr
+IG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp
+dDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13
+cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i
+bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMe+8
+mjIwMjUtMDctMjkg5Li75pWw5o2u5Yqo5oCB5a2X5q615LyY5YyWPC9zcGFuPjwvcD48L2xpPjxs
+aSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZl
+OyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k
+LXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg
+b3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFw
+OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt
+cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMu+8mjIw
+MjUtMDctMzAg5a2Y6LSn566h55CG5YeG55Sf5Lqn6aqM6K+B5LyY5YyWPC9zcGFuPjwvcD48L2xp
+PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44NCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHAgY2lkPSJuODUiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2Nr
+IG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp
+dDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13
+cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i
+bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8
+mjIwMjUtMDctMzEg5a2Y6LSn566h55CG5YeG55Sf5Lqn6aqM6K+B5pSv5oyBPC9zcGFuPjwvcD48
+L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im45MSIgbWR0eXBlPSJsaXN0X2l0ZW0i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl
+bGF0aXZlOyI+PHAgY2lkPSJuODkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs
+b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o
+ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy
+ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFz
+cz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5Yqh
+NO+8mjUuMS4z54mI5pys6ZyA5rGC6K+E5a6h5LiO5byA5Y+R5pa55qGI6K6+6K6hPC9zcGFuPjwv
+cD48L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE5IiBtZHR5cGU9Imxp
+c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJt
+ZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVp
+Z2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1z
+cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ry
+b25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48
+c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJw
+bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWt
+mOWcqOmXrumimOaIlumcgOaUr+aMgeS6i+mhuTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjxw
+IGNpZD0ibjEwMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBo
+YW5zOiA0OyBtYXJnaW46IDAuNXJlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXoDwvc3Bhbj48L3A+PC9saT48L29sPjxk
+aXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yNCIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVu
+ZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUx
+LCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNh
+bnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBz
+YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRl
+bnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsg
+cGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rp
+dj48aDMgY2lkPSJuMjUiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1o
+ZWFkaW5nIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lk
+LXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7IGZvbnQtc2l6ZTogMS41ZW07
+IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2
+ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hpdGUtc3BhY2U6IHByZS13cmFw
+OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1
+b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90Oywg
+SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBj
+bGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25n
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg
+Y2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS6jOOAgeS4
+i+WRqOW3peS9nOiuoeWIkjwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9s
+LWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjI2IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVv
+dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj
+YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2
+cHg7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMjciIG1kdHlwZT0ibGlzdF9pdGVt
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy
+ZWxhdGl2ZTsiPjxwIGNpZD0ibjI4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i
+bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw
+cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNs
+YXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBj
+bGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55Lu7
+5YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNp
+ZD0ibjI5IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh
+dGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4zMCIgbWR0eXBlPSJsaXN0X2l0
+ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246
+IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5k
+LWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDog
+aW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6
+IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBj
+bGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h5YiSMe+8
+mkc15Li75pWw5o2u5LyY5YyW6ZyA5rGC5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0i
+bWQtbGlzdC1pdGVtIiBjaWQ9Im4zMiIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk
+PSJuMzMiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog
+NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv
+bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h5YiSMu+8mkcz5a2Y6LSn566h55CG5a6i
+5oi36K+V55So5byA5Y+R5pSv5pKRPC9zcGFuPjwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1s
+aXN0LWl0ZW0iIGNpZD0ibjM0IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6
+IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4z
+NSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBt
+YXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy
+ZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWFtuS7luS6i+mhuTwvc3Bhbj48L3N0cm9uZz48
+L3NwYW4+PC9wPjxwIGNpZD0ibjM4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i
+bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC41cmVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13
+cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i
+bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pegPC9zcGFuPjwvcD48
+L2xpPjwvb2w+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjM5IiBtZHR5cGU9ImhyIiBjbGFzcz0i
+bWQtaHIgbWQtZW5kLWJsb2NrIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6
+IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1
+b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj
+YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNp
+emluZzogY29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6
+IDBweCBub25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwg
+MjMxKTsiPjwvZGl2PjxwIGNpZD0ibjQwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVu
+ZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6
+IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJl
+LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1m
+YW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1
+b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZv
+bnQtc2l6ZTogMTZweDsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1z
+ICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWlu
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWkh+azqDwvc3Bhbj48L3N0cm9uZz48
+L3NwYW4+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7vvJrml6A8L3NwYW4+PC9wPjwvZGl2Pjxk
+aXY+PGJyPjwvZGl2PjxkaXYgc3BlbGxjaGVjaz0iZmFsc2UiIGlkPSJudGVzLXBjbWFjLXNpZ25h
+dHVyZSIgc3R5bGU9ImZvbnQtZmFtaWx5OuW+rui9r+mbhem7kSIgZGF0YS1udGVzLXNpZ25hdHVy
+ZT0idHJ1ZSI+PGRpdiBzdHlsZT0iZm9udC1zaXplOjE0cHg7cGFkZGluZzowO21hcmdpbjowIj48
+ZGl2IHN0eWxlPSJwYWRkaW5nLWJvdHRvbToxMHB4O21hcmdpbi1ib3R0b206MTBweDtkaXNwbGF5
+OmlubGluZS1ibG9jayI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buR
+JnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAg
+ICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9z
+dHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBm
+b250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7
+CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRp
+diBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6
+IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAg
+ICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0i
+Zm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNv
+bG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUt
+aGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPHNwYW4gc3R5bGU9ImNvbG9yOiBy
+Z2IoMTkxLCAxOTEsIDE5MSk7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1z
+aXplOiAxM3B4OyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxk
+aXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5l
+OiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQt
+dmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjog
+Ym90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBw
+eDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7
+OyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3Nw
+YW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw
+cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNp
+bVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6
+IDI7IGNsZWFyOiBib3RoOyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6
+IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJp
+YWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBo
+YW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PGltZyBzdHlsZT0ibWF4LXdpZHRoOiB1
+bnNldDsiIHNyYz0iaHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlm
+OGIzNmUxZmZiZTU1MzI5YzE5NmM4NGZlNTE5Ny5wbmciPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdp
+bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFt
+aWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVy
+ZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0
+eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4
+OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5
+MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfp
+gZMgMTEg5Y+36Iqx56We5aSn5Y6mIDItM0Y8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2lu
+OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p
+bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJl
+czogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5
+bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7
+IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkx
+LCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxl
+PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm
+b250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQt
+bGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48
+c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp
+bmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6
+IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+
+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2
+PjwhLS3wn5iALS0+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4=
+
+--=_mailmaster-6a18e4a4_0_29_=--
diff --git a/media/inbound/2025-08-08_1700_G5开发周报_2025-08-04_--_2025-08-08---d9b4f228-64c1-430f-ae05-cf880d07e361.eml b/media/inbound/2025-08-08_1700_G5开发周报_2025-08-04_--_2025-08-08---d9b4f228-64c1-430f-ae05-cf880d07e361.eml
new file mode 100644
index 0000000..8ae17d2
--- /dev/null
+++ b/media/inbound/2025-08-08_1700_G5开发周报_2025-08-04_--_2025-08-08---d9b4f228-64c1-430f-ae05-cf880d07e361.eml
@@ -0,0 +1,317 @@
+Date: Fri, 8 Aug 2025 17:00:01 +0800
+From: yangxuan
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?= ,
+ =?utf-8?Q?zengli=40witsoft.cn?=
+Message-ID: <868E7610-012F-46DD-9AE6-B6B0B6F91F4F@witsoft.cn>
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA4LTA0IC0tICAyMDI1LTA4?=
+ =?utf-8?B?LTA444CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_4823_="
+
+--=_mailmaster-6a18e4a4_0_4823_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2u5LyY5YyW6ZyA5rGCCuS7u+WKoTLvvJpHNeS4
+u+aVsOaNrueJqeaWmeS/oeaBr+WKqOaAgeaooeadv+WvvOWFpQrluLjop4Tlt6XkvZwK5pel5bi4
+5LqL5YqhMe+8mjIwMjUtMDgtMDQg54mp5paZ5L+h5oGv5pSv5oyB5aSa6ZmE5Lu25LiK5LygIOS7
+k+W6k+W3peW6j+WFs+iBlOWPlua2iOi9pumXtOiBlOe6p+mAieaLqSDkuJrliqHlj4LmlbDphY3n
+va7kvJjljJYg5pu/5o2i54mp5paZ5aKe5Yqg5pu/5o2i5pWw6YePIArml6XluLjkuovliqEy77ya
+MjAyNS0wOC0wNSDliqjmgIHnlJ/miJDlr7zlhaXmqKHmnb/kuI7op6PmnpAgCuaXpeW4uOS6i+WK
+oTPvvJoyMDI1LTA4LTA2IOWKqOaAgeWtl+auteagoemqjOS4juagvOW8j+WMlgrml6XluLjkuovl
+iqE077yaMjAyNS0wOC0wNyDnianmlpnkv6Hmga/lr7zlh7rnpLrkvosK5pel5bi45LqL5YqhNe+8
+mjIwMjUtMDgtMDgg54mp5paZ5L+h5oGv5om56YeP5a+85YWl5qih5p2/5LiO6Kej5p6QCuWtmOWc
+qOmXrumimOaIlumcgOaUr+aMgeS6i+mhuQrliqjmgIHlrZfmrrXlr7zlhaXlr7zlh7rpl67popjo
+voPlpJosMjAyNS0wOC0wOeWKoOePreino+WGswrkuozjgIHkuIvlkajlt6XkvZzorqHliJIK6YeN
+54K55Lu75YqhCuiuoeWIkjHvvJpHNeS4u+aVsOaNrueJqeaWmeS/oeaBr+WKqOaAgeWtl+auteWv
+vOWFpemcgOaxguiHqua1i+i9rOa1i+e7k+adnwrorqHliJIy77yaRzXkuLvmlbDmja41LjEuNOeJ
+iOacrOW8gOWkpwrlhbbku5bkuovpobkK5pegCuWkh+azqO+8muaXoApCZXN0IHJlZ2FyZHMs5p2o
+6L2pCuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTIDExIOWPt+iK
+seelnuWkp+WOpiAyLTNGCuaJi+acuu+8mjE4NzI2MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdp
+dHNvZnQuY24=
+
+--=_mailmaster-6a18e4a4_0_4823_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2
+IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGRpdj48cCBjaWQ9Im4wIiBtZHR5
+cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIG1kLWZvY3VzIiBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7
+IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh
+dGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu
+cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv
+dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFu
+IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c
+5oC757uT5Y+K5LiL5ZGo6K6h5YiS77yM6K+35a6h6ZiF44CCPC9zcGFuPjwvcD48ZGl2IHRhYmlu
+ZGV4PSItMSIgY2lkPSJuMiIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv
+bnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDss
+ICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm
+OyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBo
+ZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzog
+MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48aDMgY2lk
+PSJuMyIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJl
+YWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRv
+cDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhl
+aWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiBy
+Z2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90
+O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2Es
+IEFyaWFsLCBzYW5zLXNlcmlmOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1w
+YWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt
+cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LiA44CB5pys5ZGo5bel5L2c
+5oC757uTPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L2gzPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3Rh
+cnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgbWFyZ2luOiAwLjhlbSAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5z
+JnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90
+OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyI+PGxpIGNs
+YXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw
+IGNpZD0ibjYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu
+czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXIt
+cyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFp
+biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ph43ngrnlt6XkvZzlrozmiJDmg4Xl
+hrU8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lk
+PSJuNyIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuOCIgbWR0eXBlPSJsaXN0X2l0ZW0i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl
+bGF0aXZlOyI+PHAgY2lkPSJuOSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv
+Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl
+cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl
+LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz
+PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ku7vliqEx77yaRzXk
+uLvmlbDmja7kvJjljJbpnIDmsYI8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0
+ZW0iIGNpZD0ibjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0
+eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46
+IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2
+ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7Ij7ku7vliqEy77yaPC9zcGFuPkc15Li75pWw5o2u54mp5paZ5L+h
+5oGv5Yqo5oCB5qih5p2/5a+85YWlPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRl
+bSIgY2lkPSJuMTIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5
+cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjog
+MHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZl
+OyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+5bi46KeE5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48
+L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEt
+bWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRk
+aW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1p
+dGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1k
+dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu
+OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMe+8mjIwMjUtMDgtMDQgCueJqeaWmeS/
+oeaBr+aUr+aMgeWkmumZhOS7tuS4iuS8oArku5PlupPlt6Xluo/lhbPogZTlj5bmtojovabpl7To
+gZTnuqfpgInmi6kK5Lia5Yqh5Y+C5pWw6YWN572u5LyY5YyWCuabv+aNoueJqeaWmeWinuWKoOab
+v+aNouaVsOmHjwo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i
+bjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJh
+Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg
+MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu
+IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7Ij7ml6XluLjkuovliqEy77yaMjAyNS0wOC0wNSDliqjmgIHnlJ/miJDlr7zlhaXm
+qKHmnb/kuI7op6PmnpAKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBj
+aWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94
+OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0i
+cGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHgg
+MHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48
+c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIwMjUtMDgtMDYgPC9zcGFuPuWKqOaAgeWt
+l+auteagoemqjOS4juagvOW8j+WMljwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBj
+aWQ9Im44NCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94
+OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuODUiIG1kdHlwZT0i
+cGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHgg
+MHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48
+c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhNO+8mjIwMjUtMDgtMDcgPC9zcGFuPueJqeaWmeS/
+oeaBr+WvvOWHuuekuuS+izwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im45
+MSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn
+aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuODkiIG1kdHlwZT0icGFyYWdy
+YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAu
+NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBt
+ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+5pel5bi45LqL5YqhNe+8mjwvc3Bhbj4yMDI1LTA4LTA4IOeJqeaWmeS/oeaBr+aJ
+uemHj+WvvOWFpeaooeadv+S4juino+aekDwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0
+LWl0ZW0iIGNpZD0ibjE5IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yMCIg
+bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn
+aW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh
+dGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsiPuWtmOWcqOmXrumimOaIlumcgOaUr+aMgeS6i+mhuTwv
+c3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjxwIGNpZD0ibjEwMCIgbWR0eXBlPSJwYXJhZ3JhcGgi
+IGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDAuNXJlbSAwcHg7IHdo
+aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+5Yqo5oCB5a2X5q615a+8
+5YWl5a+85Ye66Zeu6aKY6L6D5aSaLDIwMjUtMDgtMDnliqDnj63op6PlhrM8YnI+PC9wPjwvbGk+
+PC9vbD48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMjQiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1o
+ciBtZC1lbmQtYmxvY2siIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdi
+KDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD
+bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB
+cmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5n
+OiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4
+IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEp
+OyI+PC9kaXY+PGgzIGNpZD0ibjI1IiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxv
+Y2sgbWQtaGVhZGluZyIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVy
+OiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6
+IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjog
+cmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBw
+cmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4g
+U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm
+cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7Ij48c3BhbiBtZC1pbmxpbmU9InN0
+cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+
+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0i
+cGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7k
+uozjgIHkuIvlkajlt6XkvZzorqHliJI8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNs
+YXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im4yNiIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwLjhlbSAwcHg7IHBhZGRpbmctbGVmdDogMzBw
+eDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWls
+eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI
+ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1z
+aXplOiAxNnB4OyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjI3IiBtZHR5cGU9Imxp
+c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJt
+ZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVp
+Z2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1z
+cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ry
+b25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48
+c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJw
+bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumH
+jeeCueS7u+WKoTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1s
+aXN0IiBjaWQ9Im4yOSIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlv
+bjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0i
+bGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv
+c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9
+Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o
+ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl
+LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJw
+bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuiu
+oeWIkjHvvJpHNeS4u+aVsOaNrueJqeaWmeS/oeaBr+WKqOaAgeWtl+auteWvvOWFpemcgOaxguiH
+qua1i+i9rOa1i+e7k+adnzwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIg
+Y2lkPSJuMzIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMzIiBtZHR5cGU9
+InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4
+IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+
+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsiPuiuoeWIkjLvvJo8L3NwYW4+RzXkuLvmlbDmja41LjEuNOeJiOacrOW8
+gOWkpzwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjM0IiBtZHR5
+cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4
+OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4zNSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs
+YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxp
+bmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3
+aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGlu
+ZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5s
+aW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPuWFtuS7luS6i+mhuTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjxwIGNpZD0ibjM4IiBt
+ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp
+bjogMC41cmVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7
+Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyI+5pegPC9zcGFuPjwvcD48L2xpPjwvb2w+PGRpdiB0YWJpbmRleD0i
+LTEiIGNpZD0ibjM5IiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQtZW5kLWJsb2NrIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1m
+YW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1
+b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZv
+bnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29udGVudC1ib3g7IGhlaWdo
+dDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBwYWRkaW5nOiAwcHg7
+IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2PjxwIGNpZD0ibjQw
+IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1h
+cmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2
+ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZx
+dW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDss
+IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuIG1k
+LWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4g
+bWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsiPuWkh+azqDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PHNwYW4gbWQtaW5saW5lPSJw
+bGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7Ij7vvJrml6A8L3NwYW4+PC9wPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXYgc3BlbGxj
+aGVjaz0iZmFsc2UiIGlkPSJudGVzLXBjbWFjLXNpZ25hdHVyZSIgc3R5bGU9ImZvbnQtZmFtaWx5
+OuW+rui9r+mbhem7kSIgZGF0YS1udGVzLXNpZ25hdHVyZT0idHJ1ZSI+PGRpdiBzdHlsZT0iZm9u
+dC1zaXplOjE0cHg7cGFkZGluZzowO21hcmdpbjowIj48ZGl2IHN0eWxlPSJwYWRkaW5nLWJvdHRv
+bToxMHB4O21hcmdpbi1ib3R0b206MTBweDtkaXNwbGF5OmlubGluZS1ibG9jayI+PGRpdiBzdHls
+ZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7
+IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxp
+bmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1m
+YW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMw
+MDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0
+OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1
+b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgog
+ICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAg
+ICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v
+6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxl
+PgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQog
+ICAgPC9zdHlsZT4KPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7IGZvbnQt
+ZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXplOiAxM3B4OyBvcnBoYW5zOiAyOyB3
+aWRvd3M6IDI7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBw
+YWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhv
+bWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1h
+bDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJn
+aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh
+bWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBmb250LXNpemU6IDEzcHg7IGNvbG9y
+OiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFy
+Z2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1m
+YW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0
+dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PC9kaXY+
+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp
+bmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9u
+dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFy
+OiBib3RoOyI+PGltZyBzdHlsZT0ibWF4LXdpZHRoOiB1bnNldDsiIHNyYz0iaHR0cHM6Ly9tYWls
+LW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZiZTU1MzI5YzE5NmM4NGZl
+NTE5Ny5wbmciPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJv
+cmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhl
+aXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsg
+d2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu
+ZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWlj
+cm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya
+5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMgMTEg5Y+36Iqx56We5aSn5Y6mIDIt
+M0Y8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9y
+ZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVp
+dGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3
+aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n
+OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNy
+b3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJox
+ODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog
+MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh
+bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh
+bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7
+IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZx
+dW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumC
+rueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9k
+aXY+CjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwhLS3wn5iALS0+PC9kaXY+PC9kaXY+
+PC9ib2R5PjwvaHRtbD4=
+
+--=_mailmaster-6a18e4a4_0_4823_=--
diff --git a/media/inbound/2025-08-16_0855_G5开发周报_2025-08-11_--_2025-08-15---d74b7493-50fe-4b93-815c-a0a254b347e2.eml b/media/inbound/2025-08-16_0855_G5开发周报_2025-08-11_--_2025-08-15---d74b7493-50fe-4b93-815c-a0a254b347e2.eml
new file mode 100644
index 0000000..99258c2
--- /dev/null
+++ b/media/inbound/2025-08-16_0855_G5开发周报_2025-08-11_--_2025-08-15---d74b7493-50fe-4b93-815c-a0a254b347e2.eml
@@ -0,0 +1,312 @@
+Date: Sat, 16 Aug 2025 08:55:12 +0800
+From: yangxuan
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?=
+Message-ID:
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA4LTExIC0tICAyMDI1LTA4?=
+ =?utf-8?B?LTE144CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_18be_="
+
+--=_mailmaster-6a18e4a4_0_18be_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2u5LyY5YyW6ZyA5rGCCuS7u+WKoTLvvJpHNeS4
+u+aVsOaNrueJqeaWmeS/oeaBr+WvvOWFpeWvvOWHuuWvvOWHuuekuuS+i+i9rOa1i2J1Z+S/ruWk
+jQrluLjop4Tlt6XkvZwK5pel5bi45LqL5YqhMe+8mjIwMjUtMDgtMTEg5Li75pWw5o2u6YOo5YiG
+6ZyA5rGC6L2s5rWLIArml6XluLjkuovliqEy77yaMjAyNS0wOC0xMiBidWfkv67lpI0g5a+85YWl
+5qih5p2/5aKe5Yqg5LiL5ouJ5Lul5Y+K5a+85YWl5pWw5o2u5a2X5YW45qCh6aqM6YCa55So5pa5
+5rOVIArml6XluLjkuovliqEz77yaMjAyNS0wOC0xMyDnianmlpnkv6Hmga/lr7zlhaXpl67popjk
+v67lpI0K5pel5bi45LqL5YqhNO+8mjIwMjUtMDgtMTQg6LCD5LyRIGJ1Z+S/ruWkjQrml6XluLjk
+uovliqE177yaMjAyNS0wOC0xNSDosIPkvJEgYnVn5L+u5aSNCuWtmOWcqOmXrumimOaIlumcgOaU
+r+aMgeS6i+mhuQoyMDI1LTA4LTE1IOeUn+S6p+mXrumimOaOkuafpQrkuozjgIHkuIvlkajlt6Xk
+vZzorqHliJIK6YeN54K55Lu75YqhCuiuoeWIkjHvvJpHNeS4u+aVsOaNruS8mOWMlumcgOaxgua1
+i+ivlee7k+adnwrorqHliJIy77yaRzXkuLvmlbDmja41LjEuNeeJiOacrOmcgOaxguivhOWuoeWS
+jOW8gOWPkeaWueahiOe8luWGmQrlhbbku5bkuovpobkK5pegCuWkh+azqO+8muaXoApCZXN0IHJl
+Z2FyZHMs5p2o6L2pCuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGT
+IDExIOWPt+iKseelnuWkp+WOpiAyLTNGCuaJi+acuu+8mjE4NzI2MTI4NDg5CumCrueuse+8mnlh
+bmd4dWFuQHdpdHNvZnQuY24=
+
+--=_mailmaster-6a18e4a4_0_18be_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2
+IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGRpdj48cCBjaWQ9Im4wIiBtZHR5
+cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIG1kLWZvY3VzIiBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7
+IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh
+dGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu
+cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv
+dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFu
+IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c
+5oC757uT5Y+K5LiL5ZGo6K6h5YiS77yM6K+35a6h6ZiF44CCPC9zcGFuPjwvcD48ZGl2IHRhYmlu
+ZGV4PSItMSIgY2lkPSJuMiIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv
+bnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDss
+ICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm
+OyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBo
+ZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzog
+MHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48aDMgY2lk
+PSJuMyIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJl
+YWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRv
+cDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhl
+aWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiBy
+Z2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90
+O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2Es
+IEFyaWFsLCBzYW5zLXNlcmlmOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1w
+YWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt
+cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LiA44CB5pys5ZGo5bel5L2c
+5oC757uTPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L2gzPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3Rh
+cnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgbWFyZ2luOiAwLjhlbSAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5z
+JnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90
+OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyI+PGxpIGNs
+YXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw
+IGNpZD0ibjYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu
+czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXIt
+cyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFp
+biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ph43ngrnlt6XkvZzlrozmiJDmg4Xl
+hrU8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lk
+PSJuNyIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuOCIgbWR0eXBlPSJsaXN0X2l0ZW0i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl
+bGF0aXZlOyI+PHAgY2lkPSJuOSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv
+Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl
+cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl
+LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz
+PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ku7vliqEx77yaRzXk
+uLvmlbDmja7kvJjljJbpnIDmsYI8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0
+ZW0iIGNpZD0ibjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0
+eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46
+IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2
+ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7Ij7ku7vliqEy77yaPC9zcGFuPkc15Li75pWw5o2u54mp5paZ5L+h
+5oGv5a+85YWl5a+85Ye65a+85Ye656S65L6L6L2s5rWLYnVn5L+u5aSNPC9wPjwvbGk+PC91bD48
+bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2
+ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7
+IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt
+ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i
+bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5bi46KeE5bel5L2cPC9z
+cGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0
+IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsi
+PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2Nr
+IG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp
+dDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13
+cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i
+bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMe+8
+mjIwMjUtMDgtMTEg5Li75pWw5o2u6YOo5YiG6ZyA5rGC6L2s5rWLCjwvc3Bhbj48L3A+PC9saT48
+bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2
+ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7
+IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k
+LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTLvvJoy
+MDI1LTA4LTEyIGJ1Z+S/ruWkjSDlr7zlhaXmqKHmnb/lop7liqDkuIvmi4nku6Xlj4rlr7zlhaXm
+lbDmja7lrZflhbjmoKHpqozpgJrnlKjmlrnms5UKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0i
+bWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk
+PSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog
+NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv
+bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIwMjUtMDgtMTMg
+PC9zcGFuPueJqeaWmeS/oeaBr+WvvOWFpemXrumimOS/ruWkjTwvcD48L2xpPjxsaSBjbGFzcz0i
+bWQtbGlzdC1pdGVtIiBjaWQ9Im44NCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk
+PSJuODUiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog
+NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv
+bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhNO+8mjIwMjUtMDgtMTQg
+6LCD5LyRIDwvc3Bhbj5idWfkv67lpI08L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIg
+Y2lkPSJuOTEiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjg5IiBtZHR5cGU9
+InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4
+IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+
+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTXvvJo8L3NwYW4+MjAyNS0wOC0xNSDosIPkvJEg
+YnVn5L+u5aSNPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTki
+IG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu
+OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjIwIiBtZHR5cGU9InBhcmFncmFw
+aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy
+ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt
+aW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBt
+ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+5a2Y5Zyo6Zeu6aKY5oiW6ZyA5pSv5oyB5LqL6aG5PC9zcGFuPjwvc3Ryb25nPjwv
+c3Bhbj48L3A+PHAgY2lkPSJuMTAwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i
+bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC41cmVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13
+cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij4yMDI1LTA4LTE1IOeUn+S6p+mXrumimOaOkuafpTxi
+cj48L3A+PC9saT48L29sPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yNCIgbWR0eXBlPSJociIg
+Y2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVv
+dDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBI
+ZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9
+ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsg
+Ym9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMx
+LCAyMzEsIDIzMSk7Ij48L2Rpdj48aDMgY2lkPSJuMjUiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9
+Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg
+YnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7
+IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07
+IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hp
+dGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTog
+JnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2
+ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsiPjxzcGFuIG1k
+LWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4g
+bWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsiPuS6jOOAgeS4i+WRqOW3peS9nOiuoeWIkjwvc3Bhbj48L3N0cm9uZz48L3NwYW4+
+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjI2IiBtZHR5cGU9Imxpc3Qi
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGlu
+Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7
+IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVv
+dDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNl
+cmlmOyBmb250LXNpemU6IDE2cHg7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMjci
+IG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu
+OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjI4IiBtZHR5cGU9InBhcmFncmFw
+aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy
+ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt
+aW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBt
+ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwg
+Y2xhc3M9InVsLWxpc3QiIGNpZD0ibjI5IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMw
+cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4z
+MCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn
+aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzEiIG1kdHlwZT0icGFyYWdy
+YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAu
+NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBt
+ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+6K6h5YiSMe+8mkc15Li75pWw5o2u5LyY5YyW6ZyA5rGC5rWL6K+V57uT5p2fPC9z
+cGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4zMiIgbWR0eXBlPSJs
+aXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9z
+aXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzMiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0i
+bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl
+aWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUt
+c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBs
+YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h
+5YiSMu+8mjwvc3Bhbj5HNeS4u+aVsOaNrjUuMS4154mI5pys6ZyA5rGC6K+E5a6h5ZKM5byA5Y+R
+5pa55qGI57yW5YaZPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu
+MzQiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy
+Z2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjM1IiBtZHR5cGU9InBhcmFn
+cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw
+LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g
+bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh
+biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyI+5YW25LuW5LqL6aG5PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PHAgY2lk
+PSJuMzgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog
+NDsgbWFyZ2luOiAwLjVyZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy
+ZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6A8L3NwYW4+PC9wPjwvbGk+PC9vbD48ZGl2IHRh
+YmluZGV4PSItMSIgY2lkPSJuMzkiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxv
+Y2siIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEp
+OyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1
+b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1z
+ZXJpZjsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJv
+eDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRp
+bmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PHAg
+Y2lkPSJuNDAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu
+czogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246
+IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3Bl
+biBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1
+ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyI+
+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyI+5aSH5rOoPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48c3BhbiBtZC1p
+bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsiPu+8muaXoDwvc3Bhbj48L3A+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRp
+diBzcGVsbGNoZWNrPSJmYWxzZSIgaWQ9Im50ZXMtcGNtYWMtc2lnbmF0dXJlIiBzdHlsZT0iZm9u
+dC1mYW1pbHk65b6u6L2v6ZuF6buRIiBkYXRhLW50ZXMtc2lnbmF0dXJlPSJ0cnVlIj48ZGl2IHN0
+eWxlPSJmb250LXNpemU6MTRweDtwYWRkaW5nOjA7bWFyZ2luOjAiPjxkaXYgc3R5bGU9InBhZGRp
+bmctYm90dG9tOjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrIj48
+ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6
+ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAg
+ICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxl
+PSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsg
+Y29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGlu
+ZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZh
+bWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAw
+MDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6
+IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVv
+dDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAg
+ICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAg
+ICAgICB9CiAgICA8L3N0eWxlPgo8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkx
+KTsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhh
+bnM6IDI7IHdpZG93czogMjsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2lu
+OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p
+bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJl
+czogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5
+bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7
+IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNw
+eDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0
+eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4
+OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlh
+bnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7
+Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBw
+eDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2lt
+U3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czog
+MjsgY2xlYXI6IGJvdGg7Ij48aW1nIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyIgc3JjPSJodHRw
+czovL21haWwtb25saW5lLm5vc2RuLjEyNy5uZXQvd3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjlj
+MTk2Yzg0ZmU1MTk3LnBuZyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6
+IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJp
+YWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBo
+YW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4
+OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAm
+cXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7l
+nLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9r+S7tuWkp+mBkyAxMSDlj7foirHnpZ7l
+pKfljqYgMi0zRjwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog
+MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh
+bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh
+bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7
+IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZx
+dW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJ
+i+acuu+8mjE4NzI2MTI4NDg5PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBw
+YWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhv
+bWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1h
+bDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJn
+aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh
+bWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAx
+OTEpOyI+6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbjwvc3Bhbj48L2Rpdj4KPC9kaXY+Cjwv
+ZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rp
+dj48L2Rpdj48L2JvZHk+PC9odG1sPg==
+
+--=_mailmaster-6a18e4a4_0_18be_=--
diff --git a/media/inbound/2025-08-22_1734_G5开发周报_2025-08-18_--_2025-08-22---49ce6145-7bcc-4682-ba1e-db39a73e3f49.eml b/media/inbound/2025-08-22_1734_G5开发周报_2025-08-18_--_2025-08-22---49ce6145-7bcc-4682-ba1e-db39a73e3f49.eml
new file mode 100644
index 0000000..b241a8c
--- /dev/null
+++ b/media/inbound/2025-08-22_1734_G5开发周报_2025-08-18_--_2025-08-22---49ce6145-7bcc-4682-ba1e-db39a73e3f49.eml
@@ -0,0 +1,290 @@
+Date: Fri, 22 Aug 2025 17:34:29 +0800
+From: yangxuan
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?=
+Message-ID: <57AF9E3A-6169-4B80-8637-183A9E5D5037@witsoft.cn>
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA4LTE4IC0tICAyMDI1LTA4?=
+ =?utf-8?B?LTIy44CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_6784_="
+
+--=_mailmaster-6a18e4a4_0_6784_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4xLjTniYjmnKzmtYvor5XlrozmiJAK5Lu7
+5YqhMu+8mkc15Li75pWw5o2u54mp5paZ5L+h5oGv5a+85YWl5oCn6IO95LyY5YyWCuW4uOinhOW3
+peS9nArml6XluLjkuovliqEx77yaMjAyNS0wOC0xOCDkuLvmlbDmja7mtYvor5VidWfkv67lpI0g
+CuaXpeW4uOS6i+WKoTLvvJoyMDI1LTA4LTE5IOS4u+aVsOaNrumcgOaxgua1i+ivleWujOaIkCAK
+5pel5bi45LqL5YqhM++8mjIwMjUtMDgtMjAg54mp5paZ5L+h5oGv5oCn6IO95LyY5YyWLeWQjOat
+peagoemqjOW8guatpeWFpeW6kwrml6XluLjkuovliqE077yaMjAyNS0wOC0yMSDkvJrorqHmnJ/p
+l7Toh6rmtYsg6IGU6LCDIOi9rOa1iyBidWfkv67lpI0K5pel5bi45LqL5YqhNe+8mjIwMjUtMDgt
+MjIg5Li75pWw5o2u54mp5paZ5a+55aSW5o6l5Y+j5byA5Y+RLOmcgOaxguWIhuaekArlrZjlnKjp
+l67popjmiJbpnIDmlK/mjIHkuovpobkK6YWN5ZCI5o6S55Sf5Lqn5p+l5oCn6IO96Zeu6aKYCuS6
+jOOAgeS4i+WRqOW3peS9nOiuoeWIkgrph43ngrnku7vliqEK6K6h5YiSMe+8mkc15Li75pWw5o2u
+NS4xLjXniYjmnKzlvIDlj5EK5aSH5rOo77ya5pegCkJlc3QgcmVnYXJkcyzmnajovakK5Zyw5Z2A
+77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMgMTEg5Y+36Iqx56We5aSn5Y6m
+IDItM0YK5omL5py677yaMTg3MjYxMjg0ODkK6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbg==
+
+--=_mailmaster-6a18e4a4_0_6784_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxw
+IGNpZD0ibjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQt
+Zm9jdXMiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD
+bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB
+cmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy
+YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXpl
+OiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFu
+ZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHm
+nKzlkajnmoTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+
+PC9wPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIg
+bWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg
+JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl
+dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiBy
+Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzog
+Y29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBu
+b25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsi
+PjwvZGl2PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx
+dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp
+Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRl
+cjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXpl
+OiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246
+IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTog
+cHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u
+ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0
+cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh
+aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDj
+gIHmnKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNz
+PSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZh
+bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv
+dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwLjhlbSAwcHg7IHBhZGRpbmctbGVmdDogMzBw
+eDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6
+IDE2cHg7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0
+ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246
+IHJlbGF0aXZlOyI+PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQt
+YmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBp
+bmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTog
+cHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBj
+bGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25n
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg
+Y2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3
+peS9nOWujOaIkOaDheWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNz
+PSJ1bC1saXN0IiBjaWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBv
+c2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5
+cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4
+OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xh
+c3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu
+ZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdo
+aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5l
+PSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi
+PuS7u+WKoTHvvJpHNeS4u+aVsOaNrjUuMS4054mI5pys5rWL6K+V5a6M5oiQPC9zcGFuPjwvcD48
+L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl
+bGF0aXZlOyI+PHAgY2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs
+b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o
+ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy
+ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFz
+cz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMu+8mjwv
+c3Bhbj5HNeS4u+aVsOaNrueJqeaWmeS/oeaBr+WvvOWFpeaAp+iDveS8mOWMljwvcD48L2xpPjwv
+dWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs
+YXRpdmU7Ij48cCBjaWQ9Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv
+Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl
+cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl
+LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFz
+cz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh
+c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9
+nDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9
+Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVt
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy
+ZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i
+bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw
+cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh
+c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WK
+oTHvvJoyMDI1LTA4LTE4IOS4u+aVsOaNrua1i+ivlWJ1Z+S/ruWkjQo8L3NwYW4+PC9wPjwvbGk+
+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0
+OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy
+YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJt
+ZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEy77ya
+MjAyNS0wOC0xOSDkuLvmlbDmja7pnIDmsYLmtYvor5XlrozmiJAKPC9zcGFuPjwvcD48L2xpPjxs
+aSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZl
+OyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k
+LXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg
+b3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFw
+OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt
+cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIw
+MjUtMDgtMjAgPC9zcGFuPueJqeaWmeS/oeaBr+aAp+iDveS8mOWMli3lkIzmraXmoKHpqozlvILm
+raXlhaXlupM8L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuODQiIG1kdHlw
+ZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7
+IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjg1IiBtZHR5cGU9InBhcmFncmFwaCIgY2xh
+c3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu
+ZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdo
+aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5l
+PSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi
+PuaXpeW4uOS6i+WKoTTvvJoyMDI1LTA4LTIxIOS8muiuoeacn+mXtOiHqua1iyDogZTosIMg6L2s
+5rWLIGJ1Z+S/ruWkjTwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lk
+PSJuOTEiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg
+bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjg5IiBtZHR5cGU9InBh
+cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBw
+eCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNw
+YW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTXvvJo8L3NwYW4+MjAyNS0wOC0yMiDkuLvmlbDmja7n
+ianmlpnlr7nlpJbmjqXlj6PlvIDlj5Es6ZyA5rGC5YiG5p6QPC9wPjwvbGk+PC91bD48bGkgY2xh
+c3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTkiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw
+IGNpZD0ibjIwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh
+bnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z
+aXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWly
+LXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxh
+aW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5a2Y5Zyo6Zeu6aKY5oiW6ZyA5pSv
+5oyB5LqL6aG5PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PHAgY2lkPSJuMTAwIiBtZHR5cGU9
+InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC41
+cmVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij7phY3l
+kIjmjpLnlJ/kuqfmn6XmgKfog73pl67popg8L3A+PC9saT48L29sPjxkaXYgdGFiaW5kZXg9Ii0x
+IiBjaWQ9Im4yNCIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9
+ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVv
+dDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNl
+cmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250
+LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6
+IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBi
+YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48aDMgY2lkPSJuMjUi
+IG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0i
+Zm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90
+OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2Vy
+aWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVh
+ay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9w
+OiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVp
+Z2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJn
+Yig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1z
+ICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWlu
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS6jOOAgeS4i+WRqOW3peS9nOiuoeWI
+kjwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIi
+IGNpZD0ibjI2IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBt
+YXJnaW46IDAuOGVtIDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7
+Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMjciIG1kdHlwZT0ibGlzdF9pdGVtIiBz
+dHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu
+cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv
+dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp
+ZD0ibjI4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6
+IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMg
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ry
+b25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjI5IiBtZHR5cGU9
+Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQt
+ZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZx
+dW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBm
+b250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRk
+aW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1p
+dGVtIiBjaWQ9Im4zMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzEiIG1k
+dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu
+OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+6K6h5YiSMe+8mkc15Li75pWw5o2uNS4xLjXniYjmnKzlvIDl
+j5E8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4zOSIg
+bWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5
+OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hl
+bHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7
+Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2lu
+OiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNv
+bG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48cCBjaWQ9Im40MCIgbWR0eXBlPSJwYXJh
+Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv
+dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj
+YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhl
+bSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog
+cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u
+ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0
+cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh
+aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lpIfm
+s6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJt
+ZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+77ya5peg
+PC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+
+PGJyPjwvZGl2PjxkaXYgc3BlbGxjaGVjaz0iZmFsc2UiIGlkPSJudGVzLXBjbWFjLXNpZ25hdHVy
+ZSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IiBkYXRhLW50ZXMtc2lnbmF0dXJl
+PSJ0cnVlIj48ZGl2IHN0eWxlPSJmb250LXNpemU6MTRweDtwYWRkaW5nOjA7bWFyZ2luOjAiPjxk
+aXYgc3R5bGU9InBhZGRpbmctYm90dG9tOjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4O2Rpc3BsYXk6
+aW5saW5lLWJsb2NrIj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5Em
+cXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAg
+ICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0
+eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZv
+bnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsK
+ICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2
+IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTog
+MTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAg
+ICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJm
+b250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29s
+b3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1o
+ZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8c3BhbiBzdHlsZT0iY29sb3I6IHJn
+YigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNp
+emU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PGRp
+diBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6
+IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12
+YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBi
+b3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4
+OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7
+IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bh
+bj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBw
+eDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2lt
+U3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czog
+MjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog
+MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh
+bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh
+bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48aW1nIHN0eWxlPSJtYXgtd2lkdGg6IHVu
+c2V0OyIgc3JjPSJodHRwczovL21haWwtb25saW5lLm5vc2RuLjEyNy5uZXQvd3pwbW1jL2NlOWY4
+YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3LnBuZyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2lu
+OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p
+bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJl
+czogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5
+bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7
+IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkx
+LCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9r+S7tuWkp+mB
+kyAxMSDlj7foirHnpZ7lpKfljqYgMi0zRjwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46
+IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWls
+eTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz
+OiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHls
+ZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsg
+Zm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEs
+IDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2MTI4NDg5PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9
+Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv
+bnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1s
+aWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxz
+cGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGlu
+ZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjog
+cmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbjwvc3Bhbj48
+L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+
+PCEtLfCfmIAtLT48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1sPg==
+
+--=_mailmaster-6a18e4a4_0_6784_=--
diff --git a/media/inbound/2025-08-29_1700_G5开发周报_2025-08-25_--_2025-08-29---16206e32-fcbd-4a9f-8879-0eb77ac8b6a9.eml b/media/inbound/2025-08-29_1700_G5开发周报_2025-08-25_--_2025-08-29---16206e32-fcbd-4a9f-8879-0eb77ac8b6a9.eml
new file mode 100644
index 0000000..fe10bb0
--- /dev/null
+++ b/media/inbound/2025-08-29_1700_G5开发周报_2025-08-25_--_2025-08-29---16206e32-fcbd-4a9f-8879-0eb77ac8b6a9.eml
@@ -0,0 +1,283 @@
+Date: Fri, 29 Aug 2025 17:00:01 +0800
+From: yangxuan
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?=
+Message-ID:
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA4LTI1IC0tICAyMDI1LTA4?=
+ =?utf-8?B?LTI544CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_4ae1_="
+
+--=_mailmaster-6a18e4a4_0_4ae1_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4xLjXniYjmnKzlj5HluIMK5Lu75YqhMu+8
+mkc15Li75pWw5o2u54mp5paZ5L+h5oGv5a+85YWl5oCn6IO95LyY5YyW5a6M5oiQCuW4uOinhOW3
+peS9nArml6XluLjkuovliqEx77yaMjAyNS0wOC0yNSDlr7nlpJbmjqXlj6PlvIDlj5Es5a+85YWl
+5oCn6IO95LyY5YyWIArml6XluLjkuovliqEy77yaMjAyNS0wOC0yNiDkuLvmlbDmja7pnZ7mjqXl
+j6PpnIDmsYLlhajpg6jovazmtYsgCuaXpeW4uOS6i+WKoTPvvJoyMDI1LTA4LTI3IOS4u+aVsOaN
+ruWvueWkluaOpeWPo+W8gOWPkQrml6XluLjkuovliqE077yaMjAyNS0wOC0yOCDkuLvmlbDmja7n
+ianmlpnlr7zlhaXmtYvor5XlrozmiJAK5pel5bi45LqL5YqhNe+8mjIwMjUtMDgtMjkg5Li75pWw
+5o2uNS4xLjXmtYvor5Xnu5PmnZ8g5Y+R54mI5pSv5oyBCuWtmOWcqOmXrumimOaIlumcgOaUr+aM
+geS6i+mhuQrkuozjgIHkuIvlkajlt6XkvZzorqHliJIK6YeN54K55Lu75YqhCuiuoeWIkjHvvJpH
+NeS4u+aVsOaNrjUuMS4254mI5pys5byA5Y+RCuWkh+azqO+8muaXoApCZXN0IHJlZ2FyZHMs5p2o
+6L2pCuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTIDExIOWPt+iK
+seelnuWkp+WOpiAyLTNGCuaJi+acuu+8mjE4NzI2MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdp
+dHNvZnQuY24=
+
+--=_mailmaster-6a18e4a4_0_4ae1_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2
+IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAgY2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs
+YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv
+dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj
+YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhl
+bSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog
+cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu
+IiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiu
+oeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIi
+IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls
+eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI
+ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp
+emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4
+OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp
+bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j
+b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVh
+ZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6
+ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs
+dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2
+b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJn
+aW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBj
+dXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUx
+KTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0
+cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1k
+dHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx
+dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp
+Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAu
+OGVtIDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiBy
+Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt
+IiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9
+InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4
+IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+
+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25n
+Pjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlz
+dCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw
+cHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJt
+ZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0i
+bjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg
+bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog
+cmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2uNS4xLjXniYjm
+nKzlj5HluIM8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEw
+IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp
+bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3Jh
+cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41
+cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k
+LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7Ij7ku7vliqEy77yaPC9zcGFuPkc15Li75pWw5o2u54mp5paZ5L+h5oGv5a+85YWl5oCn
+6IO95LyY5YyW5a6M5oiQPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lk
+PSJuMTIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg
+bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBh
+cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBw
+eCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNw
+YW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48
+c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyI+5bi46KeE5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9s
+aT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0i
+LSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxl
+ZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBj
+aWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94
+OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0i
+cGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHgg
+MHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48
+c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMe+8mjIwMjUtMDgtMjUg5a+55aSW5o6l5Y+j5byA
+5Y+RLOWvvOWFpeaAp+iDveS8mOWMlgo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0
+LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIg
+bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn
+aW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh
+dGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEy77yaMjAyNS0wOC0yNiDkuLvmlbDm
+ja7pnZ7mjqXlj6PpnIDmsYLlhajpg6jovazmtYsKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0i
+bWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk
+PSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog
+NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv
+bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIwMjUtMDgtMjcg
+5Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQt
+bGlzdC1pdGVtIiBjaWQ9Im44NCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJu
+ODUiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg
+bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog
+cmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhNO+8mjIwMjUtMDgtMjgg5Li7
+5pWw5o2u54mp5paZ5a+85YWl5rWL6K+V5a6M5oiQPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0i
+bWQtbGlzdC1pdGVtIiBjaWQ9Im45MSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk
+PSJuODkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog
+NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv
+bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhNe+8mjwvc3Bhbj4yMDI1
+LTA4LTI5IOS4u+aVsOaNrjUuMS415rWL6K+V57uT5p2fIOWPkeeJiOaUr+aMgTwvcD48L2xpPjwv
+dWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE5IiBtZHR5cGU9Imxpc3RfaXRlbSIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs
+YXRpdmU7Ij48cCBjaWQ9Im4yMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv
+Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl
+cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl
+LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFz
+cz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh
+c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWtmOWcqOmXrumi
+mOaIlumcgOaUr+aMgeS6i+mhuTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjxwIGNpZD0ibjEw
+MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBt
+YXJnaW46IDAuNXJlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PC9wPjwvbGk+PC9vbD48aDMgY2lkPSJuMjUiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9
+Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4g
+U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm
+cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5z
+OiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAx
+cmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7
+IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1k
+LWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4g
+bWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsiPuS6jOOAgeS4i+WRqOW3peS9nOiuoeWIkjwvc3Bhbj48L3N0cm9uZz48L3NwYW4+
+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjI2IiBtZHR5cGU9Imxpc3Qi
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAuOGVtIDBweDsgcGFkZGlu
+Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRl
+bSIgY2lkPSJuMjciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEs
+IDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2Fu
+cyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNh
+bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu
+OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjI4IiBtZHR5cGU9InBhcmFncmFw
+aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy
+ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt
+aW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBt
+ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwg
+Y2xhc3M9InVsLWxpc3QiIGNpZD0ibjI5IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5
+bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMm
+cXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7
+LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4zMCIgbWR0eXBlPSJs
+aXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9z
+aXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0i
+bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl
+aWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUt
+c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBs
+YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h
+5YiSMe+8mkc15Li75pWw5o2uNS4xLjbniYjmnKzlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PC91bD48
+L29sPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhy
+IG1kLWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDss
+ICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2
+ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjog
+cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6
+IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHgg
+bm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7
+Ij48L2Rpdj48cCBjaWQ9Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv
+Y2sgbWQtcCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90
+O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2Es
+IEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDog
+aW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUt
+d3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNp
+emU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFu
+PjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+77ya5pegPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0
+eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGJyPjwvZGl2PjxkaXYgc3BlbGxjaGVj
+az0iZmFsc2UiIGlkPSJudGVzLXBjbWFjLXNpZ25hdHVyZSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDl
+vq7ova/pm4Xpu5E7IiBkYXRhLW50ZXMtc2lnbmF0dXJlPSJ0cnVlIj48ZGl2IHN0eWxlPSJmb250
+LXNpemU6MTRweDtwYWRkaW5nOjA7bWFyZ2luOjAiPjxkaXYgc3R5bGU9InBhZGRpbmctYm90dG9t
+OjEwcHg7bWFyZ2luLWJvdHRvbToxMHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrIj48ZGl2IHN0eWxl
+PSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsg
+Y29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGlu
+ZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZh
+bWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAw
+MDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6
+IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVv
+dDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAg
+ICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAg
+ICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/p
+m4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+
+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAg
+ICA8L3N0eWxlPgo8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1m
+YW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdp
+ZG93czogMjsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBh
+ZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9t
+YSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFs
+OyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdp
+bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFt
+aWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6
+IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJn
+aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh
+bWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1
+cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48
+ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGlu
+ZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250
+LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6
+IGJvdGg7Ij48aW1nIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyIgc3JjPSJodHRwczovL21haWwt
+b25saW5lLm5vc2RuLjEyNy5uZXQvd3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1
+MTk3LnBuZyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9y
+ZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVp
+dGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3
+aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n
+OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNy
+b3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrk
+uK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9r+S7tuWkp+mBkyAxMSDlj7foirHnpZ7lpKfljqYgMi0z
+Rjwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3Jk
+ZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0
+aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdp
+ZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6
+IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jv
+c29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4
+NzI2MTI4NDg5PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw
+cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFs
+LCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFu
+czogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsg
+cGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1
+b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu
+566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbjwvc3Bhbj48L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rp
+dj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rpdj48L2Rpdj48
+L2JvZHk+PC9odG1sPg==
+
+--=_mailmaster-6a18e4a4_0_4ae1_=--
diff --git a/media/inbound/2025-09-05_1700_G5开发周报_2025-09-01_--_2025-09-05---73f9f61c-c29a-4430-946e-74c9d5710ea2.eml b/media/inbound/2025-09-05_1700_G5开发周报_2025-09-01_--_2025-09-05---73f9f61c-c29a-4430-946e-74c9d5710ea2.eml
new file mode 100644
index 0000000..c7269f2
--- /dev/null
+++ b/media/inbound/2025-09-05_1700_G5开发周报_2025-09-01_--_2025-09-05---73f9f61c-c29a-4430-946e-74c9d5710ea2.eml
@@ -0,0 +1,282 @@
+Date: Fri, 5 Sep 2025 17:00:02 +0800
+From: yangxuan
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?=
+Message-ID:
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA5LTAxIC0tICAyMDI1LTA5?=
+ =?utf-8?B?LTA144CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_3d6c_="
+
+--=_mailmaster-6a18e4a4_0_3d6c_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4xLjbniYjmnKzlvIDlj5EK5Lu75YqhMu+8
+mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j56Gu6K6k5ZKM5byA5Y+RCuW4uOinhOW3peS9nArml6Xl
+uLjkuovliqEx77yaMjAyNS0wOS0wMSDkuLvmlbDmja7pnIDmsYLor4TlrqHlkozmjqXlj6PlvIDl
+j5EgCuaXpeW4uOS6i+WKoTLvvJoyMDI1LTA5LTAyIOeJqeaWmea4heWNleeUn+aIkOS8mOWMluWS
+jOWvvOWFpSAK5pel5bi45LqL5YqhM++8mjIwMjUtMDktMDMg54mp5paZ5riF5Y2V55Sf5oiQ5LyY
+5YyW5rWL6K+V5a6M5oiQCuaXpeW4uOS6i+WKoTTvvJoyMDI1LTA5LTA0IOS4u+aVsOaNrumcgOax
+gui9rOa1i+WSjGJ1Z+S/ruWkjQrml6XluLjkuovliqE177yaMjAyNS0wOS0wNSDmtYvor5VidWfk
+v67lpI3kuI7mjqXlj6PlvIDlj5EK5a2Y5Zyo6Zeu6aKY5oiW6ZyA5pSv5oyB5LqL6aG5CuS6jOOA
+geS4i+WRqOW3peS9nOiuoeWIkgrph43ngrnku7vliqEK6K6h5YiSMe+8mkc15Li75pWw5o2u5a+5
+5aSW5o6l5Y+j5byA5Y+RCuWkh+azqO+8muaXoApCZXN0IHJlZ2FyZHMs5p2o6L2pCuWcsOWdgO+8
+muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTIDExIOWPt+iKseelnuWkp+WOpiAy
+LTNGCuaJi+acuu+8mjE4NzI2MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24=
+
+--=_mailmaster-6a18e4a4_0_3d6c_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2
+IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAgY2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs
+YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv
+dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj
+YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhl
+bSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog
+cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu
+IiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiu
+oeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIi
+IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls
+eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI
+ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp
+emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4
+OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp
+bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j
+b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVh
+ZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6
+ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs
+dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2
+b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJn
+aW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBj
+dXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUx
+KTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0
+cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1k
+dHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx
+dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp
+Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDAu
+OGVtIDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiBy
+Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt
+IiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9
+InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4
+IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+
+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25n
+Pjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlz
+dCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw
+cHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJt
+ZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0i
+bjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg
+bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog
+cmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2uNS4xLjbniYjm
+nKzlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEw
+IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp
+bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3Jh
+cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41
+cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k
+LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7Ij7ku7vliqEy77yaPC9zcGFuPkc15Li75pWw5o2u5a+55aSW5o6l5Y+j56Gu6K6k5ZKM
+5byA5Y+RPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1k
+dHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw
+cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIg
+Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg
+bGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07
+IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5s
+aW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1p
+bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+5bi46KeE5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xh
+c3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7
+IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIg
+bWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46
+IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBo
+IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94
+OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJl
+bTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1p
+bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+5pel5bi45LqL5YqhMe+8mjIwMjUtMDktMDEg5Li75pWw5o2u6ZyA5rGC6K+E5a6h5ZKM
+5o6l5Y+j5byA5Y+RCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lk
+PSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg
+bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBh
+cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBw
+eCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNw
+YW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTLvvJoyMDI1LTA5LTAyIOeJqeaWmea4heWNleeUn+aI
+kOS8mOWMluWSjOWvvOWFpQo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0i
+IGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBl
+PSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6
+IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBw
+eCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsi
+PjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEz77yaMjAyNS0wOS0wMyDnianmlpnmuIXljZXn
+lJ/miJDkvJjljJbmtYvor5XlrozmiJA8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0
+LWl0ZW0iIGNpZD0ibjg0IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im44NSIg
+bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn
+aW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh
+dGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE077yaMjAyNS0wOS0wNCDkuLvmlbDm
+ja7pnIDmsYLovazmtYvlkoxidWfkv67lpI08L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1s
+aXN0LWl0ZW0iIGNpZD0ibjkxIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6
+IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im44
+OSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBt
+YXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy
+ZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE177yaPC9zcGFuPjIwMjUtMDkt
+MDUg5rWL6K+VYnVn5L+u5aSN5LiO5o6l5Y+j5byA5Y+RPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9
+Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTkiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp
+ZD0ibjIwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6
+IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMg
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5a2Y5Zyo6Zeu6aKY5oiW6ZyA5pSv5oyB
+5LqL6aG5PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PHAgY2lkPSJuMTAwIiBtZHR5cGU9InBh
+cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC41cmVt
+IDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48L3A+PC9s
+aT48L29sPjxoMyBjaWQ9Im4yNSIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0ibWQtZW5kLWJsb2Nr
+IG1kLWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm
+cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0
+aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0
+ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7IGZvbnQtc2l6
+ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9u
+OiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hpdGUtc3BhY2U6
+IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJv
+bmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxz
+dHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBs
+YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LqM
+44CB5LiL5ZGo5bel5L2c6K6h5YiSPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L2gzPjxvbCBjbGFz
+cz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuMjYiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMC44ZW0gMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7
+IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4yNyIg
+bWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZh
+bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv
+dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9u
+dC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMjgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt
+ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo
+dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh
+Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u
+ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0
+cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh
+aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ph43n
+grnku7vliqE8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlz
+dCIgY2lkPSJuMjkiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iY29sb3I6IHJn
+Yig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7
+Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwg
+QXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+
+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjMwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48cCBjaWQ9Im4zMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0
+OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy
+YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJt
+ZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7orqHliJIx77yaRzXkuLvm
+lbDmja7lr7nlpJbmjqXlj6PlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxkaXYgdGFi
+aW5kZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9j
+ayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy
+IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs
+LCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwg
+NTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94
+OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGlu
+ZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48cCBj
+aWQ9Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5
+bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMm
+cXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5z
+LXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3Jw
+aGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp
+b246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48
+c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi
+PjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxzcGFuIG1kLWlu
+bGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyI+77ya5pegPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZh
+bWlseTog5b6u6L2v6ZuF6buROyI+PGJyPjwvZGl2PjxkaXYgc3BlbGxjaGVjaz0iZmFsc2UiIGlk
+PSJudGVzLXBjbWFjLXNpZ25hdHVyZSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7
+IiBkYXRhLW50ZXMtc2lnbmF0dXJlPSJ0cnVlIj48ZGl2IHN0eWxlPSJmb250LXNpemU6MTRweDtw
+YWRkaW5nOjA7bWFyZ2luOjAiPjxkaXYgc3R5bGU9InBhZGRpbmctYm90dG9tOjEwcHg7bWFyZ2lu
+LWJvdHRvbToxMHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrIj48ZGl2IHN0eWxlPSJmb250LWZhbWls
+eTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAw
+MCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEu
+NjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvl
+vq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8
+c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAg
+ICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xp
+u5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAg
+ICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8
+L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7
+IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9u
+dHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8
+c3BhbiBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNy
+b3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJl
+c3QgcmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg
+Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNU
+SGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAy
+OyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRk
+aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtN
+aWNyb3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5
+MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFk
+ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21h
+LCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7
+IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJt
+YXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250
+LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGln
+YXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48aW1n
+IHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyIgc3JjPSJodHRwczovL21haWwtb25saW5lLm5vc2Ru
+LjEyNy5uZXQvd3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3LnBuZyI+PC9k
+aXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91
+dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsg
+Zm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNs
+ZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRl
+cjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkm
+cXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6
+rOi9r+S7tuiwt+i9r+S7tuWkp+mBkyAxMSDlj7foirHnpZ7lpKfljqYgMi0zRjwvc3Bhbj48L2Rp
+dj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0
+bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBm
+b250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xl
+YXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy
+OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZx
+dW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2MTI4NDg5PC9z
+cGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjog
+MHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBT
+aW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dz
+OiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4
+OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0
+IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x77yaeWFuZ3h1
+YW5Ad2l0c29mdC5jbjwvc3Bhbj48L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9k
+aXY+PC9kaXY+PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1s
+Pg==
+
+--=_mailmaster-6a18e4a4_0_3d6c_=--
diff --git a/media/inbound/2025-09-11_1700_G5开发周报_2025-09-08_--_2025-09-11---ff518cc1-4b29-4bcf-a84c-03f4c618901d.eml b/media/inbound/2025-09-11_1700_G5开发周报_2025-09-08_--_2025-09-11---ff518cc1-4b29-4bcf-a84c-03f4c618901d.eml
new file mode 100644
index 0000000..edb7e4f
--- /dev/null
+++ b/media/inbound/2025-09-11_1700_G5开发周报_2025-09-08_--_2025-09-11---ff518cc1-4b29-4bcf-a84c-03f4c618901d.eml
@@ -0,0 +1,300 @@
+Date: Thu, 11 Sep 2025 17:00:10 +0800
+From: yangxuan
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?=
+Message-ID: <774107C3-CD95-49EF-9EE6-B0A764AEC02E@witsoft.cn>
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA5LTA4IC0tICAyMDI1LTA5?=
+ =?utf-8?B?LTEx44CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_2cd6_="
+
+--=_mailmaster-6a18e4a4_0_2cd6_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4xLjbniYjmnKzlvIDlj5EK5Lu75YqhMu+8
+mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j56Gu6K6k5ZKM5byA5Y+RCuW4uOinhOW3peS9nArml6Xl
+uLjkuovliqEx77yaMjAyNS0wOS0wOCBidWfkv67lpI0g5o6l5Y+j5byA5Y+RCuaXpeW4uOS6i+WK
+oTLvvJoyMDI1LTA5LTA5IOS4u+aVsOaNruWvueWkluaOpeWPo+W8gOWPkSAK5pel5bi45LqL5Yqh
+M++8mjIwMjUtMDktMTAg5Li75pWw5o2u5a+55aSW5o6l5Y+j5Lit54mp5paZ5L+h5oGv5paw5aKe
+5o6l5Y+j5pW05L2T5byA5Y+RCuaXpeW4uOS6i+WKoTTvvJoyMDI1LTA5LTExIOS4u+aVsOaNrueJ
+qeaWmeS/oeaBr+WvueWkluaOpeWPo+S8mOWMluWSjGJ1Z+S/ruWkjQrlrZjlnKjpl67popjmiJbp
+nIDmlK/mjIHkuovpobkKMjAyNS0wOS0wOCDlupXluqfmnI3liqHlvILluLgoNmgpIOWvvOiHtOW8
+gOWPkei/m+W6puaOqOi/nyDpnIDopoHljovnvKnmtYvor5Xml7bpl7QK5LqM44CB5LiL5ZGo5bel
+5L2c6K6h5YiSCumHjeeCueS7u+WKoQrorqHliJIx77yaRzXkuLvmlbDmja7lr7nlpJbmjqXlj6Pl
+vIDlj5EK5aSH5rOo77ya5pegCkJlc3QgcmVnYXJkcyzmnajovakK5Zyw5Z2A77ya5Lit5Zu9wrfl
+jZfkuqzova/ku7bosLfova/ku7blpKfpgZMgMTEg5Y+36Iqx56We5aSn5Y6mIDItM0YK5omL5py6
+77yaMTg3MjYxMjg0ODkK6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbg==
+
+--=_mailmaster-6a18e4a4_0_2cd6_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxw
+IGNpZD0ibjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQt
+Zm9jdXMiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD
+bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB
+cmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy
+YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXpl
+OiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFu
+ZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHm
+nKzlkajnmoTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+
+PC9wPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIg
+bWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg
+JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl
+dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiBy
+Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzog
+Y29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBu
+b25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsi
+PjwvZGl2PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx
+dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp
+Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRl
+cjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXpl
+OiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246
+IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTog
+cHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u
+ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0
+cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh
+aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDj
+gIHmnKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNz
+PSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZh
+bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv
+dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9z
+aXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7
+Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0
+OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy
+YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0i
+bWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9
+Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWu
+jOaIkOaDheWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1s
+aXN0IiBjaWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxp
+c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1k
+LWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWln
+aHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw
+YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp
+biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WK
+oTHvvJpHNeS4u+aVsOaNrjUuMS4254mI5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFz
+cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg
+Y2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu
+czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMu+8mjwvc3Bhbj5HNeS4u+aV
+sOaNruWvueWkluaOpeWPo+ehruiupOWSjOW8gOWPkTwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJt
+ZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9
+Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0
+OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9nDwvc3Bhbj48L3N0cm9u
+Zz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJs
+aXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46
+IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9
+Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp
+ZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6
+IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI1LTA5LTA4
+IGJ1Z+S/ruWkjSDmjqXlj6PlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxvbCBjbGFz
+cz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1m
+YW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1
+b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBv
+c2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4
+OyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9
+Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1s
+ZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIg
+Y2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9
+InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4
+IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+
+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTLvvJoyMDI1LTA5LTA5IOS4u+aVsOaNruWvueWk
+luaOpeWPo+W8gOWPkQo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNp
+ZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJw
+YXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAw
+cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz
+cGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6
+IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEz77yaMjAyNS0wOS0xMCDkuLvmlbDmja7lr7nlpJbm
+jqXlj6PkuK3nianmlpnkv6Hmga/mlrDlop7mjqXlj6PmlbTkvZPlvIDlj5E8L3NwYW4+PC9wPjwv
+bGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjg0IiBtZHR5cGU9Imxpc3RfaXRlbSIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs
+YXRpdmU7Ij48cCBjaWQ9Im44NSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv
+Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl
+cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl
+LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz
+PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE0
+77yaMjAyNS0wOS0xMSDkuLvmlbDmja7nianmlpnkv6Hmga/lr7nlpJbmjqXlj6PkvJjljJblkoxi
+dWfkv67lpI08L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjkx
+IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp
+bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im44OSIgbWR0eXBlPSJwYXJhZ3Jh
+cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41
+cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxicj48L3A+
+PC9saT48L3VsPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xOSIgbWR0eXBlPSJsaXN0
+X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt
+ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo
+dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh
+Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u
+ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0
+cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh
+aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lrZjl
+nKjpl67popjmiJbpnIDmlK/mjIHkuovpobk8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48cCBj
+aWQ9Im4xMDAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu
+czogNDsgbWFyZ2luOiAwLjVyZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjwvcD48L2xpPjxvbCBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBsb3dlci1h
+bHBoYTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xOSIgbWR0eXBlPSJsaXN0X2l0
+ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246
+IHJlbGF0aXZlOyI+PHAgY2lkPSJuMjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5k
+LWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDog
+aW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6
+IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIg
+Y2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4g
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3giPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNs
+YXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij4yMDI1LTA5LTA4
+IOW6leW6p+acjeWKoeW8guW4uCg2aCkg5a+86Ie05byA5Y+R6L+b5bqm5o6o6L+fIOmcgOimgeWO
+i+e8qea1i+ivleaXtumXtDwvc3Bhbj48L3NwYW4+PC9zcGFuPjwvcD48L2xpPjwvb2w+PC9vbD48
+aDMgY2lkPSJuMjUiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFk
+aW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xl
+YXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJp
+YWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9p
+ZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVt
+OyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRp
+dmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFz
+cz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh
+c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS6jOOAgeS4i+WR
+qOW3peS9nOiuoeWIkjwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxp
+c3QiIHN0YXJ0PSIiIGNpZD0ibjI2IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTog
+5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGlu
+Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRl
+bSIgY2lkPSJuMjciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEs
+IDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2Fu
+cyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNh
+bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu
+OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjI4IiBtZHR5cGU9InBhcmFncmFw
+aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy
+ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt
+aW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBt
+ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwg
+Y2xhc3M9InVsLWxpc3QiIGNpZD0ibjI5IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5
+bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMm
+cXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7
+LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4zMCIgbWR0eXBlPSJs
+aXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9z
+aXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0i
+bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl
+aWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUt
+c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBs
+YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h
+5YiSMe+8mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+RPC9zcGFuPjwvcD48L2xpPjwvdWw+
+PC9vbD48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMzkiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1o
+ciBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7
+LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVs
+dmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6
+IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5n
+OiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4
+IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEp
+OyI+PC9kaXY+PHAgY2lkPSJuNDAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs
+b2NrIG1kLXAiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVv
+dDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNh
+LCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6
+IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJl
+LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1z
+aXplOiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6
+IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5aSH5rOoPC9zcGFuPjwvc3Ryb25nPjwvc3Bh
+bj48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPu+8muaXoDwvc3Bhbj48L3A+PC9kaXY+PGRpdiBz
+dHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxicj48L2Rpdj48ZGl2IHNwZWxsY2hl
+Y2s9ImZhbHNlIiBpZD0ibnRlcy1wY21hYy1zaWduYXR1cmUiIHN0eWxlPSJmb250LWZhbWlseTog
+5b6u6L2v6ZuF6buROyIgZGF0YS1udGVzLXNpZ25hdHVyZT0idHJ1ZSI+PGRpdiBzdHlsZT0iZm9u
+dC1zaXplOjE0cHg7cGFkZGluZzowO21hcmdpbjowIj48ZGl2IHN0eWxlPSJwYWRkaW5nLWJvdHRv
+bToxMHB4O21hcmdpbi1ib3R0b206MTBweDtkaXNwbGF5OmlubGluZS1ibG9jayI+PGRpdiBzdHls
+ZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7
+IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxp
+bmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1m
+YW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMw
+MDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0
+OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1
+b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgog
+ICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAg
+ICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v
+6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxl
+PgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQog
+ICAgPC9zdHlsZT4KPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7IGZvbnQt
+ZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXplOiAxM3B4OyBvcnBoYW5zOiAyOyB3
+aWRvd3M6IDI7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBw
+YWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhv
+bWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1h
+bDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJn
+aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh
+bWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBmb250LXNpemU6IDEzcHg7IGNvbG9y
+OiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFy
+Z2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1m
+YW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0
+dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PC9kaXY+
+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp
+bmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9u
+dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFy
+OiBib3RoOyI+PGltZyBzdHlsZT0ibWF4LXdpZHRoOiB1bnNldDsiIHNyYz0iaHR0cHM6Ly9tYWls
+LW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZiZTU1MzI5YzE5NmM4NGZl
+NTE5Ny5wbmciPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJv
+cmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhl
+aXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsg
+d2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu
+ZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWlj
+cm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya
+5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMgMTEg5Y+36Iqx56We5aSn5Y6mIDIt
+M0Y8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9y
+ZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVp
+dGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3
+aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n
+OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNy
+b3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJox
+ODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog
+MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh
+bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh
+bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7
+IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZx
+dW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumC
+rueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9k
+aXY+CjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwhLS3wn5iALS0+PC9kaXY+PC9kaXY+
+PC9ib2R5PjwvaHRtbD4=
+
+--=_mailmaster-6a18e4a4_0_2cd6_=--
diff --git a/media/inbound/2025-09-20_1700_G5开发周报_2025-09-15_--_2025-09-20---1a3e79d4-76d0-4b14-ab6d-17b21424eb17.eml b/media/inbound/2025-09-20_1700_G5开发周报_2025-09-15_--_2025-09-20---1a3e79d4-76d0-4b14-ab6d-17b21424eb17.eml
new file mode 100644
index 0000000..4270971
--- /dev/null
+++ b/media/inbound/2025-09-20_1700_G5开发周报_2025-09-15_--_2025-09-20---1a3e79d4-76d0-4b14-ab6d-17b21424eb17.eml
@@ -0,0 +1,386 @@
+Date: Sat, 20 Sep 2025 17:00:05 +0800
+From: yangxuan
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?=
+Message-ID:
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA5LTE1IC0tICAyMDI1LTA5?=
+ =?utf-8?B?LTIw44CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_72ae_="
+
+--=_mailmaster-6a18e4a4_0_72ae_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjDniYjmnKzlvIDlj5EK5Lu75YqhMu+8
+mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+R5ZKM5rWL6K+VCuW4uOinhOW3peS9nArml6Xl
+uLjkuovliqEx77yaMjAyNS0wOS0xNSDkuLvmlbDmja7lr7nlpJbmjqXlj6PlvIDlj5Et5Lqn5ZOB
+5a6i5oi35Lu355uu6KGoCuaXpeW4uOS6i+WKoTLvvJoyMDI1LTA5LTE2IOaWsOaWueahiOaUuemA
+oOaJgOacieafpeivouaOpeWPoyDnianmlpnmjqXlj6PlvIDlj5HovazmtYsgCuaXpeW4uOS6i+WK
+oTPvvJoyMDI1LTA5LTE3IArjgJDku5PlupPmqKHlnovjgJHmlrDlop4v57yW6L6RIOmAieaLqeW3
+peW6j+aXtu+8jOaUr+aMgeaMieW3peW6j+S7o+eggeWSjOW3peW6j+WQjeensOi/m+ihjOaQnOe0
+oiAK44CQ54mp5paZ5L+h5oGv44CR54mp5paZ5L+h5oGv5paw5aKe44CB57yW6L6R6aG16Z2i77yM
+44CQ5pel5Lqn6IO944CB5pyJ5pWI5pyfKOWkqSnjgIHlpI3pqozmnJ8o5aSpKeOAkeWtl+auteWJ
+jeerr+WinuWKoOmVv+W6pue6puadn++8myAK44CQ54mp5paZ5L+h5oGv44CR54mp5paZ5L+h5oGv
+55qE5a+85Ye65pe25p+l6K+iIArnianmlpnkv6Hmga/kuI7ljZXkvY3mjaLnrpflkIzmraXlvIDl
+j5HmlrnmoYjorr7orqHor4TlrqEK5pel5bi45LqL5YqhNO+8mjIwMjUtMDktMTgg54mp5paZ5L+h
+5oGv5ZCM5q2l55Sf5oiQ5Y2V5L2N6L2s5o2i6ZyA5rGC5byA5Y+R6Ieq5rWL6L2s5rWLIOWklumD
+qOaOpeWPo2J1Z+S/ruWkjSAK5pel5bi45LqL5YqhNO+8mjIwMjUtMDktMTkgCuS4u+aVsOaNruWv
+ueWkluaOpeWPo+e7n+S4gOaWh+aho+e7n+S4gOe6puadnyAK57uG5YyW5a+55bqU5o6l5Y+j5paH
+5qGjIArnu5/kuIDlpITnkIbmraPliJkg5Yy65YiG5LiOd2Vi5ZKM5a+85YWlIArovazmtYtidWfk
+v67lpI0K5pel5bi45LqL5YqhNO+8mjIwMjUtMDktMjAgCuS4u+aVsOaNrueJqeaWmeaOpeWPo+a1
+i+ivleWujOaIkCwgCuWuouaIt+aOpeWPo+aWh+ahoyzoh6rmtYss6L2s5rWLIArkvpvlupTllYbm
+jqXlj6PmlofmoaMs6Ieq5rWLLOi9rOa1iwrkuozjgIHkuIvlkajlt6XkvZzorqHliJIK6YeN54K5
+5Lu75YqhCuiuoeWIkjHvvJpHNeS4u+aVsOaNruWvueWkluaOpeWPo+W8gOWPkQrorqHliJIyOiA1
+LjIuMOeJiOacrOa1i+ivleWujOaIkArlpIfms6jvvJrml6AKQmVzdCByZWdhcmRzLOadqOi9qQrl
+nLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9r+S7tuWkp+mBkyAxMSDlj7foirHnpZ7l
+pKfljqYgMi0zRgrmiYvmnLrvvJoxODcyNjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0
+LmNu
+
+--=_mailmaster-6a18e4a4_0_72ae_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxw
+IGNpZD0ibjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQt
+Zm9jdXMiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD
+bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB
+cmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy
+YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXpl
+OiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFu
+ZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHm
+nKzlkajnmoTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+
+PC9wPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIg
+bWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg
+JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl
+dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiBy
+Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzog
+Y29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBu
+b25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsi
+PjwvZGl2PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx
+dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp
+Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRl
+cjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXpl
+OiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246
+IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTog
+cHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u
+ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0
+cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh
+aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDj
+gIHmnKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNz
+PSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZh
+bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv
+dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9z
+aXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7
+Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0
+OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy
+YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0i
+bWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9
+Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWu
+jOaIkOaDheWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1s
+aXN0IiBjaWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxp
+c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1k
+LWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWln
+aHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw
+YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp
+biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WK
+oTHvvJpHNeS4u+aVsOaNrjUuMi4w54mI5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFz
+cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg
+Y2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu
+czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMu+8mjwvc3Bhbj5HNeS4u+aV
+sOaNruWvueWkluaOpeWPo+W8gOWPkeWSjOa1i+ivlTwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJt
+ZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9
+Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0
+OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9nDwvc3Bhbj48L3N0cm9u
+Zz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJs
+aXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46
+IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9
+Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp
+ZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6
+IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI1LTA5LTE1
+IOS4u+aVsOaNruWvueWkluaOpeWPo+W8gOWPkS3kuqflk4HlrqLmiLfku7fnm67ooag8L3NwYW4+
+PC9wPjwvbGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIg
+bWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7
+IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1s
+aXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZh
+bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv
+dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29s
+b3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7
+Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxh
+dGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9j
+ayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVy
+aXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUt
+d3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9
+Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTLv
+vJoyMDI1LTA5LTE2IOaWsOaWueahiOaUuemAoOaJgOacieafpeivouaOpeWPoyDnianmlpnmjqXl
+j6PlvIDlj5HovazmtYsKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBj
+aWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94
+OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0i
+cGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHgg
+MHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48
+c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIwMjUtMDktMTcgPC9zcGFuPjwvcD48L2xp
+Pjx1bCBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7Ij48bGkgY2xhc3M9Im1kLWxpc3Qt
+aXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBt
+ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp
+bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPuOAkOS7k+W6k+aooeWei+OAkeaWsOWini/nvJbovpEg6YCJ
+5oup5bel5bqP5pe277yM5pSv5oyB5oyJ5bel5bqP5Luj56CB5ZKM5bel5bqP5ZCN56ew6L+b6KGM
+5pCc57SiCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTci
+IG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu
+OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFw
+aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy
+ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt
+aW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsiPuOAkOeJqeaWmeS/oeaBr+OAkeeJqeaWmeS/oeaBr+aWsOWinuOAgee8lui+kemhtemd
+ou+8jOOAkOaXpeS6p+iDveOAgeacieaViOacnyjlpKkp44CB5aSN6aqM5pyfKOWkqSnjgJHlrZfm
+rrXliY3nq6/lop7liqDplb/luqbnuqbmnZ/vvJsKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0i
+bWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk
+PSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog
+NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv
+bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+44CQ54mp5paZ5L+h5oGv44CR54mp5paZ5L+h
+5oGv55qE5a+85Ye65pe25p+l6K+iCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3Qt
+aXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBt
+ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp
+bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPiAg54mp5paZ5L+h5oGv5LiO5Y2V5L2N5o2i566X5ZCM5q2l
+5byA5Y+R5pa55qGI6K6+6K6h6K+E5a6hPC9zcGFuPjwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJt
+ZC1saXN0LWl0ZW0iIGNpZD0ibjg0IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9
+Im44NSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0
+OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE077yaMjAyNS0wOS0xOCDn
+ianmlpnkv6Hmga/lkIzmraXnlJ/miJDljZXkvY3ovazmjaLpnIDmsYLlvIDlj5Hoh6rmtYvovazm
+tYsg5aSW6YOo5o6l5Y+jYnVn5L+u5aSNCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxp
+c3QtaXRlbSIgY2lkPSJuODQiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjg1
+IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1h
+cmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJl
+bGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI1LTA5LTE5IDwvc3Bh
+bj48L3A+PC9saT48dWwgc3R5bGU9Imxpc3Qtc3R5bGUtdHlwZTogc3F1YXJlOyI+PGxpIGNsYXNz
+PSJtZC1saXN0LWl0ZW0iIGNpZD0ibjg0IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBj
+aWQ9Im44NSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5z
+OiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0
+aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuLvmlbDmja7lr7nlpJbmjqXlj6Pnu5/k
+uIDmlofmoaPnu5/kuIDnuqbmnZ8KPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1p
+dGVtIiBjaWQ9Im44NCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuODUiIG1k
+dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu
+OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+57uG5YyW5a+55bqU5o6l5Y+j5paH5qGjCjwvc3Bhbj48L3A+
+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuODQiIG1kdHlwZT0ibGlzdF9pdGVt
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy
+ZWxhdGl2ZTsiPjxwIGNpZD0ibjg1IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i
+bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw
+cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh
+c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPue7n+S4gOWkhOeQ
+huato+WImSDljLrliIbkuI53ZWLlkozlr7zlhaUKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0i
+bWQtbGlzdC1pdGVtIiBjaWQ9Im44NCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lk
+PSJuODUiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczog
+NDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlv
+bjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6L2s5rWLYnVn5L+u5aSNPC9zcGFuPjwvcD48
+L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjkxIiBtZHR5cGU9Imxpc3Rf
+aXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlv
+bjogcmVsYXRpdmU7Ij48cCBjaWQ9Im44OSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1l
+bmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0
+OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFj
+ZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPuaXpeW4uOS6i+WKoTTvvJoyMDI1LTA5
+LTIwIDwvcD48L2xpPjx1bCBzdHlsZT0ibGlzdC1zdHlsZS10eXBlOiBzcXVhcmU7Ij48bGkgY2xh
+c3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuOTEiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw
+IGNpZD0ibjg5IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh
+bnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z
+aXRpb246IHJlbGF0aXZlOyI+5Li75pWw5o2u54mp5paZ5o6l5Y+j5rWL6K+V5a6M5oiQLAo8L3A+
+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuOTEiIG1kdHlwZT0ibGlzdF9pdGVt
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy
+ZWxhdGl2ZTsiPjxwIGNpZD0ibjg5IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i
+bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw
+cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+5a6i5oi35o6l5Y+j5paH5qGjLOiHqua1iyzo
+vazmtYsKPC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjkxIiBtZHR5cGU9
+Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw
+b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im44OSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNz
+PSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt
+aGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0
+ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPuS+m+W6lOWVhuaOpeWPo+aW
+h+ahoyzoh6rmtYss6L2s5rWLPC9wPjwvbGk+PC91bD48L3VsPjwvb2w+PGgzIGNpZD0ibjI1IiBt
+ZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgc3R5bGU9ImZv
+bnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDss
+ICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm
+OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWst
+aW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDog
+MXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdo
+dDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2Io
+NTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAi
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuozjgIHkuIvlkajlt6XkvZzorqHliJI8
+L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBj
+aWQ9Im4yNiIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsg
+Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsg
+cG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjI3IiBt
+ZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFt
+aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90
+O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250
+LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlv
+bjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1l
+bmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0
+OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFj
+ZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n
+IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry
+b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp
+biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeC
+ueS7u+WKoTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0
+IiBjaWQ9Im4yOSIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJjb2xvcjogcmdi
+KDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD
+bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB
+cmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94
+OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48
+bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2
+ZTsiPjxwIGNpZD0ibjMxIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7
+IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k
+LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuiuoeWIkjHvvJpHNeS4u+aV
+sOaNruWvueWkluaOpeWPo+W8gOWPkTwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3Qt
+aXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBt
+ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp
+bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+6K6h5YiSMjogIDUuMi4w54mI5pys5rWL6K+V5a6M5oiQPC9wPjwvbGk+PC91bD48L29s
+PjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1k
+LWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx
+dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp
+Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdi
+KDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNv
+bnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9u
+ZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48
+L2Rpdj48cCBjaWQ9Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtcCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns
+ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy
+aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o
+ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6
+IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxz
+cGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyI+77ya5pegPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxl
+PSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGJyPjwvZGl2PjxkaXYgc3BlbGxjaGVjaz0i
+ZmFsc2UiIGlkPSJudGVzLXBjbWFjLXNpZ25hdHVyZSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7o
+va/pm4Xpu5E7IiBkYXRhLW50ZXMtc2lnbmF0dXJlPSJ0cnVlIj48ZGl2IHN0eWxlPSJmb250LXNp
+emU6MTRweDtwYWRkaW5nOjA7bWFyZ2luOjAiPjxkaXYgc3R5bGU9InBhZGRpbmctYm90dG9tOjEw
+cHg7bWFyZ2luLWJvdHRvbToxMHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrIj48ZGl2IHN0eWxlPSJm
+b250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29s
+b3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1o
+ZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWls
+eTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAw
+MCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEu
+NjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvl
+vq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8
+c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAg
+ICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xp
+u5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAg
+ICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8
+L3N0eWxlPgo8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1p
+bHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93
+czogMjsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRp
+bmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwg
+QXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBv
+cnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjog
+MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5
+OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJn
+YigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46
+IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWls
+eTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz
+OiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2
+IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTog
+MHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZh
+cmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJv
+dGg7Ij48aW1nIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyIgc3JjPSJodHRwczovL21haWwtb25s
+aW5lLm5vc2RuLjEyNy5uZXQvd3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3
+LnBuZyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy
+OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGks
+IFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRv
+d3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw
+cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3Nv
+ZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3l
+m73Ct+WNl+S6rOi9r+S7tuiwt+i9r+S7tuWkp+mBkyAxMSDlj7foirHnpZ7lpKfljqYgMi0zRjwv
+c3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6
+IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwg
+U2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93
+czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBw
+eDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29m
+dCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2
+MTI4NDg5PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7
+IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBT
+VEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczog
+Mjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFk
+ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7
+TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x
+77yaeWFuZ3h1YW5Ad2l0c29mdC5jbjwvc3Bhbj48L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4K
+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rpdj48L2Rpdj48L2Jv
+ZHk+PC9odG1sPg==
+
+--=_mailmaster-6a18e4a4_0_72ae_=--
diff --git a/media/inbound/2025-09-26_1730_G5开发周报_2025-09-22_--_2025-09-26---4c0b02f0-db8d-4d0c-b061-1bb90c225ecc.eml b/media/inbound/2025-09-26_1730_G5开发周报_2025-09-22_--_2025-09-26---4c0b02f0-db8d-4d0c-b061-1bb90c225ecc.eml
new file mode 100644
index 0000000..e14b867
--- /dev/null
+++ b/media/inbound/2025-09-26_1730_G5开发周报_2025-09-22_--_2025-09-26---4c0b02f0-db8d-4d0c-b061-1bb90c225ecc.eml
@@ -0,0 +1,296 @@
+Date: Fri, 26 Sep 2025 17:30:03 +0800
+From: yangxuan
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?=
+Message-ID:
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA5LTIyIC0tICAyMDI1LTA5?=
+ =?utf-8?B?LTI244CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_6952_="
+
+--=_mailmaster-6a18e4a4_0_6952_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjDniYjmnKzlvIDlj5HmtYvor5Xnu5Pm
+nZ8K5Lu75YqhMu+8mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+R5ZKM5rWL6K+VCuW4uOin
+hOW3peS9nArml6XluLjkuovliqEx77yaMjAyNS0wOS0yMiDovazmtYtidWfkv67lpI0sQk9N5o6l
+5Y+j5byA5Y+RCuaXpeW4uOS6i+WKoTLvvJoyMDI1LTA5LTIzIOa1i+ivlWJ1Z+S/ruWkjSAK5pel
+5bi45LqL5YqhM++8mjIwMjUtMDktMjQK6ZyA5rGC5rWL6K+V5a6M5q+VIArmjqXlj6PmtYvor5Vi
+dWfkv64K5pel5bi45LqL5YqhNO+8mjIwMjUtMDktMjUg5a6i5oi35o6l5Y+j5rWL6K+V5a6M5q+V
+LOS+m+W6lOWVhuaOpeWPo+a1i+ivlSAK5pel5bi45LqL5YqhNe+8mjIwMjUtMDktMjYg57O757uf
+Qk9N5ZKM54mp5paZ5riF5Y2V5YiG5p6Q5LiO5a+55aSW5o6l5Y+j5byA5Y+R5pa55qGI6K6+6K6h
+6K+E5a6hCuS6jOOAgeS4i+WRqOW3peS9nOiuoeWIkgrph43ngrnku7vliqEK6K6h5YiSMe+8mkc1
+5Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+RCuiuoeWIkjI6IDUuMi4x54mI5pys5byA5Y+RCuWk
+h+azqO+8muaXoApCZXN0IHJlZ2FyZHMs5p2o6L2pCuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v
+5Lu26LC36L2v5Lu25aSn6YGTIDExIOWPt+iKseelnuWkp+WOpiAyLTNGCuaJi+acuu+8mjE4NzI2
+MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24=
+
+--=_mailmaster-6a18e4a4_0_6952_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2
+IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAgY2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs
+YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv
+dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj
+YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhl
+bSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog
+cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu
+IiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiu
+oeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIi
+IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls
+eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI
+ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp
+emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4
+OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp
+bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j
+b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVh
+ZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6
+ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs
+dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2
+b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJn
+aW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBj
+dXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUx
+KTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0
+cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1k
+dHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx
+dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp
+Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw
+eDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEs
+IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9
+Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFn
+cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw
+LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g
+bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh
+biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bh
+bj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0
+YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBh
+ZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0
+LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1k
+dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu
+OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjDniYjmnKzlvIDl
+j5HmtYvor5Xnu5PmnZ88L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNp
+ZD0ibjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJw
+YXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAw
+cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz
+cGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6
+IGJvcmRlci1ib3g7Ij7ku7vliqEy77yaPC9zcGFuPkc15Li75pWw5o2u5a+55aSW5o6l5Y+j5byA
+5Y+R5ZKM5rWL6K+VPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu
+MTIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy
+Z2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFn
+cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw
+LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g
+bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh
+biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyI+5bi46KeE5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48
+dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6
+IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9
+Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBt
+YXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFy
+YWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4
+IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3Bh
+biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyI+5pel5bi45LqL5YqhMe+8mjIwMjUtMDktMjIg6L2s5rWLYnVn5L+u5aSNLEJP
+TeaOpeWPo+W8gOWPkTwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0
+IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFy
+az0iLSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns
+ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy
+aWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7
+IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7
+IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIg
+bWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46
+IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBo
+IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94
+OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJl
+bTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1p
+bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+5pel5bi45LqL5YqhMu+8mjIwMjUtMDktMjMg5rWL6K+VYnVn5L+u5aSNCjwvc3Bhbj48
+L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9p
+dGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVu
+ZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6
+IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNl
+OiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg
+Y2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6
+i+WKoTPvvJoyMDI1LTA5LTI0PC9zcGFuPjwvcD48L2xpPjx1bCBzdHlsZT0ibGlzdC1zdHlsZS10
+eXBlOiBzcXVhcmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0i
+bGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv
+c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9
+Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o
+ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl
+LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+6ZyA5rGC5rWL6K+V5a6M5q+V
+CjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0
+X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt
+ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo
+dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh
+Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij7mjqXlj6PmtYvor5VidWfkv648L3A+
+PC9saT48L3VsPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44NCIgbWR0eXBlPSJsaXN0
+X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PHAgY2lkPSJuODUiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt
+ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo
+dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh
+Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu
+IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi4
+5LqL5YqhNO+8mjIwMjUtMDktMjUg5a6i5oi35o6l5Y+j5rWL6K+V5a6M5q+VLOS+m+W6lOWVhuaO
+peWPo+a1i+ivlQo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i
+bjg0IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im44NSIgbWR0eXBlPSJwYXJh
+Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg
+MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu
+IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7Ij7ml6XluLjkuovliqE177yaMjAyNS0wOS0yNiDns7vnu59CT03lkoznianmlpnm
+uIXljZXliIbmnpDkuI7lr7nlpJbmjqXlj6PlvIDlj5HmlrnmoYjorr7orqHor4TlrqE8L3NwYW4+
+PC9wPjwvbGk+PC91bD48L29sPjxoMyBjaWQ9Im4yNSIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0i
+bWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBT
+YW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZx
+dW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6
+IDQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFy
+ZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsg
+d2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyI+PHNwYW4gbWQt
+aW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBt
+ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+5LqM44CB5LiL5ZGo5bel5L2c6K6h5YiSPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48
+L2gzPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuMjYiIG1kdHlwZT0ibGlzdCIg
+c3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7
+IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxs
+aSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4yNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxl
+PSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1
+b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90Oywg
+SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5n
+OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJu
+MjgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg
+bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog
+cmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ph43ngrnku7vliqE8L3NwYW4+PC9zdHJvbmc+
+PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMjkiIG1kdHlwZT0ibGlz
+dCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1p
+bHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7
+SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQt
+c2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmct
+bGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0i
+IGNpZD0ibjMwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4zMSIgbWR0eXBl
+PSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6
+IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBw
+eCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsi
+PjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7Ij7orqHliJIx77yaRzXkuLvmlbDmja7lr7nlpJbmjqXlj6PlvIDlj5E8
+L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjMwIiBtZHR5cGU9
+Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw
+b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4zMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNz
+PSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt
+aGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0
+ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPuiuoeWIkjI6ICA1LjIuMeeJ
+iOacrOW8gOWPkTwvcD48L2xpPjwvdWw+PC9vbD48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMzki
+IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls
+eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI
+ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp
+emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4
+OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp
+bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j
+b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PHAgY2lkPSJuNDAiIG1kdHlwZT0icGFy
+YWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJmb250LWZhbWlseTogJnF1
+b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRp
+Y2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzog
+Ym9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44
+ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6
+IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJzdHJv
+bmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxz
+dHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBs
+YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5aSH
+5rOoPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i
+bWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPu+8muaX
+oDwvc3Bhbj48L3A+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsi
+Pjxicj48L2Rpdj48ZGl2IHNwZWxsY2hlY2s9ImZhbHNlIiBpZD0ibnRlcy1wY21hYy1zaWduYXR1
+cmUiIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyIgZGF0YS1udGVzLXNpZ25hdHVy
+ZT0idHJ1ZSI+PGRpdiBzdHlsZT0iZm9udC1zaXplOjE0cHg7cGFkZGluZzowO21hcmdpbjowIj48
+ZGl2IHN0eWxlPSJwYWRkaW5nLWJvdHRvbToxMHB4O21hcmdpbi1ib3R0b206MTBweDtkaXNwbGF5
+OmlubGluZS1ibG9jayI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buR
+JnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAg
+ICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9z
+dHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBm
+b250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7
+CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRp
+diBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6
+IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAg
+ICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0i
+Zm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNv
+bG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUt
+aGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPHNwYW4gc3R5bGU9ImNvbG9yOiBy
+Z2IoMTkxLCAxOTEsIDE5MSk7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1z
+aXplOiAxM3B4OyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxk
+aXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5l
+OiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQt
+dmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjog
+Ym90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBw
+eDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7
+OyBmb250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3Nw
+YW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw
+cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNp
+bVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6
+IDI7IGNsZWFyOiBib3RoOyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6
+IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJp
+YWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBo
+YW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PGltZyBzdHlsZT0ibWF4LXdpZHRoOiB1
+bnNldDsiIHNyYz0iaHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlm
+OGIzNmUxZmZiZTU1MzI5YzE5NmM4NGZlNTE5Ny5wbmciPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdp
+bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFt
+aWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVy
+ZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0
+eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4
+OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5
+MSwgMTkxLCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfp
+gZMgMTEg5Y+36Iqx56We5aSn5Y6mIDItM0Y8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2lu
+OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p
+bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJl
+czogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5
+bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7
+IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkx
+LCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxl
+PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm
+b250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQt
+bGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48
+c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp
+bmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6
+IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+
+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2
+PjwhLS3wn5iALS0+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4=
+
+--=_mailmaster-6a18e4a4_0_6952_=--
diff --git a/media/inbound/2025-09-30_1747_G5开发周报_2025-09-28_--_2025-09-30---47de5b49-f456-48c1-8a8e-4dc9f73d4fa8.eml b/media/inbound/2025-09-30_1747_G5开发周报_2025-09-28_--_2025-09-30---47de5b49-f456-48c1-8a8e-4dc9f73d4fa8.eml
new file mode 100644
index 0000000..31dc0ee
--- /dev/null
+++ b/media/inbound/2025-09-30_1747_G5开发周报_2025-09-28_--_2025-09-30---47de5b49-f456-48c1-8a8e-4dc9f73d4fa8.eml
@@ -0,0 +1,267 @@
+Date: Tue, 30 Sep 2025 17:46:58 +0800
+From: =?utf-8?B?5p2o6L2p?=
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?=
+Message-ID: <3CD5FEC2-B1EB-4C98-87A7-3C81434962E2@witsoft.cn>
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTA5LTI4IC0tICAyMDI1LTA5?=
+ =?utf-8?B?LTMw44CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_5f90_="
+
+--=_mailmaster-6a18e4a4_0_5f90_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjHniYjmnKzlvIDlj5EK5Lu75YqhMu+8
+mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+R5ZKM5rWL6K+VCuW4uOinhOW3peS9nArml6Xl
+uLjkuovliqEx77yaMjAyNS0wOS0yOCBCT03mjqXlj6PmlrnmoYjorr7orqHor4TlrqHlkozmjqXl
+j6PmlLnpgKAK5pel5bi45LqL5YqhMu+8mjIwMjUtMDktMjkg5Lqn5ZOB5bel6Im65o6l5Y+j5pa5
+5qGI6K6+6K6h44CB6K+E5a6h5ZKM5byA5Y+RIArml6XluLjkuovliqEz77yaMjAyNS0wOS0zMCDl
+pJbpg6jmjqXlj6NidWfkv67lpI0K5LqM44CB5LiL5ZGo5bel5L2c6K6h5YiSCumHjeeCueS7u+WK
+oQrorqHliJIx77yaRzXkuLvmlbDmja7lr7nlpJbmjqXlj6PlvIDlj5EK6K6h5YiSMjogNS4yLjHn
+iYjmnKzlvIDlj5EK5aSH5rOo77ya5pegCkJlc3QgcmVnYXJkcyzmnajovakK5Zyw5Z2A77ya5Lit
+5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMgMTEg5Y+36Iqx56We5aSn5Y6mIDItM0YK
+5omL5py677yaMTg3MjYxMjg0ODkK6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbg==
+
+--=_mailmaster-6a18e4a4_0_5f90_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxw
+IGNpZD0ibjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQt
+Zm9jdXMiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD
+bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB
+cmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy
+YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXpl
+OiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFu
+ZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHm
+nKzlkajnmoTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+
+PC9wPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIg
+bWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg
+JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl
+dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiBy
+Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzog
+Y29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBu
+b25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsi
+PjwvZGl2PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx
+dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp
+Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRl
+cjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXpl
+OiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246
+IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTog
+cHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u
+ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0
+cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh
+aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDj
+gIHmnKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNz
+PSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZh
+bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv
+dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9z
+aXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7
+Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0
+OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy
+YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0i
+bWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9
+Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWu
+jOaIkOaDheWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1s
+aXN0IiBjaWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxp
+c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1k
+LWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWln
+aHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw
+YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp
+biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WK
+oTHvvJpHNeS4u+aVsOaNrjUuMi4x54mI5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFz
+cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg
+Y2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu
+czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMu+8mjwvc3Bhbj5HNeS4u+aV
+sOaNruWvueWkluaOpeWPo+W8gOWPkeWSjOa1i+ivlTwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJt
+ZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9
+Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0
+OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9nDwvc3Bhbj48L3N0cm9u
+Zz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJs
+aXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46
+IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9
+Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp
+ZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6
+IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI1LTA5LTI4
+IEJPTeaOpeWPo+aWueahiOiuvuiuoeivhOWuoeWSjOaOpeWPo+aUuemAoDwvc3Bhbj48L3A+PC9s
+aT48L3VsPjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9
+Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFy
+az0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5n
+LWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt
+IiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwg
+NTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5z
+JnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fu
+cy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46
+IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBo
+IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94
+OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJl
+bTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1p
+bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+5pel5bi45LqL5YqhMu+8mjIwMjUtMDktMjkg5Lqn5ZOB5bel6Im65o6l5Y+j5pa55qGI
+6K6+6K6h44CB6K+E5a6h5ZKM5byA5Y+RCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxp
+c3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1
+MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xl
+YXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJp
+YWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsg
+bWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBh
+cmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBw
+eCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNw
+YW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTPvvJoyMDI1LTA5LTMwIOWklumDqOaOpeWPo2J1Z+S/
+ruWkjTwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PGgzIGNpZD0ibjI1IiBtZHR5cGU9ImhlYWRp
+bmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAm
+cXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZl
+dGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5n
+OiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9p
+ZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2lu
+LWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vy
+c29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7
+Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7Ij7kuozjgIHkuIvlkajlt6XkvZzorqHliJI8L3NwYW4+PC9zdHJv
+bmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im4yNiIgbWR0
+eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzog
+Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJl
+bGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjI3IiBtZHR5cGU9Imxpc3Rf
+aXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtP
+cGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBO
+ZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7
+IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7
+Ij48cCBjaWQ9Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQt
+cCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBv
+cnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7
+IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQt
+cGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k
+LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueS7u+WKoTwvc3Bh
+bj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4yOSIg
+bWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEp
+OyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1
+b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1z
+ZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw
+eDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1k
+LWxpc3QtaXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0i
+bjMxIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7
+IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246
+IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuiuoeWIkjHvvJpHNeS4u+aVsOaNruWvueWkluaO
+peWPo+W8gOWPkTwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu
+MzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy
+Z2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBtZHR5cGU9InBhcmFn
+cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw
+LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+6K6h5YiS
+MjogIDUuMi4x54mI5pys5byA5Y+RPC9wPjwvbGk+PC91bD48L29sPjxkaXYgdGFiaW5kZXg9Ii0x
+IiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9
+ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVv
+dDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNl
+cmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250
+LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6
+IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBi
+YWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48cCBjaWQ9Im40MCIg
+bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImZvbnQt
+ZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZx
+dW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg
+bWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0
+aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1p
+bmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1k
+LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxzcGFuIG1kLWlubGluZT0icGxh
+aW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+77ya5pegPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog5b6u
+6L2v6ZuF6buROyI+PGJyPjwvZGl2PjxkaXYgc3BlbGxjaGVjaz0iZmFsc2UiIGlkPSJudGVzLXBj
+bWFjLXNpZ25hdHVyZSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IiBkYXRhLW50
+ZXMtc2lnbmF0dXJlPSJ0cnVlIj48ZGl2IHN0eWxlPSJmb250LXNpemU6MTRweDtwYWRkaW5nOjA7
+bWFyZ2luOjAiPjxkaXYgc3R5bGU9InBhZGRpbmctYm90dG9tOjEwcHg7bWFyZ2luLWJvdHRvbTox
+MHB4O2Rpc3BsYXk6aW5saW5lLWJsb2NrIj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvl
+vq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8
+c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAg
+ICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xp
+u5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAg
+ICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8
+L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7
+IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9u
+dHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8
+ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6
+ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAg
+ICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8c3BhbiBzdHls
+ZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFo
+ZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJlc3QgcmVnYXJk
+cyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw
+cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNp
+bVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6
+IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7
+IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQg
+WWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsi
+PuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4
+OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwg
+U1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6
+IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBw
+eDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTog
+VGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBu
+b3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48aW1nIHN0eWxlPSJt
+YXgtd2lkdGg6IHVuc2V0OyIgc3JjPSJodHRwczovL21haWwtb25saW5lLm5vc2RuLjEyNy5uZXQv
+d3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3LnBuZyI+PC9kaXY+PGRpdiBz
+dHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBw
+eDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJp
+YW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3Ro
+OyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBv
+dXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNv
+bG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiw
+t+i9r+S7tuWkp+mBkyAxMSDlj7foirHnpZ7lpKfljqYgMi0zRjwvc3Bhbj48L2Rpdj48ZGl2IHN0
+eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4
+OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlh
+bnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7
+Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91
+dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29s
+b3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuaJi+acuu+8mjE4NzI2MTI4NDg5PC9zcGFuPjwvZGl2
+PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRs
+aW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZv
+bnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVh
+cjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6
+IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1
+b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+6YKu566x77yaeWFuZ3h1YW5Ad2l0c29m
+dC5jbjwvc3Bhbj48L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+
+PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1sPg==
+
+--=_mailmaster-6a18e4a4_0_5f90_=--
diff --git a/media/inbound/2025-10-11_1803_G5开发周报_2025-10-09_--_2025-10-11---9e54ebee-29c5-4866-8eca-df96fee1fc80.eml b/media/inbound/2025-10-11_1803_G5开发周报_2025-10-09_--_2025-10-11---9e54ebee-29c5-4866-8eca-df96fee1fc80.eml
new file mode 100644
index 0000000..de9ebbb
--- /dev/null
+++ b/media/inbound/2025-10-11_1803_G5开发周报_2025-10-09_--_2025-10-11---9e54ebee-29c5-4866-8eca-df96fee1fc80.eml
@@ -0,0 +1,269 @@
+Date: Sat, 11 Oct 2025 18:03:42 +0800
+From: =?utf-8?B?5p2o6L2p?=
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?=
+Message-ID: <2CFD9994-080E-49AA-89A1-22FA59768A0E@witsoft.cn>
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEwLTA5IC0tICAyMDI1LTEw?=
+ =?utf-8?B?LTEx44CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_1649_="
+
+--=_mailmaster-6a18e4a4_0_1649_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjHniYjmnKzlvIDlj5EK5Lu75YqhMu+8
+mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+R5ZKM5rWL6K+VCuW4uOinhOW3peS9nArml6Xl
+uLjkuovliqEx77yaMjAyNS0xMC0wOSDkuLvmlbDmja7pnIDmsYLor4TlrqHlkozlr7nlpJbmjqXl
+j6PlvIDlj5EK5pel5bi45LqL5YqhMu+8mjIwMjUtMTAtMTAg5Y2V5L2N5o2i566X57uf5LiA566h
+55CG6ZyA5rGC5pa55qGI6K+E5a6h5ZKM5byA5Y+R6IGU6LCDIArml6XluLjkuovliqEz77yaMjAy
+NS0xMC0xMSDkuLvmlbDmja7pnIDmsYLlvIDlj5HlkozljZXkvY3mjaLnrpflhbPogZTpnIDmsYLo
+vazmtYsgCuS6jOOAgeS4i+WRqOW3peS9nOiuoeWIkgrph43ngrnku7vliqEK6K6h5YiSMe+8mkc1
+5Li75pWw5o2u5a+55aSW5o6l5Y+j5byA5Y+RCuiuoeWIkjI6IDUuMi4x54mI5pys5byA5Y+RCuWk
+h+azqO+8muaXoApCZXN0IHJlZ2FyZHMs5p2o6L2pCuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v
+5Lu26LC36L2v5Lu25aSn6YGTIDExIOWPt+iKseelnuWkp+WOpiAyLTNGCuaJi+acuu+8mjE4NzI2
+MTI4NDg5CumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24=
+
+--=_mailmaster-6a18e4a4_0_1649_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxw
+IGNpZD0ibjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQt
+Zm9jdXMiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD
+bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB
+cmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy
+YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXpl
+OiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFu
+ZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHm
+nKzlkajnmoTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+
+PC9wPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIg
+bWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg
+JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl
+dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiBy
+Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzog
+Y29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBu
+b25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsi
+PjwvZGl2PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx
+dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp
+Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRl
+cjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXpl
+OiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246
+IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTog
+cHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u
+ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0
+cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh
+aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDj
+gIHmnKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNz
+PSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZh
+bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv
+dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9z
+aXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7
+Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0
+OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy
+YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0i
+bWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9
+Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWu
+jOaIkOaDheWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1s
+aXN0IiBjaWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxp
+c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1k
+LWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWln
+aHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw
+YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp
+biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WK
+oTHvvJpHNeS4u+aVsOaNrjUuMi4x54mI5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFz
+cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg
+Y2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu
+czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMu+8mjwvc3Bhbj5HNeS4u+aV
+sOaNruWvueWkluaOpeWPo+W8gOWPkeWSjOa1i+ivlTwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJt
+ZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9
+Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0
+OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9nDwvc3Bhbj48L3N0cm9u
+Zz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJs
+aXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46
+IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9
+Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp
+ZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6
+IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI1LTEwLTA5
+IOS4u+aVsOaNrumcgOaxguivhOWuoeWSjOWvueWkluaOpeWPo+W8gOWPkTwvc3Bhbj48L3A+PC9s
+aT48L3VsPjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9
+Imxpc3QiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGlu
+Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48dWwgY2xhc3M9InVsLWxpc3QiIGNp
+ZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDl
+vq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5n
+LWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt
+IiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwg
+NTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5z
+JnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fu
+cy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46
+IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBo
+IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94
+OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJl
+bTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1p
+bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+5pel5bi45LqL5YqhMu+8mjIwMjUtMTAtMTAg5Y2V5L2N5o2i566X57uf5LiA566h55CG
+6ZyA5rGC5pa55qGI6K+E5a6h5ZKM5byA5Y+R6IGU6LCDCjwvc3Bhbj48L3A+PC9saT48bGkgY2xh
+c3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29s
+b3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg
+JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl
+dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBt
+ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp
+bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTPvvJoyMDI1LTEwLTExIOS4u+aVsOaN
+rumcgOaxguW8gOWPkeWSjOWNleS9jeaNoueul+WFs+iBlOmcgOaxgui9rOa1iw08L3NwYW4+PC9w
+PjwvbGk+PC91bD48L29sPjxoMyBjaWQ9Im4yNSIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0ibWQt
+ZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5z
+JnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90
+OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsg
+YnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6IDQ7
+IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFyZW07
+IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsgd2hp
+dGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyI+PHNwYW4gbWQtaW5s
+aW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1p
+bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+5LqM44CB5LiL5ZGo5bel5L2c6K6h5YiSPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L2gz
+PjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuMjYiIG1kdHlwZT0ibGlzdCIgc3R5
+bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBj
+bGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4yNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJj
+b2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7
+LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVs
+dmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMjgi
+IG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFy
+Z2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVs
+YXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ph43ngrnku7vliqE8L3NwYW4+PC9zdHJvbmc+PC9z
+cGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMjkiIG1kdHlwZT0ibGlzdCIg
+ZGF0YS1tYXJrPSItIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6
+ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs
+dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6
+ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVm
+dDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNp
+ZD0ibjMwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4zMSIgbWR0eXBlPSJw
+YXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAw
+cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz
+cGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6
+IGJvcmRlci1ib3g7Ij7orqHliJIx77yaRzXkuLvmlbDmja7lr7nlpJbmjqXlj6PlvIDlj5E8L3Nw
+YW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjMwIiBtZHR5cGU9Imxp
+c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4zMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJt
+ZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVp
+Z2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1z
+cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPuiuoeWIkjI6ICA1LjIuMeeJiOac
+rOW8gOWPkTwvcD48L2xpPjwvdWw+PC9vbD48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMzkiIG1k
+dHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTog
+JnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2
+ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+
+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjog
+MTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xv
+cjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PHAgY2lkPSJuNDAiIG1kdHlwZT0icGFyYWdy
+YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7
+T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2Eg
+TmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0g
+MHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJn
+Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmci
+IGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJv
+bmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu
+IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5aSH5rOo
+PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt
+cGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPu+8muaXoDwv
+c3Bhbj48L3A+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxi
+cj48L2Rpdj48ZGl2IHNwZWxsY2hlY2s9ImZhbHNlIiBpZD0ibnRlcy1wY21hYy1zaWduYXR1cmUi
+IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyIgZGF0YS1udGVzLXNpZ25hdHVyZT0i
+dHJ1ZSI+PGRpdiBzdHlsZT0iZm9udC1zaXplOjE0cHg7cGFkZGluZzowO21hcmdpbjowIj48ZGl2
+IHN0eWxlPSJwYWRkaW5nLWJvdHRvbToxMHB4O21hcmdpbi1ib3R0b206MTBweDtkaXNwbGF5Omlu
+bGluZS1ibG9jayI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1
+b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAg
+IGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHls
+ZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250
+LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAg
+ICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBz
+dHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0
+cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAg
+IGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9u
+dC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9y
+OiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVp
+Z2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2Io
+MTkxLCAxOTEsIDE5MSk7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXpl
+OiAxM3B4OyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxkaXYg
+c3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAw
+cHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFy
+aWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90
+aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsg
+b3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBm
+b250LXNpemU6IDEzcHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+
+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7
+IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1
+bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7
+IGNsZWFyOiBib3RoOyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBw
+eDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWws
+IFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5z
+OiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PGltZyBzdHlsZT0ibWF4LXdpZHRoOiB1bnNl
+dDsiIHNyYz0iaHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIz
+NmUxZmZiZTU1MzI5YzE5NmM4NGZlNTE5Ny5wbmciPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjog
+MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5
+OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6
+IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxl
+PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm
+b250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwg
+MTkxLCAxOTEpOyI+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzova/ku7bosLfova/ku7blpKfpgZMg
+MTEg5Y+36Iqx56We5aSn5Y6mIDItM0Y8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAw
+cHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6
+IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczog
+bm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9
+Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv
+bnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAx
+OTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJt
+YXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250
+LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGln
+YXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3Bh
+biBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6
+IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJn
+YigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9k
+aXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2Pjwh
+LS3wn5iALS0+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4=
+
+--=_mailmaster-6a18e4a4_0_1649_=--
diff --git a/media/inbound/2025-10-17_1700_G5开发周报_2025-10-13_--_2025-10-17---1545a6a6-156c-412d-8cd3-ba060d3f7217.eml b/media/inbound/2025-10-17_1700_G5开发周报_2025-10-13_--_2025-10-17---1545a6a6-156c-412d-8cd3-ba060d3f7217.eml
new file mode 100644
index 0000000..2a631dd
--- /dev/null
+++ b/media/inbound/2025-10-17_1700_G5开发周报_2025-10-13_--_2025-10-17---1545a6a6-156c-412d-8cd3-ba060d3f7217.eml
@@ -0,0 +1,291 @@
+Date: Fri, 17 Oct 2025 17:00:09 +0800
+From: =?utf-8?B?5p2o6L2p?=
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?=
+Message-ID:
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEwLTEzIC0tICAyMDI1LTEw?=
+ =?utf-8?B?LTE344CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_6df1_="
+
+--=_mailmaster-6a18e4a4_0_6df1_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjHniYjmnKzlvIDlj5EK5Lu75YqhMu+8
+mkc15Li75pWw5o2u5a+55aSW5o6l5Y+j5rWL6K+V5a6M5oiQCuW4uOinhOW3peS9nArml6XluLjk
+uovliqEx77yaMjAyNS0xMC0xMyDkuLvmlbDmja7pobXpnaLpnIDmsYLovazmtYtidWfkv67lpI0K
+5pel5bi45LqL5YqhMu+8mjIwMjUtMTAtMTQg5Li75pWw5o2u5aSW6YOo5o6l5Y+j5byA5Y+RIArm
+l6XluLjkuovliqEz77yaMjAyNS0xMC0xNSDkuLvmlbDmja7lpJbpg6jmjqXlj6PmtYvor5XnlKjk
+vovor4TlrqHlkoxidWfkv67lpI0K5pel5bi45LqL5YqhNO+8mjIwMjUtMTAtMTYg5Li75pWw5o2u
+5a+55aSW5o6l5Y+j5rWL6K+V77yM6Zeu6aKY5L+u5aSNCuaXpeW4uOS6i+WKoTXvvJoyMDI1LTEw
+LTE3IOa1i+ivlemXrumimOS/ruWkje+8jOS4iue6v+aUr+aMgQrkuozjgIHkuIvlkajlt6XkvZzo
+rqHliJIK6YeN54K55Lu75YqhCuiuoeWIkjHvvJo1LjIuMueJiOacrOW8gOWPkQrlpIfms6jvvJrm
+l6AKQmVzdCByZWdhcmRzLOadqOi9qQrlnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOi9r+S7tuiwt+i9
+r+S7tuWkp+mBkyAxMSDlj7foirHnpZ7lpKfljqYgMi0zRgrmiYvmnLrvvJoxODcyNjEyODQ4OQrp
+gq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNu
+
+--=_mailmaster-6a18e4a4_0_6df1_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRpdiBzdHlsZT0iIj48ZGl2IHN0eWxlPSIiPjxw
+IGNpZD0ibjAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAgbWQt
+Zm9jdXMiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtD
+bGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBB
+cmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdy
+YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXpl
+OiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFu
+ZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7mgqjlpb3vvIHku6XkuIvmmK/miJHm
+nKzlkajnmoTlt6XkvZzmgLvnu5Plj4rkuIvlkajorqHliJLvvIzor7flrqHpmIXjgII8L3NwYW4+
+PC9wPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4yIiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIg
+bWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg
+JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl
+dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiBy
+Z2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzog
+Y29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBu
+b25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsi
+PjwvZGl2PjxoMyBjaWQ9Im4zIiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx
+dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp
+Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRl
+cjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXpl
+OiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246
+IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTog
+cHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u
+ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0
+cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh
+aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuIDj
+gIHmnKzlkajlt6XkvZzmgLvnu5M8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNz
+PSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZh
+bWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVv
+dDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9z
+aXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7
+Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHAgY2lkPSJuNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0
+OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy
+YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0i
+bWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9
+Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueW3peS9nOWu
+jOaIkOaDheWGtTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1s
+aXN0IiBjaWQ9Im43IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im44IiBtZHR5cGU9Imxp
+c3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im45IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1k
+LWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWln
+aHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw
+YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp
+biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WK
+oTHvvJpHNeS4u+aVsOaNrjUuMi4x54mI5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFz
+cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg
+Y2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu
+czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMu+8mjwvc3Bhbj5HNeS4u+aV
+sOaNruWvueWkluaOpeWPo+a1i+ivleWujOaIkDwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1s
+aXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6
+IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4x
+MyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBt
+YXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy
+ZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9nDwvc3Bhbj48L3N0cm9uZz48
+L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0
+IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw
+eDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1k
+LWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0i
+bjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7
+IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246
+IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI1LTEwLTEzIOS4
+u+aVsOaNrumhtemdoumcgOaxgui9rOa1i2J1Z+S/ruWkjTwvc3Bhbj48L3A+PC9saT48L3VsPjwv
+b2w+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0
+eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBt
+YXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48dWwg
+Y2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5
+bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBj
+bGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJj
+b2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7
+LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVs
+dmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYi
+IG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFy
+Z2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVs
+YXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMu+8mjIwMjUtMTAtMTQgIOS4u+aV
+sOaNruWklumDqOaOpeWPo+W8gOWPkQo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0
+LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEs
+IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy
+IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs
+LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJh
+Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg
+MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu
+IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7Ij7ml6XluLjkuovliqEz77yaMjAyNS0xMC0xNSDkuLvmlbDmja7lpJbpg6jmjqXl
+j6PmtYvor5XnlKjkvovor4TlrqHlkoxidWfkv67lpI08L3NwYW4+PC9wPjwvbGk+PC91bD48L29s
+PjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHls
+ZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy
+Z2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNs
+YXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxl
+PSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn
+aW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xh
+c3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29s
+b3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg
+JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl
+dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBt
+ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp
+bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI1LTEwLTE2IOS4u+aVsOaN
+ruWvueWkluaOpeWPo+a1i+ivle+8jOmXrumimOS/ruWkjTwvc3Bhbj48L3A+PC9saT48bGkgY2xh
+c3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29s
+b3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg
+JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl
+dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBt
+ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp
+bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTXvvJoyMDI1LTEwLTE3IOa1i+ivlemX
+rumimOS/ruWkje+8jOS4iue6v+aUr+aMgTwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PGgzIGNp
+ZD0ibjI1IiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIg
+c3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNh
+bnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBz
+YW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFn
+ZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFy
+Z2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBs
+aW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNv
+bG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1k
+LXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJt
+ZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuozjgIHkuIvlkajlt6Xk
+vZzorqHliJI8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1saXN0IiBz
+dGFydD0iIiBjaWQ9Im4yNiIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZl
+OyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjI3IiBtZHR5cGU9Imxpc3RfaXRlbSIg
+c3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNh
+bnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBz
+YW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1z
+aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBj
+aWQ9Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5z
+OiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0
+aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1z
+ICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWlu
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueS7u+WKoTwvc3Bhbj48L3N0
+cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4yOSIgbWR0eXBl
+PSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5z
+JnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90
+OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsg
+Zm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFk
+ZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3Qt
+aXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBt
+ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp
+bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPuiuoeWIkjHvvJo8L3NwYW4+NS4yLjLniYjmnKzlvIDlj5E8
+L3A+PC9saT48L3VsPjwvb2w+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjM5IiBtZHR5cGU9Imhy
+IiBjbGFzcz0ibWQtaHIgbWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09w
+ZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5l
+dWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHls
+ZT0iYm94LXNpemluZzogY29udGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4
+OyBib3JkZXI6IDBweCBub25lOyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigy
+MzEsIDIzMSwgMjMxKTsiPjwvZGl2PjxwIGNpZD0ibjQwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xh
+c3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu
+cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv
+dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7
+IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hp
+dGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUx
+LCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0i
+bWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9
+Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuWkh+azqDwvc3Bhbj48
+L3N0cm9uZz48L3NwYW4+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1k
+LWV4cGFuZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7vvJrml6A8L3NwYW4+PC9w
+PjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48YnI+PC9kaXY+
+PGRpdiBzcGVsbGNoZWNrPSJmYWxzZSIgaWQ9Im50ZXMtcGNtYWMtc2lnbmF0dXJlIiBzdHlsZT0i
+Zm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiIGRhdGEtbnRlcy1zaWduYXR1cmU9InRydWUiPjxk
+aXYgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O3BhZGRpbmc6MDttYXJnaW46MCI+PGRpdiBzdHlsZT0i
+cGFkZGluZy1ib3R0b206MTBweDttYXJnaW4tYm90dG9tOjEwcHg7ZGlzcGxheTppbmxpbmUtYmxv
+Y2siPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9u
+dC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewog
+ICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYg
+c3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAx
+NHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAg
+ICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZv
+bnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xv
+cjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhl
+aWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5
+OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAw
+Ij4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42
+OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDE5MSwgMTkx
+LCAxOTEpOyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsg
+b3JwaGFuczogMjsgd2lkb3dzOiAyOyI+QmVzdCByZWdhcmRzLDwvc3Bhbj48ZGl2IHN0eWxlPSJt
+YXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250
+LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGln
+YXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3Bh
+biBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6
+IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgZm9udC1zaXpl
+OiAxM3B4OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9zcGFuPjwvZGl2Pjxk
+aXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5l
+OiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQt
+dmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjog
+Ym90aDsiPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRl
+cjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRp
+LCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lk
+b3dzOiAyOyBjbGVhcjogYm90aDsiPjxpbWcgc3R5bGU9Im1heC13aWR0aDogdW5zZXQ7IiBzcmM9
+Imh0dHBzOi8vbWFpbC1vbmxpbmUubm9zZG4uMTI3Lm5ldC93enBtbWMvY2U5ZjhiMzZlMWZmYmU1
+NTMyOWMxOTZjODRmZTUxOTcucG5nIj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFk
+ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21h
+LCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7
+IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2lu
+OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p
+bHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkx
+KTsiPuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTIDExIOWPt+iK
+seelnuWkp+WOpiAyLTNGPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRk
+aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEs
+IEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg
+b3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46
+IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWls
+eTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEp
+OyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAw
+cHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6
+IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczog
+bm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9
+Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv
+bnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAx
+OTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2Pgo8L2Rp
+dj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48IS0t8J+YgC0t
+PjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+
+
+--=_mailmaster-6a18e4a4_0_6df1_=--
diff --git a/media/inbound/2025-10-24_1700_G5开发周报_2025-10-20_--_2025-10-24---d9b0ed17-8fe6-421c-b542-7945f39d856c.eml b/media/inbound/2025-10-24_1700_G5开发周报_2025-10-20_--_2025-10-24---d9b0ed17-8fe6-421c-b542-7945f39d856c.eml
new file mode 100644
index 0000000..e5f348a
--- /dev/null
+++ b/media/inbound/2025-10-24_1700_G5开发周报_2025-10-20_--_2025-10-24---d9b0ed17-8fe6-421c-b542-7945f39d856c.eml
@@ -0,0 +1,291 @@
+Date: Fri, 24 Oct 2025 17:00:04 +0800
+From: =?utf-8?B?5p2o6L2p?=
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?=
+Message-ID: <825A747A-D36B-4B13-8176-D5D92FF684F8@witsoft.cn>
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEwLTIwIC0tICAyMDI1LTEw?=
+ =?utf-8?B?LTI044CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_5af1_="
+
+--=_mailmaster-6a18e4a4_0_5af1_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjLniYjmnKzlvIDlj5EK5Lu75YqhMu+8
+mkc15bqT5a2Y6aaW6aG16ZyA5rGC5byA5Y+RCuW4uOinhOW3peS9nArml6XluLjkuovliqEx77ya
+MjAyNS0xMC0yMCDosIPkvJEK5pel5bi45LqL5YqhMu+8mjIwMjUtMTAtMjEg5Li75pWw5o2uNS4y
+LjLniYjmnKzpnIDmsYLor4TkvLDlkozlvIDlj5EgCuaXpeW4uOS6i+WKoTPvvJoyMDI1LTEwLTIy
+IOW6k+WtmOiwg+aLqOafpeivomJ1Z+S/ruWkjeS4jummlumhteaKpeihqOmcgOaxguehruiupOS4
+juW8gOWPkQrml6XluLjkuovliqE077yaMjAyNS0xMC0yMyDkuLvmlbDmja7lr7nlpJbmjqXlj6Pm
+tYvor5XvvIzpl67popjkv67lpI0K5pel5bi45LqL5YqhNe+8mjIwMjUtMTAtMjQg5ZGG5rue5oql
+6KGo5rWL6K+V77yM5bqT5a2Y6aKE6K2m5oql6KGo5byA5Y+RCuS6jOOAgeS4i+WRqOW3peS9nOiu
+oeWIkgrph43ngrnku7vliqEK6K6h5YiSMe+8mjUuMi4z54mI5pys5byA5Y+RCuWkh+azqO+8muaX
+oApCZXN0IHJlZ2FyZHMs5p2o6L2pCuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu26LC36L2v
+5Lu25aSn6YGTIDExIOWPt+iKseelnuWkp+WOpiAyLTNGCuaJi+acuu+8mjE4NzI2MTI4NDg5CumC
+rueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24=
+
+--=_mailmaster-6a18e4a4_0_5af1_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2
+IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAgY2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs
+YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv
+dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj
+YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhl
+bSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog
+cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu
+IiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiu
+oeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIi
+IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls
+eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI
+ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp
+emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4
+OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp
+bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j
+b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVh
+ZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6
+ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs
+dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2
+b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJn
+aW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBj
+dXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUx
+KTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0
+cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1k
+dHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx
+dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp
+Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw
+eDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEs
+IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9
+Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFn
+cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw
+LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g
+bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh
+biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bh
+bj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0
+YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBh
+ZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0
+LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1k
+dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu
+OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjLniYjmnKzlvIDl
+j5E8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEwIiBtZHR5
+cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4
+OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs
+YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxp
+bmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3
+aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGlu
+ZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+Ij7ku7vliqEy77yaPC9zcGFuPkc15bqT5a2Y6aaW6aG16ZyA5rGC5byA5Y+RPC9wPjwvbGk+PC91
+bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0ibGlzdF9pdGVtIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxh
+dGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9j
+ayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVy
+aXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUt
+d3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNz
+PSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFz
+cz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5bi46KeE5bel5L2c
+PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0i
+bjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2
+ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl
+bGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs
+b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o
+ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy
+ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFz
+cz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5Yqh
+Me+8mjIwMjUtMTAtMjAg6LCD5LyRPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9
+Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt
+aWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw
+YWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlz
+dCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1p
+bHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBh
+ZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0
+LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEs
+IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy
+IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs
+LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJh
+Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg
+MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu
+IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7Ij7ml6XluLjkuovliqEy77yaMjAyNS0xMC0yMSDkuLvmlbDmja41LjIuMueJiOac
+rOmcgOaxguivhOS8sOWSjOW8gOWPkQo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0
+LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEs
+IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy
+IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs
+LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJh
+Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg
+MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu
+IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7Ij7ml6XluLjkuovliqEz77yaMjAyNS0xMC0yMiDlupPlrZjosIPmi6jmn6Xor6Ji
+dWfkv67lpI3kuI7pppbpobXmiqXooajpnIDmsYLnoa7orqTkuI7lvIDlj5E8L3NwYW4+PC9wPjwv
+bGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBl
+PSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1h
+cms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVt
+IiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4g
+U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm
+cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw
+IGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh
+bnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z
+aXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWlu
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI1LTEw
+LTIzIOS4u+aVsOaNruWvueWkluaOpeWPo+a1i+ivle+8jOmXrumimOS/ruWkjTwvc3Bhbj48L3A+
+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVt
+IiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4g
+U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm
+cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw
+IGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh
+bnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z
+aXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWlu
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTXvvJoyMDI1LTEw
+LTI0IOWRhua7nuaKpeihqOa1i+ivle+8jOW6k+WtmOmihOitpuaKpeihqOW8gOWPkTwvc3Bhbj48
+L3A+PC9saT48L3VsPjwvb2w+PGgzIGNpZD0ibjI1IiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJt
+ZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNh
+bnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1
+b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94
+OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczog
+NDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJl
+bTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3
+aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1p
+bmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1k
+LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7Ij7kuozjgIHkuIvlkajlt6XkvZzorqHliJI8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwv
+aDM+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im4yNiIgbWR0eXBlPSJsaXN0IiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDog
+MzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i
+bjI3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNh
+bnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1
+b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEp
+OyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw
+b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNz
+PSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt
+aGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0
+ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0i
+c3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5l
+PSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi
+PumHjeeCueS7u+WKoTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1
+bC1saXN0IiBjaWQ9Im4yOSIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250
+LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAm
+cXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsg
+Y29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVt
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy
+ZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i
+bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw
+cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh
+c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuiuoeWIkjHvvJo8
+L3NwYW4+NS4yLjPniYjmnKzlvIDlj5E8L3A+PC9saT48L3VsPjwvb2w+PGRpdiB0YWJpbmRleD0i
+LTEiIGNpZD0ibjM5IiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQtZW5kLWJsb2NrIiBzdHls
+ZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZx
+dW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMt
+c2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv
+bnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29udGVudC1ib3g7IGhlaWdo
+dDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBwYWRkaW5nOiAwcHg7
+IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2PjxwIGNpZD0ibjQw
+IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iZm9u
+dC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90Oywg
+JnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7
+IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0
+OyBtYXJnaW46IDAuOGVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVs
+YXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuIG1k
+LWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4g
+bWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsiPuWkh+azqDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PHNwYW4gbWQtaW5saW5lPSJw
+bGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7Ij7vvJrml6A8L3NwYW4+PC9wPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDl
+vq7ova/pm4Xpu5E7Ij48YnI+PC9kaXY+PGRpdiBzcGVsbGNoZWNrPSJmYWxzZSIgaWQ9Im50ZXMt
+cGNtYWMtc2lnbmF0dXJlIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiIGRhdGEt
+bnRlcy1zaWduYXR1cmU9InRydWUiPjxkaXYgc3R5bGU9ImZvbnQtc2l6ZToxNHB4O3BhZGRpbmc6
+MDttYXJnaW46MCI+PGRpdiBzdHlsZT0icGFkZGluZy1ib3R0b206MTBweDttYXJnaW4tYm90dG9t
+OjEwcHg7ZGlzcGxheTppbmxpbmUtYmxvY2siPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90
+O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAg
+IDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAg
+ICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mb
+hem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4K
+ICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAg
+IDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90
+OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBm
+b250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+
+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1z
+aXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAg
+ICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxzcGFuIHN0
+eWxlPSJjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZ
+YWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyI+QmVzdCByZWdh
+cmRzLDwvc3Bhbj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6
+IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwg
+U2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93
+czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBw
+eDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29m
+dCBZYWhlaSZxdW90OzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEp
+OyI+5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw
+cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFs
+LCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFu
+czogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjog
+MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5
+OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6
+IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxpbWcgc3R5bGU9
+Im1heC13aWR0aDogdW5zZXQ7IiBzcmM9Imh0dHBzOi8vbWFpbC1vbmxpbmUubm9zZG4uMTI3Lm5l
+dC93enBtbWMvY2U5ZjhiMzZlMWZmYmU1NTMyOWMxOTZjODRmZTUxOTcucG5nIj48L2Rpdj48ZGl2
+IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTog
+MHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZh
+cmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJv
+dGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7
+IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90Ozsg
+Y29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs6L2v5Lu2
+6LC36L2v5Lu25aSn6YGTIDExIOWPt+iKseelnuWkp+WOpiAyLTNGPC9zcGFuPjwvZGl2PjxkaXYg
+c3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAw
+cHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFy
+aWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90
+aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsg
+b3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBj
+b2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9k
+aXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91
+dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsg
+Zm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNs
+ZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRl
+cjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkm
+cXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRz
+b2Z0LmNuPC9zcGFuPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj48L2Rpdj48L2Rp
+dj48L2Rpdj48L2Rpdj48IS0t8J+YgC0tPjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+
+
+--=_mailmaster-6a18e4a4_0_5af1_=--
diff --git a/media/inbound/2025-10-31_1700_G5开发周报_2025-10-27_--_2025-10-31---5d2c4d25-dce3-425d-b07a-c8411e0220e5.eml b/media/inbound/2025-10-31_1700_G5开发周报_2025-10-27_--_2025-10-31---5d2c4d25-dce3-425d-b07a-c8411e0220e5.eml
new file mode 100644
index 0000000..0bb378d
--- /dev/null
+++ b/media/inbound/2025-10-31_1700_G5开发周报_2025-10-27_--_2025-10-31---5d2c4d25-dce3-425d-b07a-c8411e0220e5.eml
@@ -0,0 +1,292 @@
+Date: Fri, 31 Oct 2025 17:00:07 +0800
+From: =?utf-8?B?5p2o6L2p?=
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?=
+Message-ID: <263A0B58-6782-4ECA-B5FC-0DBC3D34A8D4@witsoft.cn>
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEwLTI3IC0tICAyMDI1LTEw?=
+ =?utf-8?B?LTMx44CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_41bb_="
+
+--=_mailmaster-6a18e4a4_0_41bb_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjLniYjmnKzmtYvor5XlrozmiJAK5Lu7
+5YqhMu+8mkc15bqT5a2Y6aaW6aG16ZyA5rGC5rWL6K+V5a6M5oiQCuW4uOinhOW3peS9nArml6Xl
+uLjkuovliqEx77yaMjAyNS0xMC0yNyDkuLvmlbDmja7nvJbnoIHmraPliJnop4TojIPpnIDmsYLl
+vIDlj5EK5pel5bi45LqL5YqhMu+8mjIwMjUtMTAtMjgg5Li75pWw5o2u55u45YWzYnVn5L+u5aSN
+IArml6XluLjkuovliqEz77yaMjAyNS0xMC0yOSDkuLvmlbDmja7lkozlupPlrZjpnIDmsYLmtYvo
+r5Xlrozmr5UK5pel5bi45LqL5YqhNO+8mjIwMjUtMTAtMzAg5Li75pWw5o2u5Y2V5L2N5o2i566X
+5om56YeP5o6l5Y+j5byA5Y+R5pa55qGICuaXpeW4uOS6i+WKoTXvvJoyMDI1LTEwLTMxIOeJiOac
+rOWPkeW4g+aUr+aMgSDkuLvmlbDmja7pnIDmsYLor4TlrqHlkozlvIDlj5HmlrnmoYgK5LqM44CB
+5LiL5ZGo5bel5L2c6K6h5YiSCumHjeeCueS7u+WKoQrorqHliJIx77yaNS4yLjPniYjmnKzlvIDl
+j5EK5aSH5rOo77ya5pegCkJlc3QgcmVnYXJkcyzmnajovakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfk
+uqzova/ku7bosLfova/ku7blpKfpgZMgMTEg5Y+36Iqx56We5aSn5Y6mIDItM0YK5omL5py677ya
+MTg3MjYxMjg0ODkK6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbg==
+
+--=_mailmaster-6a18e4a4_0_41bb_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2
+IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAgY2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs
+YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv
+dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj
+YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhl
+bSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog
+cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu
+IiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiu
+oeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIi
+IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls
+eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI
+ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp
+emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4
+OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp
+bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j
+b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVh
+ZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6
+ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs
+dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2
+b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJn
+aW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBj
+dXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUx
+KTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0
+cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1k
+dHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx
+dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp
+Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw
+eDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEs
+IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9
+Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFn
+cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw
+LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g
+bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh
+biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bh
+bj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0
+YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBh
+ZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0
+LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1k
+dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu
+OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjLniYjmnKzmtYvo
+r5XlrozmiJA8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEw
+IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp
+bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3Jh
+cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41
+cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k
+LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7Ij7ku7vliqEy77yaPC9zcGFuPkc15bqT5a2Y6aaW6aG16ZyA5rGC5rWL6K+V5a6M5oiQ
+PC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0i
+bGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv
+c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9
+Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o
+ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl
+LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJz
+dHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi
+PjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9
+InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+
+5bi46KeE5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVs
+LWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0
+aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBl
+PSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg
+cG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFz
+cz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l
+LWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hp
+dGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9
+InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+
+5pel5bi45LqL5YqhMe+8mjIwMjUtMTAtMjcg5Li75pWw5o2u57yW56CB5q2j5YiZ6KeE6IyD6ZyA
+5rGC5byA5Y+RPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0
+YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/p
+m4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6
+IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQi
+IG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mb
+hem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDog
+MzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0i
+bjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZv
+bnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDss
+ICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm
+OyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw
+b3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNz
+PSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUt
+aGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0
+ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0i
+cGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7m
+l6XluLjkuovliqEy77yaMjAyNS0xMC0yOCDkuLvmlbDmja7nm7jlhbNidWfkv67lpI0KPC9zcGFu
+PjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0
+X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7
+T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2Eg
+TmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4
+OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZl
+OyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1k
+LXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsg
+b3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFw
+OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt
+cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIw
+MjUtMTAtMjkg5Li75pWw5o2u5ZKM5bqT5a2Y6ZyA5rGC5rWL6K+V5a6M5q+VPC9zcGFuPjwvcD48
+L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlw
+ZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJv
+cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh
+dGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1t
+YXJrPSItIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRl
+bSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVu
+IFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVl
+JnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48
+cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBo
+YW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv
+c2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFp
+biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE077yaMjAyNS0x
+MC0zMCDkuLvmlbDmja7ljZXkvY3mjaLnrpfmibnph4/mjqXlj6PlvIDlj5HmlrnmoYg8L3NwYW4+
+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3Rf
+aXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtP
+cGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBO
+ZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7
+IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7
+Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQt
+cCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBv
+cnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7
+IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1w
+bGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE177yaMjAy
+NS0xMC0zMSDniYjmnKzlj5HluIPmlK/mjIENIDwvc3Bhbj7kuLvmlbDmja7pnIDmsYLor4TlrqHl
+kozlvIDlj5HmlrnmoYg8L3A+PC9saT48L3VsPjwvb2w+PGgzIGNpZD0ibjI1IiBtZHR5cGU9Imhl
+YWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5
+OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hl
+bHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBh
+dm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFy
+Z2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40Mzsg
+Y3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1
+MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuozjgIHkuIvlkajlt6XkvZzorqHliJI8L3NwYW4+PC9z
+dHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im4yNiIg
+bWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7
+IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1s
+aXN0LWl0ZW0iIGNpZD0ibjI3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImZvbnQtZmFtaWx5
+OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hl
+bHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjog
+cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7
+IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yOCIgbWR0eXBlPSJw
+YXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAw
+cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz
+cGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+
+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsiPumHjeeCueS7u+WKoTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwv
+bGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4yOSIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9
+Ii0iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVh
+ciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlh
+bCwgc2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBw
+b3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMzAiIG1k
+dHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw
+cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBtZHR5cGU9InBhcmFncmFwaCIg
+Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg
+bGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07
+IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5s
+aW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPuiuoeWIkjHvvJo8L3NwYW4+NS4yLjPniYjmnKzlvIDlj5E8L3A+PC9saT48L3VsPjwvb2w+
+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjM5IiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQt
+ZW5kLWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1
+b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj
+YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2Io
+NTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29u
+dGVudC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25l
+OyBwYWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwv
+ZGl2PjxwIGNpZD0ibjQwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1wIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xl
+YXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJp
+YWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl
+cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFw
+OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTog
+MTZweDsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsiPuWkh+azqDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PHNw
+YW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7vvJrml6A8L3NwYW4+PC9wPjwvZGl2PjxkaXYgc3R5bGU9
+ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48YnI+PC9kaXY+PGRpdiBzcGVsbGNoZWNrPSJm
+YWxzZSIgaWQ9Im50ZXMtcGNtYWMtc2lnbmF0dXJlIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9
+r+mbhem7kTsiIGRhdGEtbnRlcy1zaWduYXR1cmU9InRydWUiPjxkaXYgc3R5bGU9ImZvbnQtc2l6
+ZToxNHB4O3BhZGRpbmc6MDttYXJnaW46MCI+PGRpdiBzdHlsZT0icGFkZGluZy1ib3R0b206MTBw
+eDttYXJnaW4tYm90dG9tOjEwcHg7ZGlzcGxheTppbmxpbmUtYmxvY2siPjxkaXYgc3R5bGU9ImZv
+bnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xv
+cjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhl
+aWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5
+OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAw
+Ij4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42
+OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+
+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxz
+dHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAg
+IH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7
+kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAg
+ICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwv
+c3R5bGU+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyBmb250LWZhbWls
+eTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgb3JwaGFuczogMjsgd2lkb3dz
+OiAyOyI+QmVzdCByZWdhcmRzLDwvc3Bhbj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu
+ZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBB
+cmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9y
+cGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAw
+cHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6
+ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdi
+KDE5MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjog
+MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5
+OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6
+IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjwvZGl2PjxkaXYg
+c3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAw
+cHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFy
+aWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90
+aDsiPjxpbWcgc3R5bGU9Im1heC13aWR0aDogdW5zZXQ7IiBzcmM9Imh0dHBzOi8vbWFpbC1vbmxp
+bmUubm9zZG4uMTI3Lm5ldC93enBtbWMvY2U5ZjhiMzZlMWZmYmU1NTMyOWMxOTZjODRmZTUxOTcu
+cG5nIj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6
+IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwg
+U2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93
+czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBw
+eDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29m
+dCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuWcsOWdgO+8muS4reWb
+vcK35Y2X5Lqs6L2v5Lu26LC36L2v5Lu25aSn6YGTIDExIOWPt+iKseelnuWkp+WOpiAyLTNGPC9z
+cGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjog
+MHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBT
+aW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dz
+OiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4
+OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0
+IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYx
+Mjg0ODk8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg
+Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNU
+SGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAy
+OyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRk
+aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtN
+aWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7pgq7nrrHv
+vJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8
+L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48IS0t8J+YgC0tPjwvZGl2PjwvZGl2PjwvYm9k
+eT48L2h0bWw+
+
+--=_mailmaster-6a18e4a4_0_41bb_=--
diff --git a/media/inbound/2025-11-07_1700_G5开发周报_2025-11-03_--_2025-11-07---86271876-e108-421e-b513-1a6035a56b99.eml b/media/inbound/2025-11-07_1700_G5开发周报_2025-11-03_--_2025-11-07---86271876-e108-421e-b513-1a6035a56b99.eml
new file mode 100644
index 0000000..71a9cd4
--- /dev/null
+++ b/media/inbound/2025-11-07_1700_G5开发周报_2025-11-03_--_2025-11-07---86271876-e108-421e-b513-1a6035a56b99.eml
@@ -0,0 +1,295 @@
+Date: Fri, 7 Nov 2025 17:00:00 +0800
+From: =?utf-8?B?5p2o6L2p?=
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?Q?xym=40witsoft.cn?= , =?utf-8?B?5pu+6I6J?=
+
+Message-ID:
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTExLTAzIC0tICAyMDI1LTEx?=
+ =?utf-8?B?LTA344CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_26e9_="
+
+--=_mailmaster-6a18e4a4_0_26e9_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjPniYjmnKzmtYvor5XlrozmiJAK5Lu7
+5YqhMu+8mkcz5a2Y6LSn6L+B56e75YiwRzUK5bi46KeE5bel5L2cCuaXpeW4uOS6i+WKoTHvvJoy
+MDI1LTExLTAzIEJPTee7tOaKpOW8guatpeWvvOWHuumcgOaxguW8gOWPkQrml6XluLjkuovliqEy
+77yaMjAyNS0xMS0wNCDmiJDmnKzmoLjnrpdHM+i/geenu+WIsEc1IArml6XluLjkuovliqEz77ya
+MjAyNS0xMS0wNSDkuLvmlbDmja7mtYvor5VidWfkv67lpI0K5pel5bi45LqL5YqhNO+8mjIwMjUt
+MTAtMDYg5oiQ5pys5qC4566X5Yqf6IO96L2s5rWL5ZKM5Lia5Yqh5Lq65ZGY6YWN572u5byA5Y+R
+5pa55qGICuaXpeW4uOS6i+WKoTXvvJoyMDI1LTEwLTA3IOWtmOi0p+a1i+ivlemXrumimOWkhOeQ
+huWNs+WOhuWPsumXrumimOS/ruWkjQrkuozjgIHkuIvlkajlt6XkvZzorqHliJIK6YeN54K55Lu7
+5YqhCuiuoeWIkjHvvJpHM+WtmOi0p+i/geenu+WIsEc1IOWPr+eUqOaAp+mXrumimOWkhOeQhuWS
+jOS6pOS6kuWujOWWhArlpIfms6jvvJrml6AKQmVzdCByZWdhcmRzLOadqOi9qQrlnLDlnYDvvJrk
+uK3lm73Ct+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8CuaJi+acuu+8mjE4NzI2MTI4NDg5CumC
+rueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24=
+
+--=_mailmaster-6a18e4a4_0_26e9_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2
+IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAgY2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNs
+YXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1mb2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVv
+dDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGlj
+YSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhl
+bSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjog
+cmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu
+IiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeacrOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiu
+oeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIi
+IG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWls
+eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI
+ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp
+emluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4
+OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdp
+bjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1j
+b2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVh
+ZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6
+ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVs
+dmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2
+b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJn
+aW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBj
+dXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUx
+KTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0
+cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1k
+dHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx
+dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp
+Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBw
+eDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEs
+IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9
+Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFn
+cmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAw
+LjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4g
+bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh
+biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bh
+bj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0
+YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBh
+ZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0
+LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1k
+dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu
+OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjPniYjmnKzmtYvo
+r5XlrozmiJA8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEw
+IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp
+bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3Jh
+cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41
+cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k
+LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7Ij7ku7vliqEy77yaPC9zcGFuPkcz5a2Y6LSn6L+B56e75YiwRzU8L3A+PC9saT48L3Vs
+PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMiIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHAgY2lkPSJuMTMiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2Nr
+IG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp
+dDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13
+cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9
+Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz
+PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7luLjop4Tlt6XkvZw8
+L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJu
+MTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZl
+OyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs
+YXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv
+Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl
+cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl
+LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz
+PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEx
+77yaMjAyNS0xMS0wMyBCT03nu7TmiqTlvILmraXlr7zlh7rpnIDmsYLlvIDlj5E8L3NwYW4+PC9w
+PjwvbGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0
+eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzog
+Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJl
+bGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRh
+LW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVs
+YXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9p
+dGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09w
+ZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5l
+dWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsg
+Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsi
+PjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1w
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9y
+cGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsg
+cG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBs
+YWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTLvvJoyMDI1
+LTExLTA0IOaIkOacrOaguOeul0cz6L+B56e75YiwRzUKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFz
+cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xv
+cjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm
+cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0
+aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1k
+dHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2lu
+OiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhM++8mjIwMjUtMTEtMDUg5Li75pWw5o2u
+5rWL6K+VYnVn5L+u5aSNPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9Im9sLWxp
+c3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiDl
+vq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5n
+LWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lk
+PSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmct
+bGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0i
+IGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1
+MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMm
+cXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5z
+LXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjog
+MHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgi
+IGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVt
+OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlu
+bGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7Ij7ml6XluLjkuovliqE077yaMjAyNS0xMC0wNiDmiJDmnKzmoLjnrpflip/og73ovazmtYvl
+kozkuJrliqHkurrlkZjphY3nva7lvIDlj5HmlrnmoYg8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNz
+PSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9y
+OiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZx
+dW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRp
+Y2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0
+eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46
+IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2
+ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqE177yaMjAyNS0xMC0wNyDlrZjotKfmtYvo
+r5Xpl67popjlpITnkIbljbPljoblj7Lpl67popjkv67lpI08YnI+PC9zcGFuPjwvcD48L2xpPjwv
+dWw+PC9vbD48aDMgY2lkPSJuMjUiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9j
+ayBtZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg
+JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl
+dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFm
+dGVyOiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNp
+emU6IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlv
+bjogcmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNl
+OiBwcmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ry
+b25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48
+c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJw
+bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS6
+jOOAgeS4i+WRqOW3peS9nOiuoeWIkjwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xh
+c3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjI2IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMjciIG1kdHlw
+ZT0ibGlzdF9pdGVtIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90Oywg
+JnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZl
+dGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6
+ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy
+ZWxhdGl2ZTsiPjxwIGNpZD0ibjI4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i
+bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw
+cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNs
+YXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBj
+bGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55Lu7
+5YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNp
+ZD0ibjI5IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAm
+cXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZl
+dGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdi
+KDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBj
+bGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4zMCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+
+PHAgY2lkPSJuMzEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAi
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3Jw
+aGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBw
+b3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxh
+aW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h5YiSMe+8mjwvc3Bhbj5HM+Wt
+mOi0p+i/geenu+WIsEc1IOWPr+eUqOaAp+mXrumimOWkhOeQhuWSjOS6pOS6kuWujOWWhDwvcD48
+L2xpPjwvdWw+PC9vbD48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMzkiIG1kdHlwZT0iaHIiIGNs
+YXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBT
+YW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZx
+dW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJi
+b3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJv
+cmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwg
+MjMxLCAyMzEpOyI+PC9kaXY+PHAgY2lkPSJuNDAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0i
+bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1
+b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90Oywg
+SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu
+ZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1z
+cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUx
+KTsgZm9udC1zaXplOiAxNnB4OyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1w
+YWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQt
+cGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5aSH5rOoPC9zcGFuPjwvc3Ry
+b25nPjwvc3Bhbj48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhw
+YW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPu+8muaXoDwvc3Bhbj48L3A+PC9k
+aXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxicj48L2Rpdj48ZGl2
+IHNwZWxsY2hlY2s9ImZhbHNlIiBpZD0ibnRlcy1wY21hYy1zaWduYXR1cmUiIHN0eWxlPSJmb250
+LWZhbWlseTog5b6u6L2v6ZuF6buROyIgZGF0YS1udGVzLXNpZ25hdHVyZT0idHJ1ZSI+PGRpdiBz
+dHlsZT0iZm9udC1zaXplOjE0cHg7cGFkZGluZzowO21hcmdpbjowIj48ZGl2IHN0eWxlPSJwYWRk
+aW5nLWJvdHRvbToxMHB4O21hcmdpbi1ib3R0b206MTBweDtkaXNwbGF5OmlubGluZS1ibG9jayI+
+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNp
+emU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAg
+ICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHls
+ZT0iZm9udC1mYW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7
+IGNvbG9yOiMwMDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxp
+bmUtaGVpZ2h0OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1m
+YW1pbHk6JnF1b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMw
+MDAwMDAiPgogICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0
+OiAxLjY7CiAgICAgICAgfQogICAgPC9zdHlsZT4KPGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6JnF1
+b3Q75b6u6L2v6ZuF6buRJnF1b3Q7OyBmb250LXNpemU6IDE0cHg7IGNvbG9yOiMwMDAwMDAiPgog
+ICAgPHN0eWxlPgogICAgICAgIGZvbnR7CiAgICAgICAgICAgIGxpbmUtaGVpZ2h0OiAxLjY7CiAg
+ICAgICAgfQogICAgPC9zdHlsZT4KPHNwYW4gc3R5bGU9ImNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5
+MSk7IGZvbnQtZmFtaWx5OiAnTWljcm9zb2Z0IFlhaGVpJzsgZm9udC1zaXplOiAxM3B4OyBvcnBo
+YW5zOiAyOyB3aWRvd3M6IDI7Ij5CZXN0IHJlZ2FyZHMsPC9zcGFuPjxkaXYgc3R5bGU9Im1hcmdp
+bjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFt
+aWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVy
+ZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0
+eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4
+OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBmb250LXNpemU6IDEz
+cHg7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7mnajovak8L3NwYW4+PC9kaXY+PGRpdiBz
+dHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBw
+eDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJp
+YW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3Ro
+OyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw
+cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNp
+bVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6
+IDI7IGNsZWFyOiBib3RoOyI+PGltZyBzdHlsZT0ibWF4LXdpZHRoOiB1bnNldDsiIHNyYz0iaHR0
+cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZiZTU1MzI5
+YzE5NmM4NGZlNTE5Ny5wbmciIG9yZ3dpZHRoPSIzMTRweCIgb3JnaGVpZ2h0PSI3MnB4Ij48L2Rp
+dj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0
+bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBm
+b250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xl
+YXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy
+OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZx
+dW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuWcsOWdgO+8mjwvc3Bhbj48c3BhbiBz
+dHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jv
+c29mdCBZYWhlaSZxdW90OzsiPuS4reWbvcK35Y2X5Lqs5LqR5a+G5Z+OTOagizUvMTDmpbw8L3Nw
+YW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw
+cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNp
+bVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6
+IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7
+IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQg
+WWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEy
+ODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBi
+b3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RI
+ZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7
+IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRp
+bmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01p
+Y3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8
+mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+Cjwv
+ZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwvZGl2PjwhLS3wn5iALS0+PC9kaXY+PC9kaXY+PC9ib2R5
+PjwvaHRtbD4=
+
+--=_mailmaster-6a18e4a4_0_26e9_=--
diff --git a/media/inbound/2025-11-14_1823_G5开发周报_2025-11-10_--_2025-11-14---510df288-27cd-4751-b21a-c477bb93dc90.eml b/media/inbound/2025-11-14_1823_G5开发周报_2025-11-10_--_2025-11-14---510df288-27cd-4751-b21a-c477bb93dc90.eml
new file mode 100644
index 0000000..adfea23
--- /dev/null
+++ b/media/inbound/2025-11-14_1823_G5开发周报_2025-11-10_--_2025-11-14---510df288-27cd-4751-b21a-c477bb93dc90.eml
@@ -0,0 +1,280 @@
+Date: Fri, 14 Nov 2025 18:23:48 +0800
+From: =?utf-8?B?5p2o6L2p?=
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?B?5aSP6ZO25pWP?= , =?utf-8?B?5pu+6I6J?=
+
+Message-ID: <1763115828441.2zmjeymcn4qodygzin2ixpgr@android.mail.163.com>
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTExLTEwIC0tICAyMDI1LTEx?=
+ =?utf-8?B?LTE044CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_1eb_="
+
+--=_mailmaster-6a18e4a4_0_1eb_=
+Content-Type: text/plain; charset="UTF-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCIOS4gOOAgeacrOWRqOW3peS9nOaAu+e7kyDph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUg5Lu75YqhMe+8mkc15Li75pWw5o2uNS4yLjPniYjmnKzlj5HniYgg5Lu75YqhMu+8
+mkcz5a2Y6LSn6L+B56e75YiwRzUg5bi46KeE5bel5L2cIOaXpeW4uOS6i+WKoTHvvJoyMDI1LTEx
+LTEwIOWtmOi0p+i/geenu+mXrumimOWkhOeQhiDml6XluLjkuovliqEy77yaMjAyNS0xMS0xMSDl
+haXlupPmiJDmnKznu7TmiqTph43mlrDovazmtYsg5pel5bi45LqL5YqhM++8mjIwMjUtMTEtMTIg
+5a2Y6LSn6L+B56e7LeW6k+WtmOebuOWFs+S7o+eggeWkhOeQhiDml6XluLjkuovliqE077yaMjAy
+NS0xMC0xMyDkuLvmlbDmja7kuqflk4HlhbPogZTlt6Xoibropobnm5blr7zlhaUg5LqM44CB5LiL
+5ZGo5bel5L2c6K6h5YiSIOmHjeeCueS7u+WKoSDorqHliJIx77yaRzPlrZjotKfov4Hnp7vliLBH
+NSDlj6/nlKjmgKfpl67popjlpITnkIblkozkuqTkupLlrozlloQg5aSH5rOo77ya5pegIOKAi0Jl
+c3QgcmVnYXJkcywg5p2o6L2pIOKAiyDlnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOS6keWvhuWfjkzm
+oIs1LzEw5qW8IOaJi+acuu+8mjE4NzI2MTI4NDg5IOmCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQu
+Y24=
+
+--=_mailmaster-6a18e4a4_0_1eb_=
+Content-Type: text/html; charset="UTF-8"
+Content-Transfer-Encoding: base64
+
+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJz
+ZXQ9VVRGLTgiPjxkaXYgc3R5bGU9ImxpbmUtaGVpZ2h0OiIgMS41O2ZvbnQtZmFtaWx5Oj0iIiAi
+5b6u6L2v6ZuF6buRIj0iIj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+
+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+PGRp
+diBzdHlsZT0iIj48cCBjaWQ9Im4wIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i
+bG9jayBtZC1wIG1kLWZvY3VzIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZx
+dW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDss
+IEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxp
+bmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hpdGUt
+c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1
+MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1w
+bGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5oKo5aW977yB
+5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS77yM6K+35a6h
+6ZiF44CCPC9zcGFuPjwvcD48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMiIgbWR0eXBlPSJociIg
+Y2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVu
+IFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVl
+JnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9
+ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsg
+Ym9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMx
+LCAyMzEsIDIzMSk7Ij48L2Rpdj48aDMgY2lkPSJuMyIgbWR0eXBlPSJoZWFkaW5nIiBjbGFzcz0i
+bWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBT
+YW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZx
+dW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhhbnM6
+IDQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206IDFy
+ZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4dDsg
+d2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyI+PHNwYW4gbWQt
+aW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBt
+ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+5LiA44CB5pys5ZGo5bel5L2c5oC757uTPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48
+L2gzPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBz
+dHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2Fu
+cyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNh
+bnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxl
+ZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u
+dC1zaXplOiAxNnB4OyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjUiIG1kdHlwZT0i
+bGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv
+c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0i
+bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl
+aWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUt
+c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0
+cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+
+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0i
+cGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7p
+h43ngrnlt6XkvZzlrozmiJDmg4XlhrU8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1
+bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuNyIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAz
+MHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu
+OCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn
+aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuOSIgbWR0eXBlPSJwYXJhZ3Jh
+cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41
+cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k
+LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7Ij7ku7vliqEx77yaRzXkuLvmlbDmja41LjIuM+eJiOacrOWPkeeJiDwvc3Bhbj48L3A+
+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTAiIG1kdHlwZT0ibGlzdF9pdGVt
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiBy
+ZWxhdGl2ZTsiPjxwIGNpZD0ibjExIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1i
+bG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGlu
+aGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBw
+cmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xh
+c3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WKoTLvvJo8
+L3NwYW4+RzPlrZjotKfov4Hnp7vliLBHNTwvcD48L2xpPjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0
+LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xMyIg
+bWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn
+aW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxh
+dGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3peS9nDwvc3Bhbj48L3N0cm9uZz48L3Nw
+YW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBk
+YXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg
+cGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxp
+c3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2
+IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1h
+cmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJl
+bGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTHvvJoyMDI1LTExLTEwIOWtmOi0
+p+i/geenu+mXrumimOWkhOeQhjwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PG9sIGNsYXNzPSJv
+bC1saXN0IiBzdGFydD0iIiBjaWQ9Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWls
+eTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFk
+ZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48dWwgY2xhc3M9InVsLWxpc3Qi
+IGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZvbnQtZmFtaWx5
+OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRk
+aW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1p
+dGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1
+MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT
+YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg
+c2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJn
+aW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdy
+YXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAu
+NXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBt
+ZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyI+5pel5bi45LqL5YqhMu+8mjIwMjUtMTEtMTEg5YWl5bqT5oiQ5pys57u05oqk6YeN
+5paw6L2s5rWLCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu
+MTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u
+dC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90Oywg
+JnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7
+IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv
+c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9
+Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o
+ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl
+LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJw
+bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaX
+peW4uOS6i+WKoTPvvJoyMDI1LTExLTEyIDwvc3Bhbj7lrZjotKfov4Hnp7st5bqT5a2Y55u45YWz
+5Luj56CB5aSE55CGPC9wPjwvbGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9
+IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7
+kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBw
+eDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0
+eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buR
+OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4
+OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTci
+IG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1m
+YW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1
+b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZv
+bnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0
+aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1k
+LWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWln
+aHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNw
+YWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp
+biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4
+uOS6i+WKoTTvvJoyMDI1LTEwLTEzIOS4u+aVsOaNruS6p+WTgeWFs+iBlOW3peiJuuimhuebluWv
+vOWFpTwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PGgzIGNpZD0ibjI1IiBtZHR5cGU9ImhlYWRp
+bmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAm
+cXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZl
+dGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5n
+OiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9p
+ZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2lu
+LWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vy
+c29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7
+Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7Ij7kuozjgIHkuIvlkajlt6XkvZzorqHliJI8L3NwYW4+PC9zdHJv
+bmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im4yNiIgbWR0
+eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBh
+ZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0
+LWl0ZW0iIGNpZD0ibjI3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAm
+cXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZl
+dGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdi
+KDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yOCIgbWR0eXBlPSJwYXJh
+Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg
+MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu
+IG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6
+IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNw
+YW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPumHjeeCueS7u+WKoTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+
+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4yOSIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0i
+IHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT
+YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg
+c2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMzAiIG1kdHlw
+ZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7
+IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBtZHR5cGU9InBhcmFncmFwaCIgY2xh
+c3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu
+ZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdo
+aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5l
+PSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi
+PuiuoeWIkjHvvJo8L3NwYW4+RzPlrZjotKfov4Hnp7vliLBHNSDlj6/nlKjmgKfpl67popjlpITn
+kIblkozkuqTkupLlrozlloQ8L3A+PC9saT48L3VsPjwvb2w+PGRpdiB0YWJpbmRleD0iLTEiIGNp
+ZD0ibjM5IiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQtZW5kLWJsb2NrIiBzdHlsZT0iZm9u
+dC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90Oywg
+JnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7
+IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6
+ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29udGVudC1ib3g7IGhlaWdodDogMnB4
+OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBwYWRkaW5nOiAwcHg7IGJhY2tn
+cm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2PjxwIGNpZD0ibjQwIiBtZHR5
+cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iZm9udC1mYW1p
+bHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7
+SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1z
+aXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJn
+aW46IDAuOGVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7
+IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuIG1kLWlubGlu
+ZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5s
+aW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPuWkh+azqDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg
+Y2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+Ij7vvJrml6A8L3NwYW4+PC9wPjwvZGl2PjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/p
+m4Xpu5E7Ij48YnI+PC9kaXY+PC9kaXY+PCEtLfCfmIAtLT48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2
+Pjxicj48L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2IGlkPSJpbWFpbF9zaWduYXR1cmUiIGNsYXNz
+PSJudGVzLXNpZ25hdHVyZSIgc3R5bGU9Im1hcmdpbjoyMHB4IDA7Ij48ZGl2IHN0eWxlPSJmb250
+LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6
+IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWln
+aHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTom
+cXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+
+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsK
+ICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7o
+va/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5
+bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9
+CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5Em
+cXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAg
+ICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0
+eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZv
+bnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsK
+ICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgrigIs8
+c3BhbiBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNy
+b3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJl
+c3QgcmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg
+Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNU
+SGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAy
+OyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRk
+aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtN
+aWNyb3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5
+MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFk
+ZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21h
+LCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7
+IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij7igIs8L2Rpdj48ZGl2IHN0eWxl
+PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm
+b250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQt
+bGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48
+aW1nIHNyYz0iaHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIz
+NmUxZmZiZTU1MzI5YzE5NmM4NGZlNTE5Ny5wbmciIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyI+
+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7
+IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1
+bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7
+IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJv
+cmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFo
+ZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WN
+l+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjog
+MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5
+OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6
+IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxl
+PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm
+b250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwg
+MTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0i
+bWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9u
+dC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxp
+Z2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNw
+YW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5l
+OiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiBy
+Z2IoMTkxLCAxOTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwv
+ZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+
+
+--=_mailmaster-6a18e4a4_0_1eb_=--
diff --git a/media/inbound/2025-11-21_1700_G5开发周报_2025-11-17_--_2025-11-21---d5273db7-f480-4bdb-8d5e-3614666cc2a1.eml b/media/inbound/2025-11-21_1700_G5开发周报_2025-11-17_--_2025-11-21---d5273db7-f480-4bdb-8d5e-3614666cc2a1.eml
new file mode 100644
index 0000000..ac00fba
--- /dev/null
+++ b/media/inbound/2025-11-21_1700_G5开发周报_2025-11-17_--_2025-11-21---d5273db7-f480-4bdb-8d5e-3614666cc2a1.eml
@@ -0,0 +1,294 @@
+Date: Fri, 21 Nov 2025 17:00:02 +0800
+From: =?utf-8?B?5p2o6L2p?=
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?B?5aSP6ZO25pWP?= , =?utf-8?B?5pu+6I6J?=
+
+Message-ID: <8F9E7854-FA9C-4CBD-A2FA-F09EC014142B@witsoft.cn>
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTExLTE3IC0tICAyMDI1LTEx?=
+ =?utf-8?B?LTIx44CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_bb3_="
+
+--=_mailmaster-6a18e4a4_0_bb3_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4zLjDniYjmnKzlj5HniYgK5Lu75YqhMu+8
+mkc15a2Y6LSn5rWL6K+V6Zeu6aKY5L+u5aSNCuW4uOinhOW3peS9nArml6XluLjkuovliqEx77ya
+MjAyNS0xMS0xNyDkuLvmlbDmja7lkozlrZjotKfljoblj7Lpl67popjkv67lpI0K5pel5bi45LqL
+5YqhMu+8mjIwMjUtMTEtMTgg5Li75pWw5o2u6ZyA5rGC5byA5Y+RIArml6XluLjkuovliqEz77ya
+MjAyNS0xMS0xOSDkuLvmlbDmja7nianmlpnmuIXljZXlpITnkIYK5pel5bi45LqL5YqhNO+8mjIw
+MjUtMTAtMjAg54mp5paZ5riF5Y2V5rWL6K+VYnVn5L+u5aSNCuaXpeW4uOS6i+WKoTTvvJoyMDI1
+LTEwLTIxIOS4muWKoeS6uuWRmOmFjee9ruWFs+iBlOWFs+ezu+aUuemAoO+8jOWIneWni+WMlueJ
+qeaWmea4heWNlWJ1Z+S/ruWkjQrkuozjgIHkuIvlkajlt6XkvZzorqHliJIK6YeN54K55Lu75Yqh
+CuiuoeWIkjHvvJrovazmtYvlj5HluIMK5aSH5rOo77ya5pegCkJlc3QgcmVnYXJkcyzmnajovakK
+5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzkupHlr4bln45M5qCLNS8xMOalvArmiYvmnLrvvJoxODcy
+NjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNu
+
+--=_mailmaster-6a18e4a4_0_bb3_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImxpbmUtaGVpZ2h0OiIgMS41O2ZvbnQtZmFtaWx5Oj0i
+IiAi5b6u6L2v6ZuF6buRIj0iIj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buR
+OyI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9IiI+
+PGRpdiBzdHlsZT0iIj48cCBjaWQ9Im4wIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVu
+ZC1ibG9jayBtZC1wIG1kLWZvY3VzIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu
+cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv
+dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7
+IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hp
+dGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUx
+LCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJt
+ZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5oKo5aW9
+77yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS77yM6K+3
+5a6h6ZiF44CCPC9zcGFuPjwvcD48ZGl2IHRhYmluZGV4PSItMSIgY2lkPSJuMiIgbWR0eXBlPSJo
+ciIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtP
+cGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBO
+ZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5
+bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBw
+eDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2Io
+MjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48aDMgY2lkPSJuMyIgbWR0eXBlPSJoZWFkaW5nIiBjbGFz
+cz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3Bl
+biBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1
+ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVy
+LWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTogYXZvaWQ7IG9ycGhh
+bnM6IDQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1hcmdpbi1ib3R0b206
+IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7IGN1cnNvcjogdGV4
+dDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyI+PHNwYW4g
+bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh
+biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyI+5LiA44CB5pys5ZGo5bel5L2c5oC757uTPC9zcGFuPjwvc3Ryb25nPjwvc3Bh
+bj48L2gzPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0
+IiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIg
+U2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWws
+IHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5n
+LWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsg
+Zm9udC1zaXplOiAxNnB4OyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjUiIG1kdHlw
+ZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7
+IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFz
+cz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l
+LWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hp
+dGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9
+InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94
+OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGlu
+ZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+Ij7ph43ngrnlt6XkvZzlrozmiJDmg4XlhrU8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xp
+Pjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuNyIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0
+OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lk
+PSJuOCIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBt
+YXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuOSIgbWR0eXBlPSJwYXJh
+Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg
+MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu
+IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7Ij7ku7vliqEx77yaRzXkuLvmlbDmja41LjMuMOeJiOacrOWPkeeJiDwvc3Bhbj48
+L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTAiIG1kdHlwZT0ibGlzdF9p
+dGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxwIGNpZD0ibjExIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVu
+ZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6
+IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNl
+OiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg
+Y2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS7u+WKoTLv
+vJo8L3NwYW4+RzXlrZjotKfmtYvor5Xpl67popjkv67lpI08L3A+PC9saT48L3VsPjxsaSBjbGFz
+cz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMiIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAg
+Y2lkPSJuMTMiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0
+eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFu
+czogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXIt
+cyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFp
+biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7luLjop4Tlt6XkvZw8L3NwYW4+PC9z
+dHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlw
+ZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFy
+Z2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNs
+YXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48
+cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBo
+YW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv
+c2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFp
+biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEx77yaMjAyNS0x
+MS0xNyDkuLvmlbDmja7lkozlrZjotKfljoblj7Lpl67popjkv67lpI08L3NwYW4+PC9wPjwvbGk+
+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJs
+aXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVy
+LWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZl
+OyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9
+Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7
+Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBz
+dHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu
+cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv
+dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp
+ZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6
+IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTLvvJoyMDI1LTExLTE4
+IOS4u+aVsOaNrumcgOaxguW8gOWPkQo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0
+LWl0ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEs
+IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy
+IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs
+LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJh
+Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg
+MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu
+IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7Ij7ml6XluLjkuovliqEz77yaMjAyNS0xMS0xOSDkuLvmlbDmja7nianmlpnmuIXl
+jZXlpITnkIY8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3Rh
+cnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mb
+hem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDog
+MzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIg
+bWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF
+6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAz
+MHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJu
+MTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u
+dC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90Oywg
+JnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7
+IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv
+c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9
+Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o
+ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl
+LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJw
+bGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaX
+peW4uOS6i+WKoTTvvJoyMDI1LTEwLTIwIOeJqeaWmea4heWNlea1i+ivlWJ1Z+S/ruWkjTwvc3Bh
+bj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlz
+dF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90
+O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNh
+IE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZw
+eDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2
+ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7
+IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k
+LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoy
+MDI1LTEwLTIxIOS4muWKoeS6uuWRmOmFjee9ruWFs+iBlOWFs+ezu+aUuemAoO+8jOWIneWni+WM
+lueJqeaWmea4heWNlWJ1Z+S/ruWkjTwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PGgzIGNpZD0i
+bjI1IiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtaGVhZGluZyIgc3R5
+bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMm
+cXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5z
+LXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVhay1hZnRlcjogYXZvaWQtcGFnZTsg
+YnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9udC1zaXplOiAxLjVlbTsgbWFyZ2lu
+LXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9zaXRpb246IHJlbGF0aXZlOyBsaW5l
+LWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IGNvbG9y
+OiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBh
+aXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1w
+bGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7kuozjgIHkuIvlkajlt6XkvZzo
+rqHliJI8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFy
+dD0iIiBjaWQ9Im4yNiIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+
+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjI3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5
+bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMm
+cXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5z
+LXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9
+Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0
+OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueS7u+WKoTwvc3Bhbj48L3N0cm9u
+Zz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4yOSIgbWR0eXBlPSJs
+aXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1
+b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90Oywg
+SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u
+dC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGlu
+Zy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRl
+bSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMxIiBtZHR5
+cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjog
+MHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZl
+OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsiPuiuoeWIkjHvvJrovazmtYvlj5HluIM8L3NwYW4+PC9wPjwvbGk+
+PC91bD48L29sPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9
+Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMm
+cXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7
+LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBj
+b2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1z
+aXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVy
+OiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEs
+IDIzMSk7Ij48L2Rpdj48cCBjaWQ9Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1l
+bmQtYmxvY2sgbWQtcCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDss
+ICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2
+ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl
+aWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNl
+OiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBm
+b250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXIt
+cyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFp
+biIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+
+PC9zcGFuPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQi
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+77ya5pegPC9zcGFuPjwvcD48L2Rpdj48
+ZGl2IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGJyPjwvZGl2PjwvZGl2Pjwh
+LS3wn5iALS0+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+
+PGRpdiBpZD0iaW1haWxfc2lnbmF0dXJlIiBjbGFzcz0ibnRlcy1zaWduYXR1cmUiIHN0eWxlPSJt
+YXJnaW46MjBweCAwOyIgZGF0YS1udGVzLXNpZ25hdHVyZT0idHJ1ZSIgc3BlbGxjaGVjaz0iZmFs
+c2UiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9u
+dC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewog
+ICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYg
+c3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAx
+NHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAg
+ICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZv
+bnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xv
+cjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhl
+aWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5
+OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAw
+Ij4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42
+OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+
+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxz
+dHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAg
+IH0KICAgIDwvc3R5bGU+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyBm
+b250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgb3JwaGFuczog
+Mjsgd2lkb3dzOiAyOyI+QmVzdCByZWdhcmRzLDwvc3Bhbj48ZGl2IHN0eWxlPSJtYXJnaW46IDBw
+eDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTog
+VGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBu
+b3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0i
+bWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9u
+dC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgZm9udC1zaXplOiAxM3B4OyBj
+b2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9
+Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv
+bnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1s
+aWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjwv
+ZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBv
+dXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47
+IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBj
+bGVhcjogYm90aDsiPjxpbWcgc3JjPSJodHRwczovL21haWwtb25saW5lLm5vc2RuLjEyNy5uZXQv
+d3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3LnBuZyIgc3R5bGU9Im1heC13
+aWR0aDogdW5zZXQ7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4
+OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwg
+U1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6
+IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBh
+ZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90
+O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuWcsOWd
+gO+8muS4reWbvcK35Y2X5Lqs5LqR5a+G5Z+OTOagizUvMTDmpbw8L3NwYW4+PC9kaXY+PGRpdiBz
+dHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBw
+eDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJp
+YW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3Ro
+OyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBv
+dXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNv
+bG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48L2Rp
+dj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0
+bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBm
+b250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xl
+YXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy
+OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZx
+dW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNv
+ZnQuY248L3NwYW4+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj48L2Rp
+dj48L2Rpdj48L2JvZHk+PC9odG1sPg==
+
+--=_mailmaster-6a18e4a4_0_bb3_=--
diff --git a/media/inbound/2025-11-28_1702_G5开发周报_2025-11-24_--_2025-11-28---8bc66321-ec0d-44b7-b15c-220fa6bd3d03.eml b/media/inbound/2025-11-28_1702_G5开发周报_2025-11-24_--_2025-11-28---8bc66321-ec0d-44b7-b15c-220fa6bd3d03.eml
new file mode 100644
index 0000000..ca6deb0
--- /dev/null
+++ b/media/inbound/2025-11-28_1702_G5开发周报_2025-11-24_--_2025-11-28---8bc66321-ec0d-44b7-b15c-220fa6bd3d03.eml
@@ -0,0 +1,299 @@
+Date: Fri, 28 Nov 2025 17:02:53 +0800
+From: =?utf-8?B?5p2o6L2p?=
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?B?5aSP6ZO25pWP?= , =?utf-8?B?5pu+6I6J?=
+
+Message-ID:
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTExLTI0IC0tICAyMDI1LTEx?=
+ =?utf-8?B?LTI444CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_2ea6_="
+
+--=_mailmaster-6a18e4a4_0_2ea6_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4zLjDmtYvor5XlrozmiJDniYjmnKzlj5Hn
+iYgK5Lu75YqhMu+8mkc15a2Y6LSn5rWL6K+V5a6M5oiQCuW4uOinhOW3peS9nArml6XluLjkuovl
+iqEx77yaMjAyNS0xMS0yNCDliJ3lp4vljJbnianmlpnmuIXljZXkuI7kuJrliqHkurrlkZjphY3n
+va7mtYvor5Xpl67popjkv67lpI0K5pel5bi45LqL5YqhMu+8mjIwMjUtMTEtMjUg5Yid5aeL5YyW
+54mp5paZ5riF5Y2V5LiO5Lia5Yqh5Lq65ZGY6YWN572u5rWL6K+V6Zeu6aKY5L+u5aSNIArml6Xl
+uLjkuovliqEz77yaMjAyNS0xMS0yNiDkuLvmlbDmja7pnIDmsYLmtYvor5Xpl67popjkv67lpI0g
+5pmT6K+a55S15Zmo546w5Zy65omT5Y2w5py66Zeu6aKY5pSv5oyBCuaXpeW4uOS6i+WKoTTvvJoy
+MDI1LTEwLTI3IOS4u+aVsOaNrue8uumZt+WkhOeQhiBHNeWtmOi0p+a1i+ivleWujOaIkArml6Xl
+uLjkuovliqE077yaMjAyNS0xMC0yOCDniYjmnKzlj5HluIPmlK/mjIHlkozpnIDmsYLor4TlrqEK
+5LqM44CB5LiL5ZGo5bel5L2c6K6h5YiSCumHjeeCueS7u+WKoQrorqHliJIx77yaRzXkuLvmlbDm
+ja41LjMuMeeJiOacrOW8gOWPkQrlpIfms6jvvJrml6AKQmVzdCByZWdhcmRzLOadqOi9qQrlnLDl
+nYDvvJrkuK3lm73Ct+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8CuaJi+acuu+8mjE4NzI2MTI4
+NDg5CumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY24=
+
+--=_mailmaster-6a18e4a4_0_2ea6_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2
+IHN0eWxlPSJsaW5lLWhlaWdodDoiIDEuNTtmb250LWZhbWlseTo9IiIgIuW+rui9r+mbhem7kSI9
+IiI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZv
+bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAg
+Y2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1m
+b2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns
+ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy
+aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o
+ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6
+IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5k
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeac
+rOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48
+L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBt
+ZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm
+cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0
+aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJn
+Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBj
+b250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5v
+bmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+
+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1
+b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj
+YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVy
+OiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6
+IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjog
+cmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBw
+cmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n
+IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry
+b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp
+biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOA
+geacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9
+Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt
+aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90
+O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsi
+PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7
+IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt
+ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i
+bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M
+5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxp
+c3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246
+IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlz
+dF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0
+aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt
+ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo
+dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh
+Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu
+IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75Yqh
+Me+8mkc15Li75pWw5o2uNS4zLjA8L3NwYW4+5rWL6K+V5a6M5oiQ54mI5pys5Y+R54mIPC9wPjwv
+bGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs
+YXRpdmU7Ij48cCBjaWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv
+Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl
+cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl
+LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz
+PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ku7vliqEy77yaPC9z
+cGFuPkc15a2Y6LSn5rWL6K+V5a6M5oiQPC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3Qt
+aXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBt
+ZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdp
+bjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyI+5bi46KeE5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bh
+bj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRh
+dGEtbWFyaz0iLSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw
+YWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlz
+dC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYi
+IG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFy
+Z2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVs
+YXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMe+8mjIwMjUtMTEtMjQg5Yid5aeL
+5YyW54mp5paZ5riF5Y2V5LiO5Lia5Yqh5Lq65ZGY6YWN572u5rWL6K+V6Zeu6aKY5L+u5aSNPC9z
+cGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0i
+bjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1z
+aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0
+aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlz
+dCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9
+Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAm
+cXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZl
+dGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6
+IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVs
+YXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxv
+Y2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhl
+cml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJl
+LXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz
+PSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEy
+77yaMjAyNS0xMS0yNSDliJ3lp4vljJbnianmlpnmuIXljZXkuI7kuJrliqHkurrlkZjphY3nva7m
+tYvor5Xpl67popjkv67lpI0KPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt
+IiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwg
+NTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5z
+JnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fu
+cy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46
+IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBo
+IiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94
+OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJl
+bTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1p
+bmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+5pel5bi45LqL5YqhM++8mjIwMjUtMTEtMjYg5Li75pWw5o2u6ZyA5rGC5rWL6K+V6Zeu
+6aKY5L+u5aSNDSA8L3NwYW4+5pmT6K+a55S15Zmo546w5Zy65omT5Y2w5py66Zeu6aKY5pSv5oyB
+PC9wPjwvbGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIg
+bWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246
+IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBk
+YXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5n
+OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjog
+cmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlz
+dF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90
+O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNh
+IE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZw
+eDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2
+ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7
+IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k
+LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoy
+MDI1LTEwLTI3IOS4u+aVsOaNrue8uumZt+WkhOeQhiBHNeWtmOi0p+a1i+ivleWujOaIkDwvc3Bh
+bj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlz
+dF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90
+O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNh
+IE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZw
+eDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2
+ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7
+IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k
+LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoy
+MDI1LTEwLTI4IOeJiOacrOWPkeW4g+aUr+aMgeWSjOmcgOaxguivhOWuoTwvc3Bhbj48L3A+PC9s
+aT48L3VsPjwvb2w+PGgzIGNpZD0ibjI1IiBtZHR5cGU9ImhlYWRpbmciIGNsYXNzPSJtZC1lbmQt
+YmxvY2sgbWQtaGVhZGluZyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVv
+dDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBI
+ZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBicmVh
+ay1hZnRlcjogYXZvaWQtcGFnZTsgYnJlYWstaW5zaWRlOiBhdm9pZDsgb3JwaGFuczogNDsgZm9u
+dC1zaXplOiAxLjVlbTsgbWFyZ2luLXRvcDogMXJlbTsgbWFyZ2luLWJvdHRvbTogMXJlbTsgcG9z
+aXRpb246IHJlbGF0aXZlOyBsaW5lLWhlaWdodDogMS40MzsgY3Vyc29yOiB0ZXh0OyB3aGl0ZS1z
+cGFjZTogcHJlLXdyYXA7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7Ij48c3BhbiBtZC1pbmxpbmU9
+InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94
+OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGlu
+ZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+Ij7kuozjgIHkuIvlkajlt6XkvZzorqHliJI8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvaDM+PG9s
+IGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im4yNiIgbWR0eXBlPSJsaXN0IiBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsg
+cG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjI3IiBt
+ZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVv
+dDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBI
+ZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250
+LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlv
+bjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1l
+bmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0
+OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFj
+ZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n
+IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry
+b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp
+biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeC
+ueS7u+WKoTwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0
+IiBjaWQ9Im4yOSIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWls
+eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI
+ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6
+IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94
+OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48
+bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2
+ZTsiPjxwIGNpZD0ibjMxIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7
+IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1k
+LXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuiuoeWIkjHvvJpHNeS4u+aV
+sOaNrjUuMy4x54mI5pys5byA5Y+RPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48ZGl2IHRhYmlu
+ZGV4PSItMSIgY2lkPSJuMzkiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2si
+IHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBT
+YW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwg
+c2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUx
+KTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsg
+aGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6
+IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PHAgY2lk
+PSJuNDAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxl
+PSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1
+b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1z
+ZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh
+bnM6IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PHNw
+YW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48
+c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyI+5aSH5rOoPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48c3BhbiBtZC1pbmxp
+bmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPu+8muaXoDwvc3Bhbj48L3A+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1p
+bHk6IOW+rui9r+mbhem7kTsiPjxicj48L2Rpdj48L2Rpdj48IS0t8J+YgC0tPjwvZGl2PjwvZGl2
+PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXYgaWQ9ImltYWlsX3NpZ25h
+dHVyZSIgY2xhc3M9Im50ZXMtc2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luOjIwcHggMDsiIGRhdGEt
+bnRlcy1zaWduYXR1cmU9InRydWUiIHNwZWxsY2hlY2s9ImZhbHNlIj48ZGl2IHN0eWxlPSJmb250
+LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6
+IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWln
+aHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTom
+cXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+
+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsK
+ICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7o
+va/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5
+bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9
+CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5Em
+cXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAg
+ICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0
+eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZv
+bnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsK
+ICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8c3Bh
+biBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNyb3Nv
+ZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJlc3Qg
+cmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9y
+ZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVp
+dGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3
+aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n
+OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNy
+b3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwg
+MTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGlu
+ZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBB
+cmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9y
+cGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJn
+aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh
+bWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1
+cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48aW1nIHNy
+Yz0iaHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZi
+ZTU1MzI5YzE5NmM4NGZlNTE5Ny5wbmciIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyI+PC9kaXY+
+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp
+bmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9u
+dC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFy
+OiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjog
+MHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVv
+dDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOS6
+keWvhuWfjkzmoIs1LzEw5qW8PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBw
+YWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhv
+bWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1h
+bDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJn
+aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh
+bWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAx
+OTEpOyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2lu
+OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p
+bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJl
+czogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5
+bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7
+IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkx
+LCAxOTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2Pgo8
+L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ib2R5
+PjwvaHRtbD4=
+
+--=_mailmaster-6a18e4a4_0_2ea6_=--
diff --git a/media/inbound/2025-12-05_1703_G5开发周报_2025-12-01_--_2025-12-05---f2e34d1b-a735-4363-87b8-91aed7d222c5.eml b/media/inbound/2025-12-05_1703_G5开发周报_2025-12-01_--_2025-12-05---f2e34d1b-a735-4363-87b8-91aed7d222c5.eml
new file mode 100644
index 0000000..8c83297
--- /dev/null
+++ b/media/inbound/2025-12-05_1703_G5开发周报_2025-12-01_--_2025-12-05---f2e34d1b-a735-4363-87b8-91aed7d222c5.eml
@@ -0,0 +1,292 @@
+Date: Fri, 5 Dec 2025 17:03:29 +0800
+From: =?utf-8?B?5p2o6L2p?=
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?B?5aSP6ZO25pWP?=
+Message-ID: <6A6CBFA4-6AE4-4AC4-9846-25B17549A903@witsoft.cn>
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEyLTAxIC0tICAyMDI1LTEy?=
+ =?utf-8?B?LTA144CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_12db_="
+
+--=_mailmaster-6a18e4a4_0_12db_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4zLjHniYjmnKzlvIDlj5EK5bi46KeE5bel
+5L2cCuaXpeW4uOS6i+WKoTHvvJoyMDI1LTEyLTAxIOWNleS9jeaNoueul+aJuemHj+aOpeWPowrm
+l6XluLjkuovliqEy77yaMjAyNS0xMi0wMiBCT03nu7TmiqTkvJjljJbpnIDmsYLlvIDlj5Hovazm
+tYsgCuaXpeW4uOS6i+WKoTPvvJoyMDI1LTEyLTAzIOW3peiJuui3r+e6v+WvvOWHuuWumuWItuS8
+mOWMlgrml6XluLjkuovliqE077yaMjAyNS0xMi0wNCDkuJrliqHkurrlkZjphY3nva7mjqXlj6Pl
+vIDlj5HkuI7lt6XoibrpobXpnaLliY3lkI7nq6/ogZTosIMK5pel5bi45LqL5YqhNO+8mjIwMjUt
+MTItMDUg55Sf5Lqn566h55CG5o6l5Y+j5byA5Y+R6IGU6LCDCuS6jOOAgeS4i+WRqOW3peS9nOiu
+oeWIkgrph43ngrnku7vliqEK6K6h5YiSMe+8mkc15Li75pWw5o2uNS4zLjHniYjmnKzlvIDlj5Hl
+rozmiJAg6L2s5rWL5LiK57q/CuWkh+azqO+8muaXoApCZXN0IHJlZ2FyZHMs5p2o6L2pCuWcsOWd
+gO+8muS4reWbvcK35Y2X5Lqs5LqR5a+G5Z+OTOagizUvMTDmpbwK5omL5py677yaMTg3MjYxMjg0
+ODkK6YKu566x77yaeWFuZ3h1YW5Ad2l0c29mdC5jbg==
+
+--=_mailmaster-6a18e4a4_0_12db_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2
+IHN0eWxlPSJsaW5lLWhlaWdodDoiIDEuNTtmb250LWZhbWlseTo9IiIgIuW+rui9r+mbhem7kSI9
+IiI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZv
+bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAg
+Y2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1m
+b2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns
+ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy
+aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o
+ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6
+IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5k
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeac
+rOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48
+L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBt
+ZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm
+cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0
+aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJn
+Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBj
+b250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5v
+bmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+
+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1
+b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj
+YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVy
+OiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6
+IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjog
+cmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBw
+cmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n
+IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry
+b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp
+biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOA
+geacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9
+Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt
+aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90
+O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsi
+PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7
+IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt
+ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i
+bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M
+5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxp
+c3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246
+IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlz
+dF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0
+aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt
+ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo
+dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh
+Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu
+IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75Yqh
+Me+8mkc15Li75pWw5o2uNS4zLjHniYjmnKzlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNz
+PSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBj
+aWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5z
+OiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0
+aW9uOiByZWxhdGl2ZTsiPjxicj48L3A+PC9saT48L3VsPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVt
+IiBjaWQ9Im4xMiIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTMiIG1kdHlw
+ZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAw
+cHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7
+Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7Ij7luLjop4Tlt6XkvZw8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwv
+cD48L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1t
+YXJrPSItIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRp
+bmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0
+ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0
+eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46
+IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2
+ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEx77yaMjAyNS0xMi0wMSDljZXkvY3mjaLn
+rpfmibnph4/mjqXlj6M8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlz
+dCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmct
+bGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9
+Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u
+6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1s
+ZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIg
+Y2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUx
+KTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZx
+dW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMt
+c2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw
+cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIg
+Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg
+bGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07
+IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5s
+aW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPuaXpeW4uOS6i+WKoTLvvJoyMDI1LTEyLTAyIEJPTee7tOaKpOS8mOWMlumcgOaxguW8gOWP
+kei9rOa1iwo8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3
+IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQt
+ZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZx
+dW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBm
+b250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJt
+ZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVp
+Z2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1z
+cGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxh
+aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6Xl
+uLjkuovliqEz77yaMjAyNS0xMi0wMyDlt6Xoibrot6/nur/lr7zlh7rlrprliLbkvJjljJY8YnI+
+PC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNp
+ZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBv
+c2l0aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0i
+bGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9z
+aXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjE3IiBtZHR5
+cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtZmFtaWx5
+OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hl
+bHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNp
+emU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjog
+cmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQt
+YmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBp
+bmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTog
+cHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNs
+YXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ml6XluLjkuovl
+iqE077yaMjAyNS0xMi0wNCDkuJrliqHkurrlkZjphY3nva7mjqXlj6PlvIDlj5HkuI7lt6Xoibrp
+obXpnaLliY3lkI7nq6/ogZTosIM8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNzPSJtZC1saXN0LWl0
+ZW0iIGNpZD0ibjE3IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUx
+LCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNh
+bnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBz
+YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp
+bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xOCIgbWR0eXBlPSJwYXJhZ3Jh
+cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41
+cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k
+LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7Ij7ml6XluLjkuovliqE077yaMjAyNS0xMi0wNSDnlJ/kuqfnrqHnkIbmjqXlj6PlvIDl
+j5HogZTosIM8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxoMyBjaWQ9Im4yNSIgbWR0eXBlPSJo
+ZWFkaW5nIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLWhlYWRpbmciIHN0eWxlPSJmb250LWZhbWls
+eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI
+ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNp
+emluZzogYm9yZGVyLWJveDsgYnJlYWstYWZ0ZXI6IGF2b2lkLXBhZ2U7IGJyZWFrLWluc2lkZTog
+YXZvaWQ7IG9ycGhhbnM6IDQ7IGZvbnQtc2l6ZTogMS41ZW07IG1hcmdpbi10b3A6IDFyZW07IG1h
+cmdpbi1ib3R0b206IDFyZW07IHBvc2l0aW9uOiByZWxhdGl2ZTsgbGluZS1oZWlnaHQ6IDEuNDM7
+IGN1cnNvcjogdGV4dDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBjb2xvcjogcmdiKDUxLCA1MSwg
+NTEpOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyI+5LqM44CB5LiL5ZGo5bel5L2c6K6h5YiSPC9zcGFuPjwv
+c3Ryb25nPjwvc3Bhbj48L2gzPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuMjYi
+IG1kdHlwZT0ibGlzdCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4
+OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQt
+bGlzdC1pdGVtIiBjaWQ9Im4yNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJmb250LWZhbWls
+eTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtI
+ZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6
+IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94
+OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMjgiIG1kdHlwZT0i
+cGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHgg
+MHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48
+c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6
+aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi
+PjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7Ij7ph43ngrnku7vliqE8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48
+L2xpPjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMjkiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJr
+PSItIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xl
+YXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJp
+YWwsIHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsg
+Ym94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsg
+cG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjMwIiBt
+ZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjog
+MHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4zMSIgbWR0eXBlPSJwYXJhZ3JhcGgi
+IGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVt
+OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlu
+bGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7Ij7orqHliJIx77yaRzXkuLvmlbDmja41LjMuMeeJiOacrOW8gOWPkeWujOaIkCDovazmtYvk
+uIrnur88L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxkaXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4z
+OSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVuZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFt
+aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90
+O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2
+cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRlbnQtYm94OyBoZWlnaHQ6IDJweDsgbWFy
+Z2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5k
+LWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rpdj48cCBjaWQ9Im40MCIgbWR0eXBlPSJw
+YXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAm
+cXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZl
+dGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5n
+OiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAw
+LjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xv
+cjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InN0
+cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+
+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0i
+cGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7l
+pIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNz
+PSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+77ya
+5pegPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buR
+OyI+PGJyPjwvZGl2PjwvZGl2PjwhLS3wn5iALS0+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdj48YnI+
+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdiBpZD0iaW1haWxfc2lnbmF0dXJlIiBjbGFzcz0ibnRl
+cy1zaWduYXR1cmUiIHN0eWxlPSJtYXJnaW46MjBweCAwOyIgZGF0YS1udGVzLXNpZ25hdHVyZT0i
+dHJ1ZSIgc3BlbGxjaGVjaz0iZmFsc2UiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+
+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxz
+dHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAg
+IH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7
+kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAg
+ICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwv
+c3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90Ozsg
+Zm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250
+ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+Cjxk
+aXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXpl
+OiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAg
+ICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9
+ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBj
+b2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5l
+LWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxzcGFuIHN0eWxlPSJjb2xvcjog
+cmdiKDE5MSwgMTkxLCAxOTEpOyBmb250LWZhbWlseTogJ01pY3Jvc29mdCBZYWhlaSc7IGZvbnQt
+c2l6ZTogMTNweDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyI+QmVzdCByZWdhcmRzLDwvc3Bhbj48
+ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGlu
+ZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250
+LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6
+IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw
+cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90
+OzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9z
+cGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjog
+MHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBT
+aW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dz
+OiAyOyBjbGVhcjogYm90aDsiPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n
+OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFy
+aWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3Jw
+aGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxpbWcgc3JjPSJodHRwczovL21haWwt
+b25saW5lLm5vc2RuLjEyNy5uZXQvd3pwbW1jL2NlOWY4YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1
+MTk3LnBuZyIgc3R5bGU9Im1heC13aWR0aDogdW5zZXQ7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJn
+aW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZh
+bWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1
+cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBz
+dHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBw
+eDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigx
+OTEsIDE5MSwgMTkxKTsiPuWcsOWdgO+8muS4reWbvcK35Y2X5Lqs5LqR5a+G5Z+OTOagizUvMTDm
+pbw8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9y
+ZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVp
+dGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3
+aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5n
+OiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNy
+b3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7miYvmnLrvvJox
+ODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog
+MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh
+bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh
+bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7
+IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZx
+dW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPumC
+rueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9k
+aXY+CjwvZGl2Pgo8L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2JvZHk+PC9odG1sPg==
+
+--=_mailmaster-6a18e4a4_0_12db_=--
diff --git a/media/inbound/2025-12-12_1715_G5开发周报_2025-12-08_--_2025-12-12---648cc665-1351-4eb0-8c68-03246b955854.eml b/media/inbound/2025-12-12_1715_G5开发周报_2025-12-08_--_2025-12-12---648cc665-1351-4eb0-8c68-03246b955854.eml
new file mode 100644
index 0000000..70713bf
--- /dev/null
+++ b/media/inbound/2025-12-12_1715_G5开发周报_2025-12-08_--_2025-12-12---648cc665-1351-4eb0-8c68-03246b955854.eml
@@ -0,0 +1,281 @@
+Date: Fri, 12 Dec 2025 17:15:23 +0800
+From: =?utf-8?B?5p2o6L2p?=
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?B?5aSP6ZO25pWP?=
+Message-ID: <00E40C42-00B7-42D2-BDCB-900A91CC690E@witsoft.cn>
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEyLTA4IC0tICAyMDI1LTEy?=
+ =?utf-8?B?LTEy44CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_153c_="
+
+--=_mailmaster-6a18e4a4_0_153c_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS4zLjHniYjmnKzmtYvor5XlrozmiJAg5Y+R
+5biDCuS7u+WKoTLvvJrplIDllK4g55Sf5LqnIOaOpeWPo+iBlOiwg+WujOaIkArluLjop4Tlt6Xk
+vZwK5pel5bi45LqL5YqhMe+8mjIwMjUtMTItMDgg5Li75pWw5o2u5YWo6YOo6L2s5rWLIOmXrumi
+mOS/ruWkjQrml6XluLjkuovliqEy77yaMjAyNS0xMi0wOSDkuJrliqHkurrlkZjphY3nva7mjqXl
+j6PogZTosIMgCuaXpeW4uOS6i+WKoTPvvJoyMDI1LTEyLTEwIOS4u+aVsOaNruWvueWkluaOpeWP
+o+iBlOiwgwrml6XluLjkuovliqE077yaMjAyNS0xMi0xMSDmjqXlj6Plr7nmjqXnvLrpmbflpITn
+kIYK5pel5bi45LqL5YqhNO+8mjIwMjUtMTItMTIg5o6l5Y+j5rWL6K+V5a6M5oiQ5LiO54mI5pys
+5Y+R5biD5pSv5oyBCumHjeeCueS7u+WKoQrorqHliJIx77yaRzXkuLvmlbDmja41LjQuMOeJiOac
+rOW8gOWPkQrlpIfms6jvvJrml6AKQmVzdCByZWdhcmRzLOadqOi9qQrlnLDlnYDvvJrkuK3lm73C
+t+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8CuaJi+acuu+8mjE4NzI2MTI4NDg5CumCrueuse+8
+mnlhbmd4dWFuQHdpdHNvZnQuY24=
+
+--=_mailmaster-6a18e4a4_0_153c_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2
+IHN0eWxlPSJsaW5lLWhlaWdodDoiIDEuNTtmb250LWZhbWlseTo9IiIgIuW+rui9r+mbhem7kSI9
+IiI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZv
+bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAg
+Y2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1m
+b2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns
+ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy
+aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o
+ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6
+IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5k
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeac
+rOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48
+L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBt
+ZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm
+cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0
+aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJn
+Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBj
+b250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5v
+bmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+
+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1
+b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj
+YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVy
+OiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6
+IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjog
+cmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBw
+cmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n
+IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry
+b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp
+biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOA
+geacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9
+Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt
+aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90
+O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsi
+PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7
+IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt
+ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i
+bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M
+5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxp
+c3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246
+IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlz
+dF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0
+aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt
+ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo
+dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh
+Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu
+IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75Yqh
+Me+8mkc15Li75pWw5o2uNS4zLjHniYjmnKzmtYvor5XlrozmiJAg5Y+R5biDPC9zcGFuPjwvcD48
+L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl
+bGF0aXZlOyI+PHAgY2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs
+b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o
+ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy
+ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij7ku7vliqEy77ya6ZSA5ZSuIOeUn+S6pyDmjqXl
+j6PogZTosIPlrozmiJA8L3A+PC9saT48L3VsPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9
+Im4xMiIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBt
+YXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTMiIG1kdHlwZT0icGFy
+YWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3Jk
+ZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4
+IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3Bh
+biBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5n
+OiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxz
+cGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6
+IGJvcmRlci1ib3g7Ij7luLjop4Tlt6XkvZw8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xp
+Pjx1bCBjbGFzcz0idWwtbGlzdCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSIt
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVm
+dDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNp
+ZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7
+IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJw
+YXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAw
+cHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxz
+cGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6
+IGJvcmRlci1ib3g7Ij7ml6XluLjkuovliqEx77yaMjAyNS0xMi0wOCDkuLvmlbDmja7lhajpg6jo
+vazmtYsg6Zeu6aKY5L+u5aSNPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9Im9s
+LWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFtaWx5
+OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRk
+aW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlzdCIg
+Y2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1pbHk6
+IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRp
+bmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0
+ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEsIDUx
+LCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNh
+bnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBz
+YW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdp
+bjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJhZ3Jh
+cGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1i
+b3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41
+cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1k
+LWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7Ij7ml6XluLjkuovliqEy77yaMjAyNS0xMi0wOSDkuJrliqHkurrlkZjphY3nva7mjqXl
+j6PogZTosIMKPC9zcGFuPjwvcD48L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4x
+NyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250
+LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAm
+cXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsg
+Zm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9z
+aXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0i
+bWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhl
+aWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUt
+c3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBs
+YWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel
+5bi45LqL5YqhM++8mjIwMjUtMTItMTAg5Li75pWw5o2u5a+55aSW5o6l5Y+j6IGU6LCDPGJyPjwv
+c3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9
+Im40IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7Ij48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxp
+c3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1z
+aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0
+aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBl
+PSJsaXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTog
+JnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2
+ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXpl
+OiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl
+bGF0aXZlOyI+PHAgY2lkPSJuMTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs
+b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o
+ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy
+ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFz
+cz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5Yqh
+NO+8mjIwMjUtMTItMTEg5o6l5Y+j5a+55o6l57y66Zm35aSE55CGPC9zcGFuPjwvcD48L2xpPjxs
+aSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNyIgbWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxl
+PSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1
+b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90Oywg
+SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5n
+OiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJu
+MTgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsg
+bWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjog
+cmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxl
+PSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhNO+8mjIwMjUtMTItMTIg5o6l
+5Y+j5rWL6K+V5a6M5oiQ5LiO54mI5pys5Y+R5biD5pSv5oyBPC9zcGFuPjwvcD48L2xpPjwvdWw+
+PC9vbD48b2wgY2xhc3M9Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjI2IiBtZHR5cGU9Imxpc3Qi
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0
+OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lk
+PSJuMjciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4g
+U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm
+cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGNvbG9yOiByZ2IoNTEsIDUxLCA1
+MSk7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7
+IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjI4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xh
+c3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGlu
+ZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdo
+aXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5l
+PSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxp
+bmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94
+OyI+6YeN54K55Lu75YqhPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9
+InVsLWxpc3QiIGNpZD0ibjI5IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZv
+bnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDss
+ICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlm
+OyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJv
+cmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxh
+dGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4zMCIgbWR0eXBlPSJsaXN0X2l0
+ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246
+IHJlbGF0aXZlOyI+PHAgY2lkPSJuMzEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5k
+LWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDog
+aW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6
+IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBj
+bGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6K6h5YiSMe+8
+mkc15Li75pWw5o2uNS40LjDniYjmnKzlvIDlj5E8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxk
+aXYgdGFiaW5kZXg9Ii0xIiBjaWQ9Im4zOSIgbWR0eXBlPSJociIgY2xhc3M9Im1kLWhyIG1kLWVu
+ZC1ibG9jayIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90
+O0NsZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2Es
+IEFyaWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBjb2xvcjogcmdiKDUx
+LCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7Ij48aHIgc3R5bGU9ImJveC1zaXppbmc6IGNvbnRl
+bnQtYm94OyBoZWlnaHQ6IDJweDsgbWFyZ2luOiAxNnB4IDBweDsgYm9yZGVyOiAwcHggbm9uZTsg
+cGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjMxLCAyMzEsIDIzMSk7Ij48L2Rp
+dj48cCBjaWQ9Im40MCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQt
+cCIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy
+IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs
+LCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp
+dDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsg
+cG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2
+cHg7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9uZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJi
+b3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij7lpIfms6g8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjxzcGFu
+IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiBtZC1leHBhbmQiIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+77ya5pegPC9zcGFuPjwvcD48L2Rpdj48ZGl2IHN0eWxlPSJm
+b250LWZhbWlseTog5b6u6L2v6ZuF6buROyI+PGJyPjwvZGl2PjwvZGl2PjwhLS3wn5iALS0+PC9k
+aXY+PC9kaXY+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdiBpZD0iaW1h
+aWxfc2lnbmF0dXJlIiBjbGFzcz0ibnRlcy1zaWduYXR1cmUiIHN0eWxlPSJtYXJnaW46MjBweCAw
+OyIgZGF0YS1udGVzLXNpZ25hdHVyZT0idHJ1ZSIgc3BlbGxjaGVjaz0iZmFsc2UiPjxkaXYgc3R5
+bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4
+OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBs
+aW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQt
+ZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjoj
+MDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdo
+dDogMS42OwogICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZx
+dW90O+W+rui9r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4K
+ICAgIDxzdHlsZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42Owog
+ICAgICAgIH0KICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9
+r+mbhem7kSZxdW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHls
+ZT4KICAgICAgICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0K
+ICAgIDwvc3R5bGU+CjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiZxdW90O+W+rui9r+mbhem7kSZx
+dW90OzsgZm9udC1zaXplOiAxNHB4OyBjb2xvcjojMDAwMDAwIj4KICAgIDxzdHlsZT4KICAgICAg
+ICBmb250ewogICAgICAgICAgICBsaW5lLWhlaWdodDogMS42OwogICAgICAgIH0KICAgIDwvc3R5
+bGU+CjxzcGFuIHN0eWxlPSJjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyBmb250LWZhbWlseTog
+J01pY3Jvc29mdCBZYWhlaSc7IGZvbnQtc2l6ZTogMTNweDsgb3JwaGFuczogMjsgd2lkb3dzOiAy
+OyI+QmVzdCByZWdhcmRzLDwvc3Bhbj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog
+MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh
+bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh
+bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7
+IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZx
+dW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgZm9udC1zaXplOiAxM3B4OyBjb2xvcjogcmdiKDE5
+MSwgMTkxLCAxOTEpOyI+5p2o6L2pPC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4
+OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBU
+YWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5v
+cm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjwvZGl2PjxkaXYgc3R5
+bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7
+IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFu
+dC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsi
+PjxpbWcgc3JjPSJodHRwczovL21haWwtb25saW5lLm5vc2RuLjEyNy5uZXQvd3pwbW1jL2NlOWY4
+YjM2ZTFmZmJlNTUzMjljMTk2Yzg0ZmU1MTk3LnBuZyIgc3R5bGU9Im1heC13aWR0aDogdW5zZXQ7
+Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBw
+eDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2lt
+U3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czog
+MjsgY2xlYXI6IGJvdGg7Ij48c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsg
+Ym9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZ
+YWhlaSZxdW90OzsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuWcsOWdgO+8muS4reWbvcK3
+5Y2X5Lqs5LqR5a+G5Z+OTOagizUvMTDmpbw8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2lu
+OiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1p
+bHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJl
+czogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5
+bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7
+IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkx
+LCAxOTEsIDE5MSk7Ij7miYvmnLrvvJoxODcyNjEyODQ4OTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxl
+PSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBm
+b250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQt
+bGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48
+c3BhbiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxp
+bmU6IDBweDsgZm9udC1mYW1pbHk6ICZxdW90O01pY3Jvc29mdCBZYWhlaSZxdW90OzsgY29sb3I6
+IHJnYigxOTEsIDE5MSwgMTkxKTsiPumCrueuse+8mnlhbmd4dWFuQHdpdHNvZnQuY248L3NwYW4+
+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj48L2Rpdj48L2Rpdj48L2Rp
+dj48L2JvZHk+PC9odG1sPg==
+
+--=_mailmaster-6a18e4a4_0_153c_=--
diff --git a/media/inbound/2025-12-19_1702_G5开发周报_2025-12-15_--_2025-12-19---8cf34717-bc2b-4a2d-85a3-37b80b05934e.eml b/media/inbound/2025-12-19_1702_G5开发周报_2025-12-15_--_2025-12-19---8cf34717-bc2b-4a2d-85a3-37b80b05934e.eml
new file mode 100644
index 0000000..510da77
--- /dev/null
+++ b/media/inbound/2025-12-19_1702_G5开发周报_2025-12-15_--_2025-12-19---8cf34717-bc2b-4a2d-85a3-37b80b05934e.eml
@@ -0,0 +1,283 @@
+Date: Fri, 19 Dec 2025 17:02:23 +0800
+From: =?utf-8?B?5p2o6L2p?=
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?B?5aSP6ZO25pWP?=
+Message-ID: <01387C12-8EA8-4821-B389-FDC87C727440@witsoft.cn>
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEyLTE1IC0tICAyMDI1LTEy?=
+ =?utf-8?B?LTE544CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_7e87_="
+
+--=_mailmaster-6a18e4a4_0_7e87_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjDniYjmnKzlvIDlj5HlrozmiJAg6L2s
+5rWLCuS7u+WKoTLvvJrotKLliqHpnIDmsYLlvIDlj5EK5bi46KeE5bel5L2cCuaXpeW4uOS6i+WK
+oTHvvJoyMDI1LTEyLTE1IOS4u+aVsOaNrumcgOaxguivhOWuoeW3peaXtuivhOS8sOW8gOWPkeaW
+ueahiOiuvuiuoQrml6XluLjkuovliqEy77yaMjAyNS0xMi0xNiDkuLvmlbDmja7lr7nlpJbmjqXl
+j6Mg5pe26Ze06IyD5Zu05p+l6K+i5ZKM5qCh6aqMIArml6XluLjkuovliqEz77yaMjAyNS0xMi0x
+NyDkuLvmlbDmja7pnIDmsYLlvIDlj5EK5pel5bi45LqL5YqhNO+8mjIwMjUtMTItMTgg5Lia5Yqh
+5Lq65ZGY6YWN572u5pS56YCgCuaXpeW4uOS6i+WKoTTvvJoyMDI1LTEyLTE5IOS4muWKoeS6uuWR
+mOmFjee9ruaUuemAoOWKn+iDvea1i+ivleWSjOi0ouWKoemcgOaxguW8gOWPkQrph43ngrnku7vl
+iqEK6K6h5YiSMe+8mkc15Li75pWw5o2uNS40LjDniYjmnKzmtYvor5Xpl67popjkv67lpI0K5aSH
+5rOo77ya5pegCkJlc3QgcmVnYXJkcyzmnajovakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzkupHl
+r4bln45M5qCLNS8xMOalvArmiYvmnLrvvJoxODcyNjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3
+aXRzb2Z0LmNu
+
+--=_mailmaster-6a18e4a4_0_7e87_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2
+IHN0eWxlPSJsaW5lLWhlaWdodDoiIDEuNTtmb250LWZhbWlseTo9IiIgIuW+rui9r+mbhem7kSI9
+IiI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZv
+bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAg
+Y2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1m
+b2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns
+ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy
+aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o
+ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6
+IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5k
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeac
+rOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48
+L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBt
+ZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm
+cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0
+aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJn
+Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBj
+b250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5v
+bmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+
+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1
+b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj
+YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVy
+OiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6
+IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjog
+cmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBw
+cmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n
+IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry
+b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp
+biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOA
+geacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9
+Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt
+aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90
+O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsi
+PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7
+IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt
+ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i
+bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M
+5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxp
+c3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246
+IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlz
+dF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0
+aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt
+ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo
+dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh
+Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu
+IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75Yqh
+Me+8mkc15Li75pWw5o2uNS40LjDniYjmnKzlvIDlj5HlrozmiJAg6L2s5rWLPC9zcGFuPjwvcD48
+L2xpPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xMCIgbWR0eXBlPSJsaXN0X2l0ZW0i
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJl
+bGF0aXZlOyI+PHAgY2lkPSJuMTEiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJs
+b2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o
+ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHBy
+ZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij7ku7vliqEy77ya6LSi5Yqh6ZyA5rGC5byA5Y+R
+PC9wPjwvbGk+PC91bD48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTIiIG1kdHlwZT0i
+bGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBv
+c2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjEzIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9
+Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1o
+ZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRl
+LXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJz
+dHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsi
+PjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9
+InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+
+5bi46KeE5bel5L2cPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVs
+LWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3QiIGRhdGEtbWFyaz0iLSIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0
+aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBl
+PSJsaXN0X2l0ZW0iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg
+cG9zaXRpb246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFz
+cz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5l
+LWhlaWdodDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hp
+dGUtc3BhY2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9
+InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+
+5pel5bi45LqL5YqhMe+8mjIwMjUtMTItMTUg5Li75pWw5o2u6ZyA5rGC6K+E5a6h5bel5pe26K+E
+5Lyw5byA5Y+R5pa55qGI6K6+6K6hPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48b2wgY2xhc3M9
+Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt
+aWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBw
+YWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjx1bCBjbGFzcz0idWwtbGlz
+dCIgY2lkPSJuMTQiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1p
+bHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBh
+ZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0
+LWl0ZW0iIGNpZD0ibjE1IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImNvbG9yOiByZ2IoNTEs
+IDUxLCA1MSk7IGZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy
+IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs
+LCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDE2cHg7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1h
+cmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBjaWQ9Im4xNiIgbWR0eXBlPSJwYXJh
+Z3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRl
+ci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHgg
+MC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFu
+IG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJv
+cmRlci1ib3g7Ij7ml6XluLjkuovliqEy77yaMjAyNS0xMi0xNiDkuLvmlbDmja7lr7nlpJbmjqXl
+j6Mg5pe26Ze06IyD5Zu05p+l6K+i5ZKM5qCh6aqMCjwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9
+Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6
+IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1
+b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj
+YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVy
+LWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5
+cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjog
+MHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZl
+OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNp
+emluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTPvvJoyMDI1LTEyLTE3IOS4u+aVsOaNrumc
+gOaxguW8gOWPkTxicj48L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlz
+dCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmct
+bGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9
+Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u
+6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1s
+ZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIg
+Y2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUx
+KTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZx
+dW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMt
+c2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAw
+cHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIg
+Y2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsg
+bGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07
+IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5s
+aW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI1LTEyLTE4IOS4muWKoeS6uuWRmOmFjee9ruaUuemAoDwv
+c3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0i
+bGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZx
+dW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0
+aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTog
+MTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxh
+dGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9j
+ayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVy
+aXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUt
+d3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9
+Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTv
+vJoyMDI1LTEyLTE5IOS4muWKoeS6uuWRmOmFjee9ruaUuemAoOWKn+iDvea1i+ivleWSjOi0ouWK
+oemcgOaxguW8gOWPkTwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0
+IiBzdGFydD0iIiBjaWQ9Im4yNiIgbWR0eXBlPSJsaXN0IiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjI3IiBtZHR5cGU9Imxpc3RfaXRl
+bSIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFy
+IFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFs
+LCBzYW5zLXNlcmlmOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6IDE2cHg7IGJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48
+cCBjaWQ9Im4yOCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIg
+c3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBo
+YW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBv
+c2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFp
+ci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gt
+c2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBs
+YWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPumHjeeCueS7u+WKoTwvc3Bhbj48
+L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4yOSIgbWR0
+eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBT
+YW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZx
+dW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgNTEsIDUx
+KTsgZm9udC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsg
+cGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxp
+c3QtaXRlbSIgY2lkPSJuMzAiIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjMx
+IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1h
+cmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJl
+bGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0i
+Ym94LXNpemluZzogYm9yZGVyLWJveDsiPuiuoeWIkjHvvJpHNeS4u+aVsOaNrjUuNC4w54mI5pys
+5rWL6K+V6Zeu6aKY5L+u5aSNPC9zcGFuPjwvcD48L2xpPjwvdWw+PC9vbD48ZGl2IHRhYmluZGV4
+PSItMSIgY2lkPSJuMzkiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBtZC1lbmQtYmxvY2siIHN0
+eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5z
+JnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fu
+cy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsg
+Zm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBjb250ZW50LWJveDsgaGVp
+Z2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5vbmU7IHBhZGRpbmc6IDBw
+eDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+PC9kaXY+PHAgY2lkPSJu
+NDAiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJm
+b250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7
+LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJp
+ZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6
+IDQ7IG1hcmdpbjogMC44ZW0gMHB4OyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0aW9uOiBy
+ZWxhdGl2ZTsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PHNwYW4g
+bWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJtZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzog
+Ym9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Bh
+biBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyI+5aSH5rOoPC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48c3BhbiBtZC1pbmxpbmU9
+InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5kIiBzdHlsZT0iYm94LXNpemluZzogYm9y
+ZGVyLWJveDsiPu+8muaXoDwvc3Bhbj48L3A+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6
+IOW+rui9r+mbhem7kTsiPjxicj48L2Rpdj48L2Rpdj48IS0t8J+YgC0tPjwvZGl2PjwvZGl2Pjwv
+ZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXYgaWQ9ImltYWlsX3NpZ25hdHVy
+ZSIgY2xhc3M9Im50ZXMtc2lnbmF0dXJlIiBzdHlsZT0ibWFyZ2luOjIwcHggMDsiIGRhdGEtbnRl
+cy1zaWduYXR1cmU9InRydWUiIHNwZWxsY2hlY2s9ImZhbHNlIj48ZGl2IHN0eWxlPSJmb250LWZh
+bWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAw
+MDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6
+IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVv
+dDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAg
+ICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAg
+ICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/p
+m4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+
+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAg
+ICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVv
+dDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAg
+Zm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxl
+Pgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQt
+c2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAg
+ICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8c3BhbiBz
+dHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQg
+WWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9ycGhhbnM6IDI7IHdpZG93czogMjsiPkJlc3QgcmVn
+YXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVy
+OiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGks
+IFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRv
+d3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAw
+cHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3Nv
+ZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTogMTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkx
+KTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzog
+MHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlh
+bCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhh
+bnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46
+IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWls
+eTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVz
+OiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJvdGg7Ij48aW1nIHNyYz0i
+aHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4xMjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZiZTU1
+MzI5YzE5NmM4NGZlNTE5Ny5wbmciIHN0eWxlPSJtYXgtd2lkdGg6IHVuc2V0OyI+PC9kaXY+PGRp
+diBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6
+IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12
+YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBi
+b3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4
+OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7
+IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOS6keWv
+huWfjkzmoIs1LzEw5qW8PC9zcGFuPjwvZGl2PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRk
+aW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEs
+IEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZvbnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsg
+b3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVhcjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46
+IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWls
+eTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEp
+OyI+5omL5py677yaMTg3MjYxMjg0ODk8L3NwYW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAw
+cHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6
+IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczog
+bm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9
+Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZv
+bnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAx
+OTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2Pgo8L2Rp
+dj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9kaXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ib2R5Pjwv
+aHRtbD4=
+
+--=_mailmaster-6a18e4a4_0_7e87_=--
diff --git a/media/inbound/2025-12-26_1530_G5开发周报_2025-12-22_--_2025-12-26---c34788ea-7d2d-4dbd-bc1b-8b589eec5b85.eml b/media/inbound/2025-12-26_1530_G5开发周报_2025-12-22_--_2025-12-26---c34788ea-7d2d-4dbd-bc1b-8b589eec5b85.eml
new file mode 100644
index 0000000..1a04abe
--- /dev/null
+++ b/media/inbound/2025-12-26_1530_G5开发周报_2025-12-22_--_2025-12-26---c34788ea-7d2d-4dbd-bc1b-8b589eec5b85.eml
@@ -0,0 +1,281 @@
+Date: Fri, 26 Dec 2025 15:30:29 +0800
+From: =?utf-8?B?5p2o6L2p?=
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?B?5aSP6ZO25pWP?=
+Message-ID:
+Subject: =?utf-8?B?RzXlvIDlj5HlkajmiqXjgJAyMDI1LTEyLTIyIC0tICAyMDI1LTEy?=
+ =?utf-8?B?LTI244CR?=
+MIME-Version: 1.0
+Content-Type: multipart/alternative; boundary="=_mailmaster-6a18e4a4_0_390c_="
+
+--=_mailmaster-6a18e4a4_0_390c_=
+Content-Type: text/plain; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+5oKo5aW977yB5Lul5LiL5piv5oiR5pys5ZGo55qE5bel5L2c5oC757uT5Y+K5LiL5ZGo6K6h5YiS
+77yM6K+35a6h6ZiF44CCCuS4gOOAgeacrOWRqOW3peS9nOaAu+e7kwrph43ngrnlt6XkvZzlrozm
+iJDmg4XlhrUK5Lu75YqhMe+8mkc15Li75pWw5o2uNS40LjDniYjmnKzlj5HluIMK5Lu75YqhMu+8
+mui0ouWKoTUuNC4w54mI5pys5Y+R5biDCuW4uOinhOW3peS9nArml6XluLjkuovliqEx77yaMjAy
+NS0xMi0yMiDkuLvmlbDmja7otKLliqHovazmtYvpl67popjkv67lpI0K5pel5bi45LqL5YqhMu+8
+mjIwMjUtMTItMjMg5Li75pWw5o2u6LSi5Yqh6L2s5rWL6Zeu6aKY5L+u5aSNIArml6XluLjkuovl
+iqEz77yaMjAyNS0xMi0yNCDkuLvmlbDmja7otKLliqHovazmtYvpl67popjkv67lpI0K5pel5bi4
+5LqL5YqhNO+8mjIwMjUtMTItMjUg54mI5pys5rWL6K+V5a6M5oiQCuaXpeW4uOS6i+WKoTTvvJoy
+MDI1LTEyLTI2IOeUn+S6p+mXrumimOWIhuaekOS4juW3peWNleWkhOeQhiDniYjmnKzlj5HluIPm
+lK/mjIEK6YeN54K55Lu75YqhCuiuoeWIkjHvvJpHNeS4u+aVsOaNrjUuNC4x54mI5pys6ZyA5rGC
+5byA5Y+RCuWkh+azqO+8mjIwMjUtMTItMjYg5LiL5Y2I6K+35YGHCkJlc3QgcmVnYXJkcyzmnajo
+vakK5Zyw5Z2A77ya5Lit5Zu9wrfljZfkuqzkupHlr4bln45M5qCLNS8xMOalvArmiYvmnLrvvJox
+ODcyNjEyODQ4OQrpgq7nrrHvvJp5YW5neHVhbkB3aXRzb2Z0LmNu
+
+--=_mailmaster-6a18e4a4_0_390c_=
+Content-Type: text/html; charset="utf-8"
+Content-Transfer-Encoding: base64
+
+PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0
+L2h0bWw7IGNoYXJzZXQ9VVRGLTgnPjwvaGVhZD48Ym9keSBzdHlsZT1saW5lLWhlaWdodDogMS41
+O2ZvbnQtZmFtaWx5OiAi5b6u6L2v6ZuF6buRIj48ZGl2ICBzdHlsZT0iZm9udC1mYW1pbHk6IOW+
+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2
+IHN0eWxlPSJsaW5lLWhlaWdodDoiIDEuNTtmb250LWZhbWlseTo9IiIgIuW+rui9r+mbhem7kSI9
+IiI+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxkaXYgc3R5bGU9ImZv
+bnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7Ij48ZGl2IHN0eWxlPSIiPjxkaXYgc3R5bGU9IiI+PHAg
+Y2lkPSJuMCIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCBtZC1m
+b2N1cyIgc3R5bGU9ImZvbnQtZmFtaWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0Ns
+ZWFyIFNhbnMmcXVvdDssICZxdW90O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFy
+aWFsLCBzYW5zLXNlcmlmOyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5o
+ZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwLjhlbSAwcHg7IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyBjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LXNpemU6
+IDE2cHg7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0ibWQtcGxhaW4gbWQtZXhwYW5k
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaCqOWlve+8geS7peS4i+aYr+aIkeac
+rOWRqOeahOW3peS9nOaAu+e7k+WPiuS4i+WRqOiuoeWIku+8jOivt+WuoemYheOAgjwvc3Bhbj48
+L3A+PGRpdiB0YWJpbmRleD0iLTEiIGNpZD0ibjIiIG1kdHlwZT0iaHIiIGNsYXNzPSJtZC1ociBt
+ZC1lbmQtYmxvY2siIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1b3Q7LCAm
+cXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90OywgSGVsdmV0
+aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgYm94LXNpemluZzogYm9yZGVyLWJveDsgY29sb3I6IHJn
+Yig1MSwgNTEsIDUxKTsgZm9udC1zaXplOiAxNnB4OyI+PGhyIHN0eWxlPSJib3gtc2l6aW5nOiBj
+b250ZW50LWJveDsgaGVpZ2h0OiAycHg7IG1hcmdpbjogMTZweCAwcHg7IGJvcmRlcjogMHB4IG5v
+bmU7IHBhZGRpbmc6IDBweDsgYmFja2dyb3VuZC1jb2xvcjogcmdiKDIzMSwgMjMxLCAyMzEpOyI+
+PC9kaXY+PGgzIGNpZD0ibjMiIG1kdHlwZT0iaGVhZGluZyIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1oZWFkaW5nIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1
+b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGlj
+YSwgQXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGJyZWFrLWFmdGVy
+OiBhdm9pZC1wYWdlOyBicmVhay1pbnNpZGU6IGF2b2lkOyBvcnBoYW5zOiA0OyBmb250LXNpemU6
+IDEuNWVtOyBtYXJnaW4tdG9wOiAxcmVtOyBtYXJnaW4tYm90dG9tOiAxcmVtOyBwb3NpdGlvbjog
+cmVsYXRpdmU7IGxpbmUtaGVpZ2h0OiAxLjQzOyBjdXJzb3I6IHRleHQ7IHdoaXRlLXNwYWNlOiBw
+cmUtd3JhcDsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25n
+IiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ry
+b25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFp
+biIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuS4gOOA
+geacrOWRqOW3peS9nOaAu+e7kzwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9oMz48b2wgY2xhc3M9
+Im9sLWxpc3QiIHN0YXJ0PSIiIGNpZD0ibjQiIG1kdHlwZT0ibGlzdCIgc3R5bGU9ImZvbnQtZmFt
+aWx5OiAmcXVvdDtPcGVuIFNhbnMmcXVvdDssICZxdW90O0NsZWFyIFNhbnMmcXVvdDssICZxdW90
+O0hlbHZldGljYSBOZXVlJnF1b3Q7LCBIZWx2ZXRpY2EsIEFyaWFsLCBzYW5zLXNlcmlmOyBib3gt
+c2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3Np
+dGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsi
+PjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im41IiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48cCBjaWQ9Im42IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBt
+ZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7
+IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3Jh
+cDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJzdHJvbmciIGNsYXNzPSJt
+ZC1wYWlyLXMgIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzdHJvbmcgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i
+bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+6YeN54K55bel5L2c5a6M
+5oiQ5oOF5Ya1PC9zcGFuPjwvc3Ryb25nPjwvc3Bhbj48L3A+PC9saT48dWwgY2xhc3M9InVsLWxp
+c3QiIGNpZD0ibjciIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iYm94LXNpemlu
+ZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246
+IHJlbGF0aXZlOyI+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjgiIG1kdHlwZT0ibGlz
+dF9pdGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0
+aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjkiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt
+ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo
+dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh
+Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWlu
+IiBjbGFzcz0ibWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5Lu75Yqh
+Me+8mkc15Li75pWw5o2uNS40LjDniYjmnKzlj5HluIM8L3NwYW4+PC9wPjwvbGk+PGxpIGNsYXNz
+PSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48cCBj
+aWQ9Im4xMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sgbWQtcCIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0OyBvcnBoYW5z
+OiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdyYXA7IHBvc2l0
+aW9uOiByZWxhdGl2ZTsiPuS7u+WKoTLvvJrotKLliqE1LjQuMOeJiOacrOWPkeW4gzwvcD48L2xp
+PjwvdWw+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjEyIiBtZHR5cGU9Imxpc3RfaXRl
+bSIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjog
+cmVsYXRpdmU7Ij48cCBjaWQ9Im4xMyIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQt
+YmxvY2sgbWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBp
+bmhlcml0OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTog
+cHJlLXdyYXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBj
+bGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25n
+IHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg
+Y2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuW4uOinhOW3
+peS9nDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PC9wPjwvbGk+PHVsIGNsYXNzPSJ1bC1saXN0IiBj
+aWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9Ii0iIHN0eWxlPSJib3gtc2l6aW5nOiBi
+b3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVs
+YXRpdmU7Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTUiIG1kdHlwZT0ibGlzdF9p
+dGVtIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE2IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVu
+ZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6
+IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNl
+OiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIg
+Y2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6
+i+WKoTHvvJoyMDI1LTEyLTIyIOS4u+aVsOaNrui0ouWKoei9rOa1i+mXrumimOS/ruWkjTwvc3Bh
+bj48L3A+PC9saT48L3VsPjwvb2w+PG9sIGNsYXNzPSJvbC1saXN0IiBzdGFydD0iIiBjaWQ9Im40
+IiBtZHR5cGU9Imxpc3QiIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6
+aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlv
+bjogcmVsYXRpdmU7Ij48dWwgY2xhc3M9InVsLWxpc3QiIGNpZD0ibjE0IiBtZHR5cGU9Imxpc3Qi
+IGRhdGEtbWFyaz0iLSIgc3R5bGU9ImZvbnQtZmFtaWx5OiDlvq7ova/pm4Xpu5E7IGJveC1zaXpp
+bmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7IHBvc2l0aW9u
+OiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4xNSIgbWR0eXBlPSJs
+aXN0X2l0ZW0iIHN0eWxlPSJjb2xvcjogcmdiKDUxLCA1MSwgNTEpOyBmb250LWZhbWlseTogJnF1
+b3Q7T3BlbiBTYW5zJnF1b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRp
+Y2EgTmV1ZSZxdW90OywgSGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgZm9udC1zaXplOiAx
+NnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRpb246IHJlbGF0
+aXZlOyI+PHAgY2lkPSJuMTYiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQtZW5kLWJsb2Nr
+IG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdodDogaW5oZXJp
+dDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3BhY2U6IHByZS13
+cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InBsYWluIiBjbGFzcz0i
+bWQtcGxhaW4iIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+5pel5bi45LqL5YqhMu+8
+mjIwMjUtMTItMjMg5Li75pWw5o2u6LSi5Yqh6L2s5rWL6Zeu6aKY5L+u5aSNCjwvc3Bhbj48L3A+
+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVt
+IiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4g
+U2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUm
+cXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94
+LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxw
+IGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhh
+bnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9z
+aXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWlu
+IiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTPvvJoyMDI1LTEy
+LTI0IOS4u+aVsOaNrui0ouWKoei9rOa1i+mXrumimOS/ruWkjTxicj48L3NwYW4+PC9wPjwvbGk+
+PC91bD48L29sPjxvbCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuNCIgbWR0eXBlPSJs
+aXN0IiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsgYm94LXNpemluZzogYm9yZGVy
+LWJveDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZl
+OyI+PHVsIGNsYXNzPSJ1bC1saXN0IiBjaWQ9Im4xNCIgbWR0eXBlPSJsaXN0IiBkYXRhLW1hcms9
+Ii0iIHN0eWxlPSJmb250LWZhbWlseTog5b6u6L2v6ZuF6buROyBib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyBtYXJnaW46IDBweDsgcGFkZGluZy1sZWZ0OiAzMHB4OyBwb3NpdGlvbjogcmVsYXRpdmU7
+Ij48bGkgY2xhc3M9Im1kLWxpc3QtaXRlbSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBz
+dHlsZT0iY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2Fu
+cyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVv
+dDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNp
+emluZzogYm9yZGVyLWJveDsgbWFyZ2luOiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNp
+ZD0ibjE4IiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHls
+ZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6
+IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVyZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBz
+dHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI1LTEyLTI1
+IOeJiOacrOa1i+ivleWujOaIkDwvc3Bhbj48L3A+PC9saT48bGkgY2xhc3M9Im1kLWxpc3QtaXRl
+bSIgY2lkPSJuMTciIG1kdHlwZT0ibGlzdF9pdGVtIiBzdHlsZT0iY29sb3I6IHJnYig1MSwgNTEs
+IDUxKTsgZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2Fu
+cyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNh
+bnMtc2VyaWY7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJveDsgbWFyZ2lu
+OiAwcHg7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxwIGNpZD0ibjE4IiBtZHR5cGU9InBhcmFncmFw
+aCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1wIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgbGluZS1oZWlnaHQ6IGluaGVyaXQ7IG9ycGhhbnM6IDQ7IG1hcmdpbjogMHB4IDBweCAwLjVy
+ZW07IHdoaXRlLXNwYWNlOiBwcmUtd3JhcDsgcG9zaXRpb246IHJlbGF0aXZlOyI+PHNwYW4gbWQt
+aW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94LXNpemluZzogYm9yZGVy
+LWJveDsiPuaXpeW4uOS6i+WKoTTvvJoyMDI1LTEyLTI2IOeUn+S6p+mXrumimOWIhuaekOS4juW3
+peWNleWkhOeQhiDniYjmnKzlj5HluIPmlK/mjIE8L3NwYW4+PC9wPjwvbGk+PC91bD48L29sPjxv
+bCBjbGFzcz0ib2wtbGlzdCIgc3RhcnQ9IiIgY2lkPSJuMjYiIG1kdHlwZT0ibGlzdCIgc3R5bGU9
+ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwYWRkaW5nLWxlZnQ6IDMwcHg7
+IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxsaSBjbGFzcz0ibWQtbGlzdC1pdGVtIiBjaWQ9Im4yNyIg
+bWR0eXBlPSJsaXN0X2l0ZW0iIHN0eWxlPSJmb250LWZhbWlseTogJnF1b3Q7T3BlbiBTYW5zJnF1
+b3Q7LCAmcXVvdDtDbGVhciBTYW5zJnF1b3Q7LCAmcXVvdDtIZWx2ZXRpY2EgTmV1ZSZxdW90Oywg
+SGVsdmV0aWNhLCBBcmlhbCwgc2Fucy1zZXJpZjsgY29sb3I6IHJnYig1MSwgNTEsIDUxKTsgZm9u
+dC1zaXplOiAxNnB4OyBib3gtc2l6aW5nOiBib3JkZXItYm94OyBtYXJnaW46IDBweDsgcG9zaXRp
+b246IHJlbGF0aXZlOyI+PHAgY2lkPSJuMjgiIG1kdHlwZT0icGFyYWdyYXBoIiBjbGFzcz0ibWQt
+ZW5kLWJsb2NrIG1kLXAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyBsaW5lLWhlaWdo
+dDogaW5oZXJpdDsgb3JwaGFuczogNDsgbWFyZ2luOiAwcHggMHB4IDAuNXJlbTsgd2hpdGUtc3Bh
+Y2U6IHByZS13cmFwOyBwb3NpdGlvbjogcmVsYXRpdmU7Ij48c3BhbiBtZC1pbmxpbmU9InN0cm9u
+ZyIgY2xhc3M9Im1kLXBhaXItcyAiIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXItYm94OyI+PHN0
+cm9uZyBzdHlsZT0iYm94LXNpemluZzogYm9yZGVyLWJveDsiPjxzcGFuIG1kLWlubGluZT0icGxh
+aW4iIGNsYXNzPSJtZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7ph43n
+grnku7vliqE8L3NwYW4+PC9zdHJvbmc+PC9zcGFuPjwvcD48L2xpPjx1bCBjbGFzcz0idWwtbGlz
+dCIgY2lkPSJuMjkiIG1kdHlwZT0ibGlzdCIgZGF0YS1tYXJrPSItIiBzdHlsZT0iZm9udC1mYW1p
+bHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7
+SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWwsIHNhbnMtc2VyaWY7IGNvbG9y
+OiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsgYm94LXNpemluZzogYm9yZGVyLWJv
+eDsgbWFyZ2luOiAwcHg7IHBhZGRpbmctbGVmdDogMzBweDsgcG9zaXRpb246IHJlbGF0aXZlOyI+
+PGxpIGNsYXNzPSJtZC1saXN0LWl0ZW0iIGNpZD0ibjMwIiBtZHR5cGU9Imxpc3RfaXRlbSIgc3R5
+bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IG1hcmdpbjogMHB4OyBwb3NpdGlvbjogcmVsYXRp
+dmU7Ij48cCBjaWQ9Im4zMSIgbWR0eXBlPSJwYXJhZ3JhcGgiIGNsYXNzPSJtZC1lbmQtYmxvY2sg
+bWQtcCIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0
+OyBvcnBoYW5zOiA0OyBtYXJnaW46IDBweCAwcHggMC41cmVtOyB3aGl0ZS1zcGFjZTogcHJlLXdy
+YXA7IHBvc2l0aW9uOiByZWxhdGl2ZTsiPjxzcGFuIG1kLWlubGluZT0icGxhaW4iIGNsYXNzPSJt
+ZC1wbGFpbiIgc3R5bGU9ImJveC1zaXppbmc6IGJvcmRlci1ib3g7Ij7orqHliJIx77yaRzXkuLvm
+lbDmja41LjQuMeeJiOacrOmcgOaxguW8gOWPkTwvc3Bhbj48L3A+PC9saT48L3VsPjwvb2w+PGRp
+diB0YWJpbmRleD0iLTEiIGNpZD0ibjM5IiBtZHR5cGU9ImhyIiBjbGFzcz0ibWQtaHIgbWQtZW5k
+LWJsb2NrIiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7
+Q2xlYXIgU2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwg
+QXJpYWwsIHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGNvbG9yOiByZ2IoNTEs
+IDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZweDsiPjxociBzdHlsZT0iYm94LXNpemluZzogY29udGVu
+dC1ib3g7IGhlaWdodDogMnB4OyBtYXJnaW46IDE2cHggMHB4OyBib3JkZXI6IDBweCBub25lOyBw
+YWRkaW5nOiAwcHg7IGJhY2tncm91bmQtY29sb3I6IHJnYigyMzEsIDIzMSwgMjMxKTsiPjwvZGl2
+PjxwIGNpZD0ibjQwIiBtZHR5cGU9InBhcmFncmFwaCIgY2xhc3M9Im1kLWVuZC1ibG9jayBtZC1w
+IiBzdHlsZT0iZm9udC1mYW1pbHk6ICZxdW90O09wZW4gU2FucyZxdW90OywgJnF1b3Q7Q2xlYXIg
+U2FucyZxdW90OywgJnF1b3Q7SGVsdmV0aWNhIE5ldWUmcXVvdDssIEhlbHZldGljYSwgQXJpYWws
+IHNhbnMtc2VyaWY7IGJveC1zaXppbmc6IGJvcmRlci1ib3g7IGxpbmUtaGVpZ2h0OiBpbmhlcml0
+OyBvcnBoYW5zOiA0OyBtYXJnaW46IDAuOGVtIDBweDsgd2hpdGUtc3BhY2U6IHByZS13cmFwOyBw
+b3NpdGlvbjogcmVsYXRpdmU7IGNvbG9yOiByZ2IoNTEsIDUxLCA1MSk7IGZvbnQtc2l6ZTogMTZw
+eDsiPjxzcGFuIG1kLWlubGluZT0ic3Ryb25nIiBjbGFzcz0ibWQtcGFpci1zICIgc3R5bGU9ImJv
+eC1zaXppbmc6IGJvcmRlci1ib3g7Ij48c3Ryb25nIHN0eWxlPSJib3gtc2l6aW5nOiBib3JkZXIt
+Ym94OyI+PHNwYW4gbWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIiBzdHlsZT0iYm94
+LXNpemluZzogYm9yZGVyLWJveDsiPuWkh+azqDwvc3Bhbj48L3N0cm9uZz48L3NwYW4+PHNwYW4g
+bWQtaW5saW5lPSJwbGFpbiIgY2xhc3M9Im1kLXBsYWluIG1kLWV4cGFuZCIgc3R5bGU9ImJveC1z
+aXppbmc6IGJvcmRlci1ib3g7Ij7vvJo8L3NwYW4+MjAyNS0xMi0yNiDkuIvljYjor7flgYc8L3A+
+PC9kaXY+PGRpdiBzdHlsZT0iZm9udC1mYW1pbHk6IOW+rui9r+mbhem7kTsiPjxicj48L2Rpdj48
+L2Rpdj48IS0t8J+YgC0tPjwvZGl2PjwvZGl2PjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+PGJy
+PjwvZGl2PjxkaXYgaWQ9ImltYWlsX3NpZ25hdHVyZSIgY2xhc3M9Im50ZXMtc2lnbmF0dXJlIiBz
+dHlsZT0ibWFyZ2luOjIwcHggMDsiIGRhdGEtbnRlcy1zaWduYXR1cmU9InRydWUiIHNwZWxsY2hl
+Y2s9ImZhbHNlIj48ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVv
+dDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAg
+Zm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxl
+Pgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQt
+c2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAg
+ICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0
+eWxlPSJmb250LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRw
+eDsgY29sb3I6IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAg
+bGluZS1oZWlnaHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250
+LWZhbWlseTomcXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6
+IzAwMDAwMCI+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWln
+aHQ6IDEuNjsKICAgICAgICB9CiAgICA8L3N0eWxlPgo8ZGl2IHN0eWxlPSJmb250LWZhbWlseTom
+cXVvdDvlvq7ova/pm4Xpu5EmcXVvdDs7IGZvbnQtc2l6ZTogMTRweDsgY29sb3I6IzAwMDAwMCI+
+CiAgICA8c3R5bGU+CiAgICAgICAgZm9udHsKICAgICAgICAgICAgbGluZS1oZWlnaHQ6IDEuNjsK
+ICAgICAgICB9CiAgICA8L3N0eWxlPgo8c3BhbiBzdHlsZT0iY29sb3I6IHJnYigxOTEsIDE5MSwg
+MTkxKTsgZm9udC1mYW1pbHk6ICdNaWNyb3NvZnQgWWFoZWknOyBmb250LXNpemU6IDEzcHg7IG9y
+cGhhbnM6IDI7IHdpZG93czogMjsiPkJlc3QgcmVnYXJkcyw8L3NwYW4+PGRpdiBzdHlsZT0ibWFy
+Z2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1m
+YW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0
+dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4g
+c3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAw
+cHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGZvbnQtc2l6ZTog
+MTNweDsgY29sb3I6IHJnYigxOTEsIDE5MSwgMTkxKTsiPuadqOi9qTwvc3Bhbj48L2Rpdj48ZGl2
+IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6IDBweDsgb3V0bGluZTog
+MHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwgU2ltU3VuOyBmb250LXZh
+cmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93czogMjsgY2xlYXI6IGJv
+dGg7Ij48L2Rpdj48ZGl2IHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6
+IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogVGFob21hLCBBcmlhbCwgU1RIZWl0aSwg
+U2ltU3VuOyBmb250LXZhcmlhbnQtbGlnYXR1cmVzOiBub3JtYWw7IG9ycGhhbnM6IDI7IHdpZG93
+czogMjsgY2xlYXI6IGJvdGg7Ij48aW1nIHNyYz0iaHR0cHM6Ly9tYWlsLW9ubGluZS5ub3Nkbi4x
+MjcubmV0L3d6cG1tYy9jZTlmOGIzNmUxZmZiZTU1MzI5YzE5NmM4NGZlNTE5Ny5wbmciIHN0eWxl
+PSJtYXgtd2lkdGg6IHVuc2V0OyI+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRp
+bmc6IDBweDsgYm9yZGVyOiAwcHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwg
+QXJpYWwsIFNUSGVpdGksIFNpbVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBv
+cnBoYW5zOiAyOyB3aWRvd3M6IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjog
+MHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5
+OiAmcXVvdDtNaWNyb3NvZnQgWWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7
+Ij7lnLDlnYDvvJrkuK3lm73Ct+WNl+S6rOS6keWvhuWfjkzmoIs1LzEw5qW8PC9zcGFuPjwvZGl2
+PjxkaXYgc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7IGJvcmRlcjogMHB4OyBvdXRs
+aW5lOiAwcHg7IGZvbnQtZmFtaWx5OiBUYWhvbWEsIEFyaWFsLCBTVEhlaXRpLCBTaW1TdW47IGZv
+bnQtdmFyaWFudC1saWdhdHVyZXM6IG5vcm1hbDsgb3JwaGFuczogMjsgd2lkb3dzOiAyOyBjbGVh
+cjogYm90aDsiPjxzcGFuIHN0eWxlPSJtYXJnaW46IDBweDsgcGFkZGluZzogMHB4OyBib3JkZXI6
+IDBweDsgb3V0bGluZTogMHB4OyBmb250LWZhbWlseTogJnF1b3Q7TWljcm9zb2Z0IFlhaGVpJnF1
+b3Q7OyBjb2xvcjogcmdiKDE5MSwgMTkxLCAxOTEpOyI+5omL5py677yaMTg3MjYxMjg0ODk8L3Nw
+YW4+PC9kaXY+PGRpdiBzdHlsZT0ibWFyZ2luOiAwcHg7IHBhZGRpbmc6IDBweDsgYm9yZGVyOiAw
+cHg7IG91dGxpbmU6IDBweDsgZm9udC1mYW1pbHk6IFRhaG9tYSwgQXJpYWwsIFNUSGVpdGksIFNp
+bVN1bjsgZm9udC12YXJpYW50LWxpZ2F0dXJlczogbm9ybWFsOyBvcnBoYW5zOiAyOyB3aWRvd3M6
+IDI7IGNsZWFyOiBib3RoOyI+PHNwYW4gc3R5bGU9Im1hcmdpbjogMHB4OyBwYWRkaW5nOiAwcHg7
+IGJvcmRlcjogMHB4OyBvdXRsaW5lOiAwcHg7IGZvbnQtZmFtaWx5OiAmcXVvdDtNaWNyb3NvZnQg
+WWFoZWkmcXVvdDs7IGNvbG9yOiByZ2IoMTkxLCAxOTEsIDE5MSk7Ij7pgq7nrrHvvJp5YW5neHVh
+bkB3aXRzb2Z0LmNuPC9zcGFuPjwvZGl2Pgo8L2Rpdj4KPC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPC9k
+aXY+PC9kaXY+PC9kaXY+PC9kaXY+PC9ib2R5PjwvaHRtbD4=
+
+--=_mailmaster-6a18e4a4_0_390c_=--
diff --git a/media/inbound/2025-12-31_1745_G5开发周报_2025-12-29_--_2025-12-31---81b79e34-7b65-474c-a857-33a2e422ccce.eml b/media/inbound/2025-12-31_1745_G5开发周报_2025-12-29_--_2025-12-31---81b79e34-7b65-474c-a857-33a2e422ccce.eml
new file mode 100644
index 0000000..3d16109
--- /dev/null
+++ b/media/inbound/2025-12-31_1745_G5开发周报_2025-12-29_--_2025-12-31---81b79e34-7b65-474c-a857-33a2e422ccce.eml
@@ -0,0 +1,365 @@
+Date: Wed, 31 Dec 2025 17:45:52 +0800
+From: =?utf-8?B?5p2o6L2p?=
+To: =?utf-8?B?5YiY5by6?=
+Cc: =?utf-8?B?5bGI5paw6b6Z?= , =?utf-8?B?5pyx5paM?=
+ , =?utf-8?B?6ZmI5piO?= ,
+ =?utf-8?B?5aSP6ZO25pWP?=
+Message-ID: