From 08f2e35829a12c6e7bdc5048e5137b8f4c37e5e3 Mon Sep 17 00:00:00 2001 From: DoodleBears Date: Thu, 22 Oct 2026 12:24:38 +0900 Subject: [PATCH 1/6] Unify Host settings with device-local appearance and notifications Issue: #2500 Agent-Task: codex/local/01a16195-979b-7853-abdb-4acbf963c95c --- .../verify-deepseekbot/features/README.md | 3 +- .../features/remote-hosts.md | 12 +- apps/mobile/src/host/host-look.ts | 15 +- changes/2500-host-settings.md | 11 + docs/architecture/botharness-architecture.md | 2 +- docs/bot-cli.md | 7 +- docs/bot-cli.zh.md | 5 + .../client/src/client/appearance-control.ts | 14 +- packages/client/src/client/host-glyph.tsx | 26 ++ .../client/src/client/host-look-control.ts | 71 ++++ .../client/src/client/host-look-settings.tsx | 178 ++++++++++ packages/client/src/client/host-looks.ts | 12 +- packages/client/src/client/host-tabs.tsx | 325 +++--------------- packages/client/src/client/locale.ts | 74 +++- .../client/src/client/remote-activity.tsx | 11 +- .../src/client/remote-conversation-view.tsx | 8 +- .../src/client/remote-host-settings.tsx | 53 ++- packages/client/src/client/remote-hosts.ts | 5 + .../client/remote-notification-settings.tsx | 24 +- .../client/src/client/remote-notifications.ts | 3 +- packages/client/src/client/this-host.ts | 43 +++ .../client/test/host-look-control.test.ts | 75 ++++ packages/client/test/host-look-relay.test.ts | 67 ++++ packages/core/src/appearance/control.ts | 4 +- packages/core/src/bots/cli-host-look.ts | 33 ++ packages/core/src/bots/cli-live.ts | 6 + packages/core/test/cli-host-look.test.ts | 25 ++ scripts/cli-ui-inventory.json | 17 +- 28 files changed, 786 insertions(+), 343 deletions(-) create mode 100644 changes/2500-host-settings.md create mode 100644 packages/client/src/client/host-glyph.tsx create mode 100644 packages/client/src/client/host-look-control.ts create mode 100644 packages/client/src/client/host-look-settings.tsx create mode 100644 packages/client/src/client/this-host.ts create mode 100644 packages/client/test/host-look-control.test.ts create mode 100644 packages/client/test/host-look-relay.test.ts create mode 100644 packages/core/src/bots/cli-host-look.ts create mode 100644 packages/core/test/cli-host-look.test.ts diff --git a/.agents/skills/verify-deepseekbot/features/README.md b/.agents/skills/verify-deepseekbot/features/README.md index 9e5121f7e9..0190c66142 100644 --- a/.agents/skills/verify-deepseekbot/features/README.md +++ b/.agents/skills/verify-deepseekbot/features/README.md @@ -4,7 +4,7 @@ | --- | --- | --- | --- | | Bot Marketplace cards, filters, remembered sorting and upload/import | no | `verify-app` Bot mode path | [marketplace.md](marketplace.md) | | Connect encrypted pairing, resources and native private input | yes for DM/tool/private request | `verify-app` isolated Host and shared native QA | [connect-channel.md](connect-channel.md) | -| Browser Remote Host pairing, icon strip, Host Feed and Host-level settings | only for a reply | `verify-app` two-Host path | [remote-hosts.md](remote-hosts.md) | +| Browser Remote Host pairing, icon strip, local appearance/notifications and Host-level settings | only for a reply | `verify-app` two-Host path | [remote-hosts.md](remote-hosts.md) | | VRM companion Panel | yes for speaking | `scripts/e2e-vrm-companion.mjs` | [vrm-companion.md](vrm-companion.md) | | Desktop whole-window zoom (controlled S1 / Windows candidate) | no | `scripts/e2e-desktop-zoom-launch.mjs`, `scripts/e2e-desktop-zoom-windows.mjs`, `scripts/e2e-dock-zoom.mjs`, `scripts/e2e-workspace-chrome.mjs` | [desktop-window-zoom.md](desktop-window-zoom.md) | @@ -100,4 +100,3 @@ Historical failures from 2026-10-14 (not requalified by this audit): | Three-action tool approval and coherent Full Access | yes | `scripts/e2e-tool-approval-simple.mjs` | [tool-approval-simple.md](tool-approval-simple.md) | | Workspace request read/write approval and original-task continuation | yes | `scripts/e2e-workspace-request-write.mjs`, `scripts/e2e-mobile-folder-browse-web.mjs` | [workspace-request-write.md](workspace-request-write.md) | - diff --git a/.agents/skills/verify-deepseekbot/features/remote-hosts.md b/.agents/skills/verify-deepseekbot/features/remote-hosts.md index 722b5bc8f8..515d547ffb 100644 --- a/.agents/skills/verify-deepseekbot/features/remote-hosts.md +++ b/.agents/skills/verify-deepseekbot/features/remote-hosts.md @@ -16,8 +16,9 @@ The browser pairs a Remote Host as a Paired Device and reads its Host Feed throu - `secret-route`: pinned Connect pairings carry private input, resources and logical streams through Noise; legacy pairings fail closed. The browser must be served by its own trusted Host. Loopback/Tailscale retain their contract. - `viewers`: a remote Bot DM opens Browser or Computer when that Bot has access. The shared Host viewer modules read frames and send input to that Host only; closing, switching source or losing the connection tears down the viewer and releases requested control. - `viewer-control`: queued input belongs to one takeover. Resume or frame loss invalidates it; frame recovery remains read-only even when the Host Feed never disconnected. Remove closes viewers and waits up to five seconds for takeover/release cleanup before revoking the pairing. -- `settings`: right-click a Remote Host icon → Remote settings opens that Host's models, usage and storage. Default model and preset changes use its shared Host client. Usage includes Memory activity, without a link to a This Host Bot page. Storage retains preview, acknowledgement and destructive confirmation. -- `notifications`: right-click a Remote Host icon and choose Remote notifications; enable browser permission explicitly and choose Tool approvals, Questions, Private input requests, Mentions & replies. Choices survive reload in this browser only. Verify the initial Inbox and reconnect backlog are silent, a new permitted Host attention item alerts once, disabled kinds stay silent and removing the Host closes its alerts. Private input text is never shown. Capture the new entry and dialog in light/dark; page-open API evidence does not qualify closed-page push or Desktop. +- `host-appearance`: Host settings → Appearance edits the device-local name, symbol/emoji and icon colour through the shared HostLooks owner. Enter or blur saves the name; choices apply immediately. Tabs, conversation/Activity headings and new notification titles use the saved display name. Empty name restores the original. +- `settings`: right-click a Remote Host icon → Host settings opens Appearance, Notifications, Models, Usage and Storage with the Host icon and display name. Default model and preset changes use its shared Host client. Usage includes Memory activity, without a link to a This Host Bot page. Storage retains preview, acknowledgement and destructive confirmation. +- `notifications`: open Host settings → Notifications; enable browser permission explicitly and choose Tool approvals, Questions, Private input requests, Mentions & replies. Choices survive reload in this browser only. Verify the initial Inbox and reconnect backlog are silent, a new permitted Host attention item alerts once, disabled kinds stay silent and removing the Host closes its alerts. Private input text is never shown. Capture the new entry and dialog in light/dark; page-open API evidence does not qualify closed-page push or Desktop. Discovery uses the Host's notification query, not the Activity display window. Keep more than 30 old mentions and produce a new ordinary DM reply and a non-mention group reply; both must alert once when enabled. Traverse `deepseekbot inbox --notifications` cursors and compare the Host-decided items. Verify stable same-timestamp pagination, a live invalidation during paging, a partial-page failure followed by recovery, and no historical replay. A refused Notification constructor records a bounded redacted `remote-notification-show-*` diagnostic through the existing Client diagnostics surface. Settings apply immediately and close through the normal close control. @@ -41,7 +42,7 @@ For control races, delay an input response, queue text, Resume, then take contro Keep the remote screen stationary during frame recovery. The Host must keep its sequence unchanged and answer matching `after` polls with 204 after ten seconds; the viewer recovers by fetching the current frame without that stale cursor, not by requiring a screen change. In both UI languages, inject a frame/input failure: the Web panel must show localized recovery guidance and a reconnect action, while the viewer snapshot retains the original diagnostic notice rather than rendering it as product copy. -For Remote settings, use two disposable Hosts with different home basenames and distinguishable model presets and chat data. Open Host B's icon menu in Host A's browser. Capture the menu and all three settings sections in light and dark. Change B's default model or a preset, then read both Hosts with `model-catalog` and `model-presets`; A must be unchanged. Compare Usage and Memory with B's `overview-usage` and `overview-memory`. In Storage, select a disposable chat, preview media or whole messages, verify Clear/Delete is disabled before acknowledgement, then confirm. Read B's storage and timeline and verify A's data is unchanged. Exercise both cleanup targets; use their matching CLI preview/confirm commands against B as well. Disconnect B and revoke its browser pairing in separate runs: settings must show an unavailable state or refusal, with no local data fallback or replayed write. Never clean up real conversations for this journey. +For Remote settings, use two disposable Hosts with different home basenames and distinguishable model presets and chat data. Open Host B's icon menu in Host A's browser. Capture the menu and all five settings sections in light and dark. Change B's default model or a preset, then read both Hosts with `model-catalog` and `model-presets`; A must be unchanged. Compare Usage and Memory with B's `overview-usage` and `overview-memory`. In Storage, select a disposable chat, preview media or whole messages, verify Clear/Delete is disabled before acknowledgement, then confirm. Read B's storage and timeline and verify A's data is unchanged. Exercise both cleanup targets; use their matching CLI preview/confirm commands against B as well. Disconnect B and revoke its browser pairing in separate runs: settings must show an unavailable state or refusal, with no local data fallback or replayed write. Never clean up real conversations for this journey. The default-model proof must change the model value on a Profile whose native settings owner can save it; a same-value no-op is insufficient. Keep a page's observed revision, change the default from another client, and verify the old page refuses without overwriting it. Explicit refresh must permit a subsequent save. Omit the catalog revision at the test transport boundary to verify the shared client refuses before any write; label that case as fault injection. For existing presets, verify Enter plus blur increments the revision once, a later blur saves independently, composition Enter does not submit, and a delayed write remains on its original Host/preset after closing and switching Hosts. Preserve the draft/error on a rejected save. New presets retain an explicit create action. Reject a remote storage preview token on the other Host, and verify neither cleanup command proceeds without its confirmation flag. @@ -72,3 +73,8 @@ Read-failure recovery: keep the same Host connected with the same credential aft Permanent Remove regression (F01): enable a Remote Host and change its notification kinds, then remove it through the icon context menu. Verify the Host revokes this browser, the local pairing disappears, open notification handles close and `botharness.remoteNotifications.v1` no longer contains that Host. Reload and pair the same Host again: notifications start off with default kinds. Repeat while activation is waiting; a late permission or notification-page response cannot restore the forgotten choice. Other Hosts retain their choices; temporary disconnection, reconnect and page disposal retain the existing choice. The phone-global preference is outside this browser operation. The historical T4 driver assertion `persistedChoiceUnchanged` was incorrect for permanent Remove; retain that historical artifact but do not count it as F01 proof. Storage-refusal regression: selectively reject deletion of the notification key (removeItem for the last choice, setItem when another choice remains), while pairing storage stays writable. Permanent Remove must still stop the connection/feed, close handles, cancel late activation and revoke the pairing. The existing Client diagnostic stream records only the fixed remote-notification-forget-persistence-failed code. In-memory removal is complete but persisted removal is not; do not promise reload/re-pair will forget a choice the browser refused to delete. Pairing-storage failures are outside this regression. + + +Unified Host settings regression: use two isolated Hosts with distinct home basenames. In both themes and locales, capture the old separate notification/icon/settings entry points as Before and the unified dialog as After, including a narrow viewport. Verify all five sections, Host identity in the sidebar, and notification help only inside the notification content. Rename, choose a symbol/emoji and colour, close and reload; compare the visible Host labels with `botharness.hostLooks.v1` and `host-look` from the explicitly selected `appearance-clients` target. Confirm pairing metadata and both operating-system hostnames are unchanged. Interleave a UI edit with a stale CLI revision and verify refusal. Inject browser storage refusal and verify a visible save error plus `host-look-storage-failed`, with no unsaved in-memory value. Delay Client delivery beyond the relay deadline, dispose the Client and remove the source: no late look write or acknowledgement may occur. + +Stop only Host B: Appearance and notification-kind choices remain usable, while Models/Usage/Storage show the source unavailable. Enabling notifications still requires the existing complete source baseline and may refuse offline. While activation waits, leave Notifications for Appearance and separately close the dialog; late results must not enable notifications. Repeat F01 Remove/re-pair and T7 viewer release regression as prerequisites allow. Existing T8 model revision, usage and destructive storage confirmations remain intact; no model request is needed for this settings UI journey. Record missing Docker/native/tailnet prerequisites explicitly. diff --git a/apps/mobile/src/host/host-look.ts b/apps/mobile/src/host/host-look.ts index 2f8659989c..43eb6ffdc9 100644 --- a/apps/mobile/src/host/host-look.ts +++ b/apps/mobile/src/host/host-look.ts @@ -18,6 +18,7 @@ export interface LookStorage { } export interface HostLooks { + readonly ready: Promise; look(hostId: string): HostLook; set(hostId: string, look: HostLook): void; subscribe(listener: () => void): () => void; @@ -74,25 +75,29 @@ export function createHostLooks(storage: LookStorage): HostLooks { for (const listener of listeners) listener(); }; let touched = false; - void storage.read().then( + const ready = storage.read().then( (value) => { if (touched) return; const stored = Object.entries(record(value)); for (const [hostId, look] of stored) byHost.set(hostId, parseHostLook(look)); if (stored.some(([, look]) => isLegacyHostLook(look))) { - storage.write(Object.fromEntries(byHost)); - storage.forgetLegacyImages?.(); + try { + storage.write(Object.fromEntries(byHost)); + storage.forgetLegacyImages?.(); + } catch {} } notify(); }, () => undefined, ); return { + ready, look: (hostId) => byHost.get(hostId) ?? DEFAULT_HOST_LOOK, set(hostId, look) { + const next = parseHostLook(look); + storage.write({ ...Object.fromEntries(byHost), [hostId]: next }); touched = true; - byHost.set(hostId, parseHostLook(look)); - storage.write(Object.fromEntries(byHost)); + byHost.set(hostId, next); notify(); }, subscribe(listener) { diff --git a/changes/2500-host-settings.md b/changes/2500-host-settings.md new file mode 100644 index 0000000000..3e94939266 --- /dev/null +++ b/changes/2500-host-settings.md @@ -0,0 +1,11 @@ +--- +section: Changed +--- + +## en + +- Unified Remote Host appearance, notifications, models, usage and storage in one settings dialog, with a device-local display name, icon and colour shared by the UI and `host-look` CLI ([#2500](https://github.com/BotHarness/DeepSeekBot/issues/2500)). + +## zh + +- 将远程 Host 的外观、通知、模型、用量和存储统一到一个设置窗口,UI 与 `host-look` CLI 共用设备本地的显示名称、图标和颜色([#2500](https://github.com/BotHarness/DeepSeekBot/issues/2500))。 diff --git a/docs/architecture/botharness-architecture.md b/docs/architecture/botharness-architecture.md index b6ea1a0d94..06b7e56de9 100644 --- a/docs/architecture/botharness-architecture.md +++ b/docs/architecture/botharness-architecture.md @@ -1152,7 +1152,7 @@ The phone owns its persisted four-kind Device Notification Preference and copies The application-defined development inspector transport settles this asynchronous phone operation explicitly with a request-scoped result slot and synchronous polling, rather than assuming Hermes awaits a JavaScript Promise for CDP. Startup, polling and result consumption share one 20-second CLI deadline. The unique slot is consumed and its timer cleared on fulfillment or rejection; cancellation sends best-effort cleanup, and a runtime TTL clears abandoned slots after disconnect when its event loop runs. Late completion cannot recreate the slot. Replies pass envelope and phone-owner schema checks before success. This temporary process state stores no credential and is not a preference authority. Transport expiry cannot roll back an owner write already started: its outcome remains unknown until readback. The existing UAT fixture driver retains its exact device and trusted-fixture restrictions and raw inspector interface. -Remote Host settings resolve the selected Host's existing client from `RemoteHosts`. The browser reuses `apps/mobile/src/host/model-settings`, `usage` and `storage` for default models, presets, usage/Memory activity and cleanup; the existing Web settings, model picker, charts and destructive confirmation controls present those operations. Settings unmount their content when the source is disconnected or removed. Model resources are keyed by client and scope; there is no This Host fallback, Bot-profile link or automatic write replay. Cleanup retains the owning Host's preview token, scope and explicit confirmation. Host looks remain device-local and independent of these Host-owned settings. +Remote Host settings resolve the selected Host's existing client from `RemoteHosts`. The browser reuses `apps/mobile/src/host/model-settings`, `usage` and `storage` for default models, presets, usage/Memory activity and cleanup; the existing Web settings, model picker, charts and destructive confirmation controls present those operations. Host-owned settings unmount their content when the source disconnects; removing the source closes the settings surface. Model resources are keyed by client and scope; there is no This Host fallback, Bot-profile link or automatic write replay. Cleanup retains the owning Host's preview token, scope and explicit confirmation. Host looks remain device-local and independent of these Host-owned settings. The Host Settings dialog presents Appearance, Notifications, Models, Usage and Storage under one Host icon and display name. Appearance reuses the phone's application-defined `HostLooks` owner and normalization rules through the existing browser storage adapter; it never rewrites pairing metadata or the remote system hostname. Local appearance and notification sections remain reachable offline. Leaving Notifications releases its pending activation through the existing cancellation owner. The existing authenticated Client appearance relay accepts `hostLook` for CLI parity: explicit Client/Host selection, observed content revision, absolute deadline and cancellation checks before persistence. A rejected browser write does not publish an unsaved look. The relay stores no preference copy and introduces no remote Host API. ### Version-bound Memory image previews (#2214, first Web slice) diff --git a/docs/bot-cli.md b/docs/bot-cli.md index 923c7c0537..32d4ae8d37 100644 --- a/docs/bot-cli.md +++ b/docs/bot-cli.md @@ -68,7 +68,12 @@ For a blank bot, `--core-memory ` or `--core-memory-stdin` writes the root ### Remote Host settings -The browser's Remote Host icon menu → **Remote settings** uses the same Host owners as these online commands. Select the source Host with `--host ` and its private `--token-file ` (or the existing environment variables); never point a remote-setting command at the serving Host by default. `model-catalog`, `home-model-set`, `model-presets`, `model-preset-create` and `model-preset-update` cover models; `overview-usage` and `overview-memory` cover usage and Memory activity; `storage-usage` and both storage cleanup preview/confirm pairs cover storage. Destructive confirmations still require `--confirmation-stdin --confirm`, using the preview from that same Host. An unavailable or refusing Host never falls back to a local profile. These commands do not read browser pairing secrets or change device-local Host looks. +The browser's Remote Host icon menu → **Host settings** uses the same Host owners as these online commands. Select the source Host with `--host ` and its private `--token-file ` (or the existing environment variables); never point a remote-setting command at the serving Host by default. `model-catalog`, `home-model-set`, `model-presets`, `model-preset-create` and `model-preset-update` cover models; `overview-usage` and `overview-memory` cover usage and Memory activity; `storage-usage` and both storage cleanup preview/confirm pairs cover storage. Destructive confirmations still require `--confirmation-stdin --confirm`, using the preview from that same Host. An unavailable or refusing Host never falls back to a local profile. These commands do not read browser pairing secrets or change device-local Host looks. Appearance and Notifications are separate sections in the same dialog and remain available while the Remote Host is offline. + +`appearance-clients` lists the open browser Clients. `host-look --client-id --host-id ` reads that browser's name, icon, colour and content revision. Add `--patch-stdin --expected-revision ` to write a JSON patch such as `{"name":"Studio","icon":{"kind":"symbol","id":"server"},"color":"teal"}`. An empty name restores the Host's original display name; `color: null` clears the colour. Names are trimmed and limited to 40 characters, matching the phone's shared HostLook rules. Use a paired Remote Host ID or the serving Host's ID; no remote credential is accepted or returned. + +This command uses the existing authenticated `appearance-control` relay to reach the same Client-local `HostLooks` owner as the UI. It does not rename the operating-system hostname or sync choices to another device. The browser must be open; select it explicitly. Unknown Host, stale revision, cancelled Client and expired request produce coded refusals. Writes recheck the absolute relay deadline and cancellation before persistence; `host-look-storage-failed` means the browser refused the local write, and the current in-memory look remains unchanged. `browser-notifications` continues to own the Notifications section, including permission, activation baseline and cancellation. + Set `DEEPSEEKBOT_HOST` to the running Host's loopback origin, or a tailnet HTTPS origin. A tailnet origin (for example `tailscale serve` in front of a loopback Host) works only when the Host was started with `--trusted-host ..ts.net`; otherwise login succeeds but DSH's `/api` Host fence refuses every request and the CLI returns `host-untrusted`. Supply its current launch token through `DEEPSEEKBOT_HOST_TOKEN` or `--token-file `, never a token argument. `--host ` overrides the environment. Login happens per invocation, cookies remain in memory, and restarting the Host requires its new token. Live commands never open the profile database. See [ADR-0159](adr/0159-live-cli-verbs-ride-the-dsh-http-carrier.md). diff --git a/docs/bot-cli.zh.md b/docs/bot-cli.zh.md index 3c9d693b88..5e7831ffda 100644 --- a/docs/bot-cli.zh.md +++ b/docs/bot-cli.zh.md @@ -68,6 +68,11 @@ deepseekbot search ### 远程设置 +`appearance-clients` 列出打开的浏览器 Client。`host-look --client-id --host-id ` 读取该浏览器内的 Host 名称、图标、颜色和内容修订。写入时加 `--patch-stdin --expected-revision `,从 stdin 传入 JSON,例如 `{"name":"Studio","icon":{"kind":"symbol","id":"server"},"color":"teal"}`。空名称恢复 Host 原始显示名;`color: null` 清除颜色。名称去除首尾空格并限制为 40 字符,与手机共享 HostLook 规则。Host ID 可为已配对的远程 Host 或本机 Host;命令不接收或返回远程凭据。 + +命令复用已认证的 `appearance-control` relay,直达 UI 使用的同一 Client 本地 `HostLooks`,不修改操作系统 hostname,也不同步到其他设备。浏览器须保持打开并显式选择 Client。未知 Host、修订过期、Client 取消和请求超时均返回编码拒绝;落盘前重新检查绝对期限和取消状态。`host-look-storage-failed` 表示浏览器拒绝本地写入,内存中的外观保持原值。Host 设置统一包含外观、通知、模型、用量和存储;离线时仍可进入外观和通知。通知继续使用 `browser-notifications`,保留权限、激活基线和取消语义。 + + 浏览器远程图标菜单中的「远程设置」与以下在线命令使用同一个 Host 所有者。通过 `--host ` 和私有的 `--token-file `(或已有环境变量)指定来源 Host,不要默认指向提供当前网页的本机。模型使用 `model-catalog`、`home-model-set`、`model-presets`、`model-preset-create` 和 `model-preset-update`;用量与 Memory 活动使用 `overview-usage`、`overview-memory`;存储使用 `storage-usage` 及两组清理预览/确认命令。删除仍须传入 `--confirmation-stdin --confirm`,且预览必须来自同一 Host。连接失败或被拒绝时,不会改用本地 Profile。这些命令不读取浏览器的配对密钥,也不修改本设备保存的 Host 外观。 将 `DEEPSEEKBOT_HOST` 设为运行中 Host 的 loopback origin 或 tailnet HTTPS origin。使用 tailnet origin(例如 loopback Host 前面的 `tailscale serve`)时,Host 必须以 `--trusted-host ..ts.net` 启动;否则登录能成功,但 DSH 的 `/api` Host 校验会拒绝每个请求,CLI 返回 `host-untrusted`。`--host ` 可覆盖它。当前启动令牌通过 `DEEPSEEKBOT_HOST_TOKEN` 或 `--token-file <私有文件>` 提供,不得把令牌值放入参数。每次调用重新登录,cookie 只留在内存;Host 重启后须使用新令牌。在线命令不打开 Profile 数据库。参见 [ADR-0159](adr/0159-live-cli-verbs-ride-the-dsh-http-carrier.md)。 diff --git a/packages/client/src/client/appearance-control.ts b/packages/client/src/client/appearance-control.ts index 9dfc4b33a4..cfb2c2a5fb 100644 --- a/packages/client/src/client/appearance-control.ts +++ b/packages/client/src/client/appearance-control.ts @@ -1,3 +1,6 @@ +import { getThisHost } from './this-host.js'; +import { hostLooks } from './host-looks.js'; +import { controlHostLook } from './host-look-control.js'; import { resetAppearance } from './appearance-recovery.js'; import { WallpaperError } from './wallpaper-store.js'; import type { Wallpaper } from './wallpaper.js'; @@ -39,7 +42,14 @@ export function mountAppearanceControl(owner: Appearance, wallpaper?: Wallpaper) try { if (typeof command.expiresAt !== 'number' || Date.now() > command.expiresAt) throw new AppearanceError('appearance-request-stale'); - if (command.notifications !== undefined) { + if (command.hostLook !== undefined) { + const looks = hostLooks(); + await looks.ready; + result = controlHostLook(looks, command.hostLook, command.expectedRevision, { + expiresAt: command.expiresAt, + signal: abort.signal, + }, (hostId) => hostId === getThisHost().id || remoteHosts().getSnapshot().hosts.some((entry) => entry.host.hostId === hostId)); + } else if (command.notifications !== undefined) { const sources = remoteHosts(); const input = object(command.notifications); if ( @@ -98,7 +108,7 @@ export function mountAppearanceControl(owner: Appearance, wallpaper?: Wallpaper) } if (abort.signal.aborted) return; if ( - command.notifications !== undefined && + (command.notifications !== undefined || command.hostLook !== undefined) && typeof command.expiresAt === 'number' && Date.now() >= command.expiresAt ) diff --git a/packages/client/src/client/host-glyph.tsx b/packages/client/src/client/host-glyph.tsx new file mode 100644 index 0000000000..5ed256a44b --- /dev/null +++ b/packages/client/src/client/host-glyph.tsx @@ -0,0 +1,26 @@ +import * as stylex from '@stylexjs/stylex'; +import { ChannelSidebarIcon } from './channel-sidebar-icon.js'; +import { HOST_SYMBOL_GLYPHS, useHostInk } from './host-looks.js'; +import type { HostLook } from '../../../../apps/mobile/src/ui/design/host-look.js'; +import { text } from './ds/tokens.stylex.js'; + +const styles = stylex.create({ + glyph: { display: 'inline-flex', flexShrink: 0, alignItems: 'center', justifyContent: 'center' }, + emoji: { fontSize: text.titleSize, lineHeight: text.metaLine }, + ink: (value: string) => ({ color: value }), +}); + +export function HostGlyph({ look, size: glyphSize = 16 }: { look: HostLook; size?: number }) { + const ink = useHostInk(look.color); + if (look.icon.kind === 'emoji') + return ( + + ); + return ( + + ); +} diff --git a/packages/client/src/client/host-look-control.ts b/packages/client/src/client/host-look-control.ts new file mode 100644 index 0000000000..5e7dac6ee4 --- /dev/null +++ b/packages/client/src/client/host-look-control.ts @@ -0,0 +1,71 @@ +import type { HostLooks } from '../../../../apps/mobile/src/host/host-look.js'; +import { + HOST_COLORS, + HOST_EMOJI, + HOST_SYMBOLS, + withHostColor, + withHostIcon, + withHostName, + type HostColorId, + type HostSymbolId, +} from '../../../../apps/mobile/src/ui/design/host-look.js'; +import { AppearanceError, object } from './appearance.js'; + +export function controlHostLook( + looks: HostLooks, + input: unknown, + expectedRevision: unknown, + request: { expiresAt: number; signal: AbortSignal }, + available: (hostId: string) => boolean, +) { + const check = () => { + if (request.signal.aborted) throw new AppearanceError('host-look-cancelled'); + if (!Number.isFinite(request.expiresAt) || Date.now() >= request.expiresAt) + throw new AppearanceError('appearance-request-stale'); + }; + check(); + const value = object(input); + const hostId = value.hostId; + if (typeof hostId !== 'string' || !available(hostId)) + throw new AppearanceError('host-look-host-unknown'); + const current = looks.look(hostId); + if (value.patch !== undefined) { + if (typeof expectedRevision !== 'string') + throw new AppearanceError('host-look-revision-required'); + if (expectedRevision !== JSON.stringify(current)) + throw new AppearanceError('host-look-revision-stale'); + const patch = object(value.patch); + const keys = Object.keys(patch); + if (keys.length === 0 || keys.some((key) => !['name', 'icon', 'color'].includes(key))) + throw new AppearanceError('host-look-invalid-input'); + let next = current; + if ('name' in patch) { + if (typeof patch.name !== 'string') throw new AppearanceError('host-look-invalid-input'); + next = withHostName(next, patch.name); + } + if ('icon' in patch) { + const icon = object(patch.icon); + if (icon.kind === 'symbol' && typeof icon.id === 'string' && Object.hasOwn(HOST_SYMBOLS, icon.id)) + next = withHostIcon(next, { kind: 'symbol', id: icon.id as HostSymbolId }); + else if (icon.kind === 'emoji' && typeof icon.emoji === 'string' && (HOST_EMOJI as readonly string[]).includes(icon.emoji)) + next = withHostIcon(next, { kind: 'emoji', emoji: icon.emoji }); + else throw new AppearanceError('host-look-invalid-input'); + } + if ('color' in patch) { + if (patch.color !== null && (typeof patch.color !== 'string' || !Object.hasOwn(HOST_COLORS, patch.color))) + throw new AppearanceError('host-look-invalid-input'); + next = withHostColor(next, patch.color === null ? undefined : patch.color as HostColorId); + } + check(); + if (!available(hostId)) throw new AppearanceError('host-look-host-unknown'); + if (expectedRevision !== JSON.stringify(looks.look(hostId))) + throw new AppearanceError('host-look-revision-stale'); + try { + looks.set(hostId, next); + } catch { + throw new AppearanceError('host-look-storage-failed'); + } + } + const look = looks.look(hostId); + return { hostId, look, revision: JSON.stringify(look) }; +} diff --git a/packages/client/src/client/host-look-settings.tsx b/packages/client/src/client/host-look-settings.tsx new file mode 100644 index 0000000000..487e21a09d --- /dev/null +++ b/packages/client/src/client/host-look-settings.tsx @@ -0,0 +1,178 @@ +import { useState, type ReactElement } from 'react'; +import * as stylex from '@stylexjs/stylex'; +import { Note } from './ds/note.js'; +import { TextField } from './ds/field.js'; +import { SettingsSection } from './ds/settings-row.js'; +import { border, color, radius, size, space, text } from './ds/tokens.stylex.js'; +import { ChannelSidebarIcon } from './channel-sidebar-icon.js'; +import { HostGlyph } from './host-glyph.js'; +import { hostLooks, useHostLook } from './host-looks.js'; +import { useBotColorScheme } from './bot-color-scheme.js'; +import type { BotHarnessTranslate } from './locale.js'; +import { + HOST_COLOR_IDS, HOST_COLORS, HOST_EMOJI, HOST_SYMBOL_IDS, HOST_NAME_MAX, + withHostName, withHostIcon, withHostColor, type HostLook, +} from '../../../../apps/mobile/src/ui/design/host-look.js'; + +const focusRing = { default: 'none', ':focus-visible': `${border.focus} solid ${color.accent}` }; +const styles = stylex.create({ + editor: { display: 'flex', flexDirection: 'column', gap: space.x5 }, + emoji: { fontSize: text.titleSize, lineHeight: text.metaLine }, + section: { display: 'flex', flexDirection: 'column', gap: space.x2 }, + sectionName: { color: color.subtle, fontSize: text.metaSize, lineHeight: text.metaLine }, + grid: { display: 'flex', flexWrap: 'wrap', gap: space.x1 }, + choice: { + display: 'inline-flex', + alignItems: 'center', + justifyContent: 'center', + width: size.icon, + height: size.icon, + padding: 0, + borderWidth: border.hairline, + borderStyle: 'solid', + borderColor: 'transparent', + borderRadius: radius.sm, + backgroundColor: { default: 'transparent', ':hover': color.hover }, + color: color.fg, + fontFamily: 'inherit', + cursor: 'pointer', + outline: focusRing, + outlineOffset: '-2px', + }, + chosen: { borderColor: color.accent, backgroundColor: color.selected }, + swatch: (value: string) => ({ + width: text.titleSize, + height: text.titleSize, + borderRadius: radius.round, + backgroundColor: value, + }), +}); + +function HostNameField({ hostId, name, saved, change, t }: { + hostId: string; name: string; saved: string | undefined; change: (look: HostLook) => boolean; t: BotHarnessTranslate; +}) { + const [draft, setDraft] = useState(saved ?? ''); + const save = () => { + const current = hostLooks().look(hostId); + const next = withHostName(current, draft); + if (next.name !== current.name && !change(next)) return; + setDraft(next.name ?? ''); + }; + return { + if (event.key !== 'Enter' || event.nativeEvent.isComposing) return; + event.preventDefault(); + save(); + }} />; +} + +export function HostLookSettings({ hostId, name, t }: { + hostId: string; name: string; t: BotHarnessTranslate; +}): ReactElement { + const scheme = useBotColorScheme(); + const look = useHostLook(hostId); + const icon = look.icon; + const [error, setError] = useState(false); + const change = (next: HostLook): boolean => { + try { + hostLooks().set(hostId, next); + setError(false); + return true; + } catch { + setError(true); + return false; + } + }; + return +
+ {error ? {t('remoteHosts.look.failed')} : null} + +
+ {t('remoteHosts.look.symbols')} +
+ {HOST_SYMBOL_IDS.map((id) => { + const chosen = icon.kind === 'symbol' && icon.id === id; + return ( + + ); + })} +
+
+
+ {t('remoteHosts.look.emoji')} +
+ {HOST_EMOJI.map((emoji) => { + const chosen = icon.kind === 'emoji' && icon.emoji === emoji; + return ( + + ); + })} +
+
+
+ {t('remoteHosts.look.color')} +
+ + {HOST_COLOR_IDS.map((id) => ( + + ))} +
+
+
+
; +} diff --git a/packages/client/src/client/host-looks.ts b/packages/client/src/client/host-looks.ts index 0bee4a6af5..f8e4a51cc8 100644 --- a/packages/client/src/client/host-looks.ts +++ b/packages/client/src/client/host-looks.ts @@ -3,6 +3,7 @@ import { useSyncExternalStore } from 'react'; import { createHostLooks, type HostLooks } from '../../../../apps/mobile/src/host/host-look.js'; import { DEFAULT_HOST_LOOK, + shownHostName, HOST_COLOR_IDS, HOST_SYMBOL_IDS, hostColorInk, @@ -92,8 +93,11 @@ export function browserHostLooks(storage: Storage | undefined): HostLooks { read: async () => JSON.parse(storage?.getItem(HOST_LOOKS_STORAGE_KEY) ?? '{}') as unknown, write: (value) => { try { - storage?.setItem(HOST_LOOKS_STORAGE_KEY, JSON.stringify(value)); - } catch {} + if (storage === undefined) throw new Error('storage-unavailable'); + storage.setItem(HOST_LOOKS_STORAGE_KEY, JSON.stringify(value)); + } catch { + throw new Error('host-look-storage-failed'); + } }, }); } @@ -129,3 +133,7 @@ export function useHostInk(color: HostColorId | undefined): string | undefined { if (color === undefined) return undefined; return hostColorInk(scheme, INK_ROLES[scheme] as unknown as Record, color); } + +export function useHostName(hostId: string | undefined, name: string): string { + return shownHostName(useHostLook(hostId), name); +} diff --git a/packages/client/src/client/host-tabs.tsx b/packages/client/src/client/host-tabs.tsx index 46787452b8..ef8ba898f6 100644 --- a/packages/client/src/client/host-tabs.tsx +++ b/packages/client/src/client/host-tabs.tsx @@ -13,22 +13,12 @@ import { TextField } from './ds/field.js'; import { Tooltip } from './ds/tooltip.js'; import { border, color, radius, size, space, text } from './ds/tokens.stylex.js'; import type { BotHarnessKey, BotHarnessTranslate } from './locale.js'; -import { RemoteNotificationSettings } from './remote-notification-settings.js'; -import { - HOST_COLOR_IDS, - HOST_COLORS, - HOST_EMOJI, - HOST_SYMBOL_IDS, - type HostLook, -} from '../../../../apps/mobile/src/ui/design/host-look.js'; -import { useBotColorScheme } from './bot-color-scheme.js'; -import { - HOST_SYMBOL_GLYPHS, - hostLooks, - unusedHostLook, - useHostInk, - useHostLook, -} from './host-looks.js'; +import { useThisHost } from './this-host.js'; +export { useThisHost } from './this-host.js'; +import { HostGlyph } from './host-glyph.js'; +export { HostGlyph } from './host-glyph.js'; +import { shownHostName, type HostLook } from '../../../../apps/mobile/src/ui/design/host-look.js'; +import { hostLooks, unusedHostLook, useHostLook, useHostName } from './host-looks.js'; const focusRing = { default: 'none', ':focus-visible': `${border.focus} solid ${color.accent}` }; @@ -67,9 +57,6 @@ const styles = stylex.create({ color: { default: color.fg, ':hover': color.fg }, }, offline: { filter: 'grayscale(1)', opacity: 0.5 }, - glyph: { display: 'inline-flex', flexShrink: 0, alignItems: 'center', justifyContent: 'center' }, - emoji: { fontSize: text.titleSize, lineHeight: text.metaLine }, - ink: (value: string) => ({ color: value }), badge: { position: 'absolute', top: 0, @@ -94,96 +81,14 @@ const styles = stylex.create({ fontSize: text.metaSize, lineHeight: text.metaLine, }, - section: { display: 'flex', flexDirection: 'column', gap: space.x2 }, - sectionName: { color: color.subtle, fontSize: text.metaSize, lineHeight: text.metaLine }, - grid: { display: 'flex', flexWrap: 'wrap', gap: space.x1 }, - choice: { - display: 'inline-flex', - alignItems: 'center', - justifyContent: 'center', - width: size.icon, - height: size.icon, - padding: 0, - borderWidth: border.hairline, - borderStyle: 'solid', - borderColor: 'transparent', - borderRadius: radius.sm, - backgroundColor: { default: 'transparent', ':hover': color.hover }, - color: color.fg, - fontFamily: 'inherit', - cursor: 'pointer', - outline: focusRing, - outlineOffset: '-2px', - }, - chosen: { borderColor: color.accent, backgroundColor: color.selected }, - swatch: (value: string) => ({ - width: '14px', - height: '14px', - borderRadius: radius.round, - backgroundColor: value, - }), -}); - -interface ThisHostInfo { - id?: string; - name?: string; -} - -let local: ThisHostInfo = {}; -let localRequested = false; -const localListeners = new Set<() => void>(); -function subscribeLocal(listener: () => void): () => void { - localListeners.add(listener); - if (!localRequested) { - localRequested = true; - void fetch('./api/botharness/devices') - .then((response) => (response.ok ? response.json() : undefined)) - .then((value: { host?: { id?: unknown; name?: unknown } } | undefined) => { - const host = value?.host; - local = { - ...(typeof host?.id === 'string' ? { id: host.id } : {}), - ...(typeof host?.name === 'string' ? { name: host.name } : {}), - }; - for (const notify of localListeners) notify(); - }) - .catch(() => { - localRequested = false; - }); - } - return () => { - localListeners.delete(listener); - }; -} - -export function useThisHost(): ThisHostInfo { - return useSyncExternalStore( - subscribeLocal, - () => local, - () => local, - ); -} +}); export function useRemoteHosts() { const sources = remoteHosts(); return useSyncExternalStore(sources.subscribe, sources.getSnapshot, sources.getSnapshot); } -export function HostGlyph({ look, size: glyphSize = 16 }: { look: HostLook; size?: number }) { - const ink = useHostInk(look.color); - if (look.icon.kind === 'emoji') - return ( - - ); - return ( - - ); -} - export function HostMark({ hostId }: { hostId?: string | undefined }): ReactElement { const thisHost = useThisHost(); const look = useHostLook(hostId ?? thisHost.id); @@ -251,28 +156,34 @@ function HostTab({ ); } + +function RemoteHostTab({ remote, selected, onMenu, t }: { + remote: RemoteHost; selected: boolean; onMenu: (point: MenuPoint) => void; t: BotHarnessTranslate; +}) { + const look = useHostLook(remote.host.hostId); + const name = shownHostName(look, remote.host.hostName); + const unread = unreadCount(remote); + return 0 ? t('remoteHosts.unreadNamed', { name, count: unread }) : name} + look={look} selected={selected} offline={!online(remote)} unread={unread} onMenu={onMenu} />; +} + export function HostTabs({ t }: { t: BotHarnessTranslate }): ReactElement | null { const sources = remoteHosts(); const snapshot = useRemoteHosts(); const thisHost = useThisHost(); - const looks = hostLooks(); - useSyncExternalStore( - looks.subscribe, - () => looks, - () => looks, - ); + const localLook = useHostLook(thisHost.id ?? THIS_HOST); const [menu, setMenu] = useState<{ hostId: string; point: MenuPoint } | undefined>(undefined); const [removing, setRemoving] = useState(undefined); - const [notificationHost, setNotificationHost] = useState(); - const [styling, setStyling] = useState<{ hostId: string; name: string } | undefined>(undefined); - const [settings, setSettings] = useState<{ hostId: string; name: string }>(); + const [settings, setSettings] = useState<{ hostId: string; name: string; local: boolean }>(); const proxy = useRef(null); - if (snapshot.hosts.length === 0) return null; + const thisId = thisHost.id ?? THIS_HOST; - const thisName = thisHost.name ?? t('remoteHosts.this'); + const thisName = shownHostName(localLook, thisHost.name ?? t('remoteHosts.this')); const selectedRemote = snapshot.hosts.find((remote) => remote.host.hostId === snapshot.tab); const menuRemote = snapshot.hosts.find((remote) => remote.host.hostId === menu?.hostId); - const menuName = menuRemote?.host.hostName ?? thisName; + const selectedName = useHostName(selectedRemote?.host.hostId, selectedRemote?.host.hostName ?? ''); + const removingName = useHostName(removing?.host.hostId, removing?.host.hostName ?? ''); + if (snapshot.hosts.length === 0) return null; return ( <>
setMenu({ hostId: thisId, point })} /> - {snapshot.hosts.map((remote) => { - const unread = unreadCount(remote); - const name = remote.host.hostName; - return ( - 0 - ? t('remoteHosts.unreadNamed', { name, count: unread }) - : name - } - look={looks.look(remote.host.hostId)} - selected={snapshot.tab === remote.host.hostId} - offline={!online(remote)} - unread={unread} - onMenu={(point) => setMenu({ hostId: remote.host.hostId, point })} - /> - ); - })} + {snapshot.hosts.map((remote) => ( + setMenu({ hostId: remote.host.hostId, point })} t={t} /> + ))}
{selectedRemote !== undefined && !online(selectedRemote) ? (

{selectedRemote.snapshot.connection.status === 'refused' - ? t('remoteHosts.refused', { name: selectedRemote.host.hostName }) - : t('remoteHosts.offline', { name: selectedRemote.host.hostName })} + ? t('remoteHosts.refused', { name: selectedName }) + : t('remoteHosts.offline', { name: selectedName })}

) : null} {menu === undefined ? null : ( @@ -336,57 +229,36 @@ export function HostTabs({ t }: { t: BotHarnessTranslate }): ReactElement | null autoFocus anchor={ )} - {styling === undefined ? null : ( - setStyling(undefined)} - t={t} - /> - )} {settings === undefined ? null : ( setSettings(undefined)} t={t} /> )} - {notificationHost === undefined ? null : ( - setNotificationHost(undefined)} - /> - )} {removing === undefined ? null : ( void; - t: BotHarnessTranslate; -}): ReactElement { - const scheme = useBotColorScheme(); - const [look, setLook] = useState(() => hostLooks().look(hostId)); - const icon = look.icon; - return ( - { - hostLooks().set(hostId, look); - onClose(); - }} - > -
- {t('remoteHosts.look.symbols')} -
- {HOST_SYMBOL_IDS.map((id) => { - const chosen = icon.kind === 'symbol' && icon.id === id; - return ( - - ); - })} -
-
-
- {t('remoteHosts.look.emoji')} -
- {HOST_EMOJI.map((emoji) => { - const chosen = icon.kind === 'emoji' && icon.emoji === emoji; - return ( - - ); - })} -
-
-
- {t('remoteHosts.look.color')} -
- - {HOST_COLOR_IDS.map((id) => ( - - ))} -
-
-
- ); -} - const PAIR_ERRORS: Partial> = { 'link-invalid': 'remoteHosts.error.link-invalid', 'link-expired': 'remoteHosts.error.link-expired', @@ -582,7 +340,9 @@ export function AddRemoteHostDialog({ .hosts.filter((remote) => remote.host.hostId !== result.host.hostId) .map((remote) => looks.look(remote.host.hostId)), ]; - looks.set(result.host.hostId, unusedHostLook(used)); + try { + looks.set(result.host.hostId, unusedHostLook(used)); + } catch {} onClose(); }); }; @@ -685,6 +445,7 @@ export function RemoteHostRows({ }): ReactElement | null { const sources = remoteHosts(); const { open, avatars } = useRemoteHosts(); + const name = useHostName(remote.host.hostId, remote.host.hostName); const needle = query.trim().toLocaleLowerCase(); const visible = rows(remote).filter( (row) => needle.length === 0 || row.title.toLocaleLowerCase().includes(needle), @@ -700,7 +461,7 @@ export function RemoteHostRows({ data-remote-row={row.key} aria-label={ showSource - ? t('remoteHosts.rowLabel', { name: row.title, host: remote.host.hostName }) + ? t('remoteHosts.rowLabel', { name: row.title, host: name }) : row.title } onClick={() => { @@ -741,7 +502,7 @@ export function RemoteHostRows({ return (
- {remote.host.hostName} + {name} {visible.length}
{list} diff --git a/packages/client/src/client/locale.ts b/packages/client/src/client/locale.ts index 67b7a15f8c..c4dcbc838f 100644 --- a/packages/client/src/client/locale.ts +++ b/packages/client/src/client/locale.ts @@ -3936,14 +3936,47 @@ export const zh = { 'remoteHosts.thisNamed': '本机 · {name}', 'remoteHosts.unreadNamed': '{name} · {count} 条未读', 'remoteHosts.look': '更改图标…', - 'remoteHosts.settings': '远程设置', + 'remoteHosts.look.appearance': '外观', + 'remoteHosts.look.name': '名称', + 'remoteHosts.look.hint': '仅保存在此浏览器。', + 'remoteHosts.look.failed': '无法保存到此浏览器,请重试。', + 'remoteHosts.settings.title': '{name} 的设置', + 'remoteHosts.look.symbol.desktop': '台式电脑', + 'remoteHosts.look.symbol.laptop': '笔记本', + 'remoteHosts.look.symbol.display': '显示器', + 'remoteHosts.look.symbol.server': '服务器', + 'remoteHosts.look.symbol.terminal': '终端', + 'remoteHosts.look.symbol.cpu': '芯片', + 'remoteHosts.look.symbol.home': '家', + 'remoteHosts.look.symbol.office': '办公室', + 'remoteHosts.look.symbol.work': '工作', + 'remoteHosts.look.symbol.lab': '实验室', + 'remoteHosts.look.symbol.game': '游戏', + 'remoteHosts.look.symbol.art': '艺术', + 'remoteHosts.look.symbol.book': '书籍', + 'remoteHosts.look.symbol.globe': '地球', + 'remoteHosts.look.symbol.bolt': '闪电', + 'remoteHosts.look.symbol.star': '星星', + 'remoteHosts.look.symbol.heart': '爱心', + 'remoteHosts.look.symbol.leaf': '叶子', + 'remoteHosts.look.color.blue': '蓝色', + 'remoteHosts.look.color.indigo': '靛蓝', + 'remoteHosts.look.color.purple': '紫色', + 'remoteHosts.look.color.pink': '粉色', + 'remoteHosts.look.color.red': '红色', + 'remoteHosts.look.color.orange': '橙色', + 'remoteHosts.look.color.yellow': '黄色', + 'remoteHosts.look.color.green': '绿色', + 'remoteHosts.look.color.teal': '青色', + 'remoteHosts.look.color.graphite': '石墨色', + 'remoteHosts.settings': 'Host 设置', 'remoteHosts.settings.models': '模型', 'remoteHosts.settings.storageTitle': '{name} · 存储空间', 'remoteHosts.settings.error': '无法读取或保存设置,请重试。', 'remoteHosts.look.title': '{name} 的图标', 'remoteHosts.look.symbols': '符号', 'remoteHosts.look.emoji': 'Emoji', - 'remoteHosts.look.color': '颜色', + 'remoteHosts.look.color': '图标颜色', 'remoteHosts.look.noColor': '不设颜色', 'remoteHosts.look.save': '保存', 'remoteHosts.remote': '远程', @@ -8331,14 +8364,47 @@ My relationship with you, established lore and topics to avoid: [fill in]. 'remoteHosts.thisNamed': 'This host · {name}', 'remoteHosts.unreadNamed': '{name} · {count} unread', 'remoteHosts.look': 'Change icon…', - 'remoteHosts.settings': 'Remote settings', + 'remoteHosts.look.appearance': 'Appearance', + 'remoteHosts.look.name': 'Name', + 'remoteHosts.look.hint': 'Saved in this browser only.', + 'remoteHosts.look.failed': 'Could not save in this browser. Try again.', + 'remoteHosts.settings.title': 'Settings for {name}', + 'remoteHosts.look.symbol.desktop': 'Desktop', + 'remoteHosts.look.symbol.laptop': 'Laptop', + 'remoteHosts.look.symbol.display': 'Display', + 'remoteHosts.look.symbol.server': 'Server', + 'remoteHosts.look.symbol.terminal': 'Terminal', + 'remoteHosts.look.symbol.cpu': 'Cpu', + 'remoteHosts.look.symbol.home': 'Home', + 'remoteHosts.look.symbol.office': 'Office', + 'remoteHosts.look.symbol.work': 'Work', + 'remoteHosts.look.symbol.lab': 'Lab', + 'remoteHosts.look.symbol.game': 'Game', + 'remoteHosts.look.symbol.art': 'Art', + 'remoteHosts.look.symbol.book': 'Book', + 'remoteHosts.look.symbol.globe': 'Globe', + 'remoteHosts.look.symbol.bolt': 'Bolt', + 'remoteHosts.look.symbol.star': 'Star', + 'remoteHosts.look.symbol.heart': 'Heart', + 'remoteHosts.look.symbol.leaf': 'Leaf', + 'remoteHosts.look.color.blue': 'Blue', + 'remoteHosts.look.color.indigo': 'Indigo', + 'remoteHosts.look.color.purple': 'Purple', + 'remoteHosts.look.color.pink': 'Pink', + 'remoteHosts.look.color.red': 'Red', + 'remoteHosts.look.color.orange': 'Orange', + 'remoteHosts.look.color.yellow': 'Yellow', + 'remoteHosts.look.color.green': 'Green', + 'remoteHosts.look.color.teal': 'Teal', + 'remoteHosts.look.color.graphite': 'Graphite', + 'remoteHosts.settings': 'Host settings', 'remoteHosts.settings.models': 'Models', 'remoteHosts.settings.storageTitle': '{name} · Storage', 'remoteHosts.settings.error': 'Could not load or save settings. Try again.', 'remoteHosts.look.title': 'Icon for {name}', 'remoteHosts.look.symbols': 'Symbols', 'remoteHosts.look.emoji': 'Emoji', - 'remoteHosts.look.color': 'Color', + 'remoteHosts.look.color': 'Icon color', 'remoteHosts.look.noColor': 'No color', 'remoteHosts.look.save': 'Save', 'remoteHosts.remote': 'Remote', diff --git a/packages/client/src/client/remote-activity.tsx b/packages/client/src/client/remote-activity.tsx index 25baf40392..4c56f6c88b 100644 --- a/packages/client/src/client/remote-activity.tsx +++ b/packages/client/src/client/remote-activity.tsx @@ -1,3 +1,5 @@ +import { useHostName, hostLooks } from './host-looks.js'; +import { shownHostName } from '../../../../apps/mobile/src/ui/design/host-look.js'; import { useMemo, useRef, useState, useSyncExternalStore, type ReactElement } from 'react'; import * as stylex from '@stylexjs/stylex'; import { @@ -288,7 +290,7 @@ export function RemoteActivityGroup({ channelId, title: current.snapshot.roster?.channels.find((channel) => channel.id === channelId)?.name ?? - current.host.hostName, + shownHostName(hostLooks().look(current.host.hostId), current.host.hostName), }); registry?.open(CHANNEL_BODY_PANEL); }, @@ -296,6 +298,7 @@ export function RemoteActivityGroup({ [sources, host.host.hostId, observation, registry, t], ); const [collapsed, setCollapsed] = useState>>({}); + const hostName = useHostName(host.host.hostId, host.host.hostName); if (query.botSlug !== undefined || query.channelId !== undefined) return null; const refused = host.snapshot.connection.status === 'refused'; const bots = (host.snapshot.roster?.bots ?? []).map((bot) => ({ @@ -322,11 +325,11 @@ export function RemoteActivityGroup({ registry?.open(CHANNEL_BODY_PANEL); }; return ( -
- +
+ {host.snapshot.connection.status !== 'connected' ? (

- {t(refused ? 'remoteHosts.refused' : 'remoteHosts.offline', { name: host.host.hostName })} + {t(refused ? 'remoteHosts.refused' : 'remoteHosts.offline', { name: hostName })}

) : null} {refused diff --git a/packages/client/src/client/remote-conversation-view.tsx b/packages/client/src/client/remote-conversation-view.tsx index b77e1ca5d7..f61a31a9a2 100644 --- a/packages/client/src/client/remote-conversation-view.tsx +++ b/packages/client/src/client/remote-conversation-view.tsx @@ -1,3 +1,4 @@ +import { useHostName } from './host-looks.js'; import { ChannelMessageBody } from './channel-message-body.js'; import { RemoteMessageBody } from './remote-message-body.js'; import { MessageHostContext, type MessageHost } from './message-host.js'; @@ -179,6 +180,7 @@ export function RemoteConversationView({ }): ReactElement { const sources = remoteHosts(); const { hosts, avatars } = useRemoteHosts(); + const hostName = useHostName(target.hostId, hosts.find((entry) => entry.host.hostId === target.hostId)?.host.hostName ?? ''); const remote = hosts.find((candidate) => candidate.host.hostId === target.hostId); const conversation = useMemo( () => sources.conversation(target), @@ -258,7 +260,7 @@ export function RemoteConversationView({ {target.title} - {remote?.host.hostName ?? ''} + {hostName} {!unavailable && bot?.browserAccess ? ( @@ -298,7 +300,7 @@ export function RemoteConversationView({ client={viewerClient} kind={viewer} slug={bot.slug} - hostName={remote?.host.hostName ?? ''} + hostName={hostName} t={t} onClose={() => setViewer(undefined)} /> @@ -306,7 +308,7 @@ export function RemoteConversationView({ <> {!reachable ? (

- {t('remoteHosts.offline', { name: remote?.host.hostName ?? '' })} + {t('remoteHosts.offline', { name: hostName })}

) : snapshot.status === 'interrupted' ? (

diff --git a/packages/client/src/client/remote-host-settings.tsx b/packages/client/src/client/remote-host-settings.tsx index 4373484b28..3965b3f31f 100644 --- a/packages/client/src/client/remote-host-settings.tsx +++ b/packages/client/src/client/remote-host-settings.tsx @@ -1,4 +1,12 @@ import { useMemo, useState, useSyncExternalStore } from 'react'; +import * as stylex from '@stylexjs/stylex'; +import { HostGlyph } from './host-glyph.js'; +import { HostLookSettings } from './host-look-settings.js'; +import { useHostLook } from './host-looks.js'; +import { shownHostName } from '../../../../apps/mobile/src/ui/design/host-look.js'; +import { RemoteNotificationSettings } from './remote-notification-settings.js'; +import { ChannelSidebarIcon } from './channel-sidebar-icon.js'; +import { color, space, text } from './ds/tokens.stylex.js'; import { SettingsDialog } from './ds/settings-dialog.js'; import { Note } from './ds/note.js'; import type { BotHarnessTranslate } from './locale.js'; @@ -10,14 +18,23 @@ import { remoteHostSettingsSource } from './remote-host-settings-source.js'; import { StorageSettings } from './storage-settings.js'; import type { HostClient } from '../../../../apps/mobile/src/host/client.js'; +const styles = stylex.create({ + identity: { display: 'flex', alignItems: 'center', gap: space.x3, paddingInline: space.x3, minWidth: 0 }, + label: { display: 'flex', flexDirection: 'column', gap: space.x1, minWidth: 0 }, + name: { color: color.fg, fontSize: text.titleSize, lineHeight: text.titleLine, fontWeight: text.strong, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }, + kind: { color: color.muted, fontSize: text.metaSize, lineHeight: text.metaLine }, +}); + export function RemoteHostSettings({ hostId, name, + local = false, onClose, t, }: { hostId: string; name: string; + local?: boolean; onClose: () => void; t: BotHarnessTranslate; }) { @@ -29,17 +46,29 @@ export function RemoteHostSettings({ ); const remote = snapshot.hosts.find((entry) => entry.host.hostId === hostId); const client = sources.client(hostId); - const [section, setSection] = useState('models'); + const look = useHostLook(hostId); + const displayName = shownHostName(look, name); + const [section, setSection] = useState('appearance'); const sections = [ - { id: 'models', label: t('remoteHosts.settings.models') }, - { id: 'usage', label: t('overviewUsage.title') }, - { id: 'storage', label: t('storage.title') }, + { id: 'appearance', label: t('remoteHosts.look.appearance'), icon: }, + ...(local ? [] : [ + { id: 'notifications', label: t('remoteHosts.notifications'), icon: }, + { id: 'models', label: t('remoteHosts.settings.models'), icon: }, + { id: 'usage', label: t('overviewUsage.title'), icon: }, + { id: 'storage', label: t('storage.title'), icon: }, + ]), ]; + if (!local && remote === undefined) return null; return ( entry.id === section)!.label} - navTitle={t('remoteHosts.settings')} - caption={name} + title={t('remoteHosts.settings.title', { name: displayName })} + caption={

+ + + {displayName} + {t('remoteHosts.settings')} + +
} sections={sections} activeId={section} onSelect={setSection} @@ -50,17 +79,21 @@ export function RemoteHostSettings({ picker: (label) => label, }} > - {client === undefined || remote?.snapshot.connection.status !== 'connected' ? ( + {section === 'appearance' ? ( + + ) : section === 'notifications' ? ( + + ) : client === undefined || remote?.snapshot.connection.status !== 'connected' ? ( {t( remote?.snapshot.connection.status === 'refused' ? 'remoteHosts.refused' : 'remoteHosts.offline', - { name }, + { name: displayName }, )} ) : ( - + )} ); diff --git a/packages/client/src/client/remote-hosts.ts b/packages/client/src/client/remote-hosts.ts index 8cee5525d4..6cdc99e3d1 100644 --- a/packages/client/src/client/remote-hosts.ts +++ b/packages/client/src/client/remote-hosts.ts @@ -1,3 +1,5 @@ +import { hostLooks } from './host-looks.js'; +import { shownHostName } from '../../../../apps/mobile/src/ui/design/host-look.js'; import type { HostCarrier } from '../../../../apps/mobile/src/host/carrier.js'; import { createHostClient, @@ -150,6 +152,7 @@ export function createRemoteHosts(options: { loadImage?: (url: string, headers: Record) => Promise; releaseImage?: (image: string) => void; translate?: NotificationTranslate; + hostName?: (hostId: string, fallback: string) => string; }): RemoteHosts { const { storage, carrier, loadImage, releaseImage } = options; const listeners = new Set<() => void>(); @@ -163,6 +166,7 @@ export function createRemoteHosts(options: { let open: RemoteConversationTarget | undefined; let snapshot: RemoteHostsSnapshot = { hosts: [], avatars, tab }; const notifications = createRemoteNotifications({ + ...(options.hostName === undefined ? {} : { hostName: options.hostName }), storage, api: browserNotificationApi(), async prepareEnable(hostId, signal) { @@ -537,6 +541,7 @@ export function remoteHosts(translator?: NotificationTranslate): RemoteHosts { loadImage: browserImage, releaseImage: (image) => URL.revokeObjectURL(image), translate: (key) => translate(key), + hostName: (hostId, fallback) => shownHostName(hostLooks().look(hostId), fallback), }); const sources = shared; let selection = store.getSnapshot().selection; diff --git a/packages/client/src/client/remote-notification-settings.tsx b/packages/client/src/client/remote-notification-settings.tsx index 2e9f226f41..b3001be454 100644 --- a/packages/client/src/client/remote-notification-settings.tsx +++ b/packages/client/src/client/remote-notification-settings.tsx @@ -1,9 +1,9 @@ +import { useMountedResource } from './mounted-resource.js'; import { useState, useSyncExternalStore } from 'react'; import { Switch } from '@deepseek-ai/dsh-client-ui-primitives'; import { PUSH_KINDS, type PushKind } from '../../../../apps/mobile/src/host/push.js'; import type { RemoteNotifications } from './remote-notifications.js'; import type { BotHarnessTranslate, BotHarnessKey } from './locale.js'; -import { SettingsDialog } from './ds/settings-dialog.js'; import { Note } from './ds/note.js'; import { SettingsRow, SettingsSection } from './ds/settings-row.js'; @@ -16,17 +16,14 @@ const labels: Record = { export function RemoteNotificationSettings({ hostId, - name, notifications, t, - onClose, }: { hostId: string; - name: string; notifications: RemoteNotifications; t: BotHarnessTranslate; - onClose(): void; }) { + const mount = useMountedResource(() => () => notifications.cancel(hostId), [notifications, hostId]); const snapshot = useSyncExternalStore(notifications.subscribe, notifications.getSnapshot); const choice = notifications.choice(hostId); const [busy, setBusy] = useState(false); @@ -40,18 +37,7 @@ export function RemoteNotificationSettings({ .finally(() => setBusy(false)); }; return ( - section }} - sections={[{ id: 'notifications', label: t('remoteHosts.notifications.title', { name }) }]} - activeId="notifications" - onSelect={() => {}} - onClose={() => { - notifications.cancel(hostId); - onClose(); - }} - > +
{(error || snapshot.permission === 'denied' || snapshot.permission === 'unsupported') && ( {error @@ -63,7 +49,7 @@ export function RemoteNotificationSettings({ : undefined} )} - + ))} - +
); } diff --git a/packages/client/src/client/remote-notifications.ts b/packages/client/src/client/remote-notifications.ts index b9fc10572c..25026ae9de 100644 --- a/packages/client/src/client/remote-notifications.ts +++ b/packages/client/src/client/remote-notifications.ts @@ -56,6 +56,7 @@ export function createRemoteNotifications(options: { api?: DesktopNotificationApi | undefined; open(target: RemoteConversationTarget): void; privateBody(): string; + hostName?(hostId: string, fallback: string): string; prepareEnable(hostId: string, signal: AbortSignal): Promise; diagnostic?(code: NotificationDiagnostic): void; }) { @@ -315,7 +316,7 @@ export function createRemoteNotifications(options: { ) continue; const bot = remote.snapshot.roster?.bots.find((bot) => bot.slug === item.botSlug); - const title = `${remote.host.hostName} · ${item.channelName ?? bot?.displayName ?? item.botSlug}`; + const title = `${options.hostName?.(id, remote.host.hostName) ?? remote.host.hostName} · ${item.channelName ?? bot?.displayName ?? item.botSlug}`; try { const handle = api.show(title, { body: kind === 'private-input' ? options.privateBody() : noticeBody(item.summary), diff --git a/packages/client/src/client/this-host.ts b/packages/client/src/client/this-host.ts new file mode 100644 index 0000000000..4e92411e13 --- /dev/null +++ b/packages/client/src/client/this-host.ts @@ -0,0 +1,43 @@ +import { useSyncExternalStore } from 'react'; + +interface ThisHostInfo { + id?: string; + name?: string; +} + +export const getThisHost = (): ThisHostInfo => local; + +let local: ThisHostInfo = {}; +let localRequested = false; +const localListeners = new Set<() => void>(); + +function subscribeLocal(listener: () => void): () => void { + localListeners.add(listener); + if (!localRequested) { + localRequested = true; + void fetch('./api/botharness/devices') + .then((response) => (response.ok ? response.json() : undefined)) + .then((value: { host?: { id?: unknown; name?: unknown } } | undefined) => { + const host = value?.host; + local = { + ...(typeof host?.id === 'string' ? { id: host.id } : {}), + ...(typeof host?.name === 'string' ? { name: host.name } : {}), + }; + for (const notify of localListeners) notify(); + }) + .catch(() => { + localRequested = false; + }); + } + return () => { + localListeners.delete(listener); + }; +} + +export function useThisHost(): ThisHostInfo { + return useSyncExternalStore( + subscribeLocal, + () => local, + () => local, + ); +} diff --git a/packages/client/test/host-look-control.test.ts b/packages/client/test/host-look-control.test.ts new file mode 100644 index 0000000000..8293f32416 --- /dev/null +++ b/packages/client/test/host-look-control.test.ts @@ -0,0 +1,75 @@ +import { describe, expect, it, vi } from 'vitest'; +import { createHostLooks } from '../../../apps/mobile/src/host/host-look.js'; +import { shownHostName } from '../../../apps/mobile/src/ui/design/host-look.js'; +import { controlHostLook } from '../src/client/host-look-control.js'; + +async function setup() { + const write = vi.fn(); + const looks = createHostLooks({ read: async () => ({}), write }); + await Promise.resolve(); + const abort = new AbortController(); + const request = { signal: abort.signal, expiresAt: Date.now() + 8000 }; + const available = (id: string) => id === 'host-b'; + const read = () => controlHostLook(looks, { hostId: 'host-b' }, undefined, request, available); + return { looks, write, abort, request, available, read }; +} + +describe('Host look Client control', () => { + it('writes the shared owner and persists the same normalized local name, icon and colour', async () => { + const { looks, write, request, available, read } = await setup(); + const before = read(); + const saved = controlHostLook(looks, { hostId: 'host-b', patch: { + name: ' Studio ', icon: { kind: 'emoji', emoji: '🏠' }, color: 'teal', + } }, before.revision, request, available); + expect(saved.look).toEqual({ name: 'Studio', icon: { kind: 'emoji', emoji: '🏠' }, color: 'teal' }); + expect(looks.look('host-b')).toBe(saved.look); + expect(write).toHaveBeenLastCalledWith({ 'host-b': saved.look }); + expect(shownHostName(saved.look, 'system-hostname')).toBe('Studio'); + expect(looks.look('host-a')).toEqual(before.look); + const reset = controlHostLook(looks, { hostId: 'host-b', patch: { name: '', color: null } }, saved.revision, request, available); + expect(reset.look).toEqual({ icon: saved.look.icon }); + expect(shownHostName(reset.look, 'system-hostname')).toBe('system-hostname'); + }); + + it('refuses a stale UI revision and reports storage failure without publishing an unsaved look', async () => { + const { looks, write, request, available, read } = await setup(); + const before = read(); + looks.set('host-b', { ...before.look, name: 'UI change' }); + expect(() => controlHostLook(looks, { hostId: 'host-b', patch: { name: 'CLI change' } }, before.revision, request, available)) + .toThrow('host-look-revision-stale'); + const current = read(); + const notify = vi.fn(); + looks.subscribe(notify); + write.mockImplementation(() => { throw new Error('quota'); }); + expect(() => controlHostLook(looks, { hostId: 'host-b', patch: { color: 'blue' } }, current.revision, request, available)) + .toThrow('host-look-storage-failed'); + expect(read()).toEqual(current); + expect(notify).not.toHaveBeenCalled(); + }); + + it.each(['expired', 'cancelled', 'removed', 'expires-before-write', 'removed-before-write'])( + 'does not persist a %s request', async (reason) => { + const { write, looks, request, abort, read } = await setup(); + const before = read(); + if (reason === 'expired') request.expiresAt = Date.now(); + if (reason === 'cancelled') abort.abort(); + let calls = 0; + const available = () => { + calls++; + if (reason === 'expires-before-write') request.expiresAt = Date.now(); + return reason !== 'removed' && (reason !== 'removed-before-write' || calls === 1); + }; + expect(() => controlHostLook(looks, { hostId: 'host-b', patch: { name: 'late' } }, before.revision, request, available)).toThrow(); + expect(write).not.toHaveBeenCalled(); + expect(looks.look('host-b')).toBe(before.look); + }, + ); + + it.each([{ name: 42 }, { icon: { kind: 'symbol', id: 'unknown' } }, { color: 'invalid' }, { arbitrary: true }, null, []])( + 'rejects invalid input before storage: %j', async (patch) => { + const { write, looks, request, available, read } = await setup(); + expect(() => controlHostLook(looks, { hostId: 'host-b', patch }, read().revision, request, available)).toThrow('host-look-invalid-input'); + expect(write).not.toHaveBeenCalled(); + }, + ); +}); diff --git a/packages/client/test/host-look-relay.test.ts b/packages/client/test/host-look-relay.test.ts new file mode 100644 index 0000000000..4b350802bb --- /dev/null +++ b/packages/client/test/host-look-relay.test.ts @@ -0,0 +1,67 @@ +import { afterEach, expect, it, vi } from 'vitest'; +import { createHostLooks } from '../../../apps/mobile/src/host/host-look.js'; +import { createAppearanceControl } from '../../core/src/appearance/control.js'; +import { Appearance } from '../src/client/appearance.js'; +import { mountAppearanceControl } from '../src/client/appearance-control.js'; + +const shared = vi.hoisted(() => new Map()); +vi.mock('../src/client/host-looks.js', () => ({ hostLooks: () => shared.get('looks') })); +vi.mock('../src/client/remote-hosts.js', () => ({ remoteHosts: () => shared.get('sources') })); + +afterEach(() => { + vi.unstubAllGlobals(); + vi.useRealTimers(); + shared.clear(); +}); + +it.each(['on-time', 'deadline', 'unmount', 'removed'] as const)( + 'checks %s after hydration at the existing relay boundary', async (reason) => { + vi.useFakeTimers(); + const host = createAppearanceControl(); + let hydrate!: (value: unknown) => void; + const write = vi.fn(); + const looks = createHostLooks({ read: () => new Promise((resolve) => { hydrate = resolve; }), write }); + shared.set('looks', looks); + let paired = true; + shared.set('sources', { getSnapshot: () => ({ hosts: paired ? [{ host: { hostId: 'b' } }] : [] }) }); + const actions: string[] = []; + vi.stubGlobal('location', { protocol: 'http:' }); + vi.stubGlobal('fetch', async (_url: string, init?: RequestInit) => { + actions.push(JSON.parse(String(init?.body)).action); + return host.fetch(new Request('http://localhost/api/botharness/appearance-control', init)); + }); + const release = mountAppearanceControl(new Appearance(undefined, () => 'light')); + try { + await vi.waitFor(() => expect(actions).toContain('poll')); + const { clients } = await (await host.fetch(new Request('http://localhost'))).json(); + const stored = { name: 'Stored', icon: { kind: 'symbol', id: 'server' }, color: 'teal' }; + const response = host.fetch(new Request('http://localhost/api/botharness/appearance-control', { + method: 'POST', body: JSON.stringify({ + action: 'request', clientId: clients[0].id, expectedRevision: JSON.stringify(stored), + hostLook: { hostId: 'b', patch: { name: 'Studio' } }, + }), + })); + await vi.advanceTimersByTimeAsync(0); + expect(write).not.toHaveBeenCalled(); + if (reason === 'deadline') await vi.advanceTimersByTimeAsync(8000); + if (reason === 'unmount') release(); + if (reason === 'removed') paired = false; + hydrate({ b: stored }); + await vi.advanceTimersByTimeAsync(0); + const result = await (await response).json(); + if (reason === 'on-time') { + expect(result).toMatchObject({ hostId: 'b', look: { name: 'Studio', color: 'teal' } }); + expect(write).toHaveBeenCalledTimes(1); + expect(looks.look('b').name).toBe('Studio'); + } else { + expect(result).toMatchObject({ error: { code: reason === 'removed' ? 'host-look-host-unknown' : reason === 'deadline' ? 'appearance-client-timeout' : 'appearance-client-stale' } }); + expect(write).not.toHaveBeenCalled(); + expect(looks.look('b')).toEqual(stored); + if (reason !== 'removed') expect(actions).not.toContain('reply'); + } + } finally { + release(); + host.dispose(); + } + }, +); diff --git a/packages/core/src/appearance/control.ts b/packages/core/src/appearance/control.ts index 8d1b795c15..c590eff428 100644 --- a/packages/core/src/appearance/control.ts +++ b/packages/core/src/appearance/control.ts @@ -8,6 +8,7 @@ interface Command { wallpaper?: unknown; recovery?: unknown; notifications?: unknown; + hostLook?: unknown; expectedRevision?: string; } interface Client { @@ -70,7 +71,7 @@ export function createAppearanceControl(now = Date.now) { if (!client) return refused('appearance-client-stale', 404); if (input.action === 'request') { if ( - [input.patch, input.wallpaper, input.recovery, input.notifications].filter( + [input.patch, input.wallpaper, input.recovery, input.notifications, input.hostLook].filter( (v) => v !== undefined, ).length > 1 ) @@ -82,6 +83,7 @@ export function createAppearanceControl(now = Date.now) { const command: Command = { id: randomUUID(), expiresAt: now() + 8000, + ...(input.hostLook === undefined ? {} : { hostLook: input.hostLook, expectedRevision: input.expectedRevision as string }), ...(input.notifications === undefined ? {} : { diff --git a/packages/core/src/bots/cli-host-look.ts b/packages/core/src/bots/cli-host-look.ts new file mode 100644 index 0000000000..8bc16891ba --- /dev/null +++ b/packages/core/src/bots/cli-host-look.ts @@ -0,0 +1,33 @@ +import { CliLiveError } from './cli-live-error.js'; + +export const HOST_LOOK_COMMANDS = [ + { command: 'host-look', description: 'read or set device-local Host looks on --client-id and --host-id (--patch-stdin, --expected-revision)' }, +] as const; + +export async function runHostLook( + rest: string[], + values: { 'client-id'?: string; 'host-id'?: string; 'patch-stdin'?: boolean; 'expected-revision'?: string }, + io: { readStdin?: () => Promise }, + connect: () => Promise<{ http(path: string, body?: Record): Promise<{ bytes: Uint8Array }> }>, +) { + if (rest.length || !values['client-id'] || !values['host-id']) + throw new CliLiveError('usage', 'Select --client-id and --host-id for host-look.'); + if (!!values['patch-stdin'] !== (values['expected-revision'] !== undefined)) + throw new CliLiveError('usage', 'Writes require --patch-stdin and --expected-revision.'); + let patch: unknown; + if (values['patch-stdin']) { + try { + patch = JSON.parse((await io.readStdin?.()) ?? ''); + } catch { + throw new CliLiveError('invalid-input', 'Invalid Host look JSON on stdin.'); + } + } + const host = await connect(); + const result = await host.http('/api/botharness/appearance-control', { + action: 'request', + clientId: values['client-id'], + hostLook: { hostId: values['host-id'], ...(patch === undefined ? {} : { patch }) }, + ...(patch === undefined ? {} : { expectedRevision: values['expected-revision'] }), + }); + return JSON.parse(new TextDecoder().decode(result.bytes)) as unknown; +} diff --git a/packages/core/src/bots/cli-live.ts b/packages/core/src/bots/cli-live.ts index 7f06fbb1eb..020ec2136a 100644 --- a/packages/core/src/bots/cli-live.ts +++ b/packages/core/src/bots/cli-live.ts @@ -1,3 +1,4 @@ +import { HOST_LOOK_COMMANDS, runHostLook } from './cli-host-look.js'; import { runPhoneNotifications } from './cli-phone-notifications.js'; import { WINDOW_ZOOM_COMMANDS, @@ -133,6 +134,7 @@ export { CliLiveError } from './cli-live-error.js'; export const LIVE_OPTIONS = { 'remote-host-id': { type: 'string' }, + 'host-id': { type: 'string' }, ...DEVICE_NOTIFICATION_OPTIONS, ...WINDOW_ZOOM_OPTIONS, ...CONNECT_OPTIONS, @@ -230,6 +232,7 @@ const CONTROL_COMMANDS = [ export const LIVE_COMMANDS = [ ...BROWSER_NOTIFICATION_COMMANDS, + ...HOST_LOOK_COMMANDS, ...DEVICE_NOTIFICATION_COMMANDS, ...WINDOW_ZOOM_COMMANDS, ...PHONE_ROUTE_COMMANDS, @@ -429,6 +432,7 @@ interface LiveValues 'client-id'?: string; 'device-file'?: string; 'remote-host-id'?: string; + 'host-id'?: string; 'preferences-stdin'?: boolean; host?: string; 'token-file'?: string; @@ -746,6 +750,8 @@ export async function runLiveCli( values: LiveValues, io: BotCreateCliIo, ): Promise { + if (command === 'host-look') + return runHostLook(rest, values, io, () => connectLiveHost(values, io, AbortSignal.timeout(timeoutMs(values.timeout)))); if (command === 'device-notifications') return runDeviceNotifications(rest, values, io); if (command === 'phone-notifications') return runPhoneNotifications(rest, values, io); if (BROWSER_NOTIFICATION_COMMANDS.some((entry) => entry.command === command)) diff --git a/packages/core/test/cli-host-look.test.ts b/packages/core/test/cli-host-look.test.ts new file mode 100644 index 0000000000..a335c3931f --- /dev/null +++ b/packages/core/test/cli-host-look.test.ts @@ -0,0 +1,25 @@ +import { expect, it, vi } from 'vitest'; +import { runHostLook } from '../src/bots/cli-host-look.js'; + +it('targets exactly the selected Client and Host through the existing relay', async () => { + const http = vi.fn(async () => ({ bytes: new TextEncoder().encode('{"hostId":"b","revision":"rev"}') })); + const connect = async () => ({ http }); + const target = { 'client-id': 'browser-a', 'host-id': 'b' }; + expect(await runHostLook([], target, {}, connect)).toEqual({ hostId: 'b', revision: 'rev' }); + expect(http).toHaveBeenLastCalledWith('/api/botharness/appearance-control', { + action: 'request', clientId: 'browser-a', hostLook: { hostId: 'b' }, + }); + const patch = { name: 'Studio', icon: { kind: 'symbol', id: 'server' }, color: 'orange' }; + await runHostLook([], { ...target, 'patch-stdin': true, 'expected-revision': 'rev' }, { readStdin: async () => JSON.stringify(patch) }, connect); + expect(http).toHaveBeenLastCalledWith('/api/botharness/appearance-control', { + action: 'request', clientId: 'browser-a', hostLook: { hostId: 'b', patch }, expectedRevision: 'rev', + }); +}); + +it('refuses missing targets, unguarded writes and malformed stdin before connecting', async () => { + const connect = vi.fn(); + for (const values of [{}, { 'client-id': 'a' }, { 'host-id': 'b' }, { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true }]) + await expect(runHostLook([], values, {}, connect)).rejects.toMatchObject({ code: 'usage' }); + await expect(runHostLook([], { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true, 'expected-revision': 'rev' }, { readStdin: async () => '{bad' }, connect)).rejects.toMatchObject({ code: 'invalid-input' }); + expect(connect).not.toHaveBeenCalled(); +}); diff --git a/scripts/cli-ui-inventory.json b/scripts/cli-ui-inventory.json index 50ad945824..f68eaa7305 100644 --- a/scripts/cli-ui-inventory.json +++ b/scripts/cli-ui-inventory.json @@ -447,10 +447,9 @@ "storage:packages/client/src/client/remote-hosts.ts:setItem(REMOTE_HOSTS_STORAGE_KEY)", "storage:packages/client/src/client/remote-hosts.ts:setItem(HOST_TAB_STORAGE_KEY)", "storage:packages/client/src/client/remote-hosts.ts:removeItem(oldKey)", - "storage:packages/client/src/client/remote-hosts.ts:setItem(key)", - "storage:packages/client/src/client/host-looks.ts:setItem(HOST_LOOKS_STORAGE_KEY)" + "storage:packages/client/src/client/remote-hosts.ts:setItem(key)" ], - "exemption": "Per-browser connections, legacy-key migration, the tab filter and Host looks belong to that browser profile, not to any Host (spec #2178, ADR-0243: Host looks are device-local), so no Host CLI can read or set them. Permanent pairing removal also deletes its browser notification choice as automatic cleanup, not a separate setting. Browser notification reads and writes use the separately inventoried Client relay commands. The Remote Host's side is its existing device gateway: pair, unary calls, stream ticket and revoke.", + "exemption": "Per-browser connections, legacy-key migration, and the tab filter belong to that browser profile, not to any Host (spec #2178, ADR-0243: Host looks are device-local), so no Host CLI can read or set them. Permanent pairing removal also deletes its browser notification choice as automatic cleanup, not a separate setting. Browser notifications and Host looks use separately inventoried Client relay commands. The Remote Host's side is its existing device gateway: pair, unary calls, stream ticket and revoke.", "configurable": false }, { @@ -833,6 +832,18 @@ "appearance-clear-panels", "appearance-reset" ] + }, + { + "id": "device-local-host-look", + "description": "Browser-owned Host name, icon and colour; the existing appearance relay forwards to the shared HostLooks owner without a Host mirror.", + "scope": "Client / Host", + "surfaces": [ + "storage:packages/client/src/client/host-looks.ts:setItem(HOST_LOOKS_STORAGE_KEY)" + ], + "commands": [ + "appearance-clients", + "host-look" + ] } ] } From c58144a1474a6e4c1d1bfa343a712d668f9fa8fb Mon Sep 17 00:00:00 2001 From: DoodleBears Date: Thu, 22 Oct 2026 12:47:39 +0900 Subject: [PATCH 2/6] fix(client): serialize Host look writes and enforce request expiry Address R1 Spec storage concurrency, failed hydration and CLI expiry findings. Keep early disconnect outcomes unknown and require explicit readback. Rename HostSettings and share strict HostLook membership guards. Issue: #2500 Agent-Task: codex/local/01a16195-979b-7853-abdb-4acbf963c95c --- .../features/remote-hosts.md | 4 + apps/mobile/src/host/host-look.ts | 164 ++++++++++++++---- apps/mobile/test/native-persistence.test.ts | 22 +++ docs/architecture/botharness-architecture.md | 2 +- docs/bot-cli.md | 6 +- docs/bot-cli.zh.md | 8 +- .../client/src/client/appearance-control.ts | 2 +- .../client/src/client/host-look-control.ts | 78 ++++----- .../client/src/client/host-look-settings.tsx | 48 +++-- packages/client/src/client/host-looks.ts | 50 +++++- ...te-host-settings.tsx => host-settings.tsx} | 2 +- packages/client/src/client/host-tabs.tsx | 10 +- packages/client/src/client/locale.ts | 12 +- .../client/test/host-look-control.test.ts | 94 +++++++--- packages/client/test/host-look-owner.test.ts | 33 ++++ .../test/host-look-r1-regression.test.ts | 50 ++++++ packages/client/test/host-look-relay.test.ts | 45 ++++- packages/client/test/host-looks.test.ts | 111 ++++++++++-- packages/core/src/appearance/control.ts | 10 +- packages/core/src/bots/cli-host-look.ts | 40 ++++- packages/core/src/bots/cli-live.ts | 10 +- packages/core/test/cli-host-look.test.ts | 36 +++- scripts/cli-ui-inventory.json | 2 +- 23 files changed, 659 insertions(+), 180 deletions(-) rename packages/client/src/client/{remote-host-settings.tsx => host-settings.tsx} (99%) create mode 100644 packages/client/test/host-look-owner.test.ts create mode 100644 packages/client/test/host-look-r1-regression.test.ts diff --git a/.agents/skills/verify-deepseekbot/features/remote-hosts.md b/.agents/skills/verify-deepseekbot/features/remote-hosts.md index 515d547ffb..c26bcb78ab 100644 --- a/.agents/skills/verify-deepseekbot/features/remote-hosts.md +++ b/.agents/skills/verify-deepseekbot/features/remote-hosts.md @@ -78,3 +78,7 @@ Storage-refusal regression: selectively reject deletion of the notification key Unified Host settings regression: use two isolated Hosts with distinct home basenames. In both themes and locales, capture the old separate notification/icon/settings entry points as Before and the unified dialog as After, including a narrow viewport. Verify all five sections, Host identity in the sidebar, and notification help only inside the notification content. Rename, choose a symbol/emoji and colour, close and reload; compare the visible Host labels with `botharness.hostLooks.v1` and `host-look` from the explicitly selected `appearance-clients` target. Confirm pairing metadata and both operating-system hostnames are unchanged. Interleave a UI edit with a stale CLI revision and verify refusal. Inject browser storage refusal and verify a visible save error plus `host-look-storage-failed`, with no unsaved in-memory value. Delay Client delivery beyond the relay deadline, dispose the Client and remove the source: no late look write or acknowledgement may occur. Stop only Host B: Appearance and notification-kind choices remain usable, while Models/Usage/Storage show the source unavailable. Enabling notifications still requires the existing complete source baseline and may refuse offline. While activation waits, leave Notifications for Appearance and separately close the dialog; late results must not enable notifications. Repeat F01 Remove/re-pair and T7 viewer release regression as prerequisites allow. Existing T8 model revision, usage and destructive storage confirmations remain intact; no model request is needed for this settings UI journey. Record missing Docker/native/tailnet prerequisites explicitly. + +Host look concurrency and recovery: open two actual same-origin tabs, select each appearance Client ID explicitly, and use the same paired Hosts. Read B's revision, save a name from A, then submit B's old revision and require `host-look-revision-stale`. Concurrent edits of different fields and different Hosts must preserve both; record actual Web Lock names and storage values. A mocked lock manager or one-instance Promise queue is not cross-tab runtime evidence. Deny reads after a known look is loaded and on initial hydration: CLI reads/writes must return `host-look-storage-read-failed`, preserve known state and leave storage untouched. Restore access, explicitly refresh in UI/CLI, then save successfully. Missing Web Locks must return `host-look-lock-unavailable` without fallback. Keep native synchronous owner/migration regressions in the focused test set. + +Host look expiry: cover a CLI timeout shorter than eight seconds, delayed hydration, waiting for another tab's lock, late command delivery, and wall time past the deadline while timeout callbacks have not run. Observe storage before and after release; overdue writes must not begin. Also prove a write inside the deadline succeeds. Early CLI kill or HTTP disconnect before expiry is **unknown outcome**, not a cancellation pass: read back the same Client/Host. Do not extend this Host-look deadline contract to the unchanged notification relay. diff --git a/apps/mobile/src/host/host-look.ts b/apps/mobile/src/host/host-look.ts index 43eb6ffdc9..488a2e43c0 100644 --- a/apps/mobile/src/host/host-look.ts +++ b/apps/mobile/src/host/host-look.ts @@ -13,12 +13,18 @@ import { export interface LookStorage { read(): Promise; - write(value: Record): void; + write(value: Record, check?: () => void): void; forgetLegacyImages?(): void; + transaction?(work: () => Promise): Promise; + listen?(changed: () => void): () => void; } export interface HostLooks { readonly ready: Promise; + error(): string | undefined; + refresh(check?: () => void): Promise; + read(hostId: string, check?: () => void): Promise; + update(hostId: string, change: (current: HostLook) => HostLook, check?: () => void): Promise; look(hostId: string): HostLook; set(hostId: string, look: HostLook): void; subscribe(listener: () => void): () => void; @@ -31,24 +37,23 @@ function record(value: unknown): Record { const text = (value: unknown): string | undefined => typeof value === 'string' && value !== '' ? value : undefined; -export function parseHostIcon(input: unknown): HostIcon { +export function isHostIcon(input: unknown): input is HostIcon { const value = record(input); - const id = text(value['id']); - const emoji = text(value['emoji']); - if (value['kind'] === 'symbol' && id !== undefined && Object.hasOwn(HOST_SYMBOLS, id)) - return { kind: 'symbol', id: id as keyof typeof HOST_SYMBOLS }; - if ( - value['kind'] === 'emoji' && - emoji !== undefined && - (HOST_EMOJI as readonly string[]).includes(emoji) - ) - return { kind: 'emoji', emoji }; - return DEFAULT_HOST_LOOK.icon; + return (value['kind'] === 'symbol' && typeof value['id'] === 'string' && Object.hasOwn(HOST_SYMBOLS, value['id'])) || + (value['kind'] === 'emoji' && typeof value['emoji'] === 'string' && (HOST_EMOJI as readonly string[]).includes(value['emoji'])); +} + +export function isHostColor(input: unknown): input is HostColorId { + return typeof input === 'string' && Object.hasOwn(HOST_COLORS, input); +} + +export function parseHostIcon(input: unknown): HostIcon { + if (!isHostIcon(input)) return DEFAULT_HOST_LOOK.icon; + return input.kind === 'symbol' ? { kind: 'symbol', id: input.id } : { kind: 'emoji', emoji: input.emoji }; } export function parseHostColor(input: unknown): HostColorId | undefined { - const id = text(input); - return id !== undefined && Object.hasOwn(HOST_COLORS, id) ? (id as HostColorId) : undefined; + return isHostColor(input) ? input : undefined; } function legacyColor(input: unknown): HostColorId | undefined { @@ -71,38 +76,131 @@ export function parseHostLook(input: unknown): HostLook { export function createHostLooks(storage: LookStorage): HostLooks { const byHost = new Map(); const listeners = new Set<() => void>(); + let failure: string | undefined; + let unlisten: (() => void) | undefined; + let touched = false; const notify = (): void => { for (const listener of listeners) listener(); }; - let touched = false; - const ready = storage.read().then( - (value) => { - if (touched) return; - const stored = Object.entries(record(value)); - for (const [hostId, look] of stored) byHost.set(hostId, parseHostLook(look)); - if (stored.some(([, look]) => isLegacyHostLook(look))) { - try { - storage.write(Object.fromEntries(byHost)); + const fail = (code: string): never => { + failure = code; + notify(); + throw new Error(code); + }; + const publish = (value: Record) => { + for (const id of byHost.keys()) if (!(id in value)) byHost.delete(id); + for (const [id, look] of Object.entries(value)) + if (JSON.stringify(byHost.get(id)) !== JSON.stringify(look)) byHost.set(id, look); + failure = undefined; + notify(); + }; + const load = async (): Promise> => { + let raw: unknown; + try { + raw = await storage.read(); + } catch { + return fail('host-look-storage-read-failed'); + } + return Object.fromEntries(Object.entries(record(raw)).map(([id, look]) => [id, parseHostLook(look)])); + }; + const transaction = async (work: () => Promise) => { + if (storage.transaction === undefined) return work(); + try { + await storage.transaction(work); + } catch (error) { + if (error instanceof Error && error.message === 'host-look-lock-unavailable') + return fail(error.message); + throw error; + } + }; + const persist = (value: Record, check?: () => void) => { + check?.(); + try { + if (check === undefined) storage.write(value); + else storage.write(value, check); + } catch { + check?.(); + return fail('host-look-storage-failed'); + } + }; + const refresh = async (check?: () => void) => transaction(async () => { + check?.(); + const value = await load(); + check?.(); + publish(value); + }); + const ready = (storage.transaction === undefined + ? storage.read().then((raw) => { + if (touched) return; + const stored = Object.entries(record(raw)); + const value = Object.fromEntries(stored.map(([id, look]) => [id, parseHostLook(look)])); + if (stored.some(([, look]) => isLegacyHostLook(look))) { + persist(value); storage.forgetLegacyImages?.(); - } catch {} - } - notify(); - }, - () => undefined, - ); + } + publish(value); + }, () => fail('host-look-storage-read-failed')) + : refresh()).catch(() => undefined); + const available = async () => { + await ready; + if (failure !== undefined) throw new Error(failure); + }; + const current = (hostId: string) => byHost.get(hostId) ?? DEFAULT_HOST_LOOK; return { ready, - look: (hostId) => byHost.get(hostId) ?? DEFAULT_HOST_LOOK, + error: () => failure, + refresh, + look: current, + async read(hostId, check) { + await available(); + let result = current(hostId); + await transaction(async () => { + if (failure !== undefined) throw new Error(failure); + check?.(); + const value = await load(); + check?.(); + publish(value); + result = current(hostId); + }); + return result; + }, + async update(hostId, change, check) { + await available(); + let result = current(hostId); + await transaction(async () => { + if (failure !== undefined) throw new Error(failure); + check?.(); + const value = await load(); + check?.(); + result = parseHostLook(change(value[hostId] ?? DEFAULT_HOST_LOOK)); + check?.(); + persist({ ...value, [hostId]: result }, check); + publish({ ...value, [hostId]: result }); + }); + return result; + }, set(hostId, look) { + if (storage.transaction !== undefined) throw new Error('host-look-transaction-required'); + if (failure !== undefined) return; const next = parseHostLook(look); - storage.write({ ...Object.fromEntries(byHost), [hostId]: next }); + persist({ ...Object.fromEntries(byHost), [hostId]: next }); touched = true; byHost.set(hostId, next); notify(); }, subscribe(listener) { listeners.add(listener); - return () => listeners.delete(listener); + if (listeners.size === 1) + unlisten = storage.listen?.(() => { + if (failure === undefined) void refresh().catch(() => undefined); + }); + return () => { + listeners.delete(listener); + if (listeners.size === 0) { + unlisten?.(); + unlisten = undefined; + } + }; }, }; } diff --git a/apps/mobile/test/native-persistence.test.ts b/apps/mobile/test/native-persistence.test.ts index 54d09e953e..0aaa0e1651 100644 --- a/apps/mobile/test/native-persistence.test.ts +++ b/apps/mobile/test/native-persistence.test.ts @@ -140,3 +140,25 @@ describe('native persistence across SDK upgrades', () => { expect(restarted.dmActivityPreferences.hidden('a', 'ada')).toEqual(['posts']); }); }); + +it('blocks native Host look writes after a failed read and recovers explicitly without changing the setter contract', async () => { + const path = 'documents/deepseekbot-host-looks.json'; + disk.files.set(path, '{invalid'); + const { hostLooks } = await import('../src/host/native-host-look'); + await expect(hostLooks.ready).resolves.toBeUndefined(); + expect(hostLooks.error()).toBe('host-look-storage-read-failed'); + expect(() => hostLooks.set('b', { ...hostLooks.look('b'), name: 'Unsafe' })).not.toThrow(); + expect(disk.files.get(path)).toBe('{invalid'); + await expect(hostLooks.read('b')).rejects.toThrow('host-look-storage-read-failed'); + disk.files.set(path, JSON.stringify({ a: { name: 'Preserved' } })); + await hostLooks.refresh(); + expect(hostLooks.set('b', { ...hostLooks.look('b'), name: 'Recovered' })).toBeUndefined(); + expect(snapshot(path).a.name).toBe('Preserved'); + expect(snapshot(path).b.name).toBe('Recovered'); + const known = hostLooks.look('b'); + disk.files.set(path, '{broken again'); + await expect(hostLooks.refresh()).rejects.toThrow('host-look-storage-read-failed'); + expect(hostLooks.look('b')).toBe(known); + hostLooks.set('b', { ...known, name: 'Unsafe again' }); + expect(disk.files.get(path)).toBe('{broken again'); +}); diff --git a/docs/architecture/botharness-architecture.md b/docs/architecture/botharness-architecture.md index 06b7e56de9..3267422756 100644 --- a/docs/architecture/botharness-architecture.md +++ b/docs/architecture/botharness-architecture.md @@ -1152,7 +1152,7 @@ The phone owns its persisted four-kind Device Notification Preference and copies The application-defined development inspector transport settles this asynchronous phone operation explicitly with a request-scoped result slot and synchronous polling, rather than assuming Hermes awaits a JavaScript Promise for CDP. Startup, polling and result consumption share one 20-second CLI deadline. The unique slot is consumed and its timer cleared on fulfillment or rejection; cancellation sends best-effort cleanup, and a runtime TTL clears abandoned slots after disconnect when its event loop runs. Late completion cannot recreate the slot. Replies pass envelope and phone-owner schema checks before success. This temporary process state stores no credential and is not a preference authority. Transport expiry cannot roll back an owner write already started: its outcome remains unknown until readback. The existing UAT fixture driver retains its exact device and trusted-fixture restrictions and raw inspector interface. -Remote Host settings resolve the selected Host's existing client from `RemoteHosts`. The browser reuses `apps/mobile/src/host/model-settings`, `usage` and `storage` for default models, presets, usage/Memory activity and cleanup; the existing Web settings, model picker, charts and destructive confirmation controls present those operations. Host-owned settings unmount their content when the source disconnects; removing the source closes the settings surface. Model resources are keyed by client and scope; there is no This Host fallback, Bot-profile link or automatic write replay. Cleanup retains the owning Host's preview token, scope and explicit confirmation. Host looks remain device-local and independent of these Host-owned settings. The Host Settings dialog presents Appearance, Notifications, Models, Usage and Storage under one Host icon and display name. Appearance reuses the phone's application-defined `HostLooks` owner and normalization rules through the existing browser storage adapter; it never rewrites pairing metadata or the remote system hostname. Local appearance and notification sections remain reachable offline. Leaving Notifications releases its pending activation through the existing cancellation owner. The existing authenticated Client appearance relay accepts `hostLook` for CLI parity: explicit Client/Host selection, observed content revision, absolute deadline and cancellation checks before persistence. A rejected browser write does not publish an unsaved look. The relay stores no preference copy and introduces no remote Host API. +Remote Host settings resolve the selected Host's existing client from `RemoteHosts`. The browser reuses `apps/mobile/src/host/model-settings`, `usage` and `storage` for default models, presets, usage/Memory activity and cleanup; the existing Web settings, model picker, charts and destructive confirmation controls present those operations. Host-owned settings unmount their content when the source disconnects; removing the source closes the settings surface. Model resources are keyed by client and scope; there is no This Host fallback, Bot-profile link or automatic write replay. Cleanup retains the owning Host's preview token, scope and explicit confirmation. Host looks remain device-local and independent of these Host-owned settings. The Host Settings dialog presents Appearance, Notifications, Models, Usage and Storage under one Host icon and display name. Appearance reuses the phone's application-defined `HostLooks` owner and normalization rules through the existing browser storage adapter; it never rewrites pairing metadata or the remote system hostname. Local appearance and notification sections remain reachable offline. Leaving Notifications releases its pending activation through the existing cancellation owner. The existing authenticated Client appearance relay accepts `hostLook` for CLI parity: explicit Client/Host selection, observed content revision and an absolute CLI deadline capped by the Host at eight seconds. The browser adapter acquires the same-origin exclusive Web Lock named by its existing storage key; the shared owner rereads persistence, checks the selected Host revision and applies only that Host’s field transformation under the lock. Missing Web Locks refuses access without an unsafe fallback. Read failure retains known display state but blocks control reads and writes until explicit refresh; rejected writes do not publish an unsaved look. Deadline, Client release and source removal are rechecked after hydration and lock acquisition and immediately before setItem. Early CLI termination or HTTP loss is an unknown write outcome requiring readback, not proof of cancellation. The native synchronous setter and legacy migration remain available through the shared owner; no mobile UI, native persistence adapter or dependency changes are introduced. The relay stores no preference copy and introduces no remote Host API. ### Version-bound Memory image previews (#2214, first Web slice) diff --git a/docs/bot-cli.md b/docs/bot-cli.md index 32d4ae8d37..cd063cee41 100644 --- a/docs/bot-cli.md +++ b/docs/bot-cli.md @@ -72,7 +72,11 @@ The browser's Remote Host icon menu → **Host settings** uses the same Host own `appearance-clients` lists the open browser Clients. `host-look --client-id --host-id ` reads that browser's name, icon, colour and content revision. Add `--patch-stdin --expected-revision ` to write a JSON patch such as `{"name":"Studio","icon":{"kind":"symbol","id":"server"},"color":"teal"}`. An empty name restores the Host's original display name; `color: null` clears the colour. Names are trimmed and limited to 40 characters, matching the phone's shared HostLook rules. Use a paired Remote Host ID or the serving Host's ID; no remote credential is accepted or returned. -This command uses the existing authenticated `appearance-control` relay to reach the same Client-local `HostLooks` owner as the UI. It does not rename the operating-system hostname or sync choices to another device. The browser must be open; select it explicitly. Unknown Host, stale revision, cancelled Client and expired request produce coded refusals. Writes recheck the absolute relay deadline and cancellation before persistence; `host-look-storage-failed` means the browser refused the local write, and the current in-memory look remains unchanged. `browser-notifications` continues to own the Notifications section, including permission, activation baseline and cancellation. +This command uses the existing authenticated `appearance-control` relay to reach the same Client-local `HostLooks` owner as the UI. It does not rename the operating-system hostname or sync choices to another device. The browser must be open; select it explicitly. All cooperating same-origin tabs use the exclusive Web Lock `botharness.hostLooks.v1`. Inside that lock the owner rereads storage, compares the selected Host's content revision and merges only that Host; UI edits transform the current field values inside the same lock. A stale revision returns `host-look-revision-stale`. Browsers without usable Web Locks return `host-look-lock-unavailable`; there is no unsafe read/modify/write fallback. + +`host-look-storage-read-failed` keeps the last known display state and blocks reads and writes instead of reporting defaults as loaded. Repair browser storage access, then use `host-look --client-id --host-id --refresh` (or Refresh appearance in settings) to recover explicitly. Refresh never writes. A read failure inside a write transaction also prevents persistence. `host-look-storage-failed` means the browser rejected the write; it does not publish an unsaved look. After resolving the storage problem, refresh before sending a new write. + +The CLI sets an absolute expiry before stdin and connection setup. The Host caps it at eight seconds from relay admission. The Client rechecks wall time after hydration, after acquiring the lock and immediately before `localStorage.setItem`; an overdue command cannot begin a write even if a timeout callback has not run. Client release and Host removal are also rechecked before writing. This is not a remote cancellation acknowledgement: killing the CLI or disconnecting HTTP before expiry can leave a delivered command running until that deadline. A lost write reply or relay timeout returns `host-look-outcome-unknown` where the CLI can still report it; read the same Client/Host before retrying. A write completed before expiry may have succeeded even when its reply was lost. `browser-notifications` continues to own the Notifications section, including permission, activation baseline and cancellation. Set `DEEPSEEKBOT_HOST` to the running Host's loopback origin, or a tailnet HTTPS origin. A tailnet origin (for example `tailscale serve` in front of a loopback Host) works only when the Host was started with `--trusted-host ..ts.net`; otherwise login succeeds but DSH's `/api` Host fence refuses every request and the CLI returns `host-untrusted`. Supply its current launch token through `DEEPSEEKBOT_HOST_TOKEN` or `--token-file `, never a token argument. `--host ` overrides the environment. Login happens per invocation, cookies remain in memory, and restarting the Host requires its new token. Live commands never open the profile database. See [ADR-0159](adr/0159-live-cli-verbs-ride-the-dsh-http-carrier.md). diff --git a/docs/bot-cli.zh.md b/docs/bot-cli.zh.md index 5e7831ffda..9220600754 100644 --- a/docs/bot-cli.zh.md +++ b/docs/bot-cli.zh.md @@ -70,10 +70,14 @@ deepseekbot search `appearance-clients` 列出打开的浏览器 Client。`host-look --client-id --host-id ` 读取该浏览器内的 Host 名称、图标、颜色和内容修订。写入时加 `--patch-stdin --expected-revision `,从 stdin 传入 JSON,例如 `{"name":"Studio","icon":{"kind":"symbol","id":"server"},"color":"teal"}`。空名称恢复 Host 原始显示名;`color: null` 清除颜色。名称去除首尾空格并限制为 40 字符,与手机共享 HostLook 规则。Host ID 可为已配对的远程 Host 或本机 Host;命令不接收或返回远程凭据。 -命令复用已认证的 `appearance-control` relay,直达 UI 使用的同一 Client 本地 `HostLooks`,不修改操作系统 hostname,也不同步到其他设备。浏览器须保持打开并显式选择 Client。未知 Host、修订过期、Client 取消和请求超时均返回编码拒绝;落盘前重新检查绝对期限和取消状态。`host-look-storage-failed` 表示浏览器拒绝本地写入,内存中的外观保持原值。Host 设置统一包含外观、通知、模型、用量和存储;离线时仍可进入外观和通知。通知继续使用 `browser-notifications`,保留权限、激活基线和取消语义。 +命令复用已认证的 `appearance-control` relay,直达 UI 使用的同一 Client 本地 `HostLooks`,不修改操作系统 hostname,也不同步到其他设备。浏览器须保持打开并显式选择 Client。同源标签页共同使用名为 `botharness.hostLooks.v1` 的独占 Web Lock;owner 在锁内重读持久数据、比较目标 Host 的内容 revision,再只合并该 Host。UI 字段变换也在锁内应用于当前值,不携带旧整份外观覆盖其他字段。旧 revision 返回 `host-look-revision-stale`;Web Locks 不可用时返回 `host-look-lock-unavailable`,不降级为不安全的读改写。 +`host-look-storage-read-failed` 会保留内存中已知的显示状态,但阻止读取和写入,不把默认值当成成功加载。修复浏览器存储访问后,执行 `host-look --client-id --host-id --refresh`,或在设置中选择「刷新外观」,显式恢复;刷新本身不写入。事务锁内重读失败同样阻止落盘。`host-look-storage-failed` 表示浏览器拒绝写入,不发布未保存的外观;解决存储问题并刷新后才能重新提交。 -浏览器远程图标菜单中的「远程设置」与以下在线命令使用同一个 Host 所有者。通过 `--host ` 和私有的 `--token-file `(或已有环境变量)指定来源 Host,不要默认指向提供当前网页的本机。模型使用 `model-catalog`、`home-model-set`、`model-presets`、`model-preset-create` 和 `model-preset-update`;用量与 Memory 活动使用 `overview-usage`、`overview-memory`;存储使用 `storage-usage` 及两组清理预览/确认命令。删除仍须传入 `--confirmation-stdin --confirm`,且预览必须来自同一 Host。连接失败或被拒绝时,不会改用本地 Profile。这些命令不读取浏览器的配对密钥,也不修改本设备保存的 Host 外观。 +CLI 在读取 stdin 和连接前记录绝对期限;Host 将期限限制为 relay 接收后最多八秒。Client 在加载后、获得锁后和实际 `localStorage.setItem` 前复核墙上时间,即使定时回调尚未运行,越期命令也不能开始写入。Client 释放与 Host 移除也在写入前复核。这不代表远端取消已确认:期限前杀掉 CLI 或断开 HTTP,已送达命令仍可能在期限内执行。写入回执丢失或 relay 超时,在 CLI 仍能输出时报告 `host-look-outcome-unknown`;重试前须读回相同 Client/Host。期限内已完成的写入可能成功而回执丢失。Host 设置统一包含外观、通知、模型、用量和存储;离线时仍可进入外观和通知。通知继续使用 `browser-notifications`,保留权限、激活基线和取消语义。 + + +浏览器远程图标菜单中的「Host 设置」与以下在线命令使用同一个 Host 所有者。通过 `--host ` 和私有的 `--token-file `(或已有环境变量)指定来源 Host,不要默认指向提供当前网页的本机。模型使用 `model-catalog`、`home-model-set`、`model-presets`、`model-preset-create` 和 `model-preset-update`;用量与 Memory 活动使用 `overview-usage`、`overview-memory`;存储使用 `storage-usage` 及两组清理预览/确认命令。删除仍须传入 `--confirmation-stdin --confirm`,且预览必须来自同一 Host。连接失败或被拒绝时,不会改用本地 Profile。这些命令不读取浏览器的配对密钥,也不修改本设备保存的 Host 外观。 将 `DEEPSEEKBOT_HOST` 设为运行中 Host 的 loopback origin 或 tailnet HTTPS origin。使用 tailnet origin(例如 loopback Host 前面的 `tailscale serve`)时,Host 必须以 `--trusted-host ..ts.net` 启动;否则登录能成功,但 DSH 的 `/api` Host 校验会拒绝每个请求,CLI 返回 `host-untrusted`。`--host ` 可覆盖它。当前启动令牌通过 `DEEPSEEKBOT_HOST_TOKEN` 或 `--token-file <私有文件>` 提供,不得把令牌值放入参数。每次调用重新登录,cookie 只留在内存;Host 重启后须使用新令牌。在线命令不打开 Profile 数据库。参见 [ADR-0159](adr/0159-live-cli-verbs-ride-the-dsh-http-carrier.md)。 diff --git a/packages/client/src/client/appearance-control.ts b/packages/client/src/client/appearance-control.ts index cfb2c2a5fb..4d8087a1eb 100644 --- a/packages/client/src/client/appearance-control.ts +++ b/packages/client/src/client/appearance-control.ts @@ -45,7 +45,7 @@ export function mountAppearanceControl(owner: Appearance, wallpaper?: Wallpaper) if (command.hostLook !== undefined) { const looks = hostLooks(); await looks.ready; - result = controlHostLook(looks, command.hostLook, command.expectedRevision, { + result = await controlHostLook(looks, command.hostLook, command.expectedRevision, { expiresAt: command.expiresAt, signal: abort.signal, }, (hostId) => hostId === getThisHost().id || remoteHosts().getSnapshot().hosts.some((entry) => entry.host.hostId === hostId)); diff --git a/packages/client/src/client/host-look-control.ts b/packages/client/src/client/host-look-control.ts index 5e7dac6ee4..b363f78ddd 100644 --- a/packages/client/src/client/host-look-control.ts +++ b/packages/client/src/client/host-look-control.ts @@ -1,71 +1,65 @@ -import type { HostLooks } from '../../../../apps/mobile/src/host/host-look.js'; +import { isHostColor, isHostIcon, type HostLooks } from '../../../../apps/mobile/src/host/host-look.js'; import { - HOST_COLORS, - HOST_EMOJI, - HOST_SYMBOLS, withHostColor, withHostIcon, withHostName, - type HostColorId, - type HostSymbolId, + type HostLook, } from '../../../../apps/mobile/src/ui/design/host-look.js'; import { AppearanceError, object } from './appearance.js'; -export function controlHostLook( +export async function controlHostLook( looks: HostLooks, input: unknown, expectedRevision: unknown, request: { expiresAt: number; signal: AbortSignal }, available: (hostId: string) => boolean, ) { + const value = object(input); + const hostId = value.hostId; const check = () => { if (request.signal.aborted) throw new AppearanceError('host-look-cancelled'); if (!Number.isFinite(request.expiresAt) || Date.now() >= request.expiresAt) throw new AppearanceError('appearance-request-stale'); + if (typeof hostId !== 'string' || !available(hostId)) + throw new AppearanceError('host-look-host-unknown'); }; check(); - const value = object(input); - const hostId = value.hostId; - if (typeof hostId !== 'string' || !available(hostId)) - throw new AppearanceError('host-look-host-unknown'); - const current = looks.look(hostId); + if (typeof hostId !== 'string') throw new AppearanceError('host-look-host-unknown'); + if (value.refresh !== undefined && (value.refresh !== true || value.patch !== undefined)) + throw new AppearanceError('host-look-invalid-input'); + let transform: ((current: HostLook) => HostLook) | undefined; if (value.patch !== undefined) { if (typeof expectedRevision !== 'string') throw new AppearanceError('host-look-revision-required'); - if (expectedRevision !== JSON.stringify(current)) - throw new AppearanceError('host-look-revision-stale'); const patch = object(value.patch); const keys = Object.keys(patch); if (keys.length === 0 || keys.some((key) => !['name', 'icon', 'color'].includes(key))) throw new AppearanceError('host-look-invalid-input'); - let next = current; - if ('name' in patch) { - if (typeof patch.name !== 'string') throw new AppearanceError('host-look-invalid-input'); - next = withHostName(next, patch.name); - } - if ('icon' in patch) { - const icon = object(patch.icon); - if (icon.kind === 'symbol' && typeof icon.id === 'string' && Object.hasOwn(HOST_SYMBOLS, icon.id)) - next = withHostIcon(next, { kind: 'symbol', id: icon.id as HostSymbolId }); - else if (icon.kind === 'emoji' && typeof icon.emoji === 'string' && (HOST_EMOJI as readonly string[]).includes(icon.emoji)) - next = withHostIcon(next, { kind: 'emoji', emoji: icon.emoji }); - else throw new AppearanceError('host-look-invalid-input'); - } - if ('color' in patch) { - if (patch.color !== null && (typeof patch.color !== 'string' || !Object.hasOwn(HOST_COLORS, patch.color))) - throw new AppearanceError('host-look-invalid-input'); - next = withHostColor(next, patch.color === null ? undefined : patch.color as HostColorId); - } + if (('name' in patch && typeof patch.name !== 'string') || + ('icon' in patch && !isHostIcon(patch.icon)) || + ('color' in patch && patch.color !== null && !isHostColor(patch.color))) + throw new AppearanceError('host-look-invalid-input'); + transform = (current) => { + if (expectedRevision !== JSON.stringify(current)) + throw new AppearanceError('host-look-revision-stale'); + let next = current; + if (typeof patch.name === 'string') next = withHostName(next, patch.name); + if (isHostIcon(patch.icon)) next = withHostIcon(next, patch.icon); + if (patch.color === null || isHostColor(patch.color)) + next = withHostColor(next, patch.color === null ? undefined : patch.color); + return next; + }; + } + try { + await looks.ready; check(); - if (!available(hostId)) throw new AppearanceError('host-look-host-unknown'); - if (expectedRevision !== JSON.stringify(looks.look(hostId))) - throw new AppearanceError('host-look-revision-stale'); - try { - looks.set(hostId, next); - } catch { - throw new AppearanceError('host-look-storage-failed'); - } + if (value.refresh === true) await looks.refresh(check); + const look = transform === undefined + ? await looks.read(hostId, check) + : await looks.update(hostId, transform, check); + return { hostId, look, revision: JSON.stringify(look) }; + } catch (error) { + if (error instanceof AppearanceError) throw error; + throw new AppearanceError(error instanceof Error ? error.message : 'host-look-storage-failed'); } - const look = looks.look(hostId); - return { hostId, look, revision: JSON.stringify(look) }; } diff --git a/packages/client/src/client/host-look-settings.tsx b/packages/client/src/client/host-look-settings.tsx index 487e21a09d..675179d0df 100644 --- a/packages/client/src/client/host-look-settings.tsx +++ b/packages/client/src/client/host-look-settings.tsx @@ -1,4 +1,5 @@ import { useState, type ReactElement } from 'react'; +import { Button } from '@deepseek-ai/dsh-client-ui-primitives'; import * as stylex from '@stylexjs/stylex'; import { Note } from './ds/note.js'; import { TextField } from './ds/field.js'; @@ -6,12 +7,12 @@ import { SettingsSection } from './ds/settings-row.js'; import { border, color, radius, size, space, text } from './ds/tokens.stylex.js'; import { ChannelSidebarIcon } from './channel-sidebar-icon.js'; import { HostGlyph } from './host-glyph.js'; -import { hostLooks, useHostLook } from './host-looks.js'; +import { hostLooks, useHostLook, useHostLookError } from './host-looks.js'; import { useBotColorScheme } from './bot-color-scheme.js'; import type { BotHarnessTranslate } from './locale.js'; import { HOST_COLOR_IDS, HOST_COLORS, HOST_EMOJI, HOST_SYMBOL_IDS, HOST_NAME_MAX, - withHostName, withHostIcon, withHostColor, type HostLook, + hostLookName, withHostName, withHostIcon, withHostColor, type HostLook, } from '../../../../apps/mobile/src/ui/design/host-look.js'; const focusRing = { default: 'none', ':focus-visible': `${border.focus} solid ${color.accent}` }; @@ -48,22 +49,22 @@ const styles = stylex.create({ }), }); -function HostNameField({ hostId, name, saved, change, t }: { - hostId: string; name: string; saved: string | undefined; change: (look: HostLook) => boolean; t: BotHarnessTranslate; +function HostNameField({ name, saved, change, t }: { + name: string; saved: string | undefined; change: (transform: (current: HostLook) => HostLook) => Promise; t: BotHarnessTranslate; }) { const [draft, setDraft] = useState(saved ?? ''); - const save = () => { - const current = hostLooks().look(hostId); - const next = withHostName(current, draft); - if (next.name !== current.name && !change(next)) return; - setDraft(next.name ?? ''); + const save = async () => { + if (draft === (saved ?? '')) return; + const name = draft; + if (await change((current) => withHostName(current, name))) + setDraft((current) => current === name ? hostLookName(name) ?? '' : current); }; return { void save(); }} onKeyDown={(event) => { if (event.key !== 'Enter' || event.nativeEvent.isComposing) return; event.preventDefault(); - save(); + void save(); }} />; } @@ -74,9 +75,10 @@ export function HostLookSettings({ hostId, name, t }: { const look = useHostLook(hostId); const icon = look.icon; const [error, setError] = useState(false); - const change = (next: HostLook): boolean => { + const storageError = useHostLookError(); + const change = async (transform: (current: HostLook) => HostLook): Promise => { try { - hostLooks().set(hostId, next); + await hostLooks().update(hostId, transform); setError(false); return true; } catch { @@ -84,10 +86,18 @@ export function HostLookSettings({ hostId, name, t }: { return false; } }; + const refresh = async () => { + try { + await hostLooks().refresh(); + setError(false); + } catch { + setError(true); + } + }; return
- {error ? {t('remoteHosts.look.failed')} : null} - + {error || storageError ?
{t(storageError === 'host-look-lock-unavailable' ? 'remoteHosts.look.unsupported' : 'remoteHosts.look.failed')}
: null} +
{t('remoteHosts.look.symbols')}
change(withHostIcon(look, { kind: 'symbol', id }))} + onClick={() => change((current) => withHostIcon(current, { kind: 'symbol', id }))} > @@ -131,7 +141,7 @@ export function HostLookSettings({ hostId, name, t }: { aria-checked={chosen} aria-label={emoji} {...stylex.props(styles.choice, chosen && styles.chosen)} - onClick={() => change(withHostIcon(look, { kind: 'emoji', emoji }))} + onClick={() => change((current) => withHostIcon(current, { kind: 'emoji', emoji }))} > {emoji} @@ -153,7 +163,7 @@ export function HostLookSettings({ hostId, name, t }: { aria-label={t('remoteHosts.look.noColor')} {...stylex.props(styles.choice, look.color === undefined && styles.chosen)} onClick={() => - change(withHostColor(look, undefined)) + change((current) => withHostColor(current, undefined)) } > @@ -166,7 +176,7 @@ export function HostLookSettings({ hostId, name, t }: { aria-checked={look.color === id} aria-label={t(`remoteHosts.look.color.${id}`)} {...stylex.props(styles.choice, look.color === id && styles.chosen)} - onClick={() => change(withHostColor(look, id))} + onClick={() => change((current) => withHostColor(current, id))} > diff --git a/packages/client/src/client/host-looks.ts b/packages/client/src/client/host-looks.ts index f8e4a51cc8..18a0f627f8 100644 --- a/packages/client/src/client/host-looks.ts +++ b/packages/client/src/client/host-looks.ts @@ -88,16 +88,43 @@ export function unusedHostLook(used: readonly HostLook[]): HostLook { return { icon: { kind: 'symbol', id: symbol }, color }; } -export function browserHostLooks(storage: Storage | undefined): HostLooks { +export function browserHostLooks( + storage: Storage | undefined, + lock: (work: () => Promise) => Promise = async (work) => { + if (globalThis.navigator?.locks === undefined) throw new Error('host-look-lock-unavailable'); + let acquired = false; + try { + await navigator.locks.request(HOST_LOOKS_STORAGE_KEY, { mode: 'exclusive' }, async () => { + acquired = true; + await work(); + }); + } catch (error) { + if (!acquired) throw new Error('host-look-lock-unavailable'); + throw error; + } + }, +): HostLooks { return createHostLooks({ - read: async () => JSON.parse(storage?.getItem(HOST_LOOKS_STORAGE_KEY) ?? '{}') as unknown, - write: (value) => { - try { - if (storage === undefined) throw new Error('storage-unavailable'); - storage.setItem(HOST_LOOKS_STORAGE_KEY, JSON.stringify(value)); - } catch { - throw new Error('host-look-storage-failed'); - } + read: async () => { + if (storage === undefined) throw new Error('storage-unavailable'); + const value: unknown = JSON.parse(storage.getItem(HOST_LOOKS_STORAGE_KEY) ?? '{}'); + if (typeof value !== 'object' || value === null || Array.isArray(value)) throw new Error('storage-invalid'); + return value; + }, + write: (value, check) => { + if (storage === undefined) throw new Error('storage-unavailable'); + const encoded = JSON.stringify(value); + check?.(); + storage.setItem(HOST_LOOKS_STORAGE_KEY, encoded); + }, + transaction: lock, + listen: (changed) => { + if (typeof window === 'undefined') return () => {}; + const listener = (event: StorageEvent) => { + if (event.storageArea === storage && (event.key === HOST_LOOKS_STORAGE_KEY || event.key === null)) changed(); + }; + window.addEventListener('storage', listener); + return () => window.removeEventListener('storage', listener); }, }); } @@ -137,3 +164,8 @@ export function useHostInk(color: HostColorId | undefined): string | undefined { export function useHostName(hostId: string | undefined, name: string): string { return shownHostName(useHostLook(hostId), name); } + +export function useHostLookError(): string | undefined { + const looks = hostLooks(); + return useSyncExternalStore(looks.subscribe, looks.error, looks.error); +} diff --git a/packages/client/src/client/remote-host-settings.tsx b/packages/client/src/client/host-settings.tsx similarity index 99% rename from packages/client/src/client/remote-host-settings.tsx rename to packages/client/src/client/host-settings.tsx index 3965b3f31f..075c8ca253 100644 --- a/packages/client/src/client/remote-host-settings.tsx +++ b/packages/client/src/client/host-settings.tsx @@ -25,7 +25,7 @@ const styles = stylex.create({ kind: { color: color.muted, fontSize: text.metaSize, lineHeight: text.metaLine }, }); -export function RemoteHostSettings({ +export function HostSettings({ hostId, name, local = false, diff --git a/packages/client/src/client/host-tabs.tsx b/packages/client/src/client/host-tabs.tsx index ef8ba898f6..d9a824b299 100644 --- a/packages/client/src/client/host-tabs.tsx +++ b/packages/client/src/client/host-tabs.tsx @@ -4,7 +4,7 @@ import * as stylex from '@stylexjs/stylex'; import type { RemoteHost, RemoteConversationTarget } from './remote-hosts.js'; import { ALL_HOSTS, remoteHosts, THIS_HOST } from './remote-hosts.js'; import { UnreadCount } from './unread-count.js'; -import { RemoteHostSettings } from './remote-host-settings.js'; +import { HostSettings } from './host-settings.js'; import { ChannelSidebarIcon } from './channel-sidebar-icon.js'; import { RemoteAvatar } from './remote-avatar.js'; import { ConfirmDialog, FormDialog } from './ds/form-dialog.js'; @@ -17,7 +17,7 @@ import { useThisHost } from './this-host.js'; export { useThisHost } from './this-host.js'; import { HostGlyph } from './host-glyph.js'; export { HostGlyph } from './host-glyph.js'; -import { shownHostName, type HostLook } from '../../../../apps/mobile/src/ui/design/host-look.js'; +import { DEFAULT_HOST_LOOK, shownHostName, type HostLook } from '../../../../apps/mobile/src/ui/design/host-look.js'; import { hostLooks, unusedHostLook, useHostLook, useHostName } from './host-looks.js'; const focusRing = { default: 'none', ':focus-visible': `${border.focus} solid ${color.accent}` }; @@ -247,7 +247,7 @@ export function HostTabs({ t }: { t: BotHarnessTranslate }): ReactElement | null )} {settings === undefined ? null : ( - { + .then(async (result) => { setBusy(false); if (!result.ok) { setError(t(PAIR_ERRORS[result.code] ?? 'remoteHosts.error.unreachable')); @@ -341,7 +341,7 @@ export function AddRemoteHostDialog({ .map((remote) => looks.look(remote.host.hostId)), ]; try { - looks.set(result.host.hostId, unusedHostLook(used)); + await looks.update(result.host.hostId, (current) => current === DEFAULT_HOST_LOOK ? unusedHostLook(used) : current); } catch {} onClose(); }); diff --git a/packages/client/src/client/locale.ts b/packages/client/src/client/locale.ts index c4dcbc838f..ad3683a279 100644 --- a/packages/client/src/client/locale.ts +++ b/packages/client/src/client/locale.ts @@ -3939,7 +3939,9 @@ export const zh = { 'remoteHosts.look.appearance': '外观', 'remoteHosts.look.name': '名称', 'remoteHosts.look.hint': '仅保存在此浏览器。', - 'remoteHosts.look.failed': '无法保存到此浏览器,请重试。', + 'remoteHosts.look.failed': '无法读取或保存此浏览器的外观。请刷新后重试。', + 'remoteHosts.look.unsupported': '此浏览器不支持安全保存外观。请使用支持 Web Locks 的浏览器。', + 'remoteHosts.look.refresh': '刷新外观', 'remoteHosts.settings.title': '{name} 的设置', 'remoteHosts.look.symbol.desktop': '台式电脑', 'remoteHosts.look.symbol.laptop': '笔记本', @@ -3987,7 +3989,7 @@ export const zh = { 'connect.pending': '请在电脑上批准指纹如下的设备:', 'connect.approve': '批准设备', 'connect.fingerprint': 'Host 指纹', - 'remoteHosts.notifications': '远程通知', + 'remoteHosts.notifications': '通知', 'remoteHosts.notifications.title': '{name} · 通知', 'remoteHosts.notifications.hint': '仅在此页面打开时通知。选择保存在此浏览器。', 'remoteHosts.notifications.enable': '允许通知', @@ -8367,7 +8369,9 @@ My relationship with you, established lore and topics to avoid: [fill in]. 'remoteHosts.look.appearance': 'Appearance', 'remoteHosts.look.name': 'Name', 'remoteHosts.look.hint': 'Saved in this browser only.', - 'remoteHosts.look.failed': 'Could not save in this browser. Try again.', + 'remoteHosts.look.failed': 'Could not read or save this browser’s appearance. Refresh and try again.', + 'remoteHosts.look.unsupported': 'This browser cannot safely save appearance. Use a browser with Web Locks support.', + 'remoteHosts.look.refresh': 'Refresh appearance', 'remoteHosts.settings.title': 'Settings for {name}', 'remoteHosts.look.symbol.desktop': 'Desktop', 'remoteHosts.look.symbol.laptop': 'Laptop', @@ -8415,7 +8419,7 @@ My relationship with you, established lore and topics to avoid: [fill in]. 'connect.pending': 'On the computer, approve the device with this fingerprint:', 'connect.approve': 'Approve device', 'connect.fingerprint': 'Host fingerprint', - 'remoteHosts.notifications': 'Remote notifications', + 'remoteHosts.notifications': 'Notifications', 'remoteHosts.notifications.title': '{name} · Notifications', 'remoteHosts.notifications.hint': 'Alerts while this page is open. Choices stay in this browser.', 'remoteHosts.notifications.enable': 'Allow notifications', diff --git a/packages/client/test/host-look-control.test.ts b/packages/client/test/host-look-control.test.ts index 8293f32416..a995a7ee24 100644 --- a/packages/client/test/host-look-control.test.ts +++ b/packages/client/test/host-look-control.test.ts @@ -1,12 +1,13 @@ -import { describe, expect, it, vi } from 'vitest'; +import { afterEach, describe, expect, it, vi } from 'vitest'; import { createHostLooks } from '../../../apps/mobile/src/host/host-look.js'; -import { shownHostName } from '../../../apps/mobile/src/ui/design/host-look.js'; +import { shownHostName, type HostLook } from '../../../apps/mobile/src/ui/design/host-look.js'; import { controlHostLook } from '../src/client/host-look-control.js'; async function setup() { - const write = vi.fn(); - const looks = createHostLooks({ read: async () => ({}), write }); - await Promise.resolve(); + let stored: Record = {}; + const write = vi.fn((value: Record) => { stored = value; }); + const looks = createHostLooks({ read: async () => stored, write }); + await looks.ready; const abort = new AbortController(); const request = { signal: abort.signal, expiresAt: Date.now() + 8000 }; const available = (id: string) => id === 'host-b'; @@ -14,43 +15,43 @@ async function setup() { return { looks, write, abort, request, available, read }; } +afterEach(() => vi.useRealTimers()); + describe('Host look Client control', () => { it('writes the shared owner and persists the same normalized local name, icon and colour', async () => { const { looks, write, request, available, read } = await setup(); - const before = read(); - const saved = controlHostLook(looks, { hostId: 'host-b', patch: { + const before = await read(); + const saved = await controlHostLook(looks, { hostId: 'host-b', patch: { name: ' Studio ', icon: { kind: 'emoji', emoji: '🏠' }, color: 'teal', } }, before.revision, request, available); expect(saved.look).toEqual({ name: 'Studio', icon: { kind: 'emoji', emoji: '🏠' }, color: 'teal' }); - expect(looks.look('host-b')).toBe(saved.look); - expect(write).toHaveBeenLastCalledWith({ 'host-b': saved.look }); + expect(looks.look('host-b')).toEqual(saved.look); + expect(write).toHaveBeenLastCalledWith({ 'host-b': saved.look }, expect.any(Function)); expect(shownHostName(saved.look, 'system-hostname')).toBe('Studio'); expect(looks.look('host-a')).toEqual(before.look); - const reset = controlHostLook(looks, { hostId: 'host-b', patch: { name: '', color: null } }, saved.revision, request, available); + const reset = await controlHostLook(looks, { hostId: 'host-b', patch: { name: '', color: null } }, saved.revision, request, available); expect(reset.look).toEqual({ icon: saved.look.icon }); expect(shownHostName(reset.look, 'system-hostname')).toBe('system-hostname'); }); - it('refuses a stale UI revision and reports storage failure without publishing an unsaved look', async () => { + it('refuses stale revisions and keeps the last known look after write failure', async () => { const { looks, write, request, available, read } = await setup(); - const before = read(); + const before = await read(); looks.set('host-b', { ...before.look, name: 'UI change' }); - expect(() => controlHostLook(looks, { hostId: 'host-b', patch: { name: 'CLI change' } }, before.revision, request, available)) - .toThrow('host-look-revision-stale'); - const current = read(); - const notify = vi.fn(); - looks.subscribe(notify); + await expect(controlHostLook(looks, { hostId: 'host-b', patch: { name: 'CLI change' } }, before.revision, request, available)) + .rejects.toThrow('host-look-revision-stale'); + const current = await read(); write.mockImplementation(() => { throw new Error('quota'); }); - expect(() => controlHostLook(looks, { hostId: 'host-b', patch: { color: 'blue' } }, current.revision, request, available)) - .toThrow('host-look-storage-failed'); - expect(read()).toEqual(current); - expect(notify).not.toHaveBeenCalled(); + await expect(controlHostLook(looks, { hostId: 'host-b', patch: { color: 'blue' } }, current.revision, request, available)) + .rejects.toThrow('host-look-storage-failed'); + expect(looks.look('host-b')).toEqual(current.look); + await expect(read()).rejects.toThrow('host-look-storage-failed'); }); it.each(['expired', 'cancelled', 'removed', 'expires-before-write', 'removed-before-write'])( 'does not persist a %s request', async (reason) => { const { write, looks, request, abort, read } = await setup(); - const before = read(); + const before = await read(); if (reason === 'expired') request.expiresAt = Date.now(); if (reason === 'cancelled') abort.abort(); let calls = 0; @@ -59,7 +60,7 @@ describe('Host look Client control', () => { if (reason === 'expires-before-write') request.expiresAt = Date.now(); return reason !== 'removed' && (reason !== 'removed-before-write' || calls === 1); }; - expect(() => controlHostLook(looks, { hostId: 'host-b', patch: { name: 'late' } }, before.revision, request, available)).toThrow(); + await expect(controlHostLook(looks, { hostId: 'host-b', patch: { name: 'late' } }, before.revision, request, available)).rejects.toThrow(); expect(write).not.toHaveBeenCalled(); expect(looks.look('host-b')).toBe(before.look); }, @@ -68,8 +69,53 @@ describe('Host look Client control', () => { it.each([{ name: 42 }, { icon: { kind: 'symbol', id: 'unknown' } }, { color: 'invalid' }, { arbitrary: true }, null, []])( 'rejects invalid input before storage: %j', async (patch) => { const { write, looks, request, available, read } = await setup(); - expect(() => controlHostLook(looks, { hostId: 'host-b', patch }, read().revision, request, available)).toThrow('host-look-invalid-input'); + await expect(controlHostLook(looks, { hostId: 'host-b', patch }, (await read()).revision, request, available)).rejects.toThrow('host-look-invalid-input'); expect(write).not.toHaveBeenCalled(); }, ); + + it('refuses reads and writes after failed hydration until an explicit refresh succeeds', async () => { + const stored = { 'host-b': { name: 'Stored', icon: { kind: 'symbol', id: 'server' } } }; + const read = vi.fn<() => Promise>().mockRejectedValue(new Error('denied')); + const write = vi.fn(); + const looks = createHostLooks({ read, write }); + await expect(looks.ready).resolves.toBeUndefined(); + const request = { signal: new AbortController().signal, expiresAt: Date.now() + 8000 }; + const control = (input: unknown, revision?: string) => controlHostLook(looks, input, revision, request, () => true); + await expect(control({ hostId: 'host-b' })).rejects.toMatchObject({ code: 'host-look-storage-read-failed' }); + read.mockResolvedValue(stored); + await expect(control({ hostId: 'host-b', patch: { name: 'Overwrite' } }, JSON.stringify(looks.look('host-b')))).rejects.toThrow('host-look-storage-read-failed'); + expect(write).not.toHaveBeenCalled(); + expect(await control({ hostId: 'host-b', refresh: true })).toMatchObject({ look: stored['host-b'] }); + read.mockRejectedValue(new Error('locked read failed')); + await expect(control({ hostId: 'host-b', patch: { name: 'Overwrite' } }, JSON.stringify(stored['host-b']))).rejects.toThrow('host-look-storage-read-failed'); + expect(looks.look('host-b')).toEqual(stored['host-b']); + expect(write).not.toHaveBeenCalled(); + }); + + it('checks wall time after waiting for a lock even when no timeout callback has run', async () => { + vi.useFakeTimers(); + vi.setSystemTime(1000); + let release!: () => void; + let entered!: () => void; + const waiting = new Promise((resolve) => { entered = resolve; }); + let hold = false; + const write = vi.fn(); + const looks = createHostLooks({ + read: async () => ({}), write, + transaction: async (work) => { + if (hold) { entered(); await new Promise((resolve) => { release = resolve; }); } + await work(); + }, + }); + await looks.ready; + hold = true; + const pending = controlHostLook(looks, { hostId: 'host-b', patch: { name: 'Late' } }, JSON.stringify(looks.look('host-b')), { signal: new AbortController().signal, expiresAt: 1100 }, () => true); + const refused = expect(pending).rejects.toThrow('appearance-request-stale'); + await waiting; + vi.setSystemTime(1101); + release(); + await refused; + expect(write).not.toHaveBeenCalled(); + }); }); diff --git a/packages/client/test/host-look-owner.test.ts b/packages/client/test/host-look-owner.test.ts new file mode 100644 index 0000000000..4d48be41de --- /dev/null +++ b/packages/client/test/host-look-owner.test.ts @@ -0,0 +1,33 @@ +import { expect, it, vi } from 'vitest'; +import { createHostLooks } from '../../../apps/mobile/src/host/host-look.js'; +import { DEFAULT_HOST_LOOK } from '../../../apps/mobile/src/ui/design/host-look.js'; + +it('preserves the native synchronous set and one-time legacy migration contracts', async () => { + const write = vi.fn(); + const forgetLegacyImages = vi.fn(); + const looks = createHostLooks({ + read: async () => ({ a: { name: 'Phone', banner: { kind: 'color', color: '#2f80ed' } } }), + write, forgetLegacyImages, + }); + await looks.ready; + expect(looks.look('a')).toEqual({ name: 'Phone', icon: DEFAULT_HOST_LOOK.icon, color: 'blue' }); + expect(forgetLegacyImages).toHaveBeenCalledOnce(); + const result = looks.set('b', { ...DEFAULT_HOST_LOOK, name: 'Native edit' }); + expect(result).toBeUndefined(); + expect(looks.look('b').name).toBe('Native edit'); + expect(write).toHaveBeenLastCalledWith({ a: looks.look('a'), b: looks.look('b') }); +}); + +it('settles native readiness after a failed read without permitting a default-map overwrite', async () => { + const read = vi.fn<() => Promise>().mockRejectedValue(new Error('disk unavailable')); + const write = vi.fn(); + const looks = createHostLooks({ read, write }); + await expect(looks.ready).resolves.toBeUndefined(); + expect(() => looks.set('b', { ...DEFAULT_HOST_LOOK, name: 'Unsafe' })).not.toThrow(); + expect(write).not.toHaveBeenCalled(); + await expect(looks.read('b')).rejects.toThrow('host-look-storage-read-failed'); + read.mockResolvedValue({ a: { ...DEFAULT_HOST_LOOK, name: 'Existing' } }); + await looks.refresh(); + looks.set('b', { ...DEFAULT_HOST_LOOK, name: 'Recovered' }); + expect(write).toHaveBeenLastCalledWith({ a: { ...DEFAULT_HOST_LOOK, name: 'Existing' }, b: { ...DEFAULT_HOST_LOOK, name: 'Recovered' } }); +}); diff --git a/packages/client/test/host-look-r1-regression.test.ts b/packages/client/test/host-look-r1-regression.test.ts new file mode 100644 index 0000000000..42079494d9 --- /dev/null +++ b/packages/client/test/host-look-r1-regression.test.ts @@ -0,0 +1,50 @@ +import { expect, it, vi } from 'vitest'; +import { createHostLooks } from '../../../apps/mobile/src/host/host-look.js'; +import { DEFAULT_HOST_LOOK, type HostLook } from '../../../apps/mobile/src/ui/design/host-look.js'; +import { runHostLook } from '../../core/src/bots/cli-host-look.js'; +import { controlHostLook } from '../src/client/host-look-control.js'; + +it('R1 P2-1 rejects a stale persisted revision across independent owners', async () => { + let stored: Record = {}; + let tail = Promise.resolve(); + const storage = { + read: async () => stored, + write: (value: Record) => { stored = value; }, + transaction: (work: () => Promise) => { + const pending = tail.then(work); + tail = pending.catch(() => {}); + return pending; + }, + }; + const a = createHostLooks(storage); + const b = createHostLooks(storage); + await Promise.all([a.ready, b.ready]); + const request = { signal: new AbortController().signal, expiresAt: Date.now() + 8000 }; + const before = await controlHostLook(b, { hostId: 'b' }, undefined, request, () => true); + await controlHostLook(a, { hostId: 'b', patch: { name: 'A saved' } }, before.revision, request, () => true); + await expect(Promise.resolve().then(() => controlHostLook(b, { hostId: 'b', patch: { name: 'B stale' } }, before.revision, request, () => true))).rejects.toThrow('host-look-revision-stale'); + expect(stored.b?.name).toBe('A saved'); +}); + +it('R1 P2-2 does not submit a write after its CLI expiry is spent on stdin', async () => { + const now = vi.spyOn(Date, 'now').mockReturnValue(1000); + const http = vi.fn(async () => ({ bytes: new TextEncoder().encode('{}') })); + const connect = vi.fn(async () => ({ http })); + try { + await expect(runHostLook([], { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true, 'expected-revision': 'rev' }, { + readStdin: async () => { now.mockReturnValue(1101); return '{"name":"Late"}'; }, + }, connect, 1100)).rejects.toMatchObject({ code: 'appearance-request-stale' }); + expect(connect).not.toHaveBeenCalled(); + expect(http).not.toHaveBeenCalled(); + } finally { now.mockRestore(); } +}); + +it('R1 P2-3 refuses a default read and overwrite after failed initial storage read', async () => { + const write = vi.fn(); + const looks = createHostLooks({ read: async () => { throw new Error('read denied'); }, write }); + await looks.ready; + const request = { signal: new AbortController().signal, expiresAt: Date.now() + 8000 }; + await expect(Promise.resolve().then(() => controlHostLook(looks, { hostId: 'b' }, undefined, request, () => true))).rejects.toThrow('host-look-storage-read-failed'); + await expect(Promise.resolve().then(() => controlHostLook(looks, { hostId: 'b', patch: { name: 'Unsafe' } }, JSON.stringify(DEFAULT_HOST_LOOK), request, () => true))).rejects.toThrow('host-look-storage-read-failed'); + expect(write).not.toHaveBeenCalled(); +}); diff --git a/packages/client/test/host-look-relay.test.ts b/packages/client/test/host-look-relay.test.ts index 4b350802bb..9a23e16bf4 100644 --- a/packages/client/test/host-look-relay.test.ts +++ b/packages/client/test/host-look-relay.test.ts @@ -14,13 +14,16 @@ afterEach(() => { shared.clear(); }); -it.each(['on-time', 'deadline', 'unmount', 'removed'] as const)( +it.each(['on-time', 'deadline', 'walltime', 'unmount', 'removed'] as const)( 'checks %s after hydration at the existing relay boundary', async (reason) => { vi.useFakeTimers(); const host = createAppearanceControl(); let hydrate!: (value: unknown) => void; + const stored = { name: 'Stored', icon: { kind: 'symbol', id: 'server' }, color: 'teal' }; const write = vi.fn(); - const looks = createHostLooks({ read: () => new Promise((resolve) => { hydrate = resolve; }), write }); + const read = vi.fn<() => Promise>().mockResolvedValue({ b: stored }); + read.mockImplementationOnce(() => new Promise((resolve) => { hydrate = resolve; })); + const looks = createHostLooks({ read, write }); shared.set('looks', looks); let paired = true; shared.set('sources', { getSnapshot: () => ({ hosts: paired ? [{ host: { hostId: 'b' } }] : [] }) }); @@ -34,27 +37,32 @@ it.each(['on-time', 'deadline', 'unmount', 'removed'] as const)( try { await vi.waitFor(() => expect(actions).toContain('poll')); const { clients } = await (await host.fetch(new Request('http://localhost'))).json(); - const stored = { name: 'Stored', icon: { kind: 'symbol', id: 'server' }, color: 'teal' }; const response = host.fetch(new Request('http://localhost/api/botharness/appearance-control', { method: 'POST', body: JSON.stringify({ - action: 'request', clientId: clients[0].id, expectedRevision: JSON.stringify(stored), + action: 'request', clientId: clients[0].id, expiresAt: Date.now() + 8000, expectedRevision: JSON.stringify(stored), hostLook: { hostId: 'b', patch: { name: 'Studio' } }, }), })); await vi.advanceTimersByTimeAsync(0); expect(write).not.toHaveBeenCalled(); if (reason === 'deadline') await vi.advanceTimersByTimeAsync(8000); + if (reason === 'walltime') vi.setSystemTime(Date.now() + 8001); if (reason === 'unmount') release(); if (reason === 'removed') paired = false; hydrate({ b: stored }); await vi.advanceTimersByTimeAsync(0); + if (reason === 'walltime') { + expect(write).not.toHaveBeenCalled(); + expect(actions).not.toContain('reply'); + await vi.advanceTimersByTimeAsync(8000); + } const result = await (await response).json(); if (reason === 'on-time') { expect(result).toMatchObject({ hostId: 'b', look: { name: 'Studio', color: 'teal' } }); expect(write).toHaveBeenCalledTimes(1); expect(looks.look('b').name).toBe('Studio'); } else { - expect(result).toMatchObject({ error: { code: reason === 'removed' ? 'host-look-host-unknown' : reason === 'deadline' ? 'appearance-client-timeout' : 'appearance-client-stale' } }); + expect(result).toMatchObject({ error: { code: reason === 'removed' ? 'host-look-host-unknown' : reason === 'deadline' || reason === 'walltime' ? 'appearance-client-timeout' : 'appearance-client-stale' } }); expect(write).not.toHaveBeenCalled(); expect(looks.look('b')).toEqual(stored); if (reason !== 'removed') expect(actions).not.toContain('reply'); @@ -65,3 +73,30 @@ it.each(['on-time', 'deadline', 'unmount', 'removed'] as const)( } }, ); + +it.each([100, 20000])('caps the Host relay deadline using the caller absolute expiry (%s ms)', async (duration) => { + vi.useFakeTimers(); + vi.setSystemTime(1000); + const host = createAppearanceControl(); + const post = (body: unknown) => host.fetch(new Request('http://localhost', { method: 'POST', body: JSON.stringify(body) })); + try { + const registration = await (await post({ action: 'register', platform: 'web' })).json(); + const poll = post({ action: 'poll', ...registration }); + await vi.advanceTimersByTimeAsync(0); + const pending = post({ action: 'request', clientId: registration.clientId, expiresAt: 1000 + duration, hostLook: { hostId: 'b' } }); + const { command } = await (await poll).json(); + expect(command.expiresAt).toBe(1000 + Math.min(duration, 8000)); + await vi.advanceTimersByTimeAsync(Math.min(duration, 8000)); + expect(await (await pending).json()).toMatchObject({ error: { code: 'appearance-client-timeout' } }); + } finally { host.dispose(); } +}); + +it('refuses a late Host look command before delivering it to the Client', async () => { + const host = createAppearanceControl(() => 1000); + const post = (body: unknown) => host.fetch(new Request('http://localhost', { method: 'POST', body: JSON.stringify(body) })); + try { + const registration = await (await post({ action: 'register', platform: 'web' })).json(); + const response = await post({ action: 'request', clientId: registration.clientId, expiresAt: 999, hostLook: { hostId: 'b', patch: { name: 'Late' } } }); + expect(await response.json()).toMatchObject({ error: { code: 'appearance-request-stale' } }); + } finally { host.dispose(); } +}); diff --git a/packages/client/test/host-looks.test.ts b/packages/client/test/host-looks.test.ts index 24309fe116..a53d9bf853 100644 --- a/packages/client/test/host-looks.test.ts +++ b/packages/client/test/host-looks.test.ts @@ -1,6 +1,7 @@ -import { describe, expect, it } from 'vitest'; +import { afterEach, describe, expect, it, vi } from 'vitest'; -import { DEFAULT_HOST_LOOK } from '../../../apps/mobile/src/ui/design/host-look.js'; +import { controlHostLook } from '../src/client/host-look-control.js'; +import { DEFAULT_HOST_LOOK, withHostColor, withHostIcon, withHostName } from '../../../apps/mobile/src/ui/design/host-look.js'; import { HOST_LOOKS_STORAGE_KEY, browserHostLooks, @@ -22,17 +23,103 @@ describe('unusedHostLook', () => { }); }); +function memoryStorage() { + const values = new Map(); + return { + getItem: vi.fn((key: string) => values.get(key) ?? null), + setItem: vi.fn((key: string, value: string) => { values.set(key, value); }), + clear: () => values.clear(), + removeItem: (key: string) => values.delete(key), + key: (index: number) => [...values.keys()][index] ?? null, + get length() { return values.size; }, + }; +} + +function lockManager() { + let tail = Promise.resolve(); + const request = vi.fn((_name: string, _options: unknown, work: () => Promise) => { + const result = tail.then(work); + tail = result.catch(() => {}); + return result; + }); + vi.stubGlobal('navigator', { locks: { request } }); + return request; +} + +afterEach(() => vi.unstubAllGlobals()); + describe('browserHostLooks', () => { - it('stores looks in this browser only', async () => { - const values = new Map(); - const storage = { - getItem: (key: string) => values.get(key) ?? null, - setItem: (key: string, value: string) => void values.set(key, value), - } as unknown as Storage; + it('uses the same Web Lock across owners and merges only the selected Host against persisted data', async () => { + const locks = lockManager(); + const storage = memoryStorage(); + const a = browserHostLooks(storage); + const b = browserHostLooks(storage); + await Promise.all([a.ready, b.ready]); + const request = { signal: new AbortController().signal, expiresAt: Date.now() + 8000 }; + const before = await controlHostLook(b, { hostId: 'b' }, undefined, request, () => true); + await a.update('b', (current) => withHostName(current, 'Tab A')); + await expect(controlHostLook(b, { hostId: 'b', patch: { name: 'Tab B' } }, before.revision, request, () => true)).rejects.toThrow('host-look-revision-stale'); + await a.update('a', (current) => withHostName(current, 'Other Host')); + await b.update('b', (current) => withHostColor(current, 'teal')); + await Promise.all([ + a.update('b', (current) => withHostIcon(current, { kind: 'emoji', emoji: '🏠' })), + b.update('b', (current) => withHostName(current, 'Latest')), + ]); + const stored = JSON.parse(storage.getItem(HOST_LOOKS_STORAGE_KEY) ?? '{}'); + expect(stored.a.name).toBe('Other Host'); + expect(stored.b).toEqual({ name: 'Latest', icon: { kind: 'emoji', emoji: '🏠' }, color: 'teal' }); + expect(locks.mock.calls.every(([name, options]) => name === HOST_LOOKS_STORAGE_KEY && JSON.stringify(options) === '{"mode":"exclusive"}')).toBe(true); + }); + + it('refuses unavailable Web Locks without reading or writing storage', async () => { + vi.stubGlobal('navigator', {}); + const storage = memoryStorage(); + const looks = browserHostLooks(storage); + await looks.ready; + await expect(looks.read('b')).rejects.toThrow('host-look-lock-unavailable'); + await expect(looks.update('b', (current) => withHostName(current, 'Unsafe'))).rejects.toThrow('host-look-lock-unavailable'); + expect(storage.getItem).not.toHaveBeenCalled(); + expect(storage.setItem).not.toHaveBeenCalled(); + }); + + it('keeps known state and blocks writes after corrupt storage until explicit recovery', async () => { + lockManager(); + const storage = memoryStorage(); + const looks = browserHostLooks(storage); + await looks.update('b', (current) => withHostName(current, 'Known')); + const known = looks.look('b'); + storage.setItem(HOST_LOOKS_STORAGE_KEY, '{bad'); + await expect(looks.read('b')).rejects.toThrow('host-look-storage-read-failed'); + expect(looks.look('b')).toBe(known); + storage.setItem.mockClear(); + await expect(looks.update('b', (current) => withHostName(current, 'Unsafe'))).rejects.toThrow('host-look-storage-read-failed'); + expect(storage.setItem).not.toHaveBeenCalled(); + storage.setItem(HOST_LOOKS_STORAGE_KEY, JSON.stringify({ b: known, a: DEFAULT_HOST_LOOK })); + await looks.refresh(); + await looks.update('b', (current) => withHostColor(current, 'blue')); + expect(JSON.parse(storage.getItem(HOST_LOOKS_STORAGE_KEY) ?? '{}')).toEqual({ b: { ...known, color: 'blue' }, a: DEFAULT_HOST_LOOK }); + }); + + it('checks expiry immediately before localStorage setItem', async () => { + lockManager(); + const storage = memoryStorage(); const looks = browserHostLooks(storage); - await Promise.resolve(); - looks.set('host-b', { icon: { kind: 'emoji', emoji: '🏠' }, color: 'green' }); - expect(looks.look('host-b')).toEqual({ icon: { kind: 'emoji', emoji: '🏠' }, color: 'green' }); - expect(JSON.parse(values.get(HOST_LOOKS_STORAGE_KEY) ?? '{}')).toHaveProperty('host-b'); + await looks.ready; + let expired = false; + const stringify = JSON.stringify; + vi.spyOn(JSON, 'stringify').mockImplementation((value) => { + const result = stringify(value); + expired = true; + return result; + }); + try { + await expect(looks.update('b', (current) => withHostName(current, 'Late'), () => { + if (expired) throw new Error('appearance-request-stale'); + })).rejects.toThrow('appearance-request-stale'); + expect(storage.setItem).not.toHaveBeenCalled(); + expect(looks.error()).toBeUndefined(); + } finally { + vi.restoreAllMocks(); + } }); }); diff --git a/packages/core/src/appearance/control.ts b/packages/core/src/appearance/control.ts index c590eff428..96164a47ff 100644 --- a/packages/core/src/appearance/control.ts +++ b/packages/core/src/appearance/control.ts @@ -78,11 +78,15 @@ export function createAppearanceControl(now = Date.now) { return refused('appearance-invalid-input', 400); if (input.patch !== undefined && typeof input.expectedRevision !== 'string') return refused('appearance-revision-required', 400); + if (input.hostLook !== undefined && + (typeof input.expiresAt !== 'number' || !Number.isFinite(input.expiresAt) || input.expiresAt <= now())) + return refused('appearance-request-stale'); + const expiresAt = input.hostLook === undefined ? now() + 8000 : Math.min(now() + 8000, input.expiresAt as number); if (client.pending) return refused('appearance-client-busy'); if (!client.poll) return refused('appearance-client-unavailable'); const command: Command = { id: randomUUID(), - expiresAt: now() + 8000, + expiresAt, ...(input.hostLook === undefined ? {} : { hostLook: input.hostLook, expectedRevision: input.expectedRevision as string }), ...(input.notifications === undefined ? {} @@ -104,7 +108,7 @@ export function createAppearanceControl(now = Date.now) { const timer = setTimeout(() => { if (client.pending?.command === command) delete client.pending; resolve(refused('appearance-client-timeout')); - }, 8000); + }, Math.max(0, expiresAt - now())); client.pending = { command, resolve: (response) => { @@ -125,7 +129,7 @@ export function createAppearanceControl(now = Date.now) { if ( !client.pending || client.pending.command.id !== input.requestId || - now() > client.pending.command.expiresAt + now() >= client.pending.command.expiresAt ) return refused('appearance-request-stale'); const result = record(input.result); diff --git a/packages/core/src/bots/cli-host-look.ts b/packages/core/src/bots/cli-host-look.ts index 8bc16891ba..187544b7e0 100644 --- a/packages/core/src/bots/cli-host-look.ts +++ b/packages/core/src/bots/cli-host-look.ts @@ -1,19 +1,27 @@ import { CliLiveError } from './cli-live-error.js'; export const HOST_LOOK_COMMANDS = [ - { command: 'host-look', description: 'read or set device-local Host looks on --client-id and --host-id (--patch-stdin, --expected-revision)' }, + { command: 'host-look', description: 'read or set device-local Host looks on --client-id and --host-id (--refresh, --patch-stdin, --expected-revision)' }, ] as const; export async function runHostLook( rest: string[], - values: { 'client-id'?: string; 'host-id'?: string; 'patch-stdin'?: boolean; 'expected-revision'?: string }, + values: { 'client-id'?: string; 'host-id'?: string; 'patch-stdin'?: boolean; 'expected-revision'?: string; refresh?: boolean }, io: { readStdin?: () => Promise }, connect: () => Promise<{ http(path: string, body?: Record): Promise<{ bytes: Uint8Array }> }>, + expiresAt: number, ) { if (rest.length || !values['client-id'] || !values['host-id']) throw new CliLiveError('usage', 'Select --client-id and --host-id for host-look.'); if (!!values['patch-stdin'] !== (values['expected-revision'] !== undefined)) throw new CliLiveError('usage', 'Writes require --patch-stdin and --expected-revision.'); + if (values.refresh && values['patch-stdin']) + throw new CliLiveError('usage', 'Refresh reads the stored look; send writes separately.'); + const check = () => { + if (!Number.isFinite(expiresAt) || Date.now() >= expiresAt) + throw new CliLiveError('appearance-request-stale', 'The Host look request deadline has passed.'); + }; + check(); let patch: unknown; if (values['patch-stdin']) { try { @@ -22,12 +30,26 @@ export async function runHostLook( throw new CliLiveError('invalid-input', 'Invalid Host look JSON on stdin.'); } } + check(); const host = await connect(); - const result = await host.http('/api/botharness/appearance-control', { - action: 'request', - clientId: values['client-id'], - hostLook: { hostId: values['host-id'], ...(patch === undefined ? {} : { patch }) }, - ...(patch === undefined ? {} : { expectedRevision: values['expected-revision'] }), - }); - return JSON.parse(new TextDecoder().decode(result.bytes)) as unknown; + check(); + try { + const result = await host.http('/api/botharness/appearance-control', { + action: 'request', + clientId: values['client-id'], + expiresAt, + hostLook: { + hostId: values['host-id'], + ...(values.refresh ? { refresh: true } : {}), + ...(patch === undefined ? {} : { patch }), + }, + ...(patch === undefined ? {} : { expectedRevision: values['expected-revision'] }), + }); + return JSON.parse(new TextDecoder().decode(result.bytes)) as unknown; + } catch (error) { + if (patch !== undefined && (!(error instanceof CliLiveError) || + ['host-unreachable', 'host-protocol-error', 'appearance-client-timeout', 'appearance-client-stale', 'appearance-request-stale'].includes(error.code))) + throw new CliLiveError('host-look-outcome-unknown', 'The write result is unknown. Read the same Client and Host before retrying; disconnecting does not cancel a delivered command before its deadline.'); + throw error; + } } diff --git a/packages/core/src/bots/cli-live.ts b/packages/core/src/bots/cli-live.ts index 020ec2136a..0e5e0d8f5e 100644 --- a/packages/core/src/bots/cli-live.ts +++ b/packages/core/src/bots/cli-live.ts @@ -168,6 +168,7 @@ export const LIVE_OPTIONS = { scope: { type: 'string' }, 'acknowledge-risk': { type: 'boolean' }, 'patch-stdin': { type: 'boolean' }, + refresh: { type: 'boolean' }, 'previous-value': { type: 'string' }, member: { type: 'string', multiple: true }, app: { type: 'string' }, @@ -456,6 +457,7 @@ interface LiveValues scope?: string; 'acknowledge-risk'?: boolean; 'patch-stdin'?: boolean; + refresh?: boolean; 'previous-value'?: string; member?: string[]; 'operation-key'?: string; @@ -750,8 +752,12 @@ export async function runLiveCli( values: LiveValues, io: BotCreateCliIo, ): Promise { - if (command === 'host-look') - return runHostLook(rest, values, io, () => connectLiveHost(values, io, AbortSignal.timeout(timeoutMs(values.timeout)))); + if (command === 'host-look') { + const duration = timeoutMs(values.timeout); + const expiresAt = Date.now() + duration; + const signal = AbortSignal.timeout(duration); + return runHostLook(rest, values, io, () => connectLiveHost(values, io, signal), expiresAt); + } if (command === 'device-notifications') return runDeviceNotifications(rest, values, io); if (command === 'phone-notifications') return runPhoneNotifications(rest, values, io); if (BROWSER_NOTIFICATION_COMMANDS.some((entry) => entry.command === command)) diff --git a/packages/core/test/cli-host-look.test.ts b/packages/core/test/cli-host-look.test.ts index a335c3931f..91cdee1d9e 100644 --- a/packages/core/test/cli-host-look.test.ts +++ b/packages/core/test/cli-host-look.test.ts @@ -1,25 +1,49 @@ import { expect, it, vi } from 'vitest'; +import { CliLiveError } from '../src/bots/cli-live-error.js'; import { runHostLook } from '../src/bots/cli-host-look.js'; it('targets exactly the selected Client and Host through the existing relay', async () => { const http = vi.fn(async () => ({ bytes: new TextEncoder().encode('{"hostId":"b","revision":"rev"}') })); const connect = async () => ({ http }); + const expiresAt = Date.now() + 8000; const target = { 'client-id': 'browser-a', 'host-id': 'b' }; - expect(await runHostLook([], target, {}, connect)).toEqual({ hostId: 'b', revision: 'rev' }); + expect(await runHostLook([], target, {}, connect, expiresAt)).toEqual({ hostId: 'b', revision: 'rev' }); expect(http).toHaveBeenLastCalledWith('/api/botharness/appearance-control', { - action: 'request', clientId: 'browser-a', hostLook: { hostId: 'b' }, + action: 'request', clientId: 'browser-a', expiresAt, hostLook: { hostId: 'b' }, }); const patch = { name: 'Studio', icon: { kind: 'symbol', id: 'server' }, color: 'orange' }; - await runHostLook([], { ...target, 'patch-stdin': true, 'expected-revision': 'rev' }, { readStdin: async () => JSON.stringify(patch) }, connect); + await runHostLook([], { ...target, 'patch-stdin': true, 'expected-revision': 'rev' }, { readStdin: async () => JSON.stringify(patch) }, connect, expiresAt); expect(http).toHaveBeenLastCalledWith('/api/botharness/appearance-control', { - action: 'request', clientId: 'browser-a', hostLook: { hostId: 'b', patch }, expectedRevision: 'rev', + action: 'request', clientId: 'browser-a', expiresAt, hostLook: { hostId: 'b', patch }, expectedRevision: 'rev', }); }); it('refuses missing targets, unguarded writes and malformed stdin before connecting', async () => { const connect = vi.fn(); + const expiresAt = Date.now() + 8000; for (const values of [{}, { 'client-id': 'a' }, { 'host-id': 'b' }, { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true }]) - await expect(runHostLook([], values, {}, connect)).rejects.toMatchObject({ code: 'usage' }); - await expect(runHostLook([], { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true, 'expected-revision': 'rev' }, { readStdin: async () => '{bad' }, connect)).rejects.toMatchObject({ code: 'invalid-input' }); + await expect(runHostLook([], values, {}, connect, expiresAt)).rejects.toMatchObject({ code: 'usage' }); + await expect(runHostLook([], { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true, 'expected-revision': 'rev' }, { readStdin: async () => '{bad' }, connect, expiresAt)).rejects.toMatchObject({ code: 'invalid-input' }); expect(connect).not.toHaveBeenCalled(); }); + +it('forwards explicit recovery and refuses a deadline spent reading stdin', async () => { + const http = vi.fn(async () => ({ bytes: new TextEncoder().encode('{}') })); + const connect = vi.fn(async () => ({ http })); + const values = { 'client-id': 'a', 'host-id': 'b' }; + const now = vi.spyOn(Date, 'now').mockReturnValue(1000); + try { + await runHostLook([], { ...values, refresh: true }, {}, connect, 2000); + expect(http).toHaveBeenCalledWith('/api/botharness/appearance-control', { action: 'request', clientId: 'a', expiresAt: 2000, hostLook: { hostId: 'b', refresh: true } }); + connect.mockClear(); + await expect(runHostLook([], { ...values, 'patch-stdin': true, 'expected-revision': 'rev' }, { readStdin: async () => { now.mockReturnValue(2001); return '{"name":"Late"}'; } }, connect, 2000)).rejects.toMatchObject({ code: 'appearance-request-stale' }); + expect(connect).not.toHaveBeenCalled(); + } finally { now.mockRestore(); } +}); + +it.each(['host-unreachable', 'appearance-client-timeout', 'appearance-client-stale'])( + 'reports %s after submission as unknown outcome, not cancellation', async (code) => { + const connect = async () => ({ http: async () => { throw new CliLiveError(code, code); } }); + await expect(runHostLook([], { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true, 'expected-revision': 'rev' }, { readStdin: async () => '{"name":"Studio"}' }, connect, Date.now() + 8000)).rejects.toMatchObject({ code: 'host-look-outcome-unknown', message: expect.stringContaining('Read the same Client and Host') }); + }, +); diff --git a/scripts/cli-ui-inventory.json b/scripts/cli-ui-inventory.json index f68eaa7305..caccac620d 100644 --- a/scripts/cli-ui-inventory.json +++ b/scripts/cli-ui-inventory.json @@ -835,7 +835,7 @@ }, { "id": "device-local-host-look", - "description": "Browser-owned Host name, icon and colour; the existing appearance relay forwards to the shared HostLooks owner without a Host mirror.", + "description": "Browser-owned Host name, icon and colour; shared HostLooks locks persisted revision/merge, supports explicit refresh after read failure, and checks CLI absolute expiry before setItem. Early disconnect is unknown outcome with readback; no Host mirror.", "scope": "Client / Host", "surfaces": [ "storage:packages/client/src/client/host-looks.ts:setItem(HOST_LOOKS_STORAGE_KEY)" From aa7df0b08a448ba7bdabfad12830472bfc1e50d9 Mon Sep 17 00:00:00 2001 From: DoodleBears Date: Thu, 22 Oct 2026 13:17:26 +0900 Subject: [PATCH 3/6] style(client): format Host settings implementation Apply repository formatting after R2 source review; no behavior change. Issue: #2500 Agent-Task: codex/local/01a16195-979b-7853-abdb-4acbf963c95c --- apps/mobile/src/host/host-look.ts | 66 +++-- docs/bot-cli.md | 1 - docs/bot-cli.zh.md | 1 - .../client/src/client/appearance-control.ts | 18 +- .../client/src/client/host-look-control.ts | 19 +- .../client/src/client/host-look-settings.tsx | 242 +++++++++++------- packages/client/src/client/host-looks.ts | 9 +- packages/client/src/client/host-settings.tsx | 68 +++-- packages/client/src/client/host-tabs.tsx | 71 +++-- packages/client/src/client/locale.ts | 6 +- .../src/client/remote-conversation-view.tsx | 5 +- .../client/remote-notification-settings.tsx | 5 +- .../client/test/host-look-control.test.ts | 145 ++++++++--- packages/client/test/host-look-owner.test.ts | 8 +- .../test/host-look-r1-regression.test.ts | 70 ++++- packages/client/test/host-look-relay.test.ts | 100 ++++++-- packages/client/test/host-looks.test.ts | 63 ++++- packages/core/src/appearance/control.ts | 38 ++- packages/core/src/bots/cli-host-look.ts | 41 ++- packages/core/test/cli-host-look.test.ts | 97 ++++++- scripts/cli-ui-inventory.json | 5 +- 21 files changed, 791 insertions(+), 287 deletions(-) diff --git a/apps/mobile/src/host/host-look.ts b/apps/mobile/src/host/host-look.ts index 488a2e43c0..2b3b6986f1 100644 --- a/apps/mobile/src/host/host-look.ts +++ b/apps/mobile/src/host/host-look.ts @@ -24,7 +24,11 @@ export interface HostLooks { error(): string | undefined; refresh(check?: () => void): Promise; read(hostId: string, check?: () => void): Promise; - update(hostId: string, change: (current: HostLook) => HostLook, check?: () => void): Promise; + update( + hostId: string, + change: (current: HostLook) => HostLook, + check?: () => void, + ): Promise; look(hostId: string): HostLook; set(hostId: string, look: HostLook): void; subscribe(listener: () => void): () => void; @@ -39,8 +43,14 @@ const text = (value: unknown): string | undefined => export function isHostIcon(input: unknown): input is HostIcon { const value = record(input); - return (value['kind'] === 'symbol' && typeof value['id'] === 'string' && Object.hasOwn(HOST_SYMBOLS, value['id'])) || - (value['kind'] === 'emoji' && typeof value['emoji'] === 'string' && (HOST_EMOJI as readonly string[]).includes(value['emoji'])); + return ( + (value['kind'] === 'symbol' && + typeof value['id'] === 'string' && + Object.hasOwn(HOST_SYMBOLS, value['id'])) || + (value['kind'] === 'emoji' && + typeof value['emoji'] === 'string' && + (HOST_EMOJI as readonly string[]).includes(value['emoji'])) + ); } export function isHostColor(input: unknown): input is HostColorId { @@ -49,7 +59,9 @@ export function isHostColor(input: unknown): input is HostColorId { export function parseHostIcon(input: unknown): HostIcon { if (!isHostIcon(input)) return DEFAULT_HOST_LOOK.icon; - return input.kind === 'symbol' ? { kind: 'symbol', id: input.id } : { kind: 'emoji', emoji: input.emoji }; + return input.kind === 'symbol' + ? { kind: 'symbol', id: input.id } + : { kind: 'emoji', emoji: input.emoji }; } export function parseHostColor(input: unknown): HostColorId | undefined { @@ -101,7 +113,9 @@ export function createHostLooks(storage: LookStorage): HostLooks { } catch { return fail('host-look-storage-read-failed'); } - return Object.fromEntries(Object.entries(record(raw)).map(([id, look]) => [id, parseHostLook(look)])); + return Object.fromEntries( + Object.entries(record(raw)).map(([id, look]) => [id, parseHostLook(look)]), + ); }; const transaction = async (work: () => Promise) => { if (storage.transaction === undefined) return work(); @@ -123,24 +137,30 @@ export function createHostLooks(storage: LookStorage): HostLooks { return fail('host-look-storage-failed'); } }; - const refresh = async (check?: () => void) => transaction(async () => { - check?.(); - const value = await load(); - check?.(); - publish(value); - }); - const ready = (storage.transaction === undefined - ? storage.read().then((raw) => { - if (touched) return; - const stored = Object.entries(record(raw)); - const value = Object.fromEntries(stored.map(([id, look]) => [id, parseHostLook(look)])); - if (stored.some(([, look]) => isLegacyHostLook(look))) { - persist(value); - storage.forgetLegacyImages?.(); - } - publish(value); - }, () => fail('host-look-storage-read-failed')) - : refresh()).catch(() => undefined); + const refresh = async (check?: () => void) => + transaction(async () => { + check?.(); + const value = await load(); + check?.(); + publish(value); + }); + const ready = ( + storage.transaction === undefined + ? storage.read().then( + (raw) => { + if (touched) return; + const stored = Object.entries(record(raw)); + const value = Object.fromEntries(stored.map(([id, look]) => [id, parseHostLook(look)])); + if (stored.some(([, look]) => isLegacyHostLook(look))) { + persist(value); + storage.forgetLegacyImages?.(); + } + publish(value); + }, + () => fail('host-look-storage-read-failed'), + ) + : refresh() + ).catch(() => undefined); const available = async () => { await ready; if (failure !== undefined) throw new Error(failure); diff --git a/docs/bot-cli.md b/docs/bot-cli.md index cd063cee41..9402c9a1b7 100644 --- a/docs/bot-cli.md +++ b/docs/bot-cli.md @@ -78,7 +78,6 @@ This command uses the existing authenticated `appearance-control` relay to reach The CLI sets an absolute expiry before stdin and connection setup. The Host caps it at eight seconds from relay admission. The Client rechecks wall time after hydration, after acquiring the lock and immediately before `localStorage.setItem`; an overdue command cannot begin a write even if a timeout callback has not run. Client release and Host removal are also rechecked before writing. This is not a remote cancellation acknowledgement: killing the CLI or disconnecting HTTP before expiry can leave a delivered command running until that deadline. A lost write reply or relay timeout returns `host-look-outcome-unknown` where the CLI can still report it; read the same Client/Host before retrying. A write completed before expiry may have succeeded even when its reply was lost. `browser-notifications` continues to own the Notifications section, including permission, activation baseline and cancellation. - Set `DEEPSEEKBOT_HOST` to the running Host's loopback origin, or a tailnet HTTPS origin. A tailnet origin (for example `tailscale serve` in front of a loopback Host) works only when the Host was started with `--trusted-host ..ts.net`; otherwise login succeeds but DSH's `/api` Host fence refuses every request and the CLI returns `host-untrusted`. Supply its current launch token through `DEEPSEEKBOT_HOST_TOKEN` or `--token-file `, never a token argument. `--host ` overrides the environment. Login happens per invocation, cookies remain in memory, and restarting the Host requires its new token. Live commands never open the profile database. See [ADR-0159](adr/0159-live-cli-verbs-ride-the-dsh-http-carrier.md). ### Online creation and headless debugging diff --git a/docs/bot-cli.zh.md b/docs/bot-cli.zh.md index 9220600754..10b04316ee 100644 --- a/docs/bot-cli.zh.md +++ b/docs/bot-cli.zh.md @@ -76,7 +76,6 @@ deepseekbot search CLI 在读取 stdin 和连接前记录绝对期限;Host 将期限限制为 relay 接收后最多八秒。Client 在加载后、获得锁后和实际 `localStorage.setItem` 前复核墙上时间,即使定时回调尚未运行,越期命令也不能开始写入。Client 释放与 Host 移除也在写入前复核。这不代表远端取消已确认:期限前杀掉 CLI 或断开 HTTP,已送达命令仍可能在期限内执行。写入回执丢失或 relay 超时,在 CLI 仍能输出时报告 `host-look-outcome-unknown`;重试前须读回相同 Client/Host。期限内已完成的写入可能成功而回执丢失。Host 设置统一包含外观、通知、模型、用量和存储;离线时仍可进入外观和通知。通知继续使用 `browser-notifications`,保留权限、激活基线和取消语义。 - 浏览器远程图标菜单中的「Host 设置」与以下在线命令使用同一个 Host 所有者。通过 `--host ` 和私有的 `--token-file `(或已有环境变量)指定来源 Host,不要默认指向提供当前网页的本机。模型使用 `model-catalog`、`home-model-set`、`model-presets`、`model-preset-create` 和 `model-preset-update`;用量与 Memory 活动使用 `overview-usage`、`overview-memory`;存储使用 `storage-usage` 及两组清理预览/确认命令。删除仍须传入 `--confirmation-stdin --confirm`,且预览必须来自同一 Host。连接失败或被拒绝时,不会改用本地 Profile。这些命令不读取浏览器的配对密钥,也不修改本设备保存的 Host 外观。 将 `DEEPSEEKBOT_HOST` 设为运行中 Host 的 loopback origin 或 tailnet HTTPS origin。使用 tailnet origin(例如 loopback Host 前面的 `tailscale serve`)时,Host 必须以 `--trusted-host ..ts.net` 启动;否则登录能成功,但 DSH 的 `/api` Host 校验会拒绝每个请求,CLI 返回 `host-untrusted`。`--host ` 可覆盖它。当前启动令牌通过 `DEEPSEEKBOT_HOST_TOKEN` 或 `--token-file <私有文件>` 提供,不得把令牌值放入参数。每次调用重新登录,cookie 只留在内存;Host 重启后须使用新令牌。在线命令不打开 Profile 数据库。参见 [ADR-0159](adr/0159-live-cli-verbs-ride-the-dsh-http-carrier.md)。 diff --git a/packages/client/src/client/appearance-control.ts b/packages/client/src/client/appearance-control.ts index 4d8087a1eb..3d7389905a 100644 --- a/packages/client/src/client/appearance-control.ts +++ b/packages/client/src/client/appearance-control.ts @@ -45,10 +45,20 @@ export function mountAppearanceControl(owner: Appearance, wallpaper?: Wallpaper) if (command.hostLook !== undefined) { const looks = hostLooks(); await looks.ready; - result = await controlHostLook(looks, command.hostLook, command.expectedRevision, { - expiresAt: command.expiresAt, - signal: abort.signal, - }, (hostId) => hostId === getThisHost().id || remoteHosts().getSnapshot().hosts.some((entry) => entry.host.hostId === hostId)); + result = await controlHostLook( + looks, + command.hostLook, + command.expectedRevision, + { + expiresAt: command.expiresAt, + signal: abort.signal, + }, + (hostId) => + hostId === getThisHost().id || + remoteHosts() + .getSnapshot() + .hosts.some((entry) => entry.host.hostId === hostId), + ); } else if (command.notifications !== undefined) { const sources = remoteHosts(); const input = object(command.notifications); diff --git a/packages/client/src/client/host-look-control.ts b/packages/client/src/client/host-look-control.ts index b363f78ddd..9dd7f8ea87 100644 --- a/packages/client/src/client/host-look-control.ts +++ b/packages/client/src/client/host-look-control.ts @@ -1,4 +1,8 @@ -import { isHostColor, isHostIcon, type HostLooks } from '../../../../apps/mobile/src/host/host-look.js'; +import { + isHostColor, + isHostIcon, + type HostLooks, +} from '../../../../apps/mobile/src/host/host-look.js'; import { withHostColor, withHostIcon, @@ -35,9 +39,11 @@ export async function controlHostLook( const keys = Object.keys(patch); if (keys.length === 0 || keys.some((key) => !['name', 'icon', 'color'].includes(key))) throw new AppearanceError('host-look-invalid-input'); - if (('name' in patch && typeof patch.name !== 'string') || + if ( + ('name' in patch && typeof patch.name !== 'string') || ('icon' in patch && !isHostIcon(patch.icon)) || - ('color' in patch && patch.color !== null && !isHostColor(patch.color))) + ('color' in patch && patch.color !== null && !isHostColor(patch.color)) + ) throw new AppearanceError('host-look-invalid-input'); transform = (current) => { if (expectedRevision !== JSON.stringify(current)) @@ -54,9 +60,10 @@ export async function controlHostLook( await looks.ready; check(); if (value.refresh === true) await looks.refresh(check); - const look = transform === undefined - ? await looks.read(hostId, check) - : await looks.update(hostId, transform, check); + const look = + transform === undefined + ? await looks.read(hostId, check) + : await looks.update(hostId, transform, check); return { hostId, look, revision: JSON.stringify(look) }; } catch (error) { if (error instanceof AppearanceError) throw error; diff --git a/packages/client/src/client/host-look-settings.tsx b/packages/client/src/client/host-look-settings.tsx index 675179d0df..1a204b6c35 100644 --- a/packages/client/src/client/host-look-settings.tsx +++ b/packages/client/src/client/host-look-settings.tsx @@ -11,8 +11,16 @@ import { hostLooks, useHostLook, useHostLookError } from './host-looks.js'; import { useBotColorScheme } from './bot-color-scheme.js'; import type { BotHarnessTranslate } from './locale.js'; import { - HOST_COLOR_IDS, HOST_COLORS, HOST_EMOJI, HOST_SYMBOL_IDS, HOST_NAME_MAX, - hostLookName, withHostName, withHostIcon, withHostColor, type HostLook, + HOST_COLOR_IDS, + HOST_COLORS, + HOST_EMOJI, + HOST_SYMBOL_IDS, + HOST_NAME_MAX, + hostLookName, + withHostName, + withHostIcon, + withHostColor, + type HostLook, } from '../../../../apps/mobile/src/ui/design/host-look.js'; const focusRing = { default: 'none', ':focus-visible': `${border.focus} solid ${color.accent}` }; @@ -49,27 +57,51 @@ const styles = stylex.create({ }), }); -function HostNameField({ name, saved, change, t }: { - name: string; saved: string | undefined; change: (transform: (current: HostLook) => HostLook) => Promise; t: BotHarnessTranslate; +function HostNameField({ + name, + saved, + change, + t, +}: { + name: string; + saved: string | undefined; + change: (transform: (current: HostLook) => HostLook) => Promise; + t: BotHarnessTranslate; }) { const [draft, setDraft] = useState(saved ?? ''); const save = async () => { if (draft === (saved ?? '')) return; const name = draft; if (await change((current) => withHostName(current, name))) - setDraft((current) => current === name ? hostLookName(name) ?? '' : current); + setDraft((current) => (current === name ? (hostLookName(name) ?? '') : current)); }; - return { void save(); }} - onKeyDown={(event) => { - if (event.key !== 'Enter' || event.nativeEvent.isComposing) return; - event.preventDefault(); - void save(); - }} />; + return ( + { + void save(); + }} + onKeyDown={(event) => { + if (event.key !== 'Enter' || event.nativeEvent.isComposing) return; + event.preventDefault(); + void save(); + }} + /> + ); } -export function HostLookSettings({ hostId, name, t }: { - hostId: string; name: string; t: BotHarnessTranslate; +export function HostLookSettings({ + hostId, + name, + t, +}: { + hostId: string; + name: string; + t: BotHarnessTranslate; }): ReactElement { const scheme = useBotColorScheme(); const look = useHostLook(hostId); @@ -94,95 +126,115 @@ export function HostLookSettings({ hostId, name, t }: { setError(true); } }; - return -
- {error || storageError ?
{t(storageError === 'host-look-lock-unavailable' ? 'remoteHosts.look.unsupported' : 'remoteHosts.look.failed')}
: null} - -
- {t('remoteHosts.look.symbols')} -
- {HOST_SYMBOL_IDS.map((id) => { - const chosen = icon.kind === 'symbol' && icon.id === id; - return ( - - ); - })} + return ( + +
+ {error || storageError ? ( +
+ + {t( + storageError === 'host-look-lock-unavailable' + ? 'remoteHosts.look.unsupported' + : 'remoteHosts.look.failed', + )} + + +
+ ) : null} + +
+ {t('remoteHosts.look.symbols')} +
+ {HOST_SYMBOL_IDS.map((id) => { + const chosen = icon.kind === 'symbol' && icon.id === id; + return ( + + ); + })} +
-
-
- {t('remoteHosts.look.emoji')} -
- {HOST_EMOJI.map((emoji) => { - const chosen = icon.kind === 'emoji' && icon.emoji === emoji; - return ( - - ); - })} +
+ {t('remoteHosts.look.emoji')} +
+ {HOST_EMOJI.map((emoji) => { + const chosen = icon.kind === 'emoji' && icon.emoji === emoji; + return ( + + ); + })} +
-
-
- {t('remoteHosts.look.color')} -
- - {HOST_COLOR_IDS.map((id) => ( - ))} + {HOST_COLOR_IDS.map((id) => ( + + ))} +
-
- ; + + ); } diff --git a/packages/client/src/client/host-looks.ts b/packages/client/src/client/host-looks.ts index 18a0f627f8..ddd38ac666 100644 --- a/packages/client/src/client/host-looks.ts +++ b/packages/client/src/client/host-looks.ts @@ -108,7 +108,8 @@ export function browserHostLooks( read: async () => { if (storage === undefined) throw new Error('storage-unavailable'); const value: unknown = JSON.parse(storage.getItem(HOST_LOOKS_STORAGE_KEY) ?? '{}'); - if (typeof value !== 'object' || value === null || Array.isArray(value)) throw new Error('storage-invalid'); + if (typeof value !== 'object' || value === null || Array.isArray(value)) + throw new Error('storage-invalid'); return value; }, write: (value, check) => { @@ -121,7 +122,11 @@ export function browserHostLooks( listen: (changed) => { if (typeof window === 'undefined') return () => {}; const listener = (event: StorageEvent) => { - if (event.storageArea === storage && (event.key === HOST_LOOKS_STORAGE_KEY || event.key === null)) changed(); + if ( + event.storageArea === storage && + (event.key === HOST_LOOKS_STORAGE_KEY || event.key === null) + ) + changed(); }; window.addEventListener('storage', listener); return () => window.removeEventListener('storage', listener); diff --git a/packages/client/src/client/host-settings.tsx b/packages/client/src/client/host-settings.tsx index 075c8ca253..011b0d8a13 100644 --- a/packages/client/src/client/host-settings.tsx +++ b/packages/client/src/client/host-settings.tsx @@ -19,9 +19,23 @@ import { StorageSettings } from './storage-settings.js'; import type { HostClient } from '../../../../apps/mobile/src/host/client.js'; const styles = stylex.create({ - identity: { display: 'flex', alignItems: 'center', gap: space.x3, paddingInline: space.x3, minWidth: 0 }, + identity: { + display: 'flex', + alignItems: 'center', + gap: space.x3, + paddingInline: space.x3, + minWidth: 0, + }, label: { display: 'flex', flexDirection: 'column', gap: space.x1, minWidth: 0 }, - name: { color: color.fg, fontSize: text.titleSize, lineHeight: text.titleLine, fontWeight: text.strong, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }, + name: { + color: color.fg, + fontSize: text.titleSize, + lineHeight: text.titleLine, + fontWeight: text.strong, + overflow: 'hidden', + textOverflow: 'ellipsis', + whiteSpace: 'nowrap', + }, kind: { color: color.muted, fontSize: text.metaSize, lineHeight: text.metaLine }, }); @@ -50,25 +64,47 @@ export function HostSettings({ const displayName = shownHostName(look, name); const [section, setSection] = useState('appearance'); const sections = [ - { id: 'appearance', label: t('remoteHosts.look.appearance'), icon: }, - ...(local ? [] : [ - { id: 'notifications', label: t('remoteHosts.notifications'), icon: }, - { id: 'models', label: t('remoteHosts.settings.models'), icon: }, - { id: 'usage', label: t('overviewUsage.title'), icon: }, - { id: 'storage', label: t('storage.title'), icon: }, - ]), + { + id: 'appearance', + label: t('remoteHosts.look.appearance'), + icon: , + }, + ...(local + ? [] + : [ + { + id: 'notifications', + label: t('remoteHosts.notifications'), + icon: , + }, + { + id: 'models', + label: t('remoteHosts.settings.models'), + icon: , + }, + { + id: 'usage', + label: t('overviewUsage.title'), + icon: , + }, + { id: 'storage', label: t('storage.title'), icon: }, + ]), ]; if (!local && remote === undefined) return null; return ( - - - {displayName} - {t('remoteHosts.settings')} - -
} + caption={ +
+ + + + {displayName} + + {t('remoteHosts.settings')} + +
+ } sections={sections} activeId={section} onSelect={setSection} diff --git a/packages/client/src/client/host-tabs.tsx b/packages/client/src/client/host-tabs.tsx index d9a824b299..4aad89b729 100644 --- a/packages/client/src/client/host-tabs.tsx +++ b/packages/client/src/client/host-tabs.tsx @@ -17,7 +17,11 @@ import { useThisHost } from './this-host.js'; export { useThisHost } from './this-host.js'; import { HostGlyph } from './host-glyph.js'; export { HostGlyph } from './host-glyph.js'; -import { DEFAULT_HOST_LOOK, shownHostName, type HostLook } from '../../../../apps/mobile/src/ui/design/host-look.js'; +import { + DEFAULT_HOST_LOOK, + shownHostName, + type HostLook, +} from '../../../../apps/mobile/src/ui/design/host-look.js'; import { hostLooks, unusedHostLook, useHostLook, useHostName } from './host-looks.js'; const focusRing = { default: 'none', ':focus-visible': `${border.focus} solid ${color.accent}` }; @@ -81,7 +85,6 @@ const styles = stylex.create({ fontSize: text.metaSize, lineHeight: text.metaLine, }, - }); export function useRemoteHosts() { @@ -156,15 +159,37 @@ function HostTab({ ); } - -function RemoteHostTab({ remote, selected, onMenu, t }: { - remote: RemoteHost; selected: boolean; onMenu: (point: MenuPoint) => void; t: BotHarnessTranslate; +function RemoteHostTab({ + remote, + selected, + onMenu, + t, +}: { + remote: RemoteHost; + selected: boolean; + onMenu: (point: MenuPoint) => void; + t: BotHarnessTranslate; }) { const look = useHostLook(remote.host.hostId); const name = shownHostName(look, remote.host.hostName); const unread = unreadCount(remote); - return 0 ? t('remoteHosts.unreadNamed', { name, count: unread }) : name} - look={look} selected={selected} offline={!online(remote)} unread={unread} onMenu={onMenu} />; + return ( + 0 + ? t('remoteHosts.unreadNamed', { name, count: unread }) + : name + } + look={look} + selected={selected} + offline={!online(remote)} + unread={unread} + onMenu={onMenu} + /> + ); } export function HostTabs({ t }: { t: BotHarnessTranslate }): ReactElement | null { @@ -181,7 +206,10 @@ export function HostTabs({ t }: { t: BotHarnessTranslate }): ReactElement | null const thisName = shownHostName(localLook, thisHost.name ?? t('remoteHosts.this')); const selectedRemote = snapshot.hosts.find((remote) => remote.host.hostId === snapshot.tab); const menuRemote = snapshot.hosts.find((remote) => remote.host.hostId === menu?.hostId); - const selectedName = useHostName(selectedRemote?.host.hostId, selectedRemote?.host.hostName ?? ''); + const selectedName = useHostName( + selectedRemote?.host.hostId, + selectedRemote?.host.hostName ?? '', + ); const removingName = useHostName(removing?.host.hostId, removing?.host.hostName ?? ''); if (snapshot.hosts.length === 0) return null; return ( @@ -210,8 +238,13 @@ export function HostTabs({ t }: { t: BotHarnessTranslate }): ReactElement | null onMenu={(point) => setMenu({ hostId: thisId, point })} /> {snapshot.hosts.map((remote) => ( - setMenu({ hostId: remote.host.hostId, point })} t={t} /> + setMenu({ hostId: remote.host.hostId, point })} + t={t} + /> ))}
{selectedRemote !== undefined && !online(selectedRemote) ? ( @@ -232,14 +265,16 @@ export function HostTabs({ t }: { t: BotHarnessTranslate }): ReactElement | null { id: 'settings', label: t('remoteHosts.settings') }, ...(menuRemote === undefined ? [] - : [ - { id: 'remove', label: t('remoteHosts.remove.confirm'), danger: true }, - ]), + : [{ id: 'remove', label: t('remoteHosts.remove.confirm'), danger: true }]), ]} onSelect={(id) => { setMenu(undefined); if (id === 'settings' && (menuRemote !== undefined || menu.hostId === thisId)) - setSettings({ hostId: menu.hostId, name: menuRemote?.host.hostName ?? thisHost.name ?? thisName, local: menuRemote === undefined }); + setSettings({ + hostId: menu.hostId, + name: menuRemote?.host.hostName ?? thisHost.name ?? thisName, + local: menuRemote === undefined, + }); if (id === 'remove' && menuRemote !== undefined) setRemoving(menuRemote); }} onClose={() => setMenu(undefined)} @@ -341,7 +376,9 @@ export function AddRemoteHostDialog({ .map((remote) => looks.look(remote.host.hostId)), ]; try { - await looks.update(result.host.hostId, (current) => current === DEFAULT_HOST_LOOK ? unusedHostLook(used) : current); + await looks.update(result.host.hostId, (current) => + current === DEFAULT_HOST_LOOK ? unusedHostLook(used) : current, + ); } catch {} onClose(); }); @@ -460,9 +497,7 @@ export function RemoteHostRows({ className={`bh-channel-row${row.unread > 0 ? ' bh-has-unread' : ''}${sameTarget(open, row) ? ' bh-selected' : ''}`} data-remote-row={row.key} aria-label={ - showSource - ? t('remoteHosts.rowLabel', { name: row.title, host: name }) - : row.title + showSource ? t('remoteHosts.rowLabel', { name: row.title, host: name }) : row.title } onClick={() => { onOpen?.(); diff --git a/packages/client/src/client/locale.ts b/packages/client/src/client/locale.ts index ad3683a279..dea99127c3 100644 --- a/packages/client/src/client/locale.ts +++ b/packages/client/src/client/locale.ts @@ -8369,8 +8369,10 @@ My relationship with you, established lore and topics to avoid: [fill in]. 'remoteHosts.look.appearance': 'Appearance', 'remoteHosts.look.name': 'Name', 'remoteHosts.look.hint': 'Saved in this browser only.', - 'remoteHosts.look.failed': 'Could not read or save this browser’s appearance. Refresh and try again.', - 'remoteHosts.look.unsupported': 'This browser cannot safely save appearance. Use a browser with Web Locks support.', + 'remoteHosts.look.failed': + 'Could not read or save this browser’s appearance. Refresh and try again.', + 'remoteHosts.look.unsupported': + 'This browser cannot safely save appearance. Use a browser with Web Locks support.', 'remoteHosts.look.refresh': 'Refresh appearance', 'remoteHosts.settings.title': 'Settings for {name}', 'remoteHosts.look.symbol.desktop': 'Desktop', diff --git a/packages/client/src/client/remote-conversation-view.tsx b/packages/client/src/client/remote-conversation-view.tsx index f61a31a9a2..b0c0ae708f 100644 --- a/packages/client/src/client/remote-conversation-view.tsx +++ b/packages/client/src/client/remote-conversation-view.tsx @@ -180,7 +180,10 @@ export function RemoteConversationView({ }): ReactElement { const sources = remoteHosts(); const { hosts, avatars } = useRemoteHosts(); - const hostName = useHostName(target.hostId, hosts.find((entry) => entry.host.hostId === target.hostId)?.host.hostName ?? ''); + const hostName = useHostName( + target.hostId, + hosts.find((entry) => entry.host.hostId === target.hostId)?.host.hostName ?? '', + ); const remote = hosts.find((candidate) => candidate.host.hostId === target.hostId); const conversation = useMemo( () => sources.conversation(target), diff --git a/packages/client/src/client/remote-notification-settings.tsx b/packages/client/src/client/remote-notification-settings.tsx index b3001be454..9f940ece66 100644 --- a/packages/client/src/client/remote-notification-settings.tsx +++ b/packages/client/src/client/remote-notification-settings.tsx @@ -23,7 +23,10 @@ export function RemoteNotificationSettings({ notifications: RemoteNotifications; t: BotHarnessTranslate; }) { - const mount = useMountedResource(() => () => notifications.cancel(hostId), [notifications, hostId]); + const mount = useMountedResource( + () => () => notifications.cancel(hostId), + [notifications, hostId], + ); const snapshot = useSyncExternalStore(notifications.subscribe, notifications.getSnapshot); const choice = notifications.choice(hostId); const [busy, setBusy] = useState(false); diff --git a/packages/client/test/host-look-control.test.ts b/packages/client/test/host-look-control.test.ts index a995a7ee24..96bbdb1a77 100644 --- a/packages/client/test/host-look-control.test.ts +++ b/packages/client/test/host-look-control.test.ts @@ -5,7 +5,9 @@ import { controlHostLook } from '../src/client/host-look-control.js'; async function setup() { let stored: Record = {}; - const write = vi.fn((value: Record) => { stored = value; }); + const write = vi.fn((value: Record) => { + stored = value; + }); const looks = createHostLooks({ read: async () => stored, write }); await looks.ready; const abort = new AbortController(); @@ -21,15 +23,36 @@ describe('Host look Client control', () => { it('writes the shared owner and persists the same normalized local name, icon and colour', async () => { const { looks, write, request, available, read } = await setup(); const before = await read(); - const saved = await controlHostLook(looks, { hostId: 'host-b', patch: { - name: ' Studio ', icon: { kind: 'emoji', emoji: '🏠' }, color: 'teal', - } }, before.revision, request, available); - expect(saved.look).toEqual({ name: 'Studio', icon: { kind: 'emoji', emoji: '🏠' }, color: 'teal' }); + const saved = await controlHostLook( + looks, + { + hostId: 'host-b', + patch: { + name: ' Studio ', + icon: { kind: 'emoji', emoji: '🏠' }, + color: 'teal', + }, + }, + before.revision, + request, + available, + ); + expect(saved.look).toEqual({ + name: 'Studio', + icon: { kind: 'emoji', emoji: '🏠' }, + color: 'teal', + }); expect(looks.look('host-b')).toEqual(saved.look); expect(write).toHaveBeenLastCalledWith({ 'host-b': saved.look }, expect.any(Function)); expect(shownHostName(saved.look, 'system-hostname')).toBe('Studio'); expect(looks.look('host-a')).toEqual(before.look); - const reset = await controlHostLook(looks, { hostId: 'host-b', patch: { name: '', color: null } }, saved.revision, request, available); + const reset = await controlHostLook( + looks, + { hostId: 'host-b', patch: { name: '', color: null } }, + saved.revision, + request, + available, + ); expect(reset.look).toEqual({ icon: saved.look.icon }); expect(shownHostName(reset.look, 'system-hostname')).toBe('system-hostname'); }); @@ -38,18 +61,35 @@ describe('Host look Client control', () => { const { looks, write, request, available, read } = await setup(); const before = await read(); looks.set('host-b', { ...before.look, name: 'UI change' }); - await expect(controlHostLook(looks, { hostId: 'host-b', patch: { name: 'CLI change' } }, before.revision, request, available)) - .rejects.toThrow('host-look-revision-stale'); + await expect( + controlHostLook( + looks, + { hostId: 'host-b', patch: { name: 'CLI change' } }, + before.revision, + request, + available, + ), + ).rejects.toThrow('host-look-revision-stale'); const current = await read(); - write.mockImplementation(() => { throw new Error('quota'); }); - await expect(controlHostLook(looks, { hostId: 'host-b', patch: { color: 'blue' } }, current.revision, request, available)) - .rejects.toThrow('host-look-storage-failed'); + write.mockImplementation(() => { + throw new Error('quota'); + }); + await expect( + controlHostLook( + looks, + { hostId: 'host-b', patch: { color: 'blue' } }, + current.revision, + request, + available, + ), + ).rejects.toThrow('host-look-storage-failed'); expect(looks.look('host-b')).toEqual(current.look); await expect(read()).rejects.toThrow('host-look-storage-failed'); }); it.each(['expired', 'cancelled', 'removed', 'expires-before-write', 'removed-before-write'])( - 'does not persist a %s request', async (reason) => { + 'does not persist a %s request', + async (reason) => { const { write, looks, request, abort, read } = await setup(); const before = await read(); if (reason === 'expired') request.expiresAt = Date.now(); @@ -60,19 +100,40 @@ describe('Host look Client control', () => { if (reason === 'expires-before-write') request.expiresAt = Date.now(); return reason !== 'removed' && (reason !== 'removed-before-write' || calls === 1); }; - await expect(controlHostLook(looks, { hostId: 'host-b', patch: { name: 'late' } }, before.revision, request, available)).rejects.toThrow(); + await expect( + controlHostLook( + looks, + { hostId: 'host-b', patch: { name: 'late' } }, + before.revision, + request, + available, + ), + ).rejects.toThrow(); expect(write).not.toHaveBeenCalled(); expect(looks.look('host-b')).toBe(before.look); }, ); - it.each([{ name: 42 }, { icon: { kind: 'symbol', id: 'unknown' } }, { color: 'invalid' }, { arbitrary: true }, null, []])( - 'rejects invalid input before storage: %j', async (patch) => { - const { write, looks, request, available, read } = await setup(); - await expect(controlHostLook(looks, { hostId: 'host-b', patch }, (await read()).revision, request, available)).rejects.toThrow('host-look-invalid-input'); - expect(write).not.toHaveBeenCalled(); - }, - ); + it.each([ + { name: 42 }, + { icon: { kind: 'symbol', id: 'unknown' } }, + { color: 'invalid' }, + { arbitrary: true }, + null, + [], + ])('rejects invalid input before storage: %j', async (patch) => { + const { write, looks, request, available, read } = await setup(); + await expect( + controlHostLook( + looks, + { hostId: 'host-b', patch }, + (await read()).revision, + request, + available, + ), + ).rejects.toThrow('host-look-invalid-input'); + expect(write).not.toHaveBeenCalled(); + }); it('refuses reads and writes after failed hydration until an explicit refresh succeeds', async () => { const stored = { 'host-b': { name: 'Stored', icon: { kind: 'symbol', id: 'server' } } }; @@ -81,14 +142,26 @@ describe('Host look Client control', () => { const looks = createHostLooks({ read, write }); await expect(looks.ready).resolves.toBeUndefined(); const request = { signal: new AbortController().signal, expiresAt: Date.now() + 8000 }; - const control = (input: unknown, revision?: string) => controlHostLook(looks, input, revision, request, () => true); - await expect(control({ hostId: 'host-b' })).rejects.toMatchObject({ code: 'host-look-storage-read-failed' }); + const control = (input: unknown, revision?: string) => + controlHostLook(looks, input, revision, request, () => true); + await expect(control({ hostId: 'host-b' })).rejects.toMatchObject({ + code: 'host-look-storage-read-failed', + }); read.mockResolvedValue(stored); - await expect(control({ hostId: 'host-b', patch: { name: 'Overwrite' } }, JSON.stringify(looks.look('host-b')))).rejects.toThrow('host-look-storage-read-failed'); + await expect( + control( + { hostId: 'host-b', patch: { name: 'Overwrite' } }, + JSON.stringify(looks.look('host-b')), + ), + ).rejects.toThrow('host-look-storage-read-failed'); expect(write).not.toHaveBeenCalled(); - expect(await control({ hostId: 'host-b', refresh: true })).toMatchObject({ look: stored['host-b'] }); + expect(await control({ hostId: 'host-b', refresh: true })).toMatchObject({ + look: stored['host-b'], + }); read.mockRejectedValue(new Error('locked read failed')); - await expect(control({ hostId: 'host-b', patch: { name: 'Overwrite' } }, JSON.stringify(stored['host-b']))).rejects.toThrow('host-look-storage-read-failed'); + await expect( + control({ hostId: 'host-b', patch: { name: 'Overwrite' } }, JSON.stringify(stored['host-b'])), + ).rejects.toThrow('host-look-storage-read-failed'); expect(looks.look('host-b')).toEqual(stored['host-b']); expect(write).not.toHaveBeenCalled(); }); @@ -98,19 +171,33 @@ describe('Host look Client control', () => { vi.setSystemTime(1000); let release!: () => void; let entered!: () => void; - const waiting = new Promise((resolve) => { entered = resolve; }); + const waiting = new Promise((resolve) => { + entered = resolve; + }); let hold = false; const write = vi.fn(); const looks = createHostLooks({ - read: async () => ({}), write, + read: async () => ({}), + write, transaction: async (work) => { - if (hold) { entered(); await new Promise((resolve) => { release = resolve; }); } + if (hold) { + entered(); + await new Promise((resolve) => { + release = resolve; + }); + } await work(); }, }); await looks.ready; hold = true; - const pending = controlHostLook(looks, { hostId: 'host-b', patch: { name: 'Late' } }, JSON.stringify(looks.look('host-b')), { signal: new AbortController().signal, expiresAt: 1100 }, () => true); + const pending = controlHostLook( + looks, + { hostId: 'host-b', patch: { name: 'Late' } }, + JSON.stringify(looks.look('host-b')), + { signal: new AbortController().signal, expiresAt: 1100 }, + () => true, + ); const refused = expect(pending).rejects.toThrow('appearance-request-stale'); await waiting; vi.setSystemTime(1101); diff --git a/packages/client/test/host-look-owner.test.ts b/packages/client/test/host-look-owner.test.ts index 4d48be41de..d6a968a27a 100644 --- a/packages/client/test/host-look-owner.test.ts +++ b/packages/client/test/host-look-owner.test.ts @@ -7,7 +7,8 @@ it('preserves the native synchronous set and one-time legacy migration contracts const forgetLegacyImages = vi.fn(); const looks = createHostLooks({ read: async () => ({ a: { name: 'Phone', banner: { kind: 'color', color: '#2f80ed' } } }), - write, forgetLegacyImages, + write, + forgetLegacyImages, }); await looks.ready; expect(looks.look('a')).toEqual({ name: 'Phone', icon: DEFAULT_HOST_LOOK.icon, color: 'blue' }); @@ -29,5 +30,8 @@ it('settles native readiness after a failed read without permitting a default-ma read.mockResolvedValue({ a: { ...DEFAULT_HOST_LOOK, name: 'Existing' } }); await looks.refresh(); looks.set('b', { ...DEFAULT_HOST_LOOK, name: 'Recovered' }); - expect(write).toHaveBeenLastCalledWith({ a: { ...DEFAULT_HOST_LOOK, name: 'Existing' }, b: { ...DEFAULT_HOST_LOOK, name: 'Recovered' } }); + expect(write).toHaveBeenLastCalledWith({ + a: { ...DEFAULT_HOST_LOOK, name: 'Existing' }, + b: { ...DEFAULT_HOST_LOOK, name: 'Recovered' }, + }); }); diff --git a/packages/client/test/host-look-r1-regression.test.ts b/packages/client/test/host-look-r1-regression.test.ts index 42079494d9..cb603609f1 100644 --- a/packages/client/test/host-look-r1-regression.test.ts +++ b/packages/client/test/host-look-r1-regression.test.ts @@ -9,7 +9,9 @@ it('R1 P2-1 rejects a stale persisted revision across independent owners', async let tail = Promise.resolve(); const storage = { read: async () => stored, - write: (value: Record) => { stored = value; }, + write: (value: Record) => { + stored = value; + }, transaction: (work: () => Promise) => { const pending = tail.then(work); tail = pending.catch(() => {}); @@ -21,8 +23,24 @@ it('R1 P2-1 rejects a stale persisted revision across independent owners', async await Promise.all([a.ready, b.ready]); const request = { signal: new AbortController().signal, expiresAt: Date.now() + 8000 }; const before = await controlHostLook(b, { hostId: 'b' }, undefined, request, () => true); - await controlHostLook(a, { hostId: 'b', patch: { name: 'A saved' } }, before.revision, request, () => true); - await expect(Promise.resolve().then(() => controlHostLook(b, { hostId: 'b', patch: { name: 'B stale' } }, before.revision, request, () => true))).rejects.toThrow('host-look-revision-stale'); + await controlHostLook( + a, + { hostId: 'b', patch: { name: 'A saved' } }, + before.revision, + request, + () => true, + ); + await expect( + Promise.resolve().then(() => + controlHostLook( + b, + { hostId: 'b', patch: { name: 'B stale' } }, + before.revision, + request, + () => true, + ), + ), + ).rejects.toThrow('host-look-revision-stale'); expect(stored.b?.name).toBe('A saved'); }); @@ -31,20 +49,52 @@ it('R1 P2-2 does not submit a write after its CLI expiry is spent on stdin', asy const http = vi.fn(async () => ({ bytes: new TextEncoder().encode('{}') })); const connect = vi.fn(async () => ({ http })); try { - await expect(runHostLook([], { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true, 'expected-revision': 'rev' }, { - readStdin: async () => { now.mockReturnValue(1101); return '{"name":"Late"}'; }, - }, connect, 1100)).rejects.toMatchObject({ code: 'appearance-request-stale' }); + await expect( + runHostLook( + [], + { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true, 'expected-revision': 'rev' }, + { + readStdin: async () => { + now.mockReturnValue(1101); + return '{"name":"Late"}'; + }, + }, + connect, + 1100, + ), + ).rejects.toMatchObject({ code: 'appearance-request-stale' }); expect(connect).not.toHaveBeenCalled(); expect(http).not.toHaveBeenCalled(); - } finally { now.mockRestore(); } + } finally { + now.mockRestore(); + } }); it('R1 P2-3 refuses a default read and overwrite after failed initial storage read', async () => { const write = vi.fn(); - const looks = createHostLooks({ read: async () => { throw new Error('read denied'); }, write }); + const looks = createHostLooks({ + read: async () => { + throw new Error('read denied'); + }, + write, + }); await looks.ready; const request = { signal: new AbortController().signal, expiresAt: Date.now() + 8000 }; - await expect(Promise.resolve().then(() => controlHostLook(looks, { hostId: 'b' }, undefined, request, () => true))).rejects.toThrow('host-look-storage-read-failed'); - await expect(Promise.resolve().then(() => controlHostLook(looks, { hostId: 'b', patch: { name: 'Unsafe' } }, JSON.stringify(DEFAULT_HOST_LOOK), request, () => true))).rejects.toThrow('host-look-storage-read-failed'); + await expect( + Promise.resolve().then(() => + controlHostLook(looks, { hostId: 'b' }, undefined, request, () => true), + ), + ).rejects.toThrow('host-look-storage-read-failed'); + await expect( + Promise.resolve().then(() => + controlHostLook( + looks, + { hostId: 'b', patch: { name: 'Unsafe' } }, + JSON.stringify(DEFAULT_HOST_LOOK), + request, + () => true, + ), + ), + ).rejects.toThrow('host-look-storage-read-failed'); expect(write).not.toHaveBeenCalled(); }); diff --git a/packages/client/test/host-look-relay.test.ts b/packages/client/test/host-look-relay.test.ts index 9a23e16bf4..fac22d700a 100644 --- a/packages/client/test/host-look-relay.test.ts +++ b/packages/client/test/host-look-relay.test.ts @@ -15,18 +15,26 @@ afterEach(() => { }); it.each(['on-time', 'deadline', 'walltime', 'unmount', 'removed'] as const)( - 'checks %s after hydration at the existing relay boundary', async (reason) => { + 'checks %s after hydration at the existing relay boundary', + async (reason) => { vi.useFakeTimers(); const host = createAppearanceControl(); let hydrate!: (value: unknown) => void; const stored = { name: 'Stored', icon: { kind: 'symbol', id: 'server' }, color: 'teal' }; const write = vi.fn(); const read = vi.fn<() => Promise>().mockResolvedValue({ b: stored }); - read.mockImplementationOnce(() => new Promise((resolve) => { hydrate = resolve; })); + read.mockImplementationOnce( + () => + new Promise((resolve) => { + hydrate = resolve; + }), + ); const looks = createHostLooks({ read, write }); shared.set('looks', looks); let paired = true; - shared.set('sources', { getSnapshot: () => ({ hosts: paired ? [{ host: { hostId: 'b' } }] : [] }) }); + shared.set('sources', { + getSnapshot: () => ({ hosts: paired ? [{ host: { hostId: 'b' } }] : [] }), + }); const actions: string[] = []; vi.stubGlobal('location', { protocol: 'http:' }); vi.stubGlobal('fetch', async (_url: string, init?: RequestInit) => { @@ -37,12 +45,18 @@ it.each(['on-time', 'deadline', 'walltime', 'unmount', 'removed'] as const)( try { await vi.waitFor(() => expect(actions).toContain('poll')); const { clients } = await (await host.fetch(new Request('http://localhost'))).json(); - const response = host.fetch(new Request('http://localhost/api/botharness/appearance-control', { - method: 'POST', body: JSON.stringify({ - action: 'request', clientId: clients[0].id, expiresAt: Date.now() + 8000, expectedRevision: JSON.stringify(stored), - hostLook: { hostId: 'b', patch: { name: 'Studio' } }, + const response = host.fetch( + new Request('http://localhost/api/botharness/appearance-control', { + method: 'POST', + body: JSON.stringify({ + action: 'request', + clientId: clients[0].id, + expiresAt: Date.now() + 8000, + expectedRevision: JSON.stringify(stored), + hostLook: { hostId: 'b', patch: { name: 'Studio' } }, + }), }), - })); + ); await vi.advanceTimersByTimeAsync(0); expect(write).not.toHaveBeenCalled(); if (reason === 'deadline') await vi.advanceTimersByTimeAsync(8000); @@ -62,7 +76,16 @@ it.each(['on-time', 'deadline', 'walltime', 'unmount', 'removed'] as const)( expect(write).toHaveBeenCalledTimes(1); expect(looks.look('b').name).toBe('Studio'); } else { - expect(result).toMatchObject({ error: { code: reason === 'removed' ? 'host-look-host-unknown' : reason === 'deadline' || reason === 'walltime' ? 'appearance-client-timeout' : 'appearance-client-stale' } }); + expect(result).toMatchObject({ + error: { + code: + reason === 'removed' + ? 'host-look-host-unknown' + : reason === 'deadline' || reason === 'walltime' + ? 'appearance-client-timeout' + : 'appearance-client-stale', + }, + }); expect(write).not.toHaveBeenCalled(); expect(looks.look('b')).toEqual(stored); if (reason !== 'removed') expect(actions).not.toContain('reply'); @@ -74,29 +97,50 @@ it.each(['on-time', 'deadline', 'walltime', 'unmount', 'removed'] as const)( }, ); -it.each([100, 20000])('caps the Host relay deadline using the caller absolute expiry (%s ms)', async (duration) => { - vi.useFakeTimers(); - vi.setSystemTime(1000); - const host = createAppearanceControl(); - const post = (body: unknown) => host.fetch(new Request('http://localhost', { method: 'POST', body: JSON.stringify(body) })); - try { - const registration = await (await post({ action: 'register', platform: 'web' })).json(); - const poll = post({ action: 'poll', ...registration }); - await vi.advanceTimersByTimeAsync(0); - const pending = post({ action: 'request', clientId: registration.clientId, expiresAt: 1000 + duration, hostLook: { hostId: 'b' } }); - const { command } = await (await poll).json(); - expect(command.expiresAt).toBe(1000 + Math.min(duration, 8000)); - await vi.advanceTimersByTimeAsync(Math.min(duration, 8000)); - expect(await (await pending).json()).toMatchObject({ error: { code: 'appearance-client-timeout' } }); - } finally { host.dispose(); } -}); +it.each([100, 20000])( + 'caps the Host relay deadline using the caller absolute expiry (%s ms)', + async (duration) => { + vi.useFakeTimers(); + vi.setSystemTime(1000); + const host = createAppearanceControl(); + const post = (body: unknown) => + host.fetch(new Request('http://localhost', { method: 'POST', body: JSON.stringify(body) })); + try { + const registration = await (await post({ action: 'register', platform: 'web' })).json(); + const poll = post({ action: 'poll', ...registration }); + await vi.advanceTimersByTimeAsync(0); + const pending = post({ + action: 'request', + clientId: registration.clientId, + expiresAt: 1000 + duration, + hostLook: { hostId: 'b' }, + }); + const { command } = await (await poll).json(); + expect(command.expiresAt).toBe(1000 + Math.min(duration, 8000)); + await vi.advanceTimersByTimeAsync(Math.min(duration, 8000)); + expect(await (await pending).json()).toMatchObject({ + error: { code: 'appearance-client-timeout' }, + }); + } finally { + host.dispose(); + } + }, +); it('refuses a late Host look command before delivering it to the Client', async () => { const host = createAppearanceControl(() => 1000); - const post = (body: unknown) => host.fetch(new Request('http://localhost', { method: 'POST', body: JSON.stringify(body) })); + const post = (body: unknown) => + host.fetch(new Request('http://localhost', { method: 'POST', body: JSON.stringify(body) })); try { const registration = await (await post({ action: 'register', platform: 'web' })).json(); - const response = await post({ action: 'request', clientId: registration.clientId, expiresAt: 999, hostLook: { hostId: 'b', patch: { name: 'Late' } } }); + const response = await post({ + action: 'request', + clientId: registration.clientId, + expiresAt: 999, + hostLook: { hostId: 'b', patch: { name: 'Late' } }, + }); expect(await response.json()).toMatchObject({ error: { code: 'appearance-request-stale' } }); - } finally { host.dispose(); } + } finally { + host.dispose(); + } }); diff --git a/packages/client/test/host-looks.test.ts b/packages/client/test/host-looks.test.ts index a53d9bf853..3a2badea22 100644 --- a/packages/client/test/host-looks.test.ts +++ b/packages/client/test/host-looks.test.ts @@ -1,7 +1,12 @@ import { afterEach, describe, expect, it, vi } from 'vitest'; import { controlHostLook } from '../src/client/host-look-control.js'; -import { DEFAULT_HOST_LOOK, withHostColor, withHostIcon, withHostName } from '../../../apps/mobile/src/ui/design/host-look.js'; +import { + DEFAULT_HOST_LOOK, + withHostColor, + withHostIcon, + withHostName, +} from '../../../apps/mobile/src/ui/design/host-look.js'; import { HOST_LOOKS_STORAGE_KEY, browserHostLooks, @@ -27,11 +32,15 @@ function memoryStorage() { const values = new Map(); return { getItem: vi.fn((key: string) => values.get(key) ?? null), - setItem: vi.fn((key: string, value: string) => { values.set(key, value); }), + setItem: vi.fn((key: string, value: string) => { + values.set(key, value); + }), clear: () => values.clear(), removeItem: (key: string) => values.delete(key), key: (index: number) => [...values.keys()][index] ?? null, - get length() { return values.size; }, + get length() { + return values.size; + }, }; } @@ -58,7 +67,15 @@ describe('browserHostLooks', () => { const request = { signal: new AbortController().signal, expiresAt: Date.now() + 8000 }; const before = await controlHostLook(b, { hostId: 'b' }, undefined, request, () => true); await a.update('b', (current) => withHostName(current, 'Tab A')); - await expect(controlHostLook(b, { hostId: 'b', patch: { name: 'Tab B' } }, before.revision, request, () => true)).rejects.toThrow('host-look-revision-stale'); + await expect( + controlHostLook( + b, + { hostId: 'b', patch: { name: 'Tab B' } }, + before.revision, + request, + () => true, + ), + ).rejects.toThrow('host-look-revision-stale'); await a.update('a', (current) => withHostName(current, 'Other Host')); await b.update('b', (current) => withHostColor(current, 'teal')); await Promise.all([ @@ -67,8 +84,17 @@ describe('browserHostLooks', () => { ]); const stored = JSON.parse(storage.getItem(HOST_LOOKS_STORAGE_KEY) ?? '{}'); expect(stored.a.name).toBe('Other Host'); - expect(stored.b).toEqual({ name: 'Latest', icon: { kind: 'emoji', emoji: '🏠' }, color: 'teal' }); - expect(locks.mock.calls.every(([name, options]) => name === HOST_LOOKS_STORAGE_KEY && JSON.stringify(options) === '{"mode":"exclusive"}')).toBe(true); + expect(stored.b).toEqual({ + name: 'Latest', + icon: { kind: 'emoji', emoji: '🏠' }, + color: 'teal', + }); + expect( + locks.mock.calls.every( + ([name, options]) => + name === HOST_LOOKS_STORAGE_KEY && JSON.stringify(options) === '{"mode":"exclusive"}', + ), + ).toBe(true); }); it('refuses unavailable Web Locks without reading or writing storage', async () => { @@ -77,7 +103,9 @@ describe('browserHostLooks', () => { const looks = browserHostLooks(storage); await looks.ready; await expect(looks.read('b')).rejects.toThrow('host-look-lock-unavailable'); - await expect(looks.update('b', (current) => withHostName(current, 'Unsafe'))).rejects.toThrow('host-look-lock-unavailable'); + await expect(looks.update('b', (current) => withHostName(current, 'Unsafe'))).rejects.toThrow( + 'host-look-lock-unavailable', + ); expect(storage.getItem).not.toHaveBeenCalled(); expect(storage.setItem).not.toHaveBeenCalled(); }); @@ -92,12 +120,17 @@ describe('browserHostLooks', () => { await expect(looks.read('b')).rejects.toThrow('host-look-storage-read-failed'); expect(looks.look('b')).toBe(known); storage.setItem.mockClear(); - await expect(looks.update('b', (current) => withHostName(current, 'Unsafe'))).rejects.toThrow('host-look-storage-read-failed'); + await expect(looks.update('b', (current) => withHostName(current, 'Unsafe'))).rejects.toThrow( + 'host-look-storage-read-failed', + ); expect(storage.setItem).not.toHaveBeenCalled(); storage.setItem(HOST_LOOKS_STORAGE_KEY, JSON.stringify({ b: known, a: DEFAULT_HOST_LOOK })); await looks.refresh(); await looks.update('b', (current) => withHostColor(current, 'blue')); - expect(JSON.parse(storage.getItem(HOST_LOOKS_STORAGE_KEY) ?? '{}')).toEqual({ b: { ...known, color: 'blue' }, a: DEFAULT_HOST_LOOK }); + expect(JSON.parse(storage.getItem(HOST_LOOKS_STORAGE_KEY) ?? '{}')).toEqual({ + b: { ...known, color: 'blue' }, + a: DEFAULT_HOST_LOOK, + }); }); it('checks expiry immediately before localStorage setItem', async () => { @@ -113,9 +146,15 @@ describe('browserHostLooks', () => { return result; }); try { - await expect(looks.update('b', (current) => withHostName(current, 'Late'), () => { - if (expired) throw new Error('appearance-request-stale'); - })).rejects.toThrow('appearance-request-stale'); + await expect( + looks.update( + 'b', + (current) => withHostName(current, 'Late'), + () => { + if (expired) throw new Error('appearance-request-stale'); + }, + ), + ).rejects.toThrow('appearance-request-stale'); expect(storage.setItem).not.toHaveBeenCalled(); expect(looks.error()).toBeUndefined(); } finally { diff --git a/packages/core/src/appearance/control.ts b/packages/core/src/appearance/control.ts index 96164a47ff..f99c3bace5 100644 --- a/packages/core/src/appearance/control.ts +++ b/packages/core/src/appearance/control.ts @@ -71,23 +71,36 @@ export function createAppearanceControl(now = Date.now) { if (!client) return refused('appearance-client-stale', 404); if (input.action === 'request') { if ( - [input.patch, input.wallpaper, input.recovery, input.notifications, input.hostLook].filter( - (v) => v !== undefined, - ).length > 1 + [ + input.patch, + input.wallpaper, + input.recovery, + input.notifications, + input.hostLook, + ].filter((v) => v !== undefined).length > 1 ) return refused('appearance-invalid-input', 400); if (input.patch !== undefined && typeof input.expectedRevision !== 'string') return refused('appearance-revision-required', 400); - if (input.hostLook !== undefined && - (typeof input.expiresAt !== 'number' || !Number.isFinite(input.expiresAt) || input.expiresAt <= now())) + if ( + input.hostLook !== undefined && + (typeof input.expiresAt !== 'number' || + !Number.isFinite(input.expiresAt) || + input.expiresAt <= now()) + ) return refused('appearance-request-stale'); - const expiresAt = input.hostLook === undefined ? now() + 8000 : Math.min(now() + 8000, input.expiresAt as number); + const expiresAt = + input.hostLook === undefined + ? now() + 8000 + : Math.min(now() + 8000, input.expiresAt as number); if (client.pending) return refused('appearance-client-busy'); if (!client.poll) return refused('appearance-client-unavailable'); const command: Command = { id: randomUUID(), expiresAt, - ...(input.hostLook === undefined ? {} : { hostLook: input.hostLook, expectedRevision: input.expectedRevision as string }), + ...(input.hostLook === undefined + ? {} + : { hostLook: input.hostLook, expectedRevision: input.expectedRevision as string }), ...(input.notifications === undefined ? {} : { @@ -105,10 +118,13 @@ export function createAppearanceControl(now = Date.now) { : { patch: input.patch, expectedRevision: input.expectedRevision as string }), }; return new Promise((resolve) => { - const timer = setTimeout(() => { - if (client.pending?.command === command) delete client.pending; - resolve(refused('appearance-client-timeout')); - }, Math.max(0, expiresAt - now())); + const timer = setTimeout( + () => { + if (client.pending?.command === command) delete client.pending; + resolve(refused('appearance-client-timeout')); + }, + Math.max(0, expiresAt - now()), + ); client.pending = { command, resolve: (response) => { diff --git a/packages/core/src/bots/cli-host-look.ts b/packages/core/src/bots/cli-host-look.ts index 187544b7e0..4edc70260f 100644 --- a/packages/core/src/bots/cli-host-look.ts +++ b/packages/core/src/bots/cli-host-look.ts @@ -1,14 +1,26 @@ import { CliLiveError } from './cli-live-error.js'; export const HOST_LOOK_COMMANDS = [ - { command: 'host-look', description: 'read or set device-local Host looks on --client-id and --host-id (--refresh, --patch-stdin, --expected-revision)' }, + { + command: 'host-look', + description: + 'read or set device-local Host looks on --client-id and --host-id (--refresh, --patch-stdin, --expected-revision)', + }, ] as const; export async function runHostLook( rest: string[], - values: { 'client-id'?: string; 'host-id'?: string; 'patch-stdin'?: boolean; 'expected-revision'?: string; refresh?: boolean }, + values: { + 'client-id'?: string; + 'host-id'?: string; + 'patch-stdin'?: boolean; + 'expected-revision'?: string; + refresh?: boolean; + }, io: { readStdin?: () => Promise }, - connect: () => Promise<{ http(path: string, body?: Record): Promise<{ bytes: Uint8Array }> }>, + connect: () => Promise<{ + http(path: string, body?: Record): Promise<{ bytes: Uint8Array }>; + }>, expiresAt: number, ) { if (rest.length || !values['client-id'] || !values['host-id']) @@ -19,7 +31,10 @@ export async function runHostLook( throw new CliLiveError('usage', 'Refresh reads the stored look; send writes separately.'); const check = () => { if (!Number.isFinite(expiresAt) || Date.now() >= expiresAt) - throw new CliLiveError('appearance-request-stale', 'The Host look request deadline has passed.'); + throw new CliLiveError( + 'appearance-request-stale', + 'The Host look request deadline has passed.', + ); }; check(); let patch: unknown; @@ -47,9 +62,21 @@ export async function runHostLook( }); return JSON.parse(new TextDecoder().decode(result.bytes)) as unknown; } catch (error) { - if (patch !== undefined && (!(error instanceof CliLiveError) || - ['host-unreachable', 'host-protocol-error', 'appearance-client-timeout', 'appearance-client-stale', 'appearance-request-stale'].includes(error.code))) - throw new CliLiveError('host-look-outcome-unknown', 'The write result is unknown. Read the same Client and Host before retrying; disconnecting does not cancel a delivered command before its deadline.'); + if ( + patch !== undefined && + (!(error instanceof CliLiveError) || + [ + 'host-unreachable', + 'host-protocol-error', + 'appearance-client-timeout', + 'appearance-client-stale', + 'appearance-request-stale', + ].includes(error.code)) + ) + throw new CliLiveError( + 'host-look-outcome-unknown', + 'The write result is unknown. Read the same Client and Host before retrying; disconnecting does not cancel a delivered command before its deadline.', + ); throw error; } } diff --git a/packages/core/test/cli-host-look.test.ts b/packages/core/test/cli-host-look.test.ts index 91cdee1d9e..9724fc1717 100644 --- a/packages/core/test/cli-host-look.test.ts +++ b/packages/core/test/cli-host-look.test.ts @@ -3,27 +3,60 @@ import { CliLiveError } from '../src/bots/cli-live-error.js'; import { runHostLook } from '../src/bots/cli-host-look.js'; it('targets exactly the selected Client and Host through the existing relay', async () => { - const http = vi.fn(async () => ({ bytes: new TextEncoder().encode('{"hostId":"b","revision":"rev"}') })); + const http = vi.fn(async () => ({ + bytes: new TextEncoder().encode('{"hostId":"b","revision":"rev"}'), + })); const connect = async () => ({ http }); const expiresAt = Date.now() + 8000; const target = { 'client-id': 'browser-a', 'host-id': 'b' }; - expect(await runHostLook([], target, {}, connect, expiresAt)).toEqual({ hostId: 'b', revision: 'rev' }); + expect(await runHostLook([], target, {}, connect, expiresAt)).toEqual({ + hostId: 'b', + revision: 'rev', + }); expect(http).toHaveBeenLastCalledWith('/api/botharness/appearance-control', { - action: 'request', clientId: 'browser-a', expiresAt, hostLook: { hostId: 'b' }, + action: 'request', + clientId: 'browser-a', + expiresAt, + hostLook: { hostId: 'b' }, }); const patch = { name: 'Studio', icon: { kind: 'symbol', id: 'server' }, color: 'orange' }; - await runHostLook([], { ...target, 'patch-stdin': true, 'expected-revision': 'rev' }, { readStdin: async () => JSON.stringify(patch) }, connect, expiresAt); + await runHostLook( + [], + { ...target, 'patch-stdin': true, 'expected-revision': 'rev' }, + { readStdin: async () => JSON.stringify(patch) }, + connect, + expiresAt, + ); expect(http).toHaveBeenLastCalledWith('/api/botharness/appearance-control', { - action: 'request', clientId: 'browser-a', expiresAt, hostLook: { hostId: 'b', patch }, expectedRevision: 'rev', + action: 'request', + clientId: 'browser-a', + expiresAt, + hostLook: { hostId: 'b', patch }, + expectedRevision: 'rev', }); }); it('refuses missing targets, unguarded writes and malformed stdin before connecting', async () => { const connect = vi.fn(); const expiresAt = Date.now() + 8000; - for (const values of [{}, { 'client-id': 'a' }, { 'host-id': 'b' }, { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true }]) - await expect(runHostLook([], values, {}, connect, expiresAt)).rejects.toMatchObject({ code: 'usage' }); - await expect(runHostLook([], { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true, 'expected-revision': 'rev' }, { readStdin: async () => '{bad' }, connect, expiresAt)).rejects.toMatchObject({ code: 'invalid-input' }); + for (const values of [ + {}, + { 'client-id': 'a' }, + { 'host-id': 'b' }, + { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true }, + ]) + await expect(runHostLook([], values, {}, connect, expiresAt)).rejects.toMatchObject({ + code: 'usage', + }); + await expect( + runHostLook( + [], + { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true, 'expected-revision': 'rev' }, + { readStdin: async () => '{bad' }, + connect, + expiresAt, + ), + ).rejects.toMatchObject({ code: 'invalid-input' }); expect(connect).not.toHaveBeenCalled(); }); @@ -34,16 +67,52 @@ it('forwards explicit recovery and refuses a deadline spent reading stdin', asyn const now = vi.spyOn(Date, 'now').mockReturnValue(1000); try { await runHostLook([], { ...values, refresh: true }, {}, connect, 2000); - expect(http).toHaveBeenCalledWith('/api/botharness/appearance-control', { action: 'request', clientId: 'a', expiresAt: 2000, hostLook: { hostId: 'b', refresh: true } }); + expect(http).toHaveBeenCalledWith('/api/botharness/appearance-control', { + action: 'request', + clientId: 'a', + expiresAt: 2000, + hostLook: { hostId: 'b', refresh: true }, + }); connect.mockClear(); - await expect(runHostLook([], { ...values, 'patch-stdin': true, 'expected-revision': 'rev' }, { readStdin: async () => { now.mockReturnValue(2001); return '{"name":"Late"}'; } }, connect, 2000)).rejects.toMatchObject({ code: 'appearance-request-stale' }); + await expect( + runHostLook( + [], + { ...values, 'patch-stdin': true, 'expected-revision': 'rev' }, + { + readStdin: async () => { + now.mockReturnValue(2001); + return '{"name":"Late"}'; + }, + }, + connect, + 2000, + ), + ).rejects.toMatchObject({ code: 'appearance-request-stale' }); expect(connect).not.toHaveBeenCalled(); - } finally { now.mockRestore(); } + } finally { + now.mockRestore(); + } }); it.each(['host-unreachable', 'appearance-client-timeout', 'appearance-client-stale'])( - 'reports %s after submission as unknown outcome, not cancellation', async (code) => { - const connect = async () => ({ http: async () => { throw new CliLiveError(code, code); } }); - await expect(runHostLook([], { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true, 'expected-revision': 'rev' }, { readStdin: async () => '{"name":"Studio"}' }, connect, Date.now() + 8000)).rejects.toMatchObject({ code: 'host-look-outcome-unknown', message: expect.stringContaining('Read the same Client and Host') }); + 'reports %s after submission as unknown outcome, not cancellation', + async (code) => { + const connect = async () => ({ + http: async () => { + throw new CliLiveError(code, code); + }, + }); + await expect( + runHostLook( + [], + { 'client-id': 'a', 'host-id': 'b', 'patch-stdin': true, 'expected-revision': 'rev' }, + { readStdin: async () => '{"name":"Studio"}' }, + connect, + Date.now() + 8000, + ), + ).rejects.toMatchObject({ + code: 'host-look-outcome-unknown', + message: expect.stringContaining('Read the same Client and Host'), + }); }, ); diff --git a/scripts/cli-ui-inventory.json b/scripts/cli-ui-inventory.json index caccac620d..9622c60a86 100644 --- a/scripts/cli-ui-inventory.json +++ b/scripts/cli-ui-inventory.json @@ -840,10 +840,7 @@ "surfaces": [ "storage:packages/client/src/client/host-looks.ts:setItem(HOST_LOOKS_STORAGE_KEY)" ], - "commands": [ - "appearance-clients", - "host-look" - ] + "commands": ["appearance-clients", "host-look"] } ] } From 2c80b967aa53a4466098bd939929fc7c2cba64f9 Mon Sep 17 00:00:00 2001 From: DoodleBears Date: Thu, 22 Oct 2026 13:55:59 +0900 Subject: [PATCH 4/6] fix(client): show Host settings preference hints in body Issue: #2500 Agent-Task: codex/local/01a16195-979b-7853-abdb-4acbf963c95c --- packages/client/src/client/host-look-settings.tsx | 3 ++- packages/client/src/client/remote-notification-settings.tsx | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/client/src/client/host-look-settings.tsx b/packages/client/src/client/host-look-settings.tsx index 1a204b6c35..f6f1114309 100644 --- a/packages/client/src/client/host-look-settings.tsx +++ b/packages/client/src/client/host-look-settings.tsx @@ -127,8 +127,9 @@ export function HostLookSettings({ } }; return ( - +
+ {t('remoteHosts.look.hint')} {error || storageError ? (
diff --git a/packages/client/src/client/remote-notification-settings.tsx b/packages/client/src/client/remote-notification-settings.tsx index 9f940ece66..92eb271a37 100644 --- a/packages/client/src/client/remote-notification-settings.tsx +++ b/packages/client/src/client/remote-notification-settings.tsx @@ -52,7 +52,8 @@ export function RemoteNotificationSettings({ : undefined} )} - + + {t('remoteHosts.notifications.hint')} Date: Thu, 22 Oct 2026 14:19:47 +0900 Subject: [PATCH 5/6] docs: record Host settings UI and validation evidence Issue: #2500 Agent-Task: codex/local/01a16195-979b-7853-abdb-4acbf963c95c --- .github/pr-screenshots/2500-hs/README.md | 128 +++++++++++++++++++++++ .github/pr-screenshots/2500-hs/a-a-d.png | Bin 0 -> 51063 bytes .github/pr-screenshots/2500-hs/a-a-l.png | Bin 0 -> 50757 bytes .github/pr-screenshots/2500-hs/a-m-d.png | Bin 0 -> 47139 bytes .github/pr-screenshots/2500-hs/a-m-l.png | Bin 0 -> 47968 bytes .github/pr-screenshots/2500-hs/a-n-d.png | Bin 0 -> 46429 bytes .github/pr-screenshots/2500-hs/a-n-l.png | Bin 0 -> 46185 bytes .github/pr-screenshots/2500-hs/a-s-d.png | Bin 0 -> 37870 bytes .github/pr-screenshots/2500-hs/a-s-l.png | Bin 0 -> 38284 bytes .github/pr-screenshots/2500-hs/b-a-d.png | Bin 0 -> 59879 bytes .github/pr-screenshots/2500-hs/b-a-l.png | Bin 0 -> 58891 bytes .github/pr-screenshots/2500-hs/b-m-d.png | Bin 0 -> 43889 bytes .github/pr-screenshots/2500-hs/b-m-l.png | Bin 0 -> 44538 bytes .github/pr-screenshots/2500-hs/b-n-d.png | Bin 0 -> 42899 bytes .github/pr-screenshots/2500-hs/b-n-l.png | Bin 0 -> 53108 bytes .github/pr-screenshots/2500-hs/b-s-d.png | Bin 0 -> 34907 bytes .github/pr-screenshots/2500-hs/b-s-l.png | Bin 0 -> 34877 bytes 17 files changed, 128 insertions(+) create mode 100644 .github/pr-screenshots/2500-hs/README.md create mode 100644 .github/pr-screenshots/2500-hs/a-a-d.png create mode 100644 .github/pr-screenshots/2500-hs/a-a-l.png create mode 100644 .github/pr-screenshots/2500-hs/a-m-d.png create mode 100644 .github/pr-screenshots/2500-hs/a-m-l.png create mode 100644 .github/pr-screenshots/2500-hs/a-n-d.png create mode 100644 .github/pr-screenshots/2500-hs/a-n-l.png create mode 100644 .github/pr-screenshots/2500-hs/a-s-d.png create mode 100644 .github/pr-screenshots/2500-hs/a-s-l.png create mode 100644 .github/pr-screenshots/2500-hs/b-a-d.png create mode 100644 .github/pr-screenshots/2500-hs/b-a-l.png create mode 100644 .github/pr-screenshots/2500-hs/b-m-d.png create mode 100644 .github/pr-screenshots/2500-hs/b-m-l.png create mode 100644 .github/pr-screenshots/2500-hs/b-n-d.png create mode 100644 .github/pr-screenshots/2500-hs/b-n-l.png create mode 100644 .github/pr-screenshots/2500-hs/b-s-d.png create mode 100644 .github/pr-screenshots/2500-hs/b-s-l.png diff --git a/.github/pr-screenshots/2500-hs/README.md b/.github/pr-screenshots/2500-hs/README.md new file mode 100644 index 0000000000..f2b4382eba --- /dev/null +++ b/.github/pr-screenshots/2500-hs/README.md @@ -0,0 +1,128 @@ +# Host settings evidence — #2500 + +Captured on 2026-10-22 in two isolated DSH Hosts, using real UI pairing and one +task-owned Chromium profile. Screenshots are unmodified captures at 1440 × 900, +English, with light/dark themes and disposable Bot fixtures. No model calls were +made. Pairing offers, login URLs, credentials and private Profile files are excluded. + +## Revision and image map + +- Before source: `8f4e650db551ae8458211634872ed291ff4e5a4f`. +- After source: `08290c7192ad87a6f557a582d03bd2dce6d45aeb`. +- Owner/CLI runtime source: `01c0f4009472a5552ee6a5619619096c1e09acff`. +- The only production delta from 01c to 08290 makes the existing Appearance and + Notifications hints visible through Note (two files, four additions/two removals). +- Filename: `b` = before, `a` = after; middle `a/n/m/s` = Appearance, + Notifications, Models, Storage; final `l/d` = light/dark. + +Appearance's predecessor is the separate icon dialog. Notifications previously +put its long hint in the sidebar header. After captures show Host icon/name in the +header and five navigation items. Both original hints are visible in the body. +Models and Storage retain their existing content. The background Home fixture +and local Host icon differ slightly across captures; the remote Host under test +uses the same default name/icon/color. The before light Notifications capture +contains slight background bleed during the dialog transition, but its text and +controls are readable; the failed later recapture is excluded. + +## Executed checks + +Actual toolchain: Node 24.21.0, pnpm 12.4.2, process GOMAXPROCS=2 and Vitest +maxWorkers=1. Checks ran serially. + +| Check | Source | Actual result | +| --- | --- | --- | +| Frozen install | da6fb748b9a2 | exit 0 | +| Three behavioral regression cases | original 1ab2b33a7afe | exit 1; all three fail for the intended behavior | +| Same three cases | da6fb748b9a2 | exit 0 | +| 13 focused files / 107 tests | da6fb748b9a2 | exit 0 | +| Root/mobile typecheck, lint, format check | da6fb → format-only 01c0 | exit 0 | +| Baseline complete build | 8f4e650db551 | exit 0 | +| Candidate complete build | 01c0f4009472 | exit 0 | +| Final complete build | 08290c7192ad | exit 0 | +| Final root/mobile typecheck, root lint | 08290c7192ad | exit 0 | +| Final two changed files format check | 08290c7192ad | exit 0 | + +Builds produced the Client and natural bundles. The four tracked Browser/Computer +client JS/map artifacts remained unchanged. The 107 focused tests were not rerun +for the two hint placements. The full repository suite was not run. Local CI-plan +preview selects **full** because the old settings file was removed/renamed and its +importers cannot be traced; mobile checks are selected too. This is a plan, not +a CI result. An earlier automatic install was cancelled with exit 1 and ran no +tests; it is separate from the successful frozen install. + +## Runtime facts and limits + +At 01c, two real same-origin tabs had distinct Client IDs and shared actual Web +Locks. A stale second-tab revision was refused after the first tab saved a name. +Subsequent field updates preserved the name and other Host records. CLI readback, +reload persistence, a successful pre-deadline write, invalid input and unknown +Host refusals were observed. Local display-name changes left Host metadata alone. + +The real lock test held the shared lock in one tab while another tab's CLI request +expired. Releasing it did not write the expired change. A separate synchronous +storage-read delay crossed wall-clock expiry while Client timers could not run; +the stored look was unchanged after the delayed operation. Both CLI timeout +results were **outcome unknown**, followed by readback; neither is cancellation +proof. Early process death or HTTP disconnect before expiry remains unknown. + +Explicit, restored fault injection covered storage-read failure, blocked writes, +continued refusal after repair until explicit refresh, successful refresh, +distinct storage-write failure, and missing-WebLocks refusal. These are controlled +failure-path checks, not naturally occurring browser quota or permission failures. + +At 08290, both hints and the Appearance/Notifications/Models/Storage views were +visually checked in light/dark. Remote Models, Usage and Storage CLI reads exited +0. Token usage opened using the actual dialog button and showed zero tokens, +with Memory still loading: this is partial UI proof. Earlier name-only selectors +hit another heading, so those mislabelled Usage captures are excluded. There is +no qualified matching Before Usage image. + +Notification kind changes persisted. An explicitly delayed permission Promise +resolved after navigating away without writing; this is owner lifecycle evidence, +not proof of OS-granted notification delivery. Remove/re-pair cleared the saved +notification choices and restored disabled/default choices. With the remote Host +stopped, appearance/name and notification kind edits still saved; Models showed +the remote-unavailable state without serving-Host fallback. + +## Preserved failures and outstanding acceptance + +- An earlier heavy run was reported cancelled; cause unknown. Its baseline + background-tab driver timeout and observe/doctor results were retained. +- The first candidate browser exited during capture: `Page.captureScreenshot: + Target closed`, followed by browser connection/session closure. Host doctor + remained healthy. No cause was established. The one authorized browser rebuild + succeeded; it does not erase the original failure. +- The supplementary Chinese tab later became blank after the remote Host was + offline. Console reported `locale subscriber crashed`, + `uiConversation.binding: unknown session`, and a released Session reference. + Observe exited 1 while Host doctor exited 0. Attribution is unresolved. + Chinese settings screenshots and the supplementary This Host UI capture are + **not passed**. No production fix was made for this finding. +- At 560 px the existing mobile shell unmounted the dialog. No narrow settings + acceptance is claimed. Re-run this journey in its supported shell before + claiming responsive acceptance. +- Background Client-unavailable refusals, a CLI argument-driver mistake, and + name-only ARIA selector mistakes are retained separately from product results. +- Native/device UI, live model calls, OS alert delivery, destructive storage + cleanup, model-preset mutation and live Browser/Computer viewer removal were + not tested here. Shared native-owner contracts and T7/T8 paths have focused + source-test coverage only. Human QA and CI remain separate gates. + +Review history: R1 Standards **0 hard + 2 P3 heuristics**, Spec **3 P2**. +R2 at da6fb: Standards **0 hard / 0 new heuristics**, Spec **0**; original findings +statically closed. The parent directly reviewed the tiny 08290 hint delta with +no new finding. Static review does not imply runtime acceptance. + +## Follow-up path and release + +Keep the PR draft pending diagnosis of the Chinese session/locale failure and +Human QA. In a separately scheduled window, reuse isolated profiles, activate the +target tab, capture console/ARIA and observe/doctor before retrying the Chinese +remote settings journey. Check This Host UI and remaining Usage/narrow states; +native compatibility goes through the shared Android testing queue. + +All task-owned Hosts/browser/build processes were stopped and exact recorded PIDs +were checked absent at **2026-10-22T05:13:32.1553288Z**. Task ports had no listeners. +The heavy window was explicitly released before PR preparation. Private logs, +ARIA snapshots, command receipts and the release record remain in the task's +ignored evidence directory; none of the private runtime profiles are published. diff --git a/.github/pr-screenshots/2500-hs/a-a-d.png b/.github/pr-screenshots/2500-hs/a-a-d.png new file mode 100644 index 0000000000000000000000000000000000000000..f169d3e70a56e38d31c5c4e6ee27bd76c0f3beb4 GIT binary patch literal 51063 zcmY&=by!s07w#Y;T_PY2(jXup&Cnr8ccXMj51k^7fRfVPEg;ejl0zfi-8nS(Abh`j z@A-r0JahJ0XUEzr-t}&R733t*Q3z2$AP~CLJ252?2q6swg7-su0{rrq11x^IP#{FLt zpV+tV9VUvEyHCiwnX(V#03Ls^+H6^@XcX;znyZ43%|*^eqe|gC9=FFjhR?l|vpoH@#s53Q zqnJTXr5I@@fdjsZ1OAFCTt;eNmAw@6wj1w!u^cBY3oErRuU~Oc(yHUfX{p<_ZEoWjFLiVnW`M~ZzMkiFy#Xre-L^B@_hqB1Y2GcVzyIv*3mT;Dcwzp5haMdi0 zW72i9!}lh|ckmOhmA3 z^Eigqlf8{4)Jj{G+Da2cQQs31o=VisVq>Sv1PvKwcbx6Uys@6yXwN!NRlD)XYge>~ zs5>5VjxT0_(h%=hN#R#}gnjR}_6YMd5j>e#KSD&~8kWBM$!lk71?Qe7t{!LMB>;gQ7xluT?@oyP|79F|3_nlPFGaJ7v!Mn9T6;4+{ z-UDWvEq;dL-Nb$YpIYN-Yqw}=!_v;nu;meX!JpGbMWPzTYE@I z3|*4ab^Ph;oB93m%Ma`Gpz+PQy9M~LPVn~?Z-L8=X`3cv+6dFhO7oFWmip$a>;3sA z@0CB_=fboLOlbppk>jEloE4}6Uiqp4zY@kw_}p~*JsU8Jh`q%m1X+Zj=$vQ85eCV3sqCqD#eGVKBUHRQ%rRP4obd?IPedrH?caw3R1-r6 zqL6Q{Fy*ATT#J5xVOHyyBZ$-C4T}sielK`NpQ=>JEI|=BF*;f~>f?*-wR(0Um>Tc4 z=>I}h;YDOh%0O4epyR@d!$3M??Pcwh2~l+=PC*ugQc&=&gl~UE3URl`UBr*EwB85b)sMX4q)G$|Xz4x1qj53W64;77L=Oi20f5SeH1ffyCB`SiNe{+)+Olfj9fKWsWa%}jgol$^x0%y~^c-PZBid|q zVvK{SnnbtY5Sl$vauJq+g(8-BeKI0{+yi!pO%{zuuVkqaa%sy?1gfNAHs?n^j|wB= zM0?5oXMNDl?$Be~G}W`S)=#b0Jm~#rAtAb#&uv}{>3d$Rj;ZTX&mA3wI~!zFFYPzo z4JaeuuJ!fxtx*2jm~A|ow#knashyhA>RH$blf|SjShkt?3~!J23_i6ffRltDLTB0x zdf1eMoK`=+v@L!(LJH%YGGgNx-(04oj!Pnl|Ni`Rv-X*Gj8wML-(oyjKQ;zwW$g(K zMXdrQ%hNDN|Ln{9j43^HdgNd*Lr?h6GunZc?_-R0<>|KtmL`|c@;r!$p68#cCJhV? zHOV(b%`eZjnB$ZuO)AQphp-)4Suq99eKeF66&JzVU2T})b3kn_j3(I%yf3ojvQ2w5JtgD^J6z@NZc+8zW2)liCj!RFp7of$tz>(XwH(ZDZ7X?%QSJF0#|=k9 z!UDE8$uvGXI_i?^*cIWp^3E``vA(EpeN(EtJ2*J_&SQtwc^e^Y<8bXf+#4!|g^aG*&KJ=Rwg;H0iDxNh2-!p*tCiB_o#dUM@Yc^j*+bIkS8#j*UYh_2i%Q6SM`OPayi-h*?;Ls^!k-{V_YejQO0-}qVyh_D{x+h{hR;d(4!?AY z(Q*6A@QbQ~R*!=cWu>%Kv=(0aHx#G$zEi_|vWBejS!|kGZqnjmLnfx|COVxzqN|z! zE4u$Po6P%S{!Th8QdRJFMLB2MG?kfeRnF`7B5q|R3jq~BgoLgHW|r^y=~K~|$#Rr6 z8u7QxAq&lgv;Fx}g+ICaUal3|n=+(c=h$8XvVv6mJ9HE0hwjdCh_y89$Ht9E!|&&d zbzH~BCQf!Hqgpn9IYajr+X9upb@AJDX63cS z-OTX@7r%UotG+vu>wXQdK};OIh`u?w`c>?GJCd4myUuRV*WnCSDvfJ`fIksoSePjxz3|{88F?t(0UG{mX)q@`B?0@`bKR5Q?*(z$&!&IK?VD zBKY^wmZiXrkvaCIU6R_hr%PKH*KioZ@8>8tZ<+2+Ml4I~!sYe18a_S55kiAclhxzw z<6ryKXRaUc*ab^To9w1$ybDqulcxMp^{eRjZBGT;t5N%gZo8r$Eq!fuEv*s-q?;?_ zYiCbgsTctU&H=y)=G%2%gF7r^d5hiZW*677cb(jAbEPj&p%=$Y)%>@AC`~H5>-y3v z2;SHZA}Hs2{qk@X_LA&d9CotOiKPyzzIh06V1TdgV`ndfVd3sy#*Tk~@QWL->q~!R zF~n$jkbi&r#z34Q0-wr0e*|(G^oJC?g!GUhQ8Wb2Yc6bLA>BV$)wc@a)%7C%p76}MK&)5|mHFeu0EvL{284l; zacheZgN*kNZ!o2+t8un*i|pH8U$<$S+4^|bPN^YJD=Tyaf~u;$A*Ct~jwPKMmAlR1 z?1z{=js3XM0HqPJtB7cwBOysG^KfaAzMRlsjA$`ZiVK+2}l+xq(a zheV-Tw=rJLTY3%wDeFROEc-4al@~E9ToOHFiYA%e)_Ji=&xO;{I!vtj*X*Zm_zkoJ z@<0%!|0NpjS0VK0KAGw1imyVWP(CgFsXXpFRm#umDmc-q6J>~Ell9|eSGDCG>+Dpi zD$W|OFIQlgXisDsN2+n$8ARiSFYI8Bq9@vp;Mu($I0Kh_ywc=Yf8djq-8TPkYUOMjNtn>qTB(M&a zI#mYMy?D`A%Z5D+#}TU0d>WYx_G4;z6ZtWzp2rTdvbgNH(Xn_#axedz;OVDLA<|uK z_Rj~=|F@XW_Zex>HXrgWkdGWD+~X|>;)cZi_+r|~c9H01L*OI`g7d!_eG2}6AA`Be zlAc0vG{hfvN*eWlcOX#hi>Jhof(AD!79MYX# z7QWGsqEvZ$5VOFXcE>I?4HSd+? zyPD@CQb%-P`qP1txWq>X6T z&#B{4SZx^S2?ng5h=MSF`1KSIiLax&Rxu~l<}=!}wZ|qK7*CM6r}FnD5XmyG7I0i2 ze}*95J|j-S{W$H3giPX#(OygKFY;eXN=|p1gRE2&;)uknaMjN_C4p4T_a7EO$<#1; zY1rYv13|qAdXA>}&{dzkwtXMbDPi?q2sxi6K6^<@{J2Q7qK?k*>!=9LvQc=+yeo7g z-$5R&KXU4Zmswx#4yuU$B`Mrv5CXX&7*1s%Hr@JMwa&eh))*liS|5| z;l^lRI=&)>cNZ4|pW3qnne-^8tXC28Syu(w`^i6zp-mCrx@ZvyZAY_Yi>2!FVxE^!xE@;i78;)LJhH^9|wj-BB1B@n+DO54NbD)Ox@*RrVRuU$>F z{tGT-76Gd^!t#fPAloT_dyH^pr~b5OFKoqVPX%=05VMKyuI6jQwkLkdNqq1fT%vhs z>tkK2tEM02e%U8Lrw$|?QrPigT*1CPy=3Ie|A;!~rZ#l00gujd?BcA=Hp_GK`thXtf0&)+ML{jC zcQYB0yK z5_5)jXpHR8)Xg%-YV(ZANvA6Sh)en4&^FPj8~BS{iDlF7L%*h4uR^4j)*Xn$F$nhu zKO&-VsbS*1s$|R}dX(;YPGbAFuSgW~_j9X)tgPcZHjF9c-H`ugiRkvs#hGUpBT))4 zx@Tg6Y4GLNUwx5_)p}5v$ef9@G1p96$T&X=9q$Dmt~zR=hi;g97DcK>y=DQ-$1!jZmuX-SF_R5ZYUP+ zhXw+fNg+MK2;q#D_LreCwKA-pevMa{$|@$!8X-J+n(qlDolS~{VEvQ3ue`o4tTEsBXqa{AZC*)g>}MP=`Q|Ru5-~j&o6&v9PeO#IqGD@qQ-7ZGwVN~LAc&{riYz;5C9pg zb+)d!S;>I1)zdH_)EsMwxfgT_w=x{<8xLBjOARPV-n- z)ky^i??^>x?sNlm;z~|oxr*&W1i0q zFeQ$xEY#Li&vq;?FIP(}ZY+rv%p%V$S4@pgnyECFl?@xSFnknZK}fnv`~%p@k2=WGfRG+$fr;% zTD7qHRbM0Dthj@fYmf9*pHBh1V2`f`2oS5h6=sin+GS_~TaqmWY z%Lk3J4-}Yu?_6CGI>@+YTqt9>tfo#D1IZqJ4hTss$aH*RGvKc=rC^g#k*Sv{F-hjm z0Ssbe!5uqu<-zc`&v9#`G9e?(!_vq@aGdjn#f;;6G86d4;imZGmP%t1;U{h9o5dPx z1G-2cEZdF!+(gvhxu(FD3D*dv-@%(u45pHkkXzboK{rn_?eMyki{p3hVp)R4W@jqh zV^jblpYh{fFzZejD`aP@V3XJHr1+UoK;N4;buF*fxV9LFHv*RD8vdy?OVBmI)!~-% zzpU^a)wsFkIJEUT^YthGtE2ZES01^QX|LOoBI{f>-LF$}iR$%=vfK;edQ>4esTvLI z^DRs`k1iCn%McBRn5v|b(W(ubwykq5m z@qv)(ps=XQ@2_uOX0*x@6lEb9PWF0d_{xJ-hiOvX{#!ZIbRBVj=$olwH7I}P$DuE6 zwKWF@YAzSXn?*mjj&`CrbyGaQs{Z6+cBuZy@n0p4*Z&&=ajp*1I2gJSrdb?FP9n<6 zJDa>ds+vg-{!Zs#21IQeZW*;79Vp*gka~~a}3h11C77WdLu|{U) z6d!}}!GbQwUASNYlYZ@BfLqL~-F$f)r(ecamtaCnv61dpjd7Vr>e$dP&oj7C3YCMeV#R@*~x#TzI z!;#{5Cb`fGmZtNC`YWZb8J6*r;2Bxix;)rj-aiIKt%A=-A@8lh;y~f(-F2P&)X<;C zigRVENFV(?!>*9$%8^jw)Vi&%{f2FKV_1sYVYYpIQct1xMR#sQ8_>TZI;LKNw{#*T z!rDM_2@#XPq+(jl>t+?eenvk41Bn_)5%J&JDuBi^ISQ^8SmqJT6RpxSfnPH)uZWr$ zEH9bpcrxwIo3X{l5VOBTg9LbJgq@4=GN!^G{s`cju5#cL+;tcL>*Eu>uRAs8KaG6v zo|8QiCa34|Pj0soWm zzY;Lq)tL8qOzvwJ7xlxR%oY%0XhQbx_^+J&bUSE<<1xfAg=8 zMleU1n?jz4)z)h1iLTPG>;D-+K_N7=6!iqlGmAxAzrI@$1PZ>ZfQ_kD2C^Ua=fY*>|n3KH_NE(VNPcq&!_wqr$ ziJ+%I6yj}ktJl=M)JD@Xit4=wnpy6y;-NK)D#Dx3lHn1EPm287vt)_JxxkDe{BOh_ zV=vxF!2FGDMoYsZannttX`7fxq%Eu65C0QqA*{_*-)r-`t2YUc+gtD7R=xWu{=;=} zP!5lpmpC(b*+1GWI0dQ?nD)c2VEZ3)m6UaFuEu4fWfg{7EHg4Pk1HPevE^#90Xrh~VmV{)?)EC~RE36--jLul86W zA2ukcX-=rmlW-q{+YJpMv&RS&Wk7fNA%Rt4KloWA(et$9=oUU82y?&5GF*+Q!hKzj zLAw|)6_QCk`jxQm{S)Q9S9?tk;m)0k>dL!NIgGt|dAsK3&!QSZJ5x2YrhUEJrHx|2 z&sI_Cev8HbhXr_;1;a$Aq$Rzt`u!y`7efkX89NjhK2}Wj(NsXKWhFA@V_V!E`hH(( zO|5|Y{HCIb8RejVvMP=58o~9Ao0^aI214b{XZ-gQTq)J_q;JG|m023ZBCR9nYr&iz z!(oEZ#)eIY2FCpIx`tlmGb7@qocjn?aPai5mZRxxb0Sr~c1S@#bv9SObZ4%Q9bdxD zq!gIcAM-%@_2<<|Htpr8@^2x#XI4k9?+E<9A0cOcPHA1Apkri;>0R}_g00gwr?wu4 z1A)lJPVCRGnD`CypWoR_hd6_i*};nVMA{nP=6n9v)t7gHdE7friG2<+b6y)*5OO?} zUO~;H=K0%}5%d(x^GUl*`dcxWoZQK>#>w3Ft>DeOxy8jy3CTQ47uS&h$E6QgAru~+ zxs}!c@*S<**LY}hxCwzurYU?YzmB>Kf>$~hWdLSu3P@RfNR+bp_)TZfjsr7x%p^VYQz^(wT6g{#h4|P|FYeYnjsW^vgAjUAon{K)X zGY3KY49#lpHY#2vc^<5iIaGFL^yZ}&GWX7zAg^Z!-f=QjD zZ6#x1uXPont_Tth3Nm7gEJ6=0^=#!wPoYh;r?i9B;D3UJV2hp|FPiJqUx0t~n~YnV zt*37_w$%K{l+)k);1o6X!C6C-XmDiHq>6}%(=$$r%gq=T9x{CRkp^yax~WNrnT3(* zzwl>~!iSVNNr~WEBSKB17;o5($RnEMxw;Ox!c>d*xG1(2zv%R?1{*tpv7}al1bYbL zh-*gsKUnY{XkGC6@@Ew#M!G|!>l5eI>z%3BI-9~=e*g9LAs@(m)4FI&7ZdUe%42b# zU|5<-{x5}d##upZeIfNjh9gP-OW%9%ixd-kTOxD-2l^}ma9O;B^X@gCr2EPS z(~ktSa1S6260Q&ezu8U&dw(O}1o^0uFMxd3DDK^pk8RtXfN&oisQ>=uMy&|WO08mz zakIDglF74x`r+*M>18Y-`5MT_1W2KL1m6-_9f(nKa*nUs)5oAB_S0DZ)UraW#k+K> zK0>4hfrQ+Z=~ftGB2l`#rTTE3fFz|xM;IY>ULlAF)Qkw^o7@AmvuUWaSy@!lZ#VXl zQP^BcK2}fP2h2is*n$E)idfOoxO^$jR2-aJy}i8+(<5YW{&0hQER~xn-We&?NHeIu zGiIZCcjKARyI3|&f>GFJ;>2TD{uB$Zegr*)6DU7!+8|^i-p>~IEZQ^JJk|5yEa&}C zAw2bb5b|XZi209?=(l&c1@H28`hCgYW!u-%$1@CnWY_EuV+H`DX7i;HJ4$+bdN!rr zy8u862#M=N9i@X97*SXlVL2CKKp_b9y{x(Wg@vP$!MDxMZZq0S#wiMTpOF^Y*?02t z>iN;{xPbS_`woA6xrH2-v=iEbW_2DhS;yB|W`UL3&p;%-rW!pya6Fue=*Iy7)*xgm z>|J}Zm%Q81PQ-@cv-i5pM>I!)QRRCP$)NR61biCh#r37UoLoV1vEhBUl0#ZP$jI++ z>VEkOpEiv`zF-RlVBAKcIkR;L5+I%#3?^v<7*_zzDFf5oqq6`c1bZRWJS6AI#e0qg zYL>e-0)`pP0(T!$4oV^WUda<4Qt;Y=AoBk|ZVO5SU&u6I69g07Lsw}I6TD&z9DehQyKnI$(I@E4c4T@sgSt1XcxkK3KD)VEiD2=2ikA26{#h{ zWB^s3JqLH^VKraUl!NWr0(G;3!Hqh~N@qXLPttD%G@C^jK)VRD_j8|Ssmvh1g&8hK z44Rb&73Q7G=i6a=RlKyg5DhB{>`>?ektex0FFd`MP6+7v?H{;}UsJ~XK}yA$?x90C z7D&EqBI{-GFF}4dGA#G}HQk7@kdA%0+ES;@7K)g{+0B4l(U;jo5F5@6M8szEwGr_V zlZyNF#D}@dlnM8%65NKs)8xH~RBz2*91jVx+%mOO9zzq0`NMjdy8tACz(bYDo@*v| zZ|%{`lCP)P{o~WSPHSEHPaxD39@AIXPV!Px)<;n&3#4^f6WhQB5y}Qxfuw8u8d9s3aO(=qc97`_Cr0LMU=Y9zdQN`gguHvY zks>097$}2H5morf1m2rY-F%0WeHh(mq}S8~cCWSLEk|&qXhvt|i(u zYX1I^K4f;?ba&M>$<>Fa&H45%|K&!elqhE zzqMniK;3l+qeM92Dv2#Oad@$IwbylO1m&w&bFQ#tfLKwPV$Os>yfmQieRG=L7Jxy@ z&rQSWG+wmLgtt9%cfQ^eGk>r1NQNhp7@o126GXtKXHQT4B8r=SzmF<1LdfYTAsC6l zaGF1FpYy%CeNLOH(VldA=9=@!&_Hw|HBC)` zd{u&sL#sriq@mG#zc?Ur9e;rZ1q(<(ts!j>D+JmFnA|wwA&Jcun8t#VS7Z0xk1x;` zz}-nkkb<4}W>&IR)b(8bZJw_$@$ z0jmCd?V6$J9O4(#P5C^(A}%5@o`M#cenY+pmQM_)dvW5eFQnxybzaRlq-eLByP^vc!*J!t3=#K;5#~-mihBFqZsYf>|{wd+zzoj(zT50h7Y&5%%~souNQB7e<`N;R0c==rQVwKdejR zA@O3t`@B)(Gs9qcI!YqCb0X|7)K!o)9E43785IS5xXz(VPLJJa;~TKT;e_B2MB*7h zNprGj?mCt~Ba;5DFx?l$1XD%T+!4G@>_+ydE-Wy067y&XkmIiJ6~t+txx zeD?XBv@|KJfs3lKs*KFe25Tnvz5jFYc2SVse1LO(Usl78 zeQXd2;t*|lZbWQQJ5;HS2n2N37~G#sazc!Dp`L&mbpnav?QKMEUfRUA;MGn=^}Lt% z%v+P!y7UpNs~Z~|0DEU*ROPO5*SWmqY`$7uUESE&IE+Yez&&+!)i{+|`*uMTQ_rsB zYq9pPOEUTE<4teC*6Mp*oG4~Wj-)f;p;D93;KT;;a)hMznH;kes>3#?1FbW=zAm!Y z-&^!(q2hCo4$UZ$_E&bEb(~m}O~ggH_@kIfjL~J&baU3zTMAfN zB?WufOdWlO5r>Pu7<6aCzEZLj@u1f#X1*O?+Y7#{dCA2I-jfC9|{vDe}+jabEy3B<50?M9lc^k zprJ$rUR>Gt-qrOKzSZs0Sx*P%M1h+GOB2#=zE&#%a3RtFzLso;!-uwr;#wYi$)lA&+Jl11OgURT_CmNe%;(b-&x&#+VHG%7AW)^BDY5+Bv3Xo5 z_~@YRewLV?Xoz=MSgTY!Gz$lQ0K!gHG%{9x8k)1feebNGkLxALZVg^L1g0JbEr=)I zxXzb+5?=v0>%$p=P!_-oIWm}4eplDAy8w8dg$0Ehi=W{UH*vrgYRbCD2b2+Lq-;ii z4?ezlyE9dFHEEiXeHk4+DmZ_#K9niJqERN)SH{L(VKV=QkCoy(A~B?CC(0Pe1_jT! zZ2)SbK&z+P5CH+f$>6HJ=jqr48S{nhLNlCb0GgbfTu*m*Iu;ch+tIA^yyyC^b6$Vf z-G$4{xm`ag2|z6odZ$oJfrJJq0>Fg;h{ak^=Ad0YRTc34VSqvlqXhcGZ2w1jQbz|*M^D{_jmdg@|X88c4 zP+|ZKOH)&`qodn;OJ-=h}urK#@_QE$A%98{sG;?1lP(*7Z(J&L%;*N3Diu(2hV_BZhf-` zrj)fU5IrI!Iz&NcHbGO}lV z;r!EuX+LQ)97w1vp(K770t~~)=P9x68+k#XSX-bV{>yVfF|gl=gUi4O1tf$oO3`{g zqZ8E)&=su=R%4m8Lqb9-D%`_fvig#06^{e-;l6lw$;_eXn3%@P9?LqX-6gm#AZC#a zBjoVBG_DN1^EgReO=adH41G*Ht1GC z!K}LzEp6^waD0{Jcna8jIBzI3)x+ZUSFv_s0fV;S1yoRY8n!;h&iOU>k2`p@O zcJ{-F6qc5j642S&zb*$%a;d1Rvx9tukRB@fsIT{dO_Hxe9m9}yA||}GKce%$+O&{m z&fi_{w-_fXaJ=~n4ZHGvOtv~oN*Q8HFz8OV1!8|b2_&(=;Qbbq3*n?avU@)sN3vtb zi`@jKjn*2YRyekOT6A+rt%d(u2}V24?uVZ9Thu=l>CNzXasqZ z!;g+o_6cPSPzF_#Asy{gK1;}T;t|HWaJ9H`qhNDi-6$>gjbA<~@8q#lF#xANtHX%> z?9v(}WIKrY1oXr(c(aS&Tzoc-=e6zS$+3ZReJjuixI_wMMOAoT2IL8Gy$BFh3D>Fk zvWI&bn7vluld=&luCWxLkPd`ZXsxP&==Z!OGr^Y`PX;~xJ_VtGAY4_nZdO^v^}Yz< zfs~avGHnmwWIFXn5Xh_Ww66}kg7425>jjRbJcp~KhsgE(-Nnv1GERE}kMj(V)g{C! zVQ`2nQ84x2dqOWoF)=_$Kj`f$&5z9RO6bUH+~+(Qn{M1@6FA_&-`S#pcpZFkzO0ht zV!Y*#-*hy5tQwO7SoT)+dbQbPDAqKV{HNcP~2U(@^ ziK>>1>z4ahwHO|+!#20|y0eRlP9}5j6je1jtS(Oo)OGtU=e)N2oBC>)czBElcAb;h zjZyZ)Tli;rNnOsd3v!Q+j8i?z4LX28?J^0u_3?^t40`QDJ!C z=m12}a*d;pouhNtdG55c6(O@L>2RE=G!$Nm&e@Dt%-CbkuQMRvYHa{~JIMZI_11mu z&|{@mv%(dP0z;7pvf#rl=8r+OXZmL_eZS#&;PcHD9do*8iFRGUuf4zJUmgkwC=mCh zA%L{L{!kpKdkl6cqFoy|#eTjs`_UK>zf)TvRPbSpw$a zC^>aFCoJ(?bEsTN$$fC>BL09-nk!F1UmpsMcRu{^Z?*<+eUZ6W?ER&)4bp|Mk!Sl% zD*8=;T_o&!blBy(kK7F-?Z zy#QkD*h6X1%=Gi=!na;r6!AJL>`Lw25q~cL9jfKRV|H0sl#KPLk52w!H0pjf=x8}{ zbV%9JAubU0H3aAT5xqD)R&YcFe(psYtv8WY&NRIty%7ExGjXl#c9`NZ`aWXo$wwPo%bcfv7!=<>DB^-P zWJnVQo8;%cRLUlc04>CLmi4cbNq7K?2XGJ2k<;NdUjzF&ZKU}X{l7;Cl$rUR?(g?uU48vgz6`V2%wbzu7fq3 zW(uU-KO{7A31W}+eIL>scZ2ZYy?RQ+?hJ4CrsN}`$JQW$f6Veh>3!sErEV>n9HMCB z(Xp|SVsgP$YyS&LS~=cCw(#U>=QmB7#jz&a$#S`ZxhR7%l_S%7g=6G0ekSxUPzuL- z0CBwRalOWGUe;Td$-EX)cO1sWK~2s9bI`4x+YTWT#A|w}-COhf%jXO$!N+hZONyz# zswI~YD7rp}2l-f=Or2~3>MUK&HSa}R=gf(UFtrYtHus6Isc#m?CiF4Q?nciq;`Gm4 zd+1>!I~A=nNql=*MEBFb@l2%boN+%{@rQS1_A>+~n-_q%Ue*$>co7YpX0bKV6ustE!!C&!>jFe7F-hT)`yaKUi6g7>VPD z{C&f4;Gl6eZF8+rgF{mf8<-Z*ryrY#^fKAkh|K>zZ*_nw@Sps>zCcGu7Y)Fet+Z2S zET!_yzP?VpIm$1GZC_8+9LF;0hK$~m?rMKH=}UYBis^%3`L`}F*szc7fLIV7Vt2bi zi8-`-5*ZOUjKEo%WqGd2UYbsXOJ}B0?G)DWDf@#jCpsa2R(bm8;jp^(Ss1Xxb2;Vt zFOhU(M@X%kj+v*#IAHVarIK1&jEJ(k-wimm^Qb%ED!t27n0Gdh8p)d$in;W1i#}Ua z5?Z-Q@K$9ReGV7dgtsBUA>woEBN+Y4Im_i-B40}(5IVqQDuiK-Qvb8DaS>W!dJOr} zXnV`S27U2TRaF(mKjchaKSv~eBX#-K04UB&%coQMd+S~!EFvR#hMgSL#mwt*S#k=} zd3LL8Mp-Mkh^-4T(f|3qm0)?^N6zGVAyDezsERxM4;pt9!LcAi==uaM90X;KwMxiIeV9Z@X zs#i#Ocz9@Nvcnb0=o+xl*!cJpbvA-iJy$w|7!$W=+KiH~dDLn>CY2a~YVDUU6sD?C zq7#qQI_KRicV6bw(&GGbt^NsU!t9Pw#!>}c$KPsaGC_xe>%*%U584+R2RP&>t6ABn zMR|0&Z2qXD=dj}GXld$XRS4uoGKDc&yr$+7Roda0kaj-96pi9=egY@5Y}m>zC4_GkdpKO;hr@CJ|9!Pk zSO^mO8`*7SQ5Ay!5@PREH)~R%-13RD0z-0Q5yBxiF}6Kka!8uVdfFNqzpj*ovYz7Y zWn^@6@5L$8>U|;x7UXl&KK9hC|HL@C*Ja`ThC5;2s2ow1C*r}#nD}&4X~ce!p@%g% zc{2L1cjK3kQMl=bG#YnsoD5V@EfFCb+a~=$U%8JV8z1g>wyvC+o2`PM;y3++#SF}i z&SkV7?!0RlZOVZZ*D$yR5kS@7;1lF$C-!|2Uhi6Fs2!?~af~(}$ql7c27Kcic|=5i z5k=M20n{1%YX*d4h>+Q*B0l$dU^L_{=i7sX^QW*R5+Gzg zPbxp*G=$Ebn`1rjrZbDULFv?wUMO&5t}&CiMV1#Wo3#-^%ZP4k>6Na zTs-?nV*Tl*h%^@+C__C!k4|7G+cBHEi}{Be#lE4)?()*It6=na)2q-9`!k-Xi}cNy z>np+3({+veu_lX~G3(YVe;scN{o03CM2L#D=2F>`#+b4H+S8ke=suFaB^0P|+?%em z0iwpiFax^~OqchyYq`CSUcqu!8@_jQS7bUzhf0URWK5cUmgiJ|L*dQ;!vZoDQ_7h> zFSWg`rzNmbllfG{eYg%7BG0vgL86oBvICY7CFH3saAe2&y(wy@9pEnWo;QxuPw_rM zI{q4z?(>C~a!D+GDLMntx$D!9v^1<%XH-oZ<-QqM0u%J9^3f@YNs&ET9r~sK;0TOo zBjjl^vxLWB54Eh3(FbqYqeTW;#M}c-p4;1YoMQg!^78aa;9wSWtlcTXtXSUM8S{h` zW>n;J>gVPaOsWjHWbsdQUm_6C*)Z8?6|0r*2c5(7ru#Z%li1w-&cgwcA79`>3vV;f3JrPfgw7W--L+CP?t`v0}k9Xq^_&nMi632OW7OZLMT46*3knQE4)eTaF!Lft#H-OIH7<8cAmlFoX zFZjf$U%diCfuo;Ybxoc0SJvFbPMJf0cWBTQKU?Q52j;c6Z@h%SS5-Ooj~fCx3YHl6`N*&prIMKQ3eku*3ZWf6Q<{jxPe3B?c1nfQ zJ9mhzHLmx)=h*cpaVeESyx7uQdLEn9 zC~N^3L=p%n+~+l$O=sOilWEHpH< zG>^{PbCC!*&ggD%dkuiIHj_V%cm9^!*LZZD?XonU8@RgGFw?97nSbJ&j~OZq{ZObk zPd2B}JxZXWsaW^_72+p-vNmOaK0cTxc_F&1i$189cf>!}3S&Oe>w@NFF z{B09gRc*(u<_psq@4K7zRBr)HHm~zr_a1H+L5vWhyriTgnV20FHa0dBJ$Ea`kBdKz zd+BBe#l(uVszSCL?CtN7NF1DsPm{UY)z&1e24edHo}AV*+$McLc6L6Yh|b?mG=1Wn zCNNFOSD@pvnmPA&o=;9ptXn#Usu!K_pU>FAKSRst{PGNas>Y!!vg0m1ER2N5BD&kG zpr9nf#G>jlY+~N!&>vrgfm)oDQ9xf9k%Z02w#n-TlT4s!WOHLsI%a7;RNzg#EW|8u z1dtJ4w?5~&7QZ}RtX*ex_&i=mPesLLHAbBiOt(r?RKc3q-#^X>1i84nTfmNX$b66X zWie}hz)QafBt*Lm5MX35F-l2zUgJR;K^u4hZs#XMzfI@(rNO|A)B-AkTg9`AmI>h7 zUqeE)Za07W`uYN88#FQjgYzKlCY$Nb>f3sYu_JlGQ)0V6X~JIs)?mg@pwzn2c28th z*VB_Y1vD!6kKsbIaAjbGz$NgnO=Ja3kG@fe0-V-4*LADL)H%;z!`3m<2;MH|gXyY; zUKt{KdZZo1_4YkA${T*0ktu>Y)lRcOtz~R}h_vxYwpEA<-|LB6c4?8Vl0scT|qr$n$AujAIJ zd7LazL08LHQOZ}D`LZb%h@dOe=QyF4$VZ`G7?#E9)}Z%^k~9H0WCGiX$HT_{p6VU_ z6HRY&Soofd0sO+MycCQpK<>*`6d+>a|^OQ!nz7ao!(9 zspZ->1k^OxAwSDSNF(gvzKKwfiUs~wIA0##w&j(8msn2&MS(8UZr%d^{J`r^YCRJp zBLu(CBY$T$wTnc@{xARrGywg}TJ|}3bWE%J2dGPwsP{xlOwKbN&ln8_7&rK!42P4> z!2AW6irc+u?VIx*Ae}bA;s(gT9mpb)=Dy0|b;IK^|E5;D*kCse1nbU2zwO9C&vjpJ z|9rc0`RfSKlcM6{#O%f+09G{!?Bl|vCX8*mJ<_9$58q4-RO zKP~FZwcE<1(|JZ^WrezhCVC93Wi1(9CyX1K6NA1wG#c}x4H}9&I+pWzxYpYii5!Px z;oty`nf`vWTb<=BqmJ%AD(~&cX-0Y5J;&pm>phMPFm;$O5u&q)Z4cblsejlYK4JW^MRay%jGv4INe9rMJLWpb5BG^ayZ@ z0Wlr6{;QE~+^hB+%H{X#(b7Db{iusxyaJ^>2hDc$jhh0#9Ti~gvsun0aPmMPYrz2I z`3A6r5J^gZnv^cSzBq8YE7_r@rUpDG6C*QiDiw>$;hb6hg69n^ZVIo%Htf~am9TH+ z)<1p651Kze1f4jLyR$R;;_&hvF9`p6HaWj&RGXEP(-mhJ9vC!QDW53G74p3bN;$xS zNW1u~jasQ0AYqGV(u3)|_M0O{X)eOMr_dJ4>gv4GgKIJ_PGL2Qsu8|gShKO+W`qq!B%TpL^Cq6zF1iJ;n$}R>LfKFIs*=ogrIEkEU;&5 zD|s3lA77}jZC0MzV0FNgJxVb}PD;vqIr3DmCp6POc{|>t%Dlq|mZ?0|Wm?n8VxfxE zsNEazq(D$m2AH%kw#9<+Ex5?#4mOBF1?OMt^PCZDgj^4jXgy*S`)hqPeE z{7F4LaHAkw4#jwnyaMtl62cLdiaz~30#`eGBes3fqEL=Fb4QBqz z7N@q%tnaTIo!IxJ@}m&}mq!)54d}_mMhj{y89CeMZI9M&?<-=!$>+Zu6d3&n@X? z3$i5y#(g`}?R{M~@M(YWa-gR^-Ue_HBsn0n>d-(Q@gyRx3YqdyqJ4Bsj2ism@!&`3 z;6q)c_Z@!MA1`xdakdRCOL6`72Y;d}|9#6n!jJ@xnNqo7G+r)Vj15)_0zGhc@VgpL zb%{n_j!`wcH$V0)@P58cKeFW?!}JNuFFkGTgQnFy0AvF0$isb?X{F>BBYnh1D=2&X z_fO$Q?pj;i{+0plCX;k#k%vNxT>-$v1eFQLhs$&qj2}Oo@QUZw{puJyo%SDVXTE3? z3?YCoV6Q~3WMZC0la10Y6&t}r**kJAWXR|}w6@%w?_+nO=>N?Oux_l8Z;vGX`8Fv{ z+uK10x-lvR`l)l{D-cV<7t3|q=+$gI2vE2twL*JMfYrz`r^vBJK@+ zzXo6;&q`fbq+bBP9KVZ>;Qc##Gwe*`!PMVaasPhbh0UGAY($WUxRkn@Qs4= z`IZ+@MIH46PD%6vK!_E&Mv}=q+)k?>?y>q=HhXr4xxGwHO!}g|Y~V48n{Qs85b%c8 zw%zqSMgKrR#8;{`>LDQ!nqOiF=4{PG39{jqhPt{qXed9a064;CBY3c-+CNzzLKRB% z><;yCOV`iWWdJUeHA4*tN$Q|44`2z!_iLG$z(Qns4kxIpiqD<%1kz{4*7*H*ceTJ= z2Bg9y3P7S*qS|tOP4IA9PoB1n>al^3y#t+5J%Il%W7dYkNw@*5JAZWn3R_0xD8~!+ zOA={}2B6V&wV$IaE7K}$U;xV9B`>iSh#VV;qst{aUc~R~qm;bJ_{&xmw8Pf{+{|>5;rBV`K~{zzJRN}a zhn)rp{t*2f*iXF!7^UY@qs3}Y^=21frP|%x1M{is^hf;EO2s54OA88q40P^*Rmu_$ zb>luJ>oo&Iq;7Z=2!QGv1dwmf5^zx4BKqXS!T~#!m)B~LQr!4D^gfBu1#wbf?xe39h-t4gp25^!5zKoi!1Ywpy z}SJf0|->mjEiU?U;X(kI4`Ww7jqSM4zV7p(Rc8L(X{BR2l4s^uB z$L=N=&)j-N6tj(O+uh#byWeJ{WpB^y|E9*|qAWG08UVPQl1wiSd&ZH!gF%(F+(xn) zFQm1I4hJ>D`nbWDr;1IfQk@sc7=ehPino+gbZcYcRwME#RPi{>6NdS)dGg^^eivm>r}W!AGvLnvj?-1My%?MxLE6)CZbF8!bcV8jSZ zl&YP|(KZsZ?fZJgw^-MTiq*Y13~;cF2zgx%u=k2g{5poe*2yv3bxa_c)Yo{y4F!dT z@k8v~`5)S7CM>Bylfd1dF9V-4qJLB^FGRXl(bZ(NyEMJ3LExS^bN~L{arFmhN-um7 zAvGQFnKd&qFz}m?n5)@{Mas&?1O*PSQdb0KOQ~&j@M9qg0s8IWf}b>iBBu zJYN0sInl&(Jw^A!eFDHJwWB6@y?~ng`S6MgrD=gIx=+JU-HF9W($|AH^sf&pKDmlQ@6~-^BL~o@93Ia^3?nM56$rVjrJuWAwy*)VD7jM zjJX#w+Oryq#8U9}-S=T~#rPqbFr_p_ZS9Cks-Y~@)fWU7k7p4R1WcmI5_q{!pgNE~ zVPl7M&n-gS^U!?XvJQ2p2F+9oJZkih0H^z7pcxa!fY6<$53m!5&)BC*H3fA7z6Fa> zyJde}_5YKWNkn($Ou5u~Y#>ey2<7|3k&dU$`02}n8bU(u*I?Sa2h@Q*2~|8`K20Q( zk=ZG@SHvrwrK~LYF#YX`FWDa%A&$_;RZYK2{x=bz9db>}Gi?m3XARA0mw_!Euf?`s z9(MDEz*(JBgOqDRObkWjN7ebjH%ixko*Ns?$!=-@V+06T$^4qS0FgpKE|M4E1BjDq zR8slb&9^x^Q9kWZ8R8I8HmuJRgrE<`5q<0>O5!^}AL#e0mCjsz{GZSa`vh-Zw7P%c zB&k`ar%>NVf`{Wywpedd! zN_AabS#K%CQMj5^JYkt{XqfRNhKRKOShAxG!r8K=L8mC}fwTHl^qd>E?_HhTT zIDKfCNJtZq&dDE_f+%&M81P>h$R(20oQDKqz?+WG$P|C2rubo87dEMz2lIhWxkA3M zyu5mjrbe8@SU@+pwen}vfUt$+Uxve5Do0Y@L5@|Yk|Yi6YwEHBUoldBi3*v*w2Kup zaGIette!LslM#`L>zLzv9Vw$B04pY5@M~tK9ddpdXzSZ&fV;}|@ zsQl=QP`o}$?klbrB@OS{vBY8p$_iMT+$<7?HjGn0l*t69vMZQ62rF4_JQE8JQByaN z36<(H;e13k?L7gY07XJGF+EMGV0tk4UBr(=AXDLdaFcZEgHUf^wc%ln!0Sj5uwcfl zwutX1fSG3St~^&INtm3qNpp3@nq(JpDw`#ccm_TdG@~x#IFgSFreVXbl}AUSJV>cB z4Rv|1$yi6tS>+RbLgS`F&J3&70Gle7YihFcNYEpA@t0+RG7n8{H56~ia{a_RX~@fd zA5H#QdK{Kq0&QNxH<%5!_<`9OndGlAMdRJUvF?c~kGrK*n0tG$PLKB)G0NHqKd(%4 zfs6ftC00DNy`bu=mL&P*M*&{;=w|is+;)G=guNK`?H2H9=|%dy**9__!W!s;RG0Rz zA#Jc+Q&>cSO+I>(^8vB3> z8ertfeex4vEy>t>Y<^BEN=kkpQih^kX?wF74-1wVrb4k?9O92}byA(!Q>7{iHz0Yy zd#82NrYt^aw~NAIFM-5R>Q7u^EH*ZgrnWYHbf0i2p`x5^C_j0=3^jzN;B#L8#68l z*4z7Tso4cd%f(>42N}Rs(3mqI>p^s@N7HGE8^~OqXS}a{$-uy1S_{O3a-~W@NU>Qa zL56v9Ynn0qvBDM+%J1vr9J$G)g45F+z3?B@Vx4142O`sYZSXnSdMbx^$=y!eNWkdk zzUiRs%7MjK>ap~9g)~y)zlHzlGSp@fgvtQYrfhpitttj1dO!LGC4hAugU_sWe}mbH=E? zd+bc!?V0fKP?rWb2lF^!?*m#V)$8=*Pj6^c-s=Ks-~4pfVBn`sl3i1BG-5B_}583NCf=5E#Q*@-N0KL*gEpU2nv?1*#X*Lu*{vi3HWDWVc{_{suROfPQW<< zWlNX$8=y2;06-cgD;}@Tcggx+uj8o;nl1O{>b10g>;OsEqkco>Y%M}p&vhTHiXX26 z|MK}$rK)QlB@q1=4_iE90Ln{epwIbx3id(}fRcU-A0Jo4`PE5@@^C;dbGJz9t-((V zUiSyh`_b&uU5nxU1tZBM2}(HBH$OpPuO}$z;qi1y>~r^7wW0hiKik}&r>MM)KwL(3 z0!_oEl9?k|JbLUacjrXimJ8>;9R^G(M|`Ir=H`F3EvhQ2c0aaZ#?E&_La1fjpby`< z#4Fh~f8xv|qrz$d%?qEnt9z= zY*y&R$p3!+13ej30hNo(TDy9np4ix5UqKN=0oBn=hP0F@wi6)Bb7d&9va|oWU=zsT z_Uz+zJ>9EcOtGF)Ew%Sw=H^`VJdxZ8Aa2us|0kT2vJQ{gIdIYxY?+3ZUkSE2DpJOA zzw)P2%dZB2XA9E@P}M&Y%y`7a($XsibF|#h1O(d7`}j0PkDYBq@zpXERND{z zD)cuZviwxBholNXR5a1Vuczk=*8A@Xl}6_CjoohC+lI1JeD&ganmEMi-;U?YJ?hBF z$N~+-C@7!{%ZueHu=*$qxpFd|aQ{Y5k}6~H{0>t&7|7#Ud=Q z12`!h9_-Kh=;H!c@mnh8o8FCMKTA<@(PaUS0Ia_e;@CoyV_r_qaZhQx%3qOI88QgC zYo}LdwMt?+NkWZt-?V>kq~+xCcX)zn^QDra(w62Sw$@}Nv zx-I^5xPun}!qkif6SAu{lwa-PZU?j`9{3d?sla&*64}6CuK6J?0FM7DT#5TH_6c78 zpOOUsO&S6{#8o8(;J+hiIOFukWvpqWyK7=<;_wlk07WhMPi{!p z_jZhQx*Sn8l5Y52McsORV00>zJ-X<8QmW2owVeI2fQOF9v$K%}lPpzUU7p2x^AO0` z%G)k?lXffvM~uT?_Nkxlw_SQ>W!a;09kVOSJuPC!J9SqM5*4kPY$6qLd&y#GUY-2- zeMr$o3Z_S&KVVGRg>(F`>!vsHYvV5hnH6fKG+5w*&n?u4lepGbO~!}F-gF~_l*>C=l8h0Qu%e{i&KeVu5Vt%*hN&-G&lp_epT~0 zU(lLL14bQcgtkG0&bMP(^9|7aH|9LT@F4Z#9o}g<#5Aw0#lEvkX%tG3?sSPJMDQ#q zh}lYx-`=%)#`?e5gu>j7!^lz}e}W)#an^_RbJ zoF5olqkjK2P5eT6D1~$i(p-FOp8>c7HHX`ci6wVR{4NmDANFdt1^C$FtIc{@`zcil zjy@VpqEi1^d>9F1Tk3yoe)7{1JHi47dSeQ&l%zV6b0x7W85ak-ET)5>iJq+Vg2r& zG8_1Dwm)6wzWdyI$AzXooZ1aCnNXyc+t2oj-@6Z3tV(1xM`eHTWfd}JR?xaS!&OOu zWanhupxHO#9etL-nF6u=Ksc!bNZ?G2{}N6Hedvcu8ZoVP_1F{%4`hC^S6ls1V|YeI zLkJwpd%ausG4bg!HhNLA-euc4)MSwQLl)o)MKTnZr&*Bmg?i-&X)F#O;p`T0y0vP1 zV8qP6{G05?#|Eh{b&v%WGJI=68ZPMcDBj?e$3d#}Pv|5hH}sAKiUbdUf)Z`Ia0~J- zON%Y`>PNG-;OoF)o%9hheek`0wu3?>l`l^da8>xkPwXEi8>WG+pXH^?ZsnyP3{~67 zRB~)AC{|(tc*xII^lW7e4`4{?Ox7cDL&nx2wRdQ}7g zXpnUeI>X-ACv-TT9{0vF4LbH6)A`+TDUGzsDvT<=zs|7&;C zu6<_*$DC|=x<7ug2*2-ju~%<`nVzh-v`DT>vhmC253o2;&6rPJEV>v0mHMK3zGONN zSV-dOZ+-*#sw?iF0_VyO6LVqB;QDlLdUqU@M_zzxJ=JI}28#A0ayf2p|I|$Zfy9A- z3aKx|Auc|6TB=G)t|i}Q%maatpKfm8jL z7vvel z2|mX29U?{0x;I)8O0(4+IG>#PyE_u|uy;R%`hE}m1*~4`SG2^%RhC0Z+eJnEz5$1& zfDHm7ygLAf%5YmXoYyZEQ573wlD=qO1N30_G7+8Q-mlEZno8Q`*I1MuK$#Y0e`H-O zt!eUt0=1BBv(S3~N`6b`_!64~qvvQ4bEFOOLy3c!IDO4V)QfNG9aN zJa?#K)KzXqOKuOob3Z=L6#79~P3_0QmP!b= zYY2RxRA0mlYy~>flA#zXA@^J2_d>e5-+>^|#bqaM2qb%go<>eABp~}k-Ku$?satr& z7^KjoE_wdZ1WGc9nv_SQD#1}oG=P1(tH}v2)@2cWZrq!s%P1VtUTIWmbHMSeb=kyA zEeS)Ukh-p7#6}dW=Ow0Q>3JSj0@Lb@l@HVI)ILj&WDv!bqV*gN!&8`eL0PAE(ntb% za?@bt$_jlk!Zn%gq=mPY1aHKqtI!BnBPyj{xfhR!Ta2E`P7tR@C2H+ectlE5{^tFV zX)t+KYcgIyGL1{UjZ)=^wowk510aumxfN)DTX=+^{INDvMdDKN3RWYE`iq)7U2r8@ ztN|XY05%i?8tz=NS4upEe;{}oQ~2s?7Lc;vw%>a|JH%%w=z?lnyF`V*50E~KjGuP@#mWtmMo?=ZcDGk*~I*5 zP58FYV=;<~?6D9%`qtciaAa*a_-GjZ!jw6L4t8rjY?jC;*WK*PQ0b1B9yPN44Q{uk zS7I%+7gHdrB8VwnqO#zpua%ZW(Eg1g5B$D&FtV=J5s6J>-^C_s+~zA%Hrv7Rr|Ah4$!}2h@Il$a zJy$uJrF`Mu>i!-H=0NzUOa9?gTIDNxu8Yu%xk`n5>%P@w%LY;goBMwNMzCf0YK1Y) zVX_dhRGt&44*+44Kfv?#armQ=)<8y}$l&01_i$!ONz8D^O4{Wc9?wTnBbC$s%&RnO zw0!8U7Yp^ew@CJ)?)`BS5|zhdLLTku8B;>YmL}0`vmPTRh z3YAp$eh_23Z6M1m#x*UWybglRy5pg+986MTxt86yXXV!JNW-OeS=m%nUuEOPb~#0w zVqJ9MpJzf5W5bwUDyO||oh=3KCF&mT={Rp+BZkE#$?G!zZFRn;+?FG!7cEZ(ZHaak zX1hcXmRMJ*+sBcwpJhGwY4ziaM!1i`ydjjNuVrv}9ZOsJv}I=tjlY>)sv*zzbnVOO zN%jS;Z66DAOL(1Y$sJmz;|X;+JGfsbQ+9MW1D zgMkNM&n4)~osfYl7vulB@IU#(^dVRMNXxPgX&h7lEorr=9>XWMw|?n#f1D4z4ePb8 zfdn{&&O|MJ$jQQiW86W?4UUhh;&skJv13u<@N`q7Kh68d_&aKbBTLO&Ay*Ik+w{ z=%APAb2rfik4X`xQ$W+c{}x8SbCXcP&DYK<+z^|_1d>bHx&ou}6rm#C@3^5Ll$ z=q*Q#N-2AqecHKvOXTZoY1KWy-oUrdekQs!Ce+&0>qg)$O7`4v{xEZHoQU(f;D{REqM$GT2PGO4RhD=T)o!)Gx{$!? z;VLG!Eh3J?grFB=S%alhfq5h%uC6|6Z|^%(odM{eR2nQjLVz-A(X<)q9v?ncX5s@cUDaUkN{hmNqaG9GlM`Y0~ zqz&sqYtgoyhtNZ*=raA0kgVTWMW)&9ZG%1)$aBl->{Fl%Xd>HuDZ2N$?R%+4cJPu< zokrJjjiikw=533iH3H9?%+$W*%x+qmlKaqF9kxB>0KWxEqqW2%VrlHDx24Rq=P+fm<2W_C&5T7SXe?@+Og4+ zK)p7~VyBZ?XmydH0tO_FA5176CgV7FGGI~ymd`Qnu1TY*XGOn>UOyp{>6CJSrtuV( zoL=PjqHTspOtm`;yh&wr_?~x_mPvh4b=X6$ibl^e&pzoh%YD;nC_d=jGl)cR4eS=b z%HE$Nc^F+O-S^k5zmAKb$mDi@U2)+~x7$gzP_cbI$3hwDPdytX)AQ%_QUZS>gXfR1 zDPdP570=ceyt^8MR>hYVhZ>!n-WiMra?Q{Y1yAN0q>aMj0<{sQe4xD#A9o1L%xEc7 z6N+A@2L`&_f?SKIzn{GNMv^&vyK|!{0-MY#Sw?SJ7p564b`h(W9?J1eL6x9AgSGK3 zCOiUj$OX+O3p8-c$L8D$&|H2a#V@A?P?+p-6)~T(C;Ky`r@>kf^9o2?ZF(5!ov#lv z$0unc znQDS=A-gUSU*Po*#g86FU|!Ck=r`&?tW^#`N}Gbc_6g)2rKNq>CDH-IfYvko`#ZVi zQ;=JQ0jZlbV`gYyzr}sag+<~sFl$TD7sSf{)1spR-XrB(rA#(`PFVi5&gEIoMGbzf&&8eu4c-^fL7$ZL+1sfDDP(qMCakCO9eOM}%H8 zV88=YZ4OIG14F3qJ+aCvTxwNrm8;Ws5ijg$(3{`YFTee%n7LHZn_{-n9nEtdMltP~ zYd1|w5uW!K?dG>ZFCwzhDpXA7ZUKo7fx{UaY%g=rT!GFw%l zAJmuWEIw*IcG@E+9yXyd{?)@}1R7psDfPOQiSh{DZ0^!B^AD?`)~^{eHNgXXIr-SU zO?ZPnPlqev#-FH`BOl!4Cx~M3#R$gpdq!Q-QktDnyE5P=Xab+Hb7|6E{$jA>LW)TN z%LxP7@|NhhYwHITBqi!%`k<2_5Lx%`%i~Tw5KNku4_U!B!>J%{KZHVa;E8O4Bk2Mv z*Ws|z-0s!|8Vizc?#wxfR7=Mno{`$dxM1qTSGmpPE+Ev5IWJ9-;ogNxMGyXir5D5c zpX4irY(fyhHLA!xxIoF5GW*$|n1SI)3!UltsG0=^!SUTCi(x zuAqGVIeWJ=j!^#%)ifw@FJbWkxjx?|Mb#pzlw4HF#_@OkUa+;iR=3 z9d!7Nkzyf3GU@w)uhyHmHIG7pWXqAJke?&JgL1oYS3ZP}<@ISK8xlg2J}`mf0T8C2 zzr752uLHx0ZU@u2|AkGnv+Oo)+A`whFW2h9tcMCd1RC!|SYI>31=A(u^d9~Yu4Dfy z+Z)jvd)S8I%OPpSFwY6nNVX;rrEc2pBY-R0?B<`q&s>V?ncz!qZ0va$LQ>JrvKQIa zR3Es_bw{Ei!yT3Ir)Y*-QV>bGh&D`yos`EiYj%-XK@eJr0QVO<`5H+0UC0QK4d6Af z_`0on7ZX23uB4VLBf4Ho@eIk)C&F*&gj$4G%l)2w^af|t<(QJGU^%9!Fbde}_~flG z6Hg8)6t>`cwe@5FH1#A6YK-IP_V71gJcxb(!jDw{jPbkC1_d$*uxfj=DY9bM(oYBZerkY{4Hja4+cg& zHrOlY^Xl++5bZJcA`3rhBGkw;fStcuhC(nyV9)S% zP-!2jA`e5jX4s|--~x|XIvhj*Pc`1hmurXSf)3b-0)TZ0q$l5A zT?Mef6vw&W@)5g-UdofO$&a*>z3t;zjedW)lib%?X7CE*yCwueZ#Vf19wu)4&?;W3 zM}e%4M}UUtl10ME6hQGHmgJE-fM9>kom;nh{7sLPsY!l4kZYsE+@kR_fhY7#zHmHI zWmT+M8wjoR+Gp9)8h+DJRF1H@1vjNg?U6+w!-qvM zOVG#SP{~iwSC}}Uxey4l!Ovb}5&;1jMeY~2aPXcU)s0X)AmG!UAG|T+h8+k{!0Fpd z{nukEKA}8HV897)-i`nlnNK{^Cn);e`KEZtb%HkG0WCm+hh@QayQ#Oxl1{JPx>~*d z$Ob?y+qVN~6hZhQ1sV`isVpZi8jtn~0D!sj?_+-K@jwfsJ-4w&6v6Kum*$>@Xhw&iIv z_N%~aNy)Gy6-76D{rt!LNYcNb?b79TQL8KbEF zaVyK~0G(i7?wLXnmRi_3&>p=9nFVWhc7<9?Gape;K!Ss`tL->#{g3tFs;V))?ry_s z|8wCp0OBs?Tk%pI-hus8UYG24FzsXGk?=uE9ireYWJF4c!MJh*V4RDtYiCJG+vG1j z{Kf(<{ha$59d~Csnw;NB*L0}ooqxPK_>&INb#3qLC{nFM5JqGmeTF0`)XCAy#jFWG~}=ZuAm$;_b`FHbH0 z?8ry%fQagY>p((NA&Fy$+Jw1Pl?`GFi^ex`YL*ButSj!yho76gK{3}!)1hgWk(Hf2RY7dfgO4SmYd_z1kVE+%fH#-!SGK%P#~`u8X}GCe`++e1 z8kku@Yo^(}&CgLAoVvbtJ%Ed`1bis_MY)q40l34gq0{7mnzbkxJV9yUrZX8CFi`9eN*up{*T1ja_a*H5ih^I&O@aRa61Bg%KJz#6(wIR}WD6O)R+ zu@UTRMP`@g8Gj@aWhpJ2z zKhTtAT|jWke#=7#DKWhPZHZeI@MF(Cvm!xxpLy5S+j}xfVPKHU>9o6iW<{ex!g|j0 zI)yIAass8XG}qpji8MT1$Lg;by6wO5ua@;8>;D_A2lT3VJI~!jG|!p)l?sj_7^@Hz zzPT9TQW~Q4cAZKSBWueqn<1>eDb0X5J8FJH7#U^fX#@x%yYlmDUc zR!?h-bd@#G8k~Ymu824qLo`pWPHEN?ThMv)x<(7hH*hTehUT|JHlOXrgzdx58!r49^|F7IJ zt-?hd5mCrnJ#H}0R(@ilAI@}%4|9p=o9EGxHT~~_hL>jVr#Se?iGo)e@iP0ko~V$* zW)!07W9nerfzkZ;*!&`ee|trs?kD>9&2u149>NJ?Mn_$C#%g<2>fCYQd=sZ@dJUNE z(WZy27DZ)6kF%v=Jjnms!!SS}Q8%#fF+d`$p^WK)9czs==N@H(PVd2oMwAzbL|Cp<>UZvUFhI`;M0hFGJ#bqOR+L5c2_?*RUemY zn~^-g`@^&Sd}NGnSGFEbMV^e=F4}D8fGXj!okp~<5W5Fe+2lG5t7)~bWgQ$ql$NBV zxZCZ@4P{-zS-yHfRYAqqsE`i906ANJSW^l0M5FC6Y9p-x9S|3T2D5Vcn#xBR`KfnY zO_V^Oi%7Ak$Txk$$I;PpIoJ{THKAa7r|rrXHkO*YKR5*OifqwIFne^2dr6G7MB5Hr z)G5~Eh}kQgg&84_H)h#d9(Jm&I0;XVdK`qH?SN~%yAwV=q4OrwiQ`CQ4E@vKC^Y_K zVESsraX6vQl z4RA_k7YXwnd#yoL@z*0jyY`m?7fSKAYqst$#ROi-1TcuB3T;r6d?3T=|pu z$jHn|Q)!K~tHDGHfgI=&uIRqEiPtHY6a@`veVWDLC~1MH8103^}=4vQet zwcGYTmHx@_$G>tpD9Mp@Uw~cvW7=S2gC+leE2U>M6>9L2f`e*kmShf-iD|tk8jm?OieTQcz)YDFcMH^M8Hk zP4?Xy5&^)M0VJ0hnzDoFnMxs=?`Qhr2_*A=8}kexDE52?1p40t?K#f_1##u~CR=Az zWgDmY!~N;e&w7f7=yZG+K9zrSh(?5CY?zr@WqN=W?UhpS^b5%;I#WxcY{zemkGsdm zPx@RryBlM33QU=$D2!_e?;-U(0x;@84!#1J9v$YyOBL)}$Q1-ZK zUOXJGnPiXeVsEhr#?(H{i~1xpRO#}AUu3}8i#>QJRxD8xX9E}QSkLD)gF&~ptr8(>^DNT2d|wFkP*=$ z;H5r+eAkFYj=b0?Q!1>udl@f&z>r}?aAtBMIx3oyVk_g8+y%>!pdjG8=PJtJY<1ivM(VvEts~;J0pbhqeW<^S98{yf zOfCW8Ua+HczoBq+5U%s^kzr#*{aiMe!rc%Esr>~pX7>dshM zlQrq$3n!^Ao|e~S`C}{2?dZY?Du9(v(BQo7Ln;g3>sYb3Ll2gAiqm^q7aT}3?(Ppi zTC=euBX3_l?6%ttr#!K1uzIp!-YtUY`S8U*I@32GjF5*>05kI|HSF+vB=Q30;45kF zJ^`c6E~KC79vAS^zqC}{{rEY>^^QXl8q*b&iWIrDwR`4vN0HXjuj_*S=O{{7Z5&QX zV`FJ1?me?<$dsISK)AB6;}rgB1g<5%zNnP#88`C0Q>pjY8)}^! ztH0Y)vn4}lR4?1UOu9UWBAJ+DKM*!^+fQ7S(e~>9Ox61UV`hRNR?KAM2Lr|gUHL+M zG8{r+$;GF;lHzs59xKVEh@#0G|1+xw4HO&%7d5HQE4GV3G{)C3TYa3hV*YDvK_kwW zBuG@t38~3E6x92viY^;!cjQJwMOab(Zf6I?b(O3kLBZ1$*(pJZSI6v$ldnk=Z zD^5vhA^Owdj}w$qjXgNKvc%kt@wE|5!Vw%+tM6N=UbxcTv$8TMy_g<6MV~$4| zuM=rMn%>0|YCSuN`7t0)pt?E8p*%&c_(Kdg?M{8dzq(kpX)8Hzpg;J=Q}WQIW5Rr; zk}|m8HGj-7EGV`(Yn@oza)7#?JvF>{y0A#X;#!?+d-%<+EQW#K>yx-&W0A1I>|s<= zoY%9|N?{)1usdT6RkptRYcI{J)#Wh_*1k~0Kj?pgjuOu`GJJa`6*^j=Sc#7Ani_1H z!-$Ub&Te2Ke$je+@cO^=cgW)HFz+I z9a*~F^77}^Rb3p!rvYJwMNZv9h5KGR)wl=W8XIf8{S(t)ro>@Q2Rw_4@(t=mthwub zNx=1s*`$5M=Svhk&YgQrNgS-yxFF6f6V>~b95JIx^FTB~*z7@v8Kqu<91+{&QnsaE zY_#ImVz1%M{7&tAMYJuJn$l}$!;FLmR09{#^Y6xthor_PaPgU#clSK!+6WPNJ|0JM z%0#8SWly1@{DM3fx7TM@E=7nDf0B5Uhk$XuP|j~iIDM*z7(`9hNhdBV%FGy`5%rZc zh|;>xj7VDeqtyfBCDSywM_HptO=-vC%%?Gv+A)O0aZ(l*6;sXYQSDzff69hK{X3d3 z?vu=dhQhsm>vi|nwl0;ID9mPwWZ5H%qCxjosAw)FP?Tzv#UK>@2pq@{cbwg$3m8&S zf0(_0b7UI3uo5auA!pwxT_3Paiww1wnc8S&olkhB%bch{bzPj7s6FLnzhL}FiVzZ9 z1I2-*3G9w59!P!V@AC)j&|f2*rgJgPn|wkZa)7p}BsoFo7Z*FG-jAJ;z$x4sWWqKI z9m3V!4~*a-C%atA8K+C~blleuB3~ALZ+)5a(4>+okH6S&Ek&|F&}e$7P?RUulExKCN9eniLvtoLg5p zBI8gpWobKi<|rRKIc6NaRZ}<}X2>5T*QW_<;MFGOv2R@KboY&L)@y&Xi)s)6~7(0nQ!>&*BT`61!Q zif=X#h{kFzdX;Lf{OKcC)s&IOtumZV(AMd`7d$D~vmDg}tg@#yl&^3s?3j zo>V?jg8O{>{cEi6@3Rw@QCPCb!UrELE_{)tife5oWjfDDeVC<_Hn7ABQh04Q53c=+ ze6|bM43f>Vim9p6LTw^&XUN`$RR?5v@&B9%fs<|t=Sd6;(Z@;7X`V{NqfD<~UJJ;J zF!($W_%lo#k4n)vp@|qVdq*XC=nj#6FK(jeb|F{0qMh5O<8tEkbJ&iV_IZfJN6ho+Rs z51x1qHre8EMP>X+#?qXh8u2sYdU|vXNeire4Ou^Q9bry9)3^j!PoB8w(#ZE~I#SCQ zYq0X1Aj6stHr(aEC5uf83)h}bdUXY`@Q{eIaEK!`^_`x!8KOSFp{GH=3;Z?YmLeh^imnh7kS;4NzSs zL@}(J$(0k8sCoTH)r^f`s}`879?BA&7ZRZRc牭vwf#EM+MtTpn$VeD79DPiFe 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 BXjuRN literal 0 HcmV?d00001 diff --git a/.github/pr-screenshots/2500-hs/a-m-d.png b/.github/pr-screenshots/2500-hs/a-m-d.png new file mode 100644 index 0000000000000000000000000000000000000000..7c759f4eac66ad3889136042197780b05177ff62 GIT binary patch literal 47139 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 literal 0 HcmV?d00001 diff --git a/.github/pr-screenshots/2500-hs/a-m-l.png b/.github/pr-screenshots/2500-hs/a-m-l.png new file mode 100644 index 0000000000000000000000000000000000000000..6a86ee0cd21f23e5912b14f347948322dfed783a GIT binary patch literal 47968 zcmY&=bzD?Y6ZRr13Ia+%SkoH;YkJTqtgB|;Ig#aO1aWY?yJ&e6ua-B5$LV8YD+$EGWT zPMH!MFf9nAWTf*b5eSqTL9+bx1r$vPhw$_ba$1iR^`~D)$LJ6d!+pBU&YXio0`^|Z za8OXho4VVmuXM)Tr)bpz_3`m|n$w^j;^j|Q*RJ`9BBSrik9+(39lP1x!C(wIVewzY z)&2dnezuF}k3-9C;f!%C!6!6OA568Pbdl@o(WK_tIj5XdJ!8iB?y zoni8HBV@jY+JmmNe-BHft@E%aw&Uf<=5$byW@$1TaFCG=%ym_JhQ?^m`gY-S)f$=Y zgqooc$#QF(lNjoaL>St1gf$m{w1PfCnl6~|@}0xQfVyjq%=eQfC&Grki1<8r zLj!}`vx|-Q0~rJ{@^C$`uNayNqkTk>Kf>-$ICRfyF4GBPwKA!RlV}sWydT^Lr~FWf zCi|jKS)KzEdwp~Hu-x6#BQ04@$Z1<365QPV+xqaAy{61y?$}IYBTGG)wzjsB<=H@; z6HzX@M!8u|Hq9hqZ+CB%QKFw774WguEf+!dGn}%Rui5T-;K_>BtTaDbj|{!Jxsgpc zzfS!E&*^lK+1vN?im$!1V*z}Tlot?TFNhY5C!#Y~q6e@2F$ac*-W_~mSG|=eHj3=R zh)Td)wo$!=O5nfkV&k;t11&4_us$7g2hUYI+JU0{;>R;E2hTHs=m6~ z%H6hig)ao(pUdUgUc=GRF||X1f<4tnNG>q@>?6r;5@$5@p?Rd4zbU>EM|)NnVjFAA zX{9AK5YIvoqfMIQ$mMi!dm4%A{qv`i$8@RH(mkt%290xkV&q&7Uc3-q%Fq>bWQC+C zF;Nh9fgdiEq1Wac8ssKN*t?sp+a|F<@bXcn0EJ^O5(y-`ETZ4l_oe%4H`y#u2Xo7F#NU>0r=jZBcbqUbUPHiMY`>R< zMg3W~U}ey)rS|0D@VqisKR-F!pQ^4t5qaPLu+r||zM0}VxwNDkyH#8X)3o$qlKUPo zamiVI+SX0dA>Ix*d%!d zpW5Bax8hQD)AuKna{OsjikC(*l2^Afp2lWi}87^?jU$8?LiEq%xa03Cs}w9p6~9InPXt=O01<DM2JFe?br6Jjq8uD^F;)zzuu#A z=7>p3YTtBSvn@K)v9el@W@4!pXqoh@ob>ImD2V3Zu`RMoEcSE0H5sc4mN|Vi-qdyp zkGSceQ(9d`$Kd!%Zvg?BoW#Mw{sJt8I@JU(a^#&~zkZDusFQqTqOFh-3&#DSqoY$> zTf5j8vw#rkv50ZFxoK7ILWVD^0+U2T=E(cmmqn3d%6Y%F^uXjVa9R^>R@@+h)f=bD z&;Rw?w}{AIpP0U@G+HsHk3O~@?B9pI&UV?@_c&SUWr_=#%73uOeOr@*HR$RQn-2A1|vb-Cgg({1M?5DT2mss>BnTpA9e`Y$4*jr(gD8s8wA&0!J zQ!ekkZ{@)k?Z7>;G{r!{O!BF@*eKYmeLd<|joL%AMs7|7YG?KyPa?)b>fjOjYlq$E zxn;)vEyTu7Xr{L{-%A&c(O|9k__mhs-@g5z%R=MSt)A!(Cctx2iXmxji@Grg#bdL8 z9%X9=M0^W_r?@grbf`yRs>tI|V58h2PzY+9fk~z=iW$BC}#jK6t z%9blZCw1EU5W2*vzII$@%kRi|th56q7}ATsC}c<-_h&mO!xLM13&+-xad2_b-fgpI zSer}jF_=wm{ZNe$Pk4NDe*b9h<=>`g?_$4IJ%0`<_&nDmc;B*-!j@dHZzZFu2S+_; zeq5TBGiz%*#%#f=sbbG#7f|aPs~Xa?cQO_7%lFI-wr;Swu@NstuG|^K!Oq0Y>|Q@4 zM19`ZG1!vU0u>`DiYQ%>(r`x5NUz%W{c10R9hwjsfT^N3b4|# z>;@e}rjUBt<*B8UqPWoy3NdGuGR(|Oq!3QmJvFtvYef37Hf4JVF+=Y0^CT@X8NCOF zj}MbV2!))d5_{GK9S+Cg6IQ6Mg_E43#Ne+|LecbE9 zk9Y9y(kyok@a_##RsGPI{;j{bIB_^eRw=(zuSX=-dJ#{QhD zn<80mQ5DG0_&4AS{LR@m*wMvn{v~ov!L*3$`A(_b=Ad|_4%6TgtK~dtb^4AZ>==X9McQ@!H}`HlCxP{^n{I6_%d@4m`={brgCjhpW$v$@mhW{`Jwn%! zeTqh<`+$+6^Y=pBG!~1lRX4}dc2Z|u8xwtoNZF0#(*k@u4Gj_R)OktHUe$wa-HXl~ z4Q8dH-lOv?)3z440q=OxDR~$f8JX~b*(7A8WG_86H8oc;ryejwvmzd5A%RdtsyvSb z)(qo)8t4>6BJ1D{trvd9=x} zggf($k%9Q$1_S(9RNS|OB77ky;){M4^UNFf58MzUr~?_s)s+1b_+l1ynTa0n5sZMy zj5O*Ea*vv)rn=7Px}-G-6>^GFsPY|ZWEbQlBYM)yWIDT&Z&izZS!j8wOgKs@$|BIw zLpvy(-4ZlDTd{lY=l=N>l{yS%^(>yhZaK446tTCGW2h04u`CL7>+kQUo=FS1LqO@j zyRJj%TwL4SG;S)8o7tNwcRGt-dWo`yg(J^#T^My-MoZ>A=gGUd+vbPLW3$ z_V^tDc9EY7e*|n^y{-2_J?4~nuHGm}*Bc$u)BpP>>bF)?wa>E!qMn(#bQTo!Y=Y8e8e6twdg>Xx}i@EohH z=dqHGY}Rb0*+qSg+x~2&0S82dP8-sPpvx=wxIy?0jXXP*jtTMmR4jSp!y+uC@#Yz6 zNt?U0n1?qkcuQ|mb%XgI!r~j@VrtfM59xU4OJvRu8pL_%f2-BHnhl5~nR8^X>-*U< z%iO$tIq$ZcB_F&4CA5ypMnI4gKYD`eUg^%+2%^^eANX_?`Mo^NZR4vu*h;cJRYr5i z2kPur(IZhiX58JG`Wtmxkj>O=*FusGz$>5P@~lee@FbE z#LQlT(E9Sy`C@l$Br&qkT%BBVG7a8Fa%wM^=)HL%PK9#^tEcA!Ay#EEjt1BLW!m)R zFLQ_4OxwuNt{DMuHuFV146XbnvXS?Jp*;pb+W8+T^C3}u^b|i#e^>K7UcuYjh%Qe@ul#wY4)O2x)s~;dI zDnCAxH)4oM{hT^hoic{TmOF>@_V={tWG#fb{%tE1BtXu8%-Qm-4XRd971un&nCSw7K%^zD4|+D z$KS>=Tx?6nca#Tj`Ex&AhM;I6vzv2})f)w98emoBoO;atmkUTVjkhtF+p>O=fd6$Z zXU}(|7;2(263IAi`1R@1OM$-Ksp6bLHq;PVs*IOUw?RsP;mUgR-G1zKr}wt6X3>Na z(s3`pLds_=@g!1KzzZR}j}9w{I>~QdcPzjg&+_>FPus~Grp@6Nc5dt4Y5FcauW%=v z4kaqCxQ=hnzJ(G5#@esNB#69+o@dBzi1|dEt+7W$oKL3I)%p6o*Hp~o0gKygi?yjKRwEdDQ=4)KLEwYgN!3pnbV{TP#p2=G&CH(y|H;Ten?AmDqG1+l|rm`Eq~wTUC*yTg{1Mg zTenoDHHp%HV-yrzt2{2PO;Y_LVt%y|{_i0bO!2$xv)0xf@M#ae-!WRK4$eq=+Wem6 z;#`^RftA&iQuJWVbGtg|3`-KqT{xnG^uK);9KEvqj)y60#70vXiM_q~9vnizm4n_j zqW{`uO4eUiF3Xyo%%Z17UjlX@E+Oy2*yT~%R3P8bSt&97BTHL*4zQqPHRb-$?Q7QP zt?b2(Ml`T_G!4l(+$1s*HRLB(<`|*0$4ViKyppC)N zr4&z3VdP)G#D5`PWYZ^2Lg4CHlVwxbJU1sy_4K1$BR9JB);4SM!>WNiW@16!cZqp$ zMpQkxzPy~9BSsYWpXDf_7A3>Gxy0Gp2GqYb$+%vOt-4?%lvvc$!mU!Bvoq?h&{ZA} z!QgJ0>+jF_r_9y~ueLe!URus&xfeg*V5wq4NtEf-Z*LXKsOQZKo+ej9)S;g|p(Z;0#j0E5@y(*=9>t_yL&*31iH*l6;$xCM%tamhOL^RSuV|o-$Vm zjfIvxFh%u$W5%58znEdSh^d!<#q!U|dWlATS{^1%F1e(VT>QxKZxgaxVdMXs>wluq zJ0RGl0#eD%JbnW{|4S%lK?5YR0JbC2y*EA~qabcZCXeTO>B#nBl|~U!d-rg6|IqmS z=)6qL{hySOuX(o3#3LdKWfLw%Y2wg#HY+5qX~RK+xEy0L3a$%Zkr@B6s+a*LM-f?_ z@VdGegL8Ivc0i&PavPgKgQ~UAZ@`owrDMcUu6}Q&K;PHjuRu>^>guW@pa4DLL?^tq zl9T3Za6h)M8f5?W;G7Hb!1w*@%Hm#+v*3NaJo%3w&BMH5&PF?54*O0*L!&v0to#fu zu$zuTR3j{?t*dLU@K2lY;25$$>pE}d*+4PhJnQUA3hC!?Vok4CU~ehgi*`|%NwVEl~6>VF_+r9U{RJ5=J=+iH2T5@9N3)R4Ws zy@G;O<4Wtmb~0Y-sku3Q^q&TXn;5j?cT7J`uffMh_Ug|12S+4bOhJ`2Qxtu4hhLeF z4^GxX5A+WSDEfM+a9%`)tSe4JiG7?_!zu(URq`EXE2aQuYPi;p;-3ZdM!2DiPnTH` z%Cc3|!!gW|;r>;?HuKe2giiU+>$u$sYdTK;+Gaf87WslIy+A#YSvGG#Ll83EH}D_- z{L`9bxqD#XY_A&wVbr;3mpPgfW(~tgvXpYmET3Or(Pv%_Rt7^~_UxzVcONzqmyJde zIUk`m&}w4#vuo9|_i>yRP6CM|)VBLm?SjM97Wn3Tu2}oi146?Npf8#yoiCHKJquyl zsgob9V`n(EjvgKkBYNK-ImdGmBAN zu2){`0h!+Jc&?fKDz@XqFu<}#0SM{gi}y=&fL;0T@SMfQ9GQ5XA>8b95Kb=M4iB|} zURgGLTjaJ?76g0=`_7e#Wlodc9tY(_F&P<@SFgfu1^A+T0Qsl?O#eIyefi>r`ZL;p zh_d-C3<-l|_|jjO&llK-S7N>Hnkw zNle^BBT^R^9-W0GyZHYUqgcho8WUkPC? zALutxA}nu9Ex`st?SJ)D33`Uu*VE?f;%%HiFAuLNM*02P(3Q-3o}qMmcSq#9#RqU2 z9RGt>v%Pu)_Um!`EEr=d3 z+*nkvCe|h@FvIPA5BNIwPl=JY0dZfvdG5l8qrVyrRYplMdG@5^f7p-0(+P1;Pt*VH z&(HHUQUx@7W60jzK|#MMXQJ>4^`wKVb$LCuu+;yaBfD=e?XT;^WUc$)WylcBp^cW* z(aZ8hvmuKbxkk*N`gZ=)DC9dgzBPt0Q^=p`>61S;*i2)xVlg)E3#1O_XZpqNq!*kE z-``?}$J*T9Rmm4I{|Cb#xiBpcUkQ8vexuvc3}Ei`%V0r?UnbHv3w6 z$_oX{^P|{=(iQ(gqL@9VC$IoYm3n+uF+k+Kzzc))xg(K>z2ILjcAE_!o z!W{IzlGQ4CBw)mw#BL#tcxU);K3?vxwYH2Qbrx<;5i&@1(O`ZC+P`Q7!Qh_s*0-?1 z`Zq}&9h8VYh4u+Z-6;=K!(D8-y0e>kro8hCI@|g}e&AUfx<5tA^v9ZE3*6sBki#aC%1l*h-;1KHQQtvI4dk!4#8W59`e*gNwTUO${-P_)7un@ma zCCn2P^kz!XNG3(*&Sr$kWa-;cv1+m9S1;iZIn;bc)~F2I>F^K}`^rhW_}w<0rj?<{ z9ED7Ezux?*f?$9D$hmXvx?qbZ??%Z*pHiJ5Ma`yKD>WKiPsI^s%X{*Dg^QZSQ`gFD zgKtg3*3QD!J>dKM68VF*P%`)1mPD)^?n0!(+?+vkY&FRPt0tI^E>Tl|K~R)7QGPk2 z=xkbwj_bbijW%S}{&3P|yG%L!-3p7@H$ zI0qfaZ_?M*^Pd%Le_3!jinH{*L&4|$NJh=46?RHm<7g4sVcRDSe^#Z?a-W9H#BQbj z(;t(@GrYmi_hs>|i?mXt2%70ureMt3EPWE^PDTV`OInND`96`gx|N@PBt&2ond9Ya zc7uF$3N)??E6u+U(&MkcCCe36av5dP4SG-M1QcA;N4lZsGQVunr>i z90eH$^(qO~lXF&MHRgJ-yT_G7p%C5m*EeTvI~GfonznEKzpkf|k{@H>he)JRf9wWc z*02yVg!h~Xq_tw&ykdA>23x0Oi~g#DG80Z+nW}NWJvr9dCVD`mm?82vrl~r&KJw~~ zpM3_Uf;9CeU0hVLXETX@*R(M{?;<^cF|dEo5cU?F_+7*jCh71y>w}>8xZt}0T(WV ziDY@UJhXmUJ`FK7yv6vxT)>ABKyb`oZCz-`C?FqO7U@q3frll_?+9nYGf_L=q9s{E zZojt?FVx({xFK1Z=~70Y>})=8PT=^J_I^8(rw==M01V?`&hrx&jU?=%WZHB2tJXYY zG#^%HI7w;vJIhn2S4G-x4?hIU(gbUNA)y)Lv%9yiq#3+@A1EC1g;iWiO5uutzO1Yq zl_+2Y;X@&e$Y9ZKrqr%lusp)>4W4W5^N&C+VkWkaQF4t!HftO;e{&ro=K|Y!1m>7% zDas&>ULf*EL`a-|EuT?RkI;6e4nama4h`fh979ertC_aR_|TxILt=bmGmczU)9B*t ze5X-qnw^ug3mYWh!uI|`>T8XivZ`fYPT51-cy)lFZ&y1-B4>~FMxQ^xgA$34UgLa( z!VU=2<1@{M9eKK$@yP~CSm(7Be&h31;Mm?2%8H?^*n-)s4yMd(S5+3hic;~lSP?R%kfZ|_?=rU zNEpj89W?GsX5*(LkD`M>dF8gwI?;Eg0f`ZCp&^az$vi8 z6AGs<%(RzSnVId5Mx(d4Cx5D{e!-y{t8UmOViEfcjCTcdb^g*1r$lpZEM|Q$=zXX-upov^2G?bN*3K*9X=+pAJPa#^HBRjPMfNz5@D3Z0#Dz*1E$V*4cjV8Viv} z&KMjsxw-s}rvhoMbJu@(3|-N}rBpA=Z9x;#ui;UoJ#^Ql6Xo+*K~X78vTWU=Kw?)X z5&MN*mJyJ`)W`Z6gg$W{%Tg5YIS%kHiUHSJE4H6j>S+*g5ahsbtw9q4^6z}{Mqa8$ z0+Bs=*>wKv!BM$?1AKm#FU@dD;4BHYy`A;WlmLI;pxqHE`6Qk9WV@G zLmc2P2Y%o#8!}n8W11-1@elWajDsAZcmdb6dYpBoCl)<`I{dxhA-xiREY~+Udsvv5 zn1TfIC-Q(BxqE@)e#9$2KEAu*duWMqjDyn3{d_tw>Vya|D%ap>aBDhp(s#9I&(`(i zETkPm|>+2ZNHXw+K1h)0Gt&*!q5esw9^EnBO zh`5xXOpWNK;@FNMgN>-D&D-KXQm=&vZI9%B^cERd-Js>* z=@{AVsuXV3$R{x(AOL$_z0}q)WWXpBQ&_r3&$jk0f0n*y=epyP|LGgl96SNsC?iZS zCPj0oUZn(wjdM$64XdnTWDywrdpHIvOV%8xL73!d9N>?g#`7_E9Lu*Axl4U zAYKY~XR?>IV76A0k3}`Nwt#`j<=R7+pGC&T-sRv5C&DSI0vvG_KJ2Iw@BE2JMpe=s z6fM{ar;>V_h3YCogttF2(gs7WB+Qb4e_~CfSso=r3>)$+D$>pvbAK);6u|Y63XN)0 zG9r`v9@=|iB?++==FxK@pl+hG(^Gq}vdbe+BF#H`sYyGCkOzXyKC;c`dG1kj zAzr3C^R>bm@vM*NRaqcmvM`t?Z=HAzl!v1VA7Y;1)Ie z>#(r<;|)*AWxw<|m4>z0tJt6yd30<=>8qSzmKj_)^1DyGGb$&0OkM%}_lw2`27jXg zWkbHvZ%v1za`0Cwlf!l8p4RJ9vcMnX4)rMKjN0D1zhd_~-nf;mn=suUtu234ia={y zTaxOB8&F;e6HsI*vo(9+>;f~!r8048;4sy|@M2QF)!nu0$^qmCXhARPt|JZV4zS3_ zV^H23D;P1-RF>6jf{E%^*ZaUoN3%lPNFUZ<_Xmg9CJ5HN+fA!qT3R0COh5!GH#vGk z_m7IPShN`#rL|0SEC+)t$9UtdYl$nEE9K;vcs$aMZu-=+l9% zDyRJX#S1bra%#{-XxFolDrxs%SS1(J+~@P{iAmWQ&!uo;IMEao4>T7_(B=>am<2G_ zJP6QGm0@G!;o$*AK+pyPPuq!|wHmV>bD1rz@mk2K6l`-%7z!7~+=a0=@28T_l3qhq z1E`vsYLn>KWf=k_kNdr~IZqf+B=ntExlbZS)t8+ee%X0iooT(gCOga5;$+ld zHf}YOx8T_oT)otu3|<400@q_t*_o-Jz`)1|`UU#YeQwSpn|v04{O}6MQE*>|Tecy@ zOE06DtlA&uTj@A&Q@8EY{oHdHlfssQv%f?&TWx_32$Y9`Zhg9C)1&RQXvq}Ed%YDY zO611P&0S!(DdReU9x7`-R~1aFc1u@jIx*@4xEZa6>sVsJmk;+hvm~P5a9Pd2e#Rsu zydU;{2#>Ist9ooq>+dg!&5=64xS+9bf*$S9Io01RB2b{A>$FV!wCr7uF>-99s3$A|^jE)Khsg;0n6(QN5mB2Nvat;=@_ z12N&@IB&7H_O;#X&D=lDme`EV0wg4t(dTWzl$FuE)xGjs^m*9d;HcMDKC7=kW)6<3 zz^^SfBwhyPrAFT@ zZ0B{c{$oskHW&f zQq;xBa?Dj9ULMrB?9WwN45$96z{kfIdUU-YC4*#Cc7;*f-4}6Z$J-V4loi<>CwD@i znvU`%NwJC%rz+|nm`>1lc3T|m^#h9l82!8omA9(rEqpM%JEhh~30YqL%GXq{{^|aD z_b^J4ih#>83^tg=5O$-SuYw0Bs--ngf==EmaC5%Td;hmVCW+pt+OS4ku+HUS}wJVGE5;IK`W9x?SJ7h2JCV@ zvu=!{U9ff%07kGe+-8IXe zcby~1&CP|DWm4ER-bzsq-JIte4Wwsfdfd4J1}7mQps>+WxN_@5g^qZ$M3KPB$@guaq4;amwy20u-anQDk-+2B9pc&2`#lv z$;UG?G9=*hSRLYfxZVq7xHwq2ScbpA%V)K?W@bL=cgQ6RRlDfAt~jj-pVHCS60Q1T zu%0d)h{d4ujmR2O4_WyO{+rl?Gm_s~#+rIK_ zyK~oPc<*U%O93Z2kif=F{n-L{A`N`AGZXWL%;1-6`XqQA2-!7k&42!&q1!0&>NJ zDLpUm3ebE!Q3cLP4RZxwBVVrg5jng8xb5@S%pN+;%E-As#T>&#>B{y-@QqdD*-~)) z=g2~xxN{AaNe-O)iFn4dXjKPqZ=eIO7ZD_PgpK1TgqJMM22zqO^5A51i@OCk6vT1l z(e}{y_qV`BX&5$*tAG6pgt2yDg(e5g-$bD-Mz)@k0E&y(-Urv7>sj|ghBsQ+Isz~l00y7U4CfBFI7tz(B8UDMS~ z^!7Xn-ykEaH`F%jK=i+nFY5DkrL%Z1vL7fVCB)<+#!cO`$jvZXU{*-Xs~ z7E1KS0QZ{HbiWfu?DA!zT$buopUvJcq<-;M=6k3&*e=U2Zp>RQ5)|C+_I1t11ad&K?Uy-lAc>)1q?-7K z-t(Wuqcw56Jhmx@StXQ3xo1%rmxT{JNB_#!g;}&nf)3%C=Q*?j-cj52!R`giRCgwetn`f@r zk9!>m#CZVSR=RJeYjaiY%;k^iuoih|94kb4b&<q*!MOU zN>V}v;rRV)l2p`gr3eqZh>@AtUjVSQK3C*sLz-o_+!)o5<^f34s`R_g$8^9JEkAvL zNalQSC0^&W-*_C*w>wcdmt~h@)p&otaKSrW@6xv(o4vQ>$!|4!*J{a8mFQ&Dd$9sY;0^49##n(REw@_Wwtm}Z;?x$ zbKmu!&}meH0Y^b0h0XVU7z79<7Shp$vR-=%7 zRg1sJOfCu1yc_j2tx$)7C;-Bt5mC#D*IrgR)tF1P{@j>%8$A>K~S{M9Zn>ksyvn0>g&Li-jtJIT?BrI@MJ#iwI2p&o|ZCZC4Ac{ z18^XImQB)DN<%1I>MXT#Gh8a}H8cI;J%5C&Q7!ckj)aNzF90$FXo5g5crUm2hl6!i zs=5=!E0c~p_SqV4>;W{^B1dmsHemds#^pt9Bak{~{SpImR{t6)fRX6?jz}G?QkMr@r5J5!&S!!1D z9Y#=M#;lW!8TU83ZY^&Nq%X|MF-1Axu?7>^#nMXFA1~bc=y%PVl&bln;^jTcqGS#< z=*<81ygR|vf4rVb`FLIKx|aF+vobhc$wVrJ(QGZd$$&Ude9eyt->g&( zDD&~zog+XE_Wp3?4ECvRA*~m9PoYE z$9Cfj|8v^9o-5wdGb#g6gWlfW_5&}FuzFO^yPkyIi=uuk09VeKa~$hh7I9lUFh};7 zGr7by^c!6@iNisZdW}8gUSp9<#~JB<{NfGNN7wHg;>MKk$FUDRE_(>77f(+Znxyd` z!WcgY+xqTud+$=moi1VSF{u-37&R9wxQS7o8m(cZ}t z7&0mP@uJL0oXvo^d6nV9)*Kq>_gGt$JC{JS25Rnc>gv7d=2z}u_x?qr7a%ew$9`?- zg^-+_MGppIAxUn#W^n^8T-Sa^*UsPvLLBahKYu9IgJeFxK{Ms%u(<_RwTtK409X^8 z^v7YN;Hw$X6OxklbM4zcAWM`Zf)Ym?hjjp3h9fSNg!v>TnPdcWbO3NJ6fNAer8 zIvvcXrhXVxSNL{py9Yh6UTmrG;wLi%_^r;j(f=9`KweB`ZbOSTH5sn6PrVPYegODg z2bAOm_0Zee)j|-xdJO=t031)rIxfCF9=^Ny^x?4v%FX~#LA}HapB&fswOa$Hp7CF; zeSGYd;ul`tc^i$d8Dgt0C1oBohJ@p6DhgZ&KE1(&_%AkSX~hJBD|aWm+V9aVw5AL5 z>mv7S%Sb@{WZ(LFMigmb>u>eoLH8>#nBic`%~+Qo;XH`D8Kz6t0YgEv_0dInLzQ?DuNb_pKi{W{0&o0MAwY_=c&kTwBROl#HlvlmXxnz_1GZE|<*BA(TbQSXv6S%0HG~;XrwCojD-Td@B(OC~N(PmtbpP_wQG# zFVjB%{vB50y+ZvsEU3A>w;sXoplpQ4(-(!n=N90lpRRNFGQ;^1{z5~y8=O!uP#;BB zH{^Txe(`bR;|ox#+QZF~;=AzRb)8x&;+0F}49i)lLjtw_VZ+0Z`2YASxhe}K4=i7X&HjeFrD{xN4q9&756$U-SYFS# znT4|4JlKF@E$hb<+u#*dU9xHc#WzV{fDuOAa#CM{zd_xCT`WF)_*fRs_`wjCrwsp6 z=N^V-7hnCIu1|seDvL_cSIgmIL0>^p5x}^P;-NYU>Jn&ZA^EpyM8Gis1TL#liVCC2#L0A_~)5H1Af%crfK1%Lw zW~%JrqU8Gr`-L--EV7pzZZ3kL916Y9SB zog*2dXY$(wJ&b+8!lQEkO&Q{S(5hDXOGP;~%~tcZDMhubtyOE?D#&HZE-K5sHQdzWMumkg%I`pnCEYQTmh#=_exY$ zYYw2{(D20u29}sCt)HmsI%Nji=%IYsp?R89MJJ6Z0EBL-^t?S9TAZt@JsIR0pDD?n z&XI!vz<&Uj1ucXEumMm_8;lU2Jkqx7Z+6Bp?^N<-5xgG z(UbW&CVfYn5UQ26^>aPjN#fXRZjS$9{OxzThTSd|b|wrso_PSHQX~+0gbmFcs&0?< zbWO`5ThWX1DOsERL*F>y*m7Rh%^}fE3IgFg)Il?nJb2%j(4oU_h)2=dbku1vF0Ghv zw8CV3CYc~B!uGmChyptIyCN~d6>6CT1?VBR4di!a1t%y@DL;8;I)1)bq9DbO#S(HP zW_ax7=C{$>Z&@*mX+q98}Z%)xA`Kw9@;k9&oDLURwoOjVdn$0 zEWcMBdtN?M&?{WK|B7FIy40-tnFO#%^&Xy)6tcCzrWOA*QZKywbBd7)Vll_MM&#n$ z+}sx|86#F;4eY#A!QAC_Xt|}!MqEx%#`WIVP>ys0^%vi}MY0iWhc;wrnWk(@vdtaV z%z1hs!_HV;^`7B)Fq<{zV{qP-3XG*?A-uf4X3vd}i!*$xC)>C6Fm}UX_x(?7{7GBg z>{T|Oh_78lMnMsZ%_!h9UVnwONvB4M)aLt!kk!6K02UP!1Dx1PU!DmP$gL z3oqK?(8qQpehxblxiGo0sV)kjdomi?Byk=CLK}3Cn{F7m!R53+Nx+t=C81IIy$HA& zl!{-=mXQOrSBfOjW~!TL!9hsvJ%cZdWSqo+E-D&2cV?^mn%6+TpOgY5y}tg>XI%D8 zO(3xT`@aCt^2>W`5G7gl7^0PxRV0&36%o+*i@N<%&VTD2WrSgc`HXvO4T61IxMd9! zoZmXGX7&Cn#JmRM!^PpSA^_VfxfuZ`GqMyT4zT~f>TKc^*{^UaezK3-osx>WkskyZ zxS0;%cs_KT*$avly~D>JFOq(%4wIXtdF~f4EtwIMgRmaJau; zmZZ6!R26E{X_rb!xL)jR%YAvDJ@f|?4Wq*8;RkS%3s+kFYSv-bc<`S8eUJc0D}d9* z#W!ULxLkaW8kY6*A2f3vJ>vJsUv=wGJwfR0;OK>z8fNnN6qGUOrddX(Pj)6rY;JzWu0rJR@)Gp6$EMI zrJReHbK2%?*qB>Jf-ks}xKE)aI!N%_iyjuzg;&V0QBYCm>KzhF^Xzg$pn{?&MkCT0 z@mtDhz7p4|ZWeELmSn4o5NF>7kJAeeJm>g6vScjvJZNNRA`gcl(37NQ+PS8&VIs zz2gV*AI}kh0gJui-6Hrg=2=Ne+kp}}gVp@$)ML(INF^mD6@|SDQ_VT#vzCj+nAeIx z+QbABn5=oz%Iq9X!x_E({u!dJFEk(X#Pv-Im-X6yxPKk!?TvY%DMR=I)U3|=oNtT_ zA0!d%1@D#bi%f7k2UI0)uW#}u%zm0q9n5Aa0`dVB)fwss0cxnHXlbw*Wr@Qaia&Oc zxxj6MVLl_eA2I6zq@4)GC*qqJi1>?dS%Og8clFl5A9ptrie=p3&b^;?jyf&L2KfHs zn_4Tv=Ug_og3t_v`Sd#co5z@y`UYr2w{8m@;vs7h0;Xfwn>Bp+0pF)m&^s_th>rVF zyq(8sX$3fdZrFX7P%OiE%?mh&M#hP)s(mh}!x}VuMzt`SIe51i8?F(z@zuMvA2{D2V zH37%fS)nHAGj)s|j{x2a(FahB8{puY0Z&kuDtO~2x)hg`bhqf2a(mx(4V;a)wz2DB zvKP>c5);$wzrdNuEdBNB1{FW*_e$E$;Ru$<(ZvPQYs66=UQVYSh?|92ken|1ZS>aRXW^D{P9tKJr01o>4JHxA9r@VmU%2p8EE zThVH2YNC@0RA%6|IuZ9!(ZtO3K1=A1@pmXc%C2o&wBQNRH<#H5yZm3#1kxCsy%z}x zxDpr`KH_z|^FCSkCcJ@&iae$y1)p2FLIWjpTC>n07~9g243@beoJn)-sURe`$9!w z2BJN3Z5m3-lqVx9viZ7%e_o%>sqy(t93h=F{g7srrN<+4bCoL`OMRtoW%=1X0)LNN zIBRR-KV^GXmZvs$_g}H~6>YKN5NO)0K=JxWgXmx5-~?kx&_7{E;wyeA4>gr5zS4Tz z^*Z;`Kd|8*ANXmvfk{mfq!JY5JV%Cmg*oXTg2n&-li;s=ry6J%`>MF=qznxuLDK!N zX$K}O`K(+Qje^m^vcjr2wE}l!@6Bd|82{2T$5GeASV=$PssQEF zS^6`rC|;{?;?t9bH(&c*r2g~X6M`%eIBBv~ZU9Zdt!I8Ca7{80$SeG#p~`7SEi+JL zdA<{I{rU1{-3T`|%{n6wqzB2dHK&ejVbrO@gZ!E<(h+*o`WHGDST{>QU z(}2;7R-$JNid*{$C6)u$Ve-D{E!G}D{lepL=csHN1?~`p+CW=^3yZIW$wikr{mQV! z#FLGjZllS+>%8tB;E1eNyu%%-U&7J)>s?n|BLFW%#U532ph^#7va;$`8w8nJjt_U# zIlBGs7J8vZ`^}f$SCJu-Z9$W1Xk^qPuBaF+o-qZJ|4#Ga_udA-&m;&MWkw<1fK)d} zW<=CT;Y}anhp{|fDYh@`>bxG?f}AjhRq5?HVpXuVHGc?;4GW8nP)aEdOVU<%{4#=` z%|ayi2u4RWmnDybYB}O4kyx%YDiPLgjEo#l+@QcL< zo_CI#rGJ|ii&AYPm&OUPAAT2)q36LNgg*dP#I-!I;)v|+eZ~sk*?|Nei;=CE$bx-` zWudfHckGW4t16es`&n)#OCr{VPYM5aK1_t1j}lpLw%}H$;G2LF`k!H_By8HE{A~ZZ z()PK`n*Yyq4ZXOr&kesez4l~@a&b#`gP%>7lmb42S-S7&xkSoFL{i$({o`ZzD~QNf zEvNjN(rxV$azg?G%dum37619l^Y*QB{u4TN$1}-z!&;JGJBy9%4i~d|nQs14lgQuG zU*Xv~t%f{_zjn{K#%ocbU*0&|E&$SinyArZS5s3>#+CP{Sv=en!n#p5{1TmPKDkshp5ry2b7=fUA2 z>TY2jo1gEQ-HMV-w!liyH+sW)@=T_MSr!bJ1`F5Qhb?I`?!^!-51kyfSam&>k$GEJ zH@;2htFzH`x&CK;llGvB{^M}C%@c2=M8zsXWALr_ZBNS+#b+;Yv(EXs#Z0nFIopd` z+g&~VPiV7jVZ~)ozT;~6e8=v^n=@x;9qMG1G&mxDe$!tsTfLIHG0R-zv87qj8h`w9 zvz6gFcK^D$ogqsEL!SZLKRM9K|Q5NMzqt$44}iPOE0qcz#64;Y4DF zT(bX(bKhT0#X};)QCav48J`OHa=KGp^tfZ@U$V+;>uiQ>?$`(AS!#0p@xDQU&46v7ogTPcU-b-%>#PsQgyH~DBwNksw>0=px?-uKQA1ZlXW#N zgxanj9xg-aVk+oR6!{4*^3n@+#^|f;_rG8{z95OK>T*9yoSPm`zbq&S*&O;}u4Ako z&3e67SlHOgWLlN$9(K^7$d3Sdk)w9mu07#2Z`s$#uNC_q!glR)ii$LM_1~~k8~ki; zOQ=eCBoNTdz|PKob!#YKpx$RTzDJBco zH%A8^Q(jo7+2t~d1Ag<-%H@h#R48f#*f*8LOV*B!FIZX=1bCR48||Yb-xEAZ`js-v zOWpKRt{DW%HIzaO-ppx=_xX(|bFlYHOJ`wGcYT3&TfedzWWp?m_?P>5$zXhsiuQvKQ) zMJS)Tc%5HUscdp8GBqoa-=Xpb2HD)KCQ@cKt{9W6y=|wc*!GaZK?8^efbnQupFh#m z)HMHnQ29@uC6Y< z_xCG|avW{lToy_Ke?Kya088Jv`(oX7Zc|2`8m{HiTss4&9BzY!+XV~%oF%4YjJo2z z@L~haLZRy(cFY@mnXZ7HcWA0+SES=ufMdSXY_ZQmYX3{#aJppkYOPz~(LdcjQeKx1 zzrO-tl9-ZD}+f2?G0nvjfFUw2aIdcwDlE!>B2# z?;GYs<)~BUHEnpmjFETD<#BR;OdRB<`K8w{d)S6|DbFM+xk$k8wLA8hm{6F`Pva9a zp_jHfwqx@98e+l*Vik}lm$*?V+9t*g-)LtSmNKc_*#D;IK*!VGtiM~(-1d!8MR$vI zzL(hga+8nWHvTb<(z*5Q`?8*F%6W5L0vcS(Yt-a_h{UXM$(Qn*$6NLc8>Tuz1I#;`Y5Lb6Ha`n31^FD!lNp2_j35@CS{H2DbV~v+t zhzSWJawW^O>O4JI25Zc!1dnXnM#P6B&rAZI>g;^P`)U8=aMfe4Q@Xy^6T9p*sJ_b_ zMkUr2?K18m08fxD0{7JA4S!k4Gps{-Z95e4i6@QKWEiiG#VoW^_vIgZET1MmlBUi6 z$y{G7Z0^EA$|!j7ov?jAlkV)tG}6P@7tUSKj1$T4IH4S@lWU`-^kW0HIkOqV1>XBj zjBw|B9J{lhc#^-X%i(F_K62mmt-NFbbZ|$d!y>4}_B>Bs<>uznlAjEem?Ed8f`UpR z4otgNA0t65e8;eHVrO|+=x|H5Rp)+^2-Yu6I;4prT*6P!rTu*sXx{Fw)DiELqxEZ= zQh&)SQHg+8`Ll5+w$fE|b*v_uO;`PSz~yV&(hnj#Bu{1KFZp?172;fS6K!-kG)eO0 zm|b@52>5xiHI6$X@}||Wb}9YkjtKoHPNOnSa_C6C>`|w2p~tr{aAT{e9O{;N){HnU zesBt6ACw&8+2LNOziuCQ%(3VO#mDa=Lt$tf4lFKz_{qy-yKafgMe0C#IcD2)mQxc9 zyCyXPEHS5bYR!Fqi0SdzO70$s`RugI1hWGHAS^t#KZXmp!AM`{pXnezm5gI$VW`n0 zvG{*WL&&RSH+GlDX#uG!x1l?}bK@(?H4+G$qoSa2nv&FiN6t=vNn`(>s1_T!u1SBs zE&y{2o+|AiBzkuFV%?rTh`?K#>X4xima=a;jhw84M4@&XU-x6}#tU`zFL=tj8S%mv z@qQwkzg3Iw`mIz?JNoehd(o4(+1?xTL6Vz=w?yGFNt4`G@m=?6sKc27=wc(|9=&qR1OrpxOOEfGSYo*BDM(&6$)B-aL_h7z5f3ZpM0sS z%wrRIVDtTBkQW4n&dpoZ*4WQ;;U{Zn>y#;O8n^bHtov=g_{5UA+}=yPB+^l08Yw|7 zD~m2ciEDb;sGpZZ@4)Zzn)V4--ytD2l?-v|iXChaua z?KO`?s~o`S?+NdJe!zQ;?}=%yP&*UZ?saE-|1jx(F!N%YmF;=5OJAsS@5PD=5-FkkO4J8gmj$U+V`DAZ;zWbBIV$b>}I4-k`7W1$3 zx$RUDeYP6vmUy6-$fefKT;#C$Wz=n_#G+dr)BbH86Jv+;Tv-DUz09g#kyZXyvYU|1 zBoG67$j@Ek=H|IHeK*;?Hn(|PQC)BEtM&AxheHh#&T~_u;$Jyv}RMo>JFAPDVR=8gb43%;)a=MTc@p1KS1!F8mE)ODdhNxyu{Xm6NQbRDvzHgG zs`;LM-vbvoGom-@s9v*pk4g5{R@SA8Pe(2sON;O{4Ev()RZrt57%jg!A5wcVl;bKK z`~jr4IT}hKjpqmnyH%aXys(pQxMQ+Q{9^zr66w)VJB$MWtD zgTnkv8lulH=klaNYUQ<~)!K!y;)aIl`~m{LGy}!%g8{E3%(tp<;uoY&HNU&Jm=Jq# z0~2bCjp3FQ?xd`cjo|HFk2vIy9KCeJ~ruSwtw{`yr`v+@Jg^P@Wa zX#TwIe~lU*0boC$X%|l+K*dw3mePE_FfRSm{h79e>ttkx{PJ>-^n%Bi_|L37L7d7; zhY+fNLks@bBqNvG2dk4&Xa!*baydIk{4wxwkcbYmEmj$&GUkon-Cm(`g5&PF%^hSVAu z(c|4Z;(p>B?3OB4<2mlob8%L+9=oGjxE2<7=xl!9EQEDah{#D#p$gL2IGUYl*1v%^ z2bw{$2hTf1ff*0=QxaZ(e}?w4ST;MGt1!`d#`?etjfLOwd_V|hCXtt#_o}PQ;{W+1 zmZ@M4irHHA8XUH&b7>dab$C7wk|Ix9m(hzvS7zMzU2vS5SoXy^FRh}B96Gf}AIyCF zKasMwsGHS)r}fH3)j<;q;0{R&?v0?Wya1|Ew)ZtPP^6o`Pf8pH#R*1=YcUXl%T&NB z4^>yolBr}hSo~0Aq{5&9SPw{gvO>NM^50)AU$+=?oa@4TZ=i9zb#tqO!yIv&TLro<_(`e*dRG7TE`uJ7~G1b1eq5mq*hY=$V*+j0VL$5nS~c z5WyeUVLdd-iKqpU$OJm+;Kmx{A($81bj${B6w7B4Msw(XNJwBO)+o^GPLZgJ23K_{ zm_389V;kqYSqNv^4=0YDpf4Am|J4MaH?hVo$z^A7Wt8(tB|4La0#$4_YpIJJwyKRd zH~mYNQ)a)@ph3@VnR_(%i*aiKt>;!#w-R=>4COTs^~3SYpD3U#TUg@Cf4;p?{rlm` zSYr`p4&Q23-?uKdrlz2LDq#EigB20$iM@4Fa6ZHd-cK5p`yL70P%!1aO4IJF9qOTR z=jk9X?6H%%`H~edx9lOchxu>czP+7)wWmVfhJEB(sBGpN4w=`u=6aMH<3LcF}11Pb70 zyuHe!**xF#!!M*-;IKw2DDHtd*)|$`(hj{xYb&>Q)l#u%*@$iTW_w*nrWLlruC5p! zduVx@pN6X-IGUQ9wM(4+AynY=HUpAgp|If6H4+k9T24YxX7E0r@Yc_q%u-3K2mi9$MR5QcP7lD44H)( zw8Pc&7cRVgdu|nc2z%?(^xMqkbbR554P#ET)Y!!1mBa4Ly51BCzi4(H=152mJdLo{ z5Eb>t^A5i?ftUzqkdGOK$G*7Gr6rn)#>>1dCTa1L6t^r7N9|s!Ns^mbbjFatz42Ob zBfPWttW#zQ((gEf7MG=>^E()ep_1SiUC#A^u_21@LtPKHGLt-AO$+p%J$pvY@94ak zS2hkT1bf-Y){pPB*uCkHoB|rgq&FOubE!bz4_7KIzN>T+v0j^KifB6KJe=j?828}e zykDX?+eXooPo1tDycY`P$9qHa>#45{uM5hL)>4i;TeY2ItLYo(I%*RJhYvfxN$43D z{B!Zz&xQt^4#Sv}6NO5uadWH~Fir!WX2COsO_JMGA4PNR8rQrJ1&oEJjUCU(y|5~2 zmgT!+onvETx>fd`TbujsN;L7{J8Fzoaki=GY{ zEHf_BJXysi4%L__frW;~b?zm(NhTNWTUU;HPtK|JLNN3msoF~;V`IveD@V$wlx)^5 zR__!@elumX-ITUNCr16zfxQ)vljDQb?FS}pBmN;mmR`sm^f{)QwWG!`Ix^Pk58QZ! z>`L%ylfJa?zKwBuzyf>rp?j+BuSf8w9>oc3qIk>$Aw zSBNgZM#}OJWUL|69l!tOPu<&m102$D z;CacQmTw18{T!dE|Ebf=bQe_qk{r0?d2hS-t;Rmt!AV^3X|rjdgo~CMJczIaRy{d; z@*an`-JZ=wWB4~j)TKYK-ef`QZftJj8aUwHdtsgZs^a}CDKITNJSq1GKvB48m^)|B zdW$#mSxXszWE(K&dl09P65j0}l~h37iF-jdD=dUQ24pzu-dpa?O;-3n9PfW-AO6os zd|cNJKcX49E*1Cle*{W3D+AJ#S2lW??6K1L0dcvYu&@|~OU;NVd&)etgkNj{h75B z^iSuC1ynb0)qdj}kRZ7m1eY7Dp9`8igy;0qG10L3sO(to`FKHRX0 z8(r^SzI<7^mYw6n_1j$cEc}p@wF*Vh^^DaWUQZd7`)DJ)Dl(ki_ z)<*x6mii%Auk?wwb=D1~$;w5kg#>=K1}6Fe+V@Ml8BGy}5e)Lt3$~*lJz3%fFH_IK z{ezSk1HJrBt@>(wLcj?)S|Hy3>1^Amix1%jf!{?+LG!t%n43WSz{+r4*gQ)dLqb80q(vT?~MGatr6JO%m z+MOsY31!Pad~IL9BD6w3JQm?tdG6|3$-0zbjq%5Q0vwk&lH7gq@J5=NXV*>QZPuEl zbRQEYg+Z^0WRIrMZ?9$UW~c8g4}lp`OR)|WyYu2(?FAxx>^c7{eYyK;2^Xa$K|}E3 z#fNl6rMR*2j5MtW$(3Go8u3^Ts_q2TY+u^h;=jZ*DnPnLk;l$_!w%`If%cCnOqVEe zkCH82OxTE6*I5^-_4DVAcw)2GBfSnimf`vP=OWe9B2DDWnA9w$$HFn$P{Xslac#|u zhWt^*O4GUT)os-5af>}^%1Vk-LHX8F_E<%Bg4L#rY$E6#4Be zXIxG*qBe}TTXR_CH_zD+ct1BrzN0HckikUBK9Fm-JX{vRE3xw&8)-%5Ao1;VAA!d$ zTw@GXAuAee*4{aeD3inBo|!|*<2I?iQt+n#1uc&*TomdFg0 zj+{B@vDz5`*#j+%v@9Q5aO7-#sbn#bsPP|3$B#;?Xq>71nPo*LEMVGfg8JRdO(=AM zY+g#?-duwopBTAtP?aUmPFWo zFSspVk?TenEYzH5ekRlb1({j-Vxhuk_F4}$l&qHph|;3ZB?4GZ(|^f$ra z_`fK~DrDPc3ICxAhvc{EWgwA8_E&YPtE=JhKL$EzERJu~MRiArmtFxU=mB{XQ_Bv< zl_>bH{G!HfrLxB5^Yc#?&hr6(Jr04C{Pbp;h1Q*aT?{#FR-<1eH16y$a926Z)0?Sz zel4>6@v+EYCHzB?jkM9XtexqpjMfiQ^EGqRVc&rs^c-$YOIId(lxU3gtT77lq4CXT zh0277hX=(eYViM1vgzve{B@)JQ8h@06RJJ+yht}%ei%Gly&=K_TySOa?XK=_2DYmp zVRFq4kUS6MjoVJ*yiZtUq@Y3HAx_xN($9T%XEo;sVH2Bvdz*Jhg{pJ{O6Hn=sdjf) z-meuNu3Jy8_1p2h0NoC!TbK{g?Iy7eW_N;$*0 zRGTy+JkSp=C|u<9n8V%W8jzNOA*A0xl)m~s@5#;4jMS}k1)=YlQDTvbXXsK8vw8g1 z#YWdN%sZRSm`^`lB7QVWohSquAP5A_w@X(L9AQt={^Z8K_x>NW;b z^(_>!+Ss^wNQsM!qdnWlYMPpu)K0u(JV4&8C6Dn0PU65@-tj8#44TPsB9&)QR(=HJ z-7ze*^;=1}3lbVuFY~vF7CoA`TMSkXc1w81`s`jcAA1l7_vdW=O#Ss`yh@{;f>8;_ zPnuR^jXZW{Q0_=2g%@=V90|J%25(<m4%QwuB=Y4=*4}{QUd`+~`QX#Y!YdCTQ1-ydH5rf=-8gyw>bO_ORRLU+m7MzQ zEdheeayPN2d(3(GMQhbuZe1M~7(N3L$A91jqCVoFE?|BF;xwz8oej5pnJo(B<>moZ ziu8;^0;U0p!s_5(QHtI1O)TkU2d`3+ut9W0bjk)Qq5-=)NK#!*qcTUl3)RVrR!Dsu z?UyAe?MPpBdr-2j4V6Vwveb8*a~0iHN7hFCSkJK{syHm%rg*V<03vbmacQ8+T9iz` z|4MWWAHJIer6~RW#LsnNkGctIrkBWX7jlwG&KUYwPOVckKQGLpv&Rg=y&Q650?yqi zOUw|=Ey}>TLIq`($BCqwt?G?jfr{h>>&r&(E;vZWVQJ!b8`Mn$E!%jxXu)fdKCAbK z+fJ-?abK^TK9oNO;n+gUh|J+Z<@d@N&;gVgw}B8XBH!xCVE=pLhbVSuxFHrFm~#b7 zmoYkco?!X~EUN|wtiGj170lt3kqHSo4{LwN|(*j?0V3w#AkZye28qqvQg5Oj!Si%I7&N zWLwI{UAx_AJ#Sg~`ktW>OcY0*Vu96tuIDNC%r>zM#_5W`<+W1#LAg&>WY+{wsXTn72FWWTDDEJJ^ z#a~UlJbPfX=NI}u-n=B2@+>*fyq-=?#oVI@OX)1dQJu-_pC2TOf1`~6)xd+J)ziDR zyOWt+Z#!*MtS+P(4W=tBM#FSWbXL7*1-?5%T;plWU?K^c+4o%YS{}EUOcdZ!)O!B3 zo))auvfrAus|~-GfwOSUBI~sxZu0G;$H3?u$EW+i1yee|Jp3h0P<-kwYxoMSJx&#+K&lXo>%l3fH@b@-gE!iwYvxjkppvCDm{;Q`N4Z zS4vMFMA}OvMK=2iam-tK+44GU*exviKVQ`o!d&PscP+Y$NY9#P*(1o+K7J>0_@Vm7 z!Qeb?(EU`U4TjOs(-HVC-?l{qLF?)`wdZGFzBb8(B0JKON8aQ~Aj|rkxmcgWbe6MS zh1NSbnriI&jvxK(fbE?PgWmnHA1$|iHg3(m5hs$8OXogRKt3a=WyJTgF3$4|bJ)m0 zUD93di_7QHb8!jwSy7}7_jD}2agp4el6uT<=dy40VEmCp2OSEntmc`;6t(@O?&yoU z^u5Pf*CYG8CtIhF@WU=9B^?EXk;+Oka4LRFN;vbb>w_o7Jfz?C4!(OKP_2)1P~irr zif~f5C@iMpM4Oj=loj<_=>wNSK@{n)@^W4+*d?iy75iJAiGnET41RCl74+{s`B_4G z-%z^;e9}>$*@Vc%6@L@tao&7|j7VT)WN3<6-W76Y%nU8~wD`ui@s;7FF71Luik8^K z_(a%G12wcsl16QclCxLUeq=toN1>yE7ccH!@qh zihIK5B)><(w?tbJe`}%d7TtGDi&q7YEBRF+ls!hAb5V6}z40^09s!y8_|q+cOEEju znw(c#<>EHD8pYe?Il7oOZFg?BmrZ<|vsw+Jxm#?;_pqPyT_}ZE+ww9~qP??KRw`e0 zb>-zWua~(FM#3$x3S_@UM{Lly0o618&vEBZQxyL2;I8K_+Lkz9k`O!gs^sS;A`WMUIXZc5R4+xAX_(wai zF9>S&2@wCXH>9@3+H)@DD>rVS7J}WjWcmEVNm=>widSO`B+g(M2cOjHMMt>s{fHrD zoy~0caIB1{U~&n>+72+`sdYiJk)O~Nhd}M6FbGk-)Z4XDPhU<>G~LdmtWB4 zrW;SRL(G|duA?7HwH*dL`qRP9Ws3(oHfk@3maiWZ**p32pb~Bsq(ltf#W<+vhdH99 z>9!pxuFP^TL&*`LWRYhbB0tTG>Cm`u zKHnhb781E)tK3%ri|oT^fVhdq7NXZtCH57bd(eidR~3pXdL|y%H83=Gpd<_6K`Kg# zUu)_AUMbnufHtgpIt^dhW6r@O#tX)imCh{Q8&XhfWuBJtm=sb~jiD5+>%3e+%`;(9% zvv$L$T9F6+6zNGDQJyCKE_?N0owvj)Qf8AzRpRx3Sir`?Vukq5s)%Nf?}m2M?E)wI zPeCjED$M&gEuq(h&awFDXOM={*mdys2Brq?`YvkV2}j_gok$x)vT~ax&`(BBES7A1 zYKggLv6s+a(YP(<=KTPvUMzg1XEFNn7qk6(>$GHwNY&g&m5s+ON+=9g{>kQ|w%P=3 z?dgyw%oGUk)Q;ESn^RvY-~RZoI*0GZmb>3U$>94{>#c;cCYM!^LPe5{dg--4&zkM; z>E@ZMxI(Q>M3Bus>sCozeLuDCcJ!85+qa=FrfPEo7ta}?;N1VJxTioUXvl$ES@|sO?5O86cD=X|5|+9uU;Fj@DlOw6F=rCu)U^NM+Awx z{357z8JSvh)z;Pqa5g*Me%FmDLJlt~=FDT;_A9ao3efv#aB2T%4b5+P z=Xx%=xKPAEA3C+H zBaR-*C@4hvz^vT=N!9QDY41#6=d6FAkDjqSe0UYSM19A+@k&ia|5GJe0b)%s!ZR@Z zyI^0xMv|*s+L);+%Y)uDgR}~O9{2B-DONHJ;p}|xB~GM5Jx((V!RP*}wmHK&Qeo!w z&Hq8Vp~*=kOq+8r6t9J`O)qP$3fW_YR$Jpa%HUa>pPwgCi&5m+b0k72Gw+|i>BWc+ z@xk+coCYkD#_~WE&#Kh7G0MlcRDARj-B*66`4A8jnq8tyi7B``;I&-2eb2<}M$0sl zFrVRC^5hTSM43mf&o+9}(S{CR-ubcNtVd%WXLHrfY&V)37z1@cwu>{{xL7NP3ijxV z1lHb!SXXIj?)9=gd9%mD9`(79&Jm73S}X1nwu+GfC1cyX2x+)YM?bMBOXus;up&Q~ zz5lqxG`umXRj0;y;S z+~#ekg%%|7f&qbY+51*RWQGe9aJ~r(3tUL;%HEXVyM+%i#0H&&Q0?(|jY^Flec)W)zWRJ>eNiMN^g3L*nsy~*@oND%}JLq(~%OIswB%jZxc$|Zd|oD&^j7Ra#T zk7QzC$b^*CK)SnkJIBXGzD`-8#JYmOhJ&*Z0pbZ`LKg;R-5~zr+|A(RW^^WPtAo5MUyzYg8*KBj*h%qYXvS|uY^!?mh-L`~f3Gteb>c}OWI z;uv)6grlaXF!5*LK+`w$jn;`qWZ4o`UpVXdbwfD7C*lQJ2V1$6IK`+Mk|yrXicgd3 z_QS^nH7iZH!HBLbr0x2!{sq1;$NZ`tl3Z|fuy@OFzx1Fdtko? z(OEEf_Dw#3?@jGnE-0d~C$C#m=Rc`*3h}S6gT$zQxo>y{N{SlI722c@udkR&58$I$ zEQOC?yFMN(7W+H^tNk9tu%jl|B-7JXV+a%O+m0U-lO6mtk~r*_*5mlZ7$jd|tMzRf zK5teyj(<@Dy}y^$%og}jDA+Wv;EdRR@-RL))m#xG^YMRp+b4!msq!#iV5>O(>uz<) zsx)nNKV(^9&WBSA?sb%FWGeJtJgMCYF=z+|B38piru(A`1Xmwfj_uZ~UXqVyTkf1D zF?gjWOOA`rOVtj|6f~I01@S6-_N!c15U?)m;L?7XF90X8i~QQjto?U_FBUi2nM$9H zgGj4+lcbhc8*ldBya7s0=0XasUeB>OMkQQ8Cb|f?V4mPgJ(El8>*uQ+mun#hSc+O! z4LMeQM}feSW8Qbf>$o>Yk>nC0>l*8fw>m=Yf&>y`dKw|+F2-Aw_@IzhcLTs^xX+jF zpd~}T@0}dt6G`YU^ya~~Mq!}Oq!>~8CKWjv8Y(UwIaf;bLjvu+>{JBQB*dCs3kxVY znu)U-hoEgAVXY<`Ia18rBr8#S>Hvj8CM!Z&$`Ku6>@c^=LX2uoY9a*81xLN$eFCn2 zgjT@ukzx<1oi=~^lZKN{J1q|!bSu5HpSr=c02lC@opW7e2o>K{lxe}j#aRy#Z2!1t zgm{IIpP$g-2;pNeLstQtUjlpxQG_zt&|7+n2u6iy5825URmM6&hYvpluMvkN6@rcu zc$-p@r%hbf?mu6H5WC*NPUf9y)pSe?Cv8t{f{D}!ZzvM8A$A(`9ODn+@t!=ZZZ*;_ zQk8`gemnK===|t?Y>$A`urVVbMp(<|khju;arGyqRDDW!kTk)g$3zGk9J!VC_JP&l zEv98xW!V~62L{H_OJXEv&NEt8U>Fl_JP}&T1}Lj?_B*f|!uvlBT!*hqk3O|O4b!gT z5`+C)^Q#$d_sM!2f&OK<)^X3i(bKFa_t{pY+`@ZPLcWJ~D4=C?je;uni zgrZJ)82Cem=V}sOG8L@G2-Z-zZ$BM*QrVJNdRbx{-}u{(C4TroPD*OmTG~JVojh;o z1i;s^pNZyrpN$m`!>d*+4S;E}oB16TnA{;nM8$jK*_)+@6wRKngX`wro9egdo=>W~ zBTiU@5FzcJp3Ly)GWj>>eI@U(Yv1p`+ytZ^J*kWHh=i0?aCn%x`0o9%IEmTIMoyI1 z_-u7k8>%Ba8B7shA4=8Vg+kDE5rOdq@3-d?j|NiX8A?mr3W}q^ zxNCoTQQ_Kan`RAs5Wx%)Sm>uFl$kAHhtG$$5#rY?*1lUpVFdYU#xadUvT}|(FyQXf zlk21b*9LF0%jXx_4{mUqc~aj=uH%R-H26`kP~*DWP1y`tT}FeRj|00R?9)uUKOQKf zJ_t53$56;QX;R!5Ed6w-1ulZ_ z{rjs1l|gX1f1HzZTpk!Iu%h)xrYma~CiRv4L{DH!!!y&`h$=e?A-PIdgtG?LrQ`z~ znij9LlO_)L+(%*&XN{2gP-p$2+nn+rC#bjR@@IQUr zC`i>W=}1)@_9tbUQ>65Ha4Sa&IFw#0j$f&zR^wpKk0_|vsT3~|zf~dC&yfIyCbc0m z^0Z478q;;!!c}jmOse%-<=Q}z!GVjc<~>XXg*=}qppp;={$H^0|3$04@dkQE$e7TM zdI!>H_pMGQAT;=AHxbG%E^EXM|6k}lRMP*AX@>L+QOa}Y&aF*&Q_ONK_LogCz&`F# zG8M;72xT7}ZV4$Y?d7@L-dzT`uKiI@o(|8=loARFd?3lTpm&yo{~#ixN=okIBW>{u z!i? z;=^fHnQz=k29egrz5}ePm4`M@pWf(hoD|G<_4i&6eE<1$luu%c?8*H(`5#={{~(n9 z9I>Kuf6GKm;S?tS0~ms5M1N%(SPC)vG+y^Ui~HEk=cjXQYLP!|sD8q&i%YkL4#3DL z#?m<*!zFhMJ`!OTKg6f{t?wnX z@(;No?tQ@Z3hyJ9FMS2yO#SP7iCHp+a{`UL%0if#@uk@Ek6hVtFZNrK{=ABtgORLa zA8DlAV^c|@2hWqJ19D2lI%;3(pFf9v{G^EuV(E~wQ7Vj&UrjRA*TlqV6h$?`iE*%O zwLf9lr~9*0Vs@~8_t}0oi%7fK;I6IC(CYfgc9%ok>5vp->C|3gKm0jc*6%L#DQOqu zS{Yj?W3_AxVsxz_!u&xB^Mjci)1nWbK8V{~tvPb{xZ*9>u%{EH`v&zN7NE6$^6~Fm zv|Viti?(FH`eLA;WnpsPD4paWEB*~x{WDU--WNTygI5%|=rA$S`KmRGEpPc)K&r8;<=kVz3K$3#f;#%Y@ zY`&e#>}h=G8Pvmv0emj50!dGMg|6r1~fm1r1S~V6WLpMPzLevs0f;P zmFFAlIzXm!#d||-3B}8EqKyoE|N754C`eU;vCkCcIkmU``*&btql}g%Of{@|sxFUV zQ;?=Y<2QYu4CQ5m>!)?xJ9$oPc_$ed$_`!4Fj`Yj2u8y>t# zffH#$?sH4Zp_Ce=!q1zaLv2CdAvivT=qH*gN~zNg8C}8jyiW zO{2zMB4RcwDpt$fggp6HOW~q9{)Aw&kjA7#+gLnLdNTzOIuL=RzVT3w?a53f}o+__jEaahSNAAvR)DFOow7M zde>P#2v!-apFhYhQarFk^oo7EcZc*Ft#a;n#th-AdSu~9k#axsA#+SV6|5MbA+qHX z#wWU(@oFJsLJjF$mNsN(s@-At;Lczk3;jGZ>kMxQ<=MZ_;L@QD(r-yZL;>E{-(Oa1 z@Ig1F3xghGL(zUPR&;L{FCOp=U{q?ITMn#e)qsVQw)?(Q4LV2#0sCPyO!Ql?= z`@4%Zi_#ZXN9OT-26u?|$Bz7W5 zDJz|FSNdTi?|VZsgfb&ct4Rs>F*}_G+ZHfKX9p(0=nV18qmZDt5fAf2(>E{h=das0 zPx>dbMe=SqoAgyd?&MaUeA&Ciqj6P;HdI`I;FhGVDRiO`ht}3KG05H2S3Yas`&fO{ ztg0lEBlmN9GPw6e!ok9plgOT?nhJi>Q^=OY3T=KT7U2lTz~)-p*LfI|1V3e;Iqsox z-|Iwqq0CSx%e#a$S9wwhu#u#P}#6-#b`fvD~{eX*u!JONQoIT~oSz50?Hh%v5^qNtWrbqjkNytPx zzl20fkIh~d*crt3;y(WxSVDCNm01gh3r%tM-L~6G2@5D|u?8Fu-?CKdxJ*k6JGxB$ zk{^%VR|lPBz|f~w<9ETq`5FcJte4~1-CCmapsmU7nJZRt1uX*$k6LNtb%SHyATVWY zv|<_6r{drn+&ch)GV`m;F6o&WAbyjPh5df6%+btsd`@fhq%!LBhuVT`zDC5ff633e0fqGu65OY8T!C`7 zp1^9BO@2FEje5KJ_1kM&uY+Ge4}MfpKwl{wv|YJwmzhsa>SjNg%F+;$^t|u>!p^WI z%L_qy{L8)R>qUES=@W5RZw>Q;*|Dv$yTuFB-$Kgo^sXdvB&+y0ks1lpmbEwi713Z;Yz~ z-ds$yAj0{bvf;+_8|<#l*f+;(uMLbQ|4rv0|C9e9gu|6y`Me7Zht$be4v_7_z@#W2 zllMqYvCqf0Z@usL;BIi6z<8)nzAk_3@qvIAjmNBo?Sj#`dC0q}hI;C#4?8d49qSoJ zgicK0l4NMN04qf&pYoV(#i}$nC^%0Qou8)v)R_}lznxF_{l^3IgO)7!)zicxfSt9* zJ-m&)85S0H%(+* zp_tJlo}~mqmxYM-*+!;AKdTz8u9pS1Ctnm3`0Iy)yiOdzroB2?<~14e&I?tQj~bU( z!)L4ux_9p$cBuLx9uaf}gcdqw(c=NG7V3_Uuiw7?_WGZA;e>-R>7?J-$;`V>CskHS zW1BPBLZ|VU;BG;qvrZi!f|Rp2mH``%Hkp}WPQ5L?PAN?ZJ$N=nrB$+^?3p{J&G#K1 zv~-*n>a!Tw8v8xZDq^{3v)%=$;eriqI47icx&fgNdzSypmL>?#jigw_saL}GBE>1@ z3@zc7G9xz#K}ex%^?Zr{FI8$JUEBab6^;;HW!LFHs#NE>&2Bzi+kK+EJyt+__sPaN zI_5Cvsj7WKNcT|<7R>eZ0C3H5YbSTt-u5Q9Q9p@KW4=*{Z72u@ic5@<>RACVda`cL zzS&3wtEtwwr-$3_3PaN5!S?dzcK>+e`Df2%vY;B696~Uy9LB7GGQX^{M5BPuZl;;9 zZnHk)6YQscc(5nK`*=!>!-$=ZZhEz@OiEgMySBt{(459vYaC+!VRJ-I^llQ^|JBp8bG9i z4y?a4hwD(Qj6v7?^VJ|T9JS4K67a|~)1fkXdesa&H(aIB{3-Iy9_jJHR`Bs86YK*R zbj`zcHynSzwXaa@^gad@;uVEvvm)4o!?@L%44u5w9E%!E_rbq6MnAo_z8$v4V>P2f zn-p$HWz>PIjljNaQBiGN)_Uv>MIij#&!6>>Qt&54haf?~0qN+$|1(2~vyWPcUcVz& zM!S-mmv=7U<*|d0*zuw4+>P1jV!@4}9EWoxG&IrgBMoV-fj6xM8nqaJL2W$PVAgST zI(((l6BuR&i6Rl?C)jV{E_K5kozkO6Y+JHT!LE9?VJk5=^Bm^gzkvcEU2HIIxYUwU&*8A^MT-SgE{;U(ucL*D~iezWLG83cK%pefc_1rxd9suC46~ zb+rFu0{y76OAPT=ktQB}M~UXqk00NOXoCmqu*qd*6*~QGA_aPMEqq@_z}~C&tFQ3c zYds;3zLt$M6r5T!%9C?NY2;pYl@6P(7LC%51$LZG&(?Q&qNhV>HLmD25G|`idc*42 zF+7y#iSnsw)Wb9Vf%%T%+Ko}Hc()MSmSiHR z3LfvH*oFVMz*7fB71zHKC3N~LdNL4`nTS09^_jv@Ov^65y2d=8%x!HV1%OUHw^nQa z-dl8ZZo9QxV4WS>?F|W0x)benWYY&fTO|cnuBhH)J2hlr4}^0`gWttLeWgwIKy~YsMF#Xi_uE; zEe<|JGbBWwB7b+pPMEDbJQt?YGyXxGi%7|7YJ#gs)IqHBZXh|7L?tMV@ z1Bbz-4#~9mXV1!J-SpW|C{W=rZTyS{Suz8Pu;myMLKbY#%Rypm*g>-b6s7RgDo>mS z;-t~?T;bm0hW_yR^F$!18F$#Z*--s#IthSnm8`B}i!b1qSQ;r^1j{zn-3?!mZCO=q z&j2z)BgC;kGrU?07K=C6>I#mhGatUAeh{c6Q-~QrR~-XXmgB{@xsnY#5V$WL+O}zg zNB#EPt}5->M<;HHDe2D5Msf$gn4R^QxQw*469GIRtJL(g1CN}l_E-NG!lKP2C) z27SzMn74n4H0!w0WwGegU#}?XU#VCgjv}{C7)9~=&*GW3R5UNfeuiWvgPFr)WJWu*l zbOrW>+`*`hpS&R>CpS{%G=AU?fqN`lj5+DSwH3YP3^zncf_h4-Lo^qb$_Oj)$pg@x zob)(&pV=;48p6N8fj=(v;MtQ9`O1(a=NbL{wAJc7r-DStJ8?anE85sLRX%a54!QD zCV0~;CSC=%3vEXJ@YQ&7_xZ2pD7u0=5SHt)>y*5G7ZmZmFHa|k(qs2_LG{6p?>@Vu zZc5*5Zg=gidFdVloEWpUbUfccyECtP^JC6Pt--8nyFxg=h)CUCr_r%0laSoNT!xnD zcAYhegpN=hsnHwQ7lsxx%F7)S|4)1085L!-rTdaZkzgPwv>>qwibR_XpGcMrq6AS8 zkRY*@OcOppzy<-yQ4l0Z5>Rr3NRE0>k`j7I)dUx&G zwQJYj&oeO%SG#}zZ>5grbK!xeCJDl5t*8_nZ^i3<%$(QpYRDb+DY^5L6*5=#uptyE9KV9qe5#$50FT0y{{DWi+kq(hy^rbJZx;e z<@Uzy7n(GaiFE(ePb%KZ`=_1ckk#0v$jJ20*TJ-SP%VYG8Zrc6Kb7F1*F^6n$XOOP zr_#-8UqOwE;+A?bd-q!xb&hk_Kp-4&jB4u+0ftXNFQaOTS{I6SJdqBnB^iTDr5%$K|Db7iTCK5|$YHWEFuhc$i(#VW@ z?q`MF6!v0YLOJ^%H*kRkAlC`OPzpcTUxYMP-@7DUf0P>1kw{hs%+r~>zn6zfW4&d=v@}UJL++90P=A*#MqdG}bC>6d zvI0PHx7TuM3{4K&cQDXnSIl)uXH~ychlaf?f5JjRi(LHz`T1*3^Q&YK_uZ~chIk>) z4l$-&Q0mKyLKX`MdU|+vJ%`Cz(3)X`{Bpqty?0K#&0U5z-6O+O5XdI4x|d;oT0kRn z!R7fF`ny3VQ*N5_4?xoOo*sN!Kh3`6J;1`H8x+Y%cG_+cjk$E`l0B#(*EQlW>xm>5 zm)Q8u(_2ggO;GCbG9|=C<#h?aRZP!{_y4^9Ly7EcVIRLOT9q=&p5@`;p`Ij`k;CHp zWbw7$VV@$uMtN*UVgi(*B|nNNF;S>dY)(#!Vn=y6hMWYHe#ThMf*M#5oP!+-{2dU$ z7^0r#c0Evn)%D5d%6sckgm-XDSZ)uLF`-NqqUGrNUipL?=2qk(9wykrsgc1iMIs~o zv>mR$Ag9}YU~@OYD@!mmGQwddN59lscS%%1eGV?H5c&gH#U*6D=oc!T=QXdB@}T#A z-4pNLbx(}Ck1TA5$Hp42?3nEIYmq$>%y<{!>tq^rsLy>C*=Q9LJPK%#o<-(dMlIaB zDJ;CR@YB?>S2&~<)n&?Ss6+njy}>Qo#{gOJPFd@Fb%H2T(B#cNkRS*OnUmv(cHXjL zNCS(lv!BmVX#VU(PI0=3Mw#T(8Hk-dzQ<`SNS2I!T2bZOPyq!wd7rl95Y`z10&BR* zfk26)R=4t}LELGozz=7MM13HWSuFF4x~hZ#8_JYSLHr31zI0c`Ip#7cXjWBsZP#=6 zp05|31A$sd*Jta55|p0_TN57ws8lw>0AF?zEbWjBS9!mUW?&xK3|;1w8w${h4%$Sc z5)5zBa#owb3Hp&0MF7Pt6URvVZ09P%K<8o(At!g0J^v`geg1~U0uSu+OK7%55wXdbcx=E- z19ORDG63NQ373U-BQ)b>1=-12pgAcD;g}n;-0p z;{0Vvw0}-(pO*sY)8g<^k;q$#2P*TEZ_~>(xy=v(AXuAKp~w&ENH>_nmPQKGyQ%A4 zVH)yv3Kyi7Xvl@}xd>|47Ue(W-V3R`7o7XRA|f(^_qp#AK>{cU{!RH1H{uksfWeundda*?nCp( zh)*GL{@G=g8X&P_-e*(@c0jhfxNbxHC$4)Fem#&|Y{)*#_-7gcyf=haHw6jI)q4S@ zjjm9BhjsyF#O@EdGkvgfOm^U`MAl|ax6Tl&z9Bm7KP9nq9cTa;ss1 zdSc?8z>)=#njm~~)BRHSvGiw7TZ1-~p7wzumO&tdr=8MsjanjsCwNp@!~0zuB;^OTf}L&DG3 z#ymGuxNqpmXTGppTr9O3Xf_ZV7OpP}lP}+X!-m(7BWo6r{|#k*fBQ7;Ilu=go1Dt9 z=6 zk5)f`=ZL7sXlN3{WOSqV68w1?z&$dh=7{zm85-8!XCk|g13d61UD z(DI!vU8eNM8E7W-KJ+64XzA%k207JQhx{*<_pSpyLfaR~;$O}fo|F`oVmo6bF`Kx- zWifN2{p5$`nP@&;CB~tSBh;ejj7(y0mD4FQaUY z`N#lR^CFP-MMv^rq_$2DKRnwDs#qN`0K0yNhs(Wq>a$PDt`D^?%rf6K*abDip!g1m zNk&vzT?On-nxkbmcv4;AcaE|QzatxVuNr^bpynP+7%0iJ9?VG^0rj_{w@(F3F}N>tn>+!;{(Z{;)ddd$9)UR>lbFdt zDFuz3f+UAOwPsyaYx7;PqAFw=H%!Ao-T@#bJlPiP8U;X3tPJw#ip6M3=8ygY9;vWV$%nmgXDrST3DPBZ(ZAL@@m6X}R_urBa^Kp+63x(D|#Wjoo z)ozm5D*+yHl^zN^rWDkdw}KZN!qmBX_wmuno=$}(zElkYg46cAYUj0@tgNhKcjw*Z z;dziK!29^i_ORVtE1=e+S*zKr14Z*}4rSXtPu!i?Tn-mc!M@4LQ1wyG5fcC%z<9d9 zelk$7_M<6T#DT@3=VI3rhlbgTK*cZ>UWZ?!1(=h&zdw*l<0eKy_`>7lAVw=9IoWGC z4{>@te~5jObhv{U=iQ%FFmmc`R0X_A`%_!$RULETSoG$`MjT>oIrFEgMU|k+y?4Hq zU@eXZ8qZQg<~vONxNyMRy0U5nYN1(2IZKWLc&4?Y=1D%LPo=uUxtH*iYxzH#-y{d<6p>Np-p0`PX#69#tjq>*CpMiFGybANB*(kSnW7_xZ+@any*MxcY~0VmqS+XlO!?tkO&zqgUr zbw&(&5qQ()#@5DX3)s{RtgQ5H^K%}vYBVdbHoY|bU86Zr1vK5vys`Z;pz=(XbeGs` z*A@$ErsCL?w^81{l=5yJpLNi?69@`#Sy=FFj8hx%Q*4p;x8(wcjhU-qpyAe|hZK4G z-w^Sov%eD8^m?wE9{ehDIrusWTr^Pp{taZoD43X-nwWrXYlqCtn8AHzW)_w-5dPUs zh$U#moDi0@a2-#bEX)CNZ}w4ijCA)EZMrce+Dhka`rL z8N2-PNdB=i91hHq*a3S)g1apN3Zv;|Te%Yr_@>r3HYmx+xcBkJj$SVmo67p zZ_u^^pbU*0QT2D|YH5H&MHS{=s1noZJnE_biI=W3QCOUhj}HL-MTCN|I-34f+iVOK z%wcsMig@s807%jH63yaT;A_Lx}zPu#N7phc{@5#x0IV| zt$c00ZDK;{+(Qv|(#r~7ei;vPt8s%`fE2$<6QWBC^lfQ~y9ZwkxG286ju8j*5dOz4 zN%fJ0B+z!2KBO^+uwF}Na#7xuQtc;T{$271K%W3sLojJLNERgW)jruc=IDG_n4qL1 z-D%9bZkO|XQT{qI0emX>X_QinXJnZ~Xx>aQVnP#IpR@>fO5OT09Uuk(CWL?|J2Y8< z=nMgg7Uk-SihR)^g;*QpUDp&Ce9PzNnQzCZm=8D{Udm!z=|K}ZS%}QhxB7=Nv^F5q zZCF4EKUHjsN~CqL&X1J6k58&?DeNnNvsF4_0cHNJ-vQFwGO!iV{G^aGyt|`x_~Sz2 zcW`&kNG}Bt8>q_LK zfure%v_5h$Dh+*1zx(dTZq075Vb?rU(e%9Nk<*@A|CeO<-yTwIf%D~io|tjcoN(zF zZ3Oh_k<^13KRH|2g)FU?myHEcPt7?z%#2^|)}nQ_5D}MQkj^|v@R{{uA(c^RMNilI z5H(n-W>c5OxBd7Y(NBA=R?}dm6Up0UOzT7BtxR2yxB}g}H)w6&r!W2ft^!H4ZB40V zbmCpDgp;7SG(s76!;7@u4Lr0k)!NqV4uNqZ{k@b|6Y`aWY4}%}9UtyofQItRY=d*N zWVmQgutoIeY=zE)Q)%tleGsz3qnU4;>S0jBc8%Ptkgv|NKKOA`(csv~b9)l5XQJ~S z4>y5~9@Nw1mm`UOW_c>{@V9X!{vcGM@0j&yQG*lg^g}XOu44Jmq5K+zU>@t%G&f#y z+;uM)@akub$B}gMJr7}soa@aP@y8&6mBz< zAh_jMOCZBOpep!=$h)|eG~^<0*-e65Vc?)HZ}oN$E-0~)pq6m++4psdRBG@EG(95F zBNQtgM6OFOOJ7$m|km z%*dQ&L%9tzL3dtoyHUGRc$Lo;Ab^sfgMMJcn&|Peka0Pa)1~D9`+uU5yNTBao`Oe(7bX%PgCc(A2lO=r zkPO51Iw0Y8b%Li#FcELFEBJo)UO!Wen-XW5aK4Kr9s2w+T_N;jJ_h3m7$K`XclyQc zsy0@$uS#w`J(dkHyT6?a3^4g+ z2-JA_)@}4priS`pcLx3Bk7aw|3N@laB?!9_WG}j7nrl;g*4UvxVQhQc*qu)p&EBH! z2r_&D^UTQ%T)IU)Vh`68QzIm>i8&BPRJ5B`o$>446uP zP#PZG5_j{Pp91E1buNwzG`&^o1dgi8v{U6J8FybPV#vqT6cnsA|4fg`!w8Khgw*$o zJBOk}XW2A$0_KyCej)&X)L!LS|FvWOBc;s(&erBnQadf8#_d5@?;P(phkMwa3?{N| z`i1Ck;I;yT$F){4zblq`D_440-ptHx_SN~_?i$>`-7pOpfN`KART2ydNT&ne4Y7ty zn+c~?4tt|1Z5L9Dw&Jb5G8AcIjJ;fo<|9;iMZIt?@vWD%b6?Fode`l zg#^>tkGamHLqoqxSak9N>Zq04-PPN77(f^iXiY6yak4&zWI!ufB{qdjBS*(ka4YxF|~?ZisG4b1ZabAwF9DKlT%cst4` z?M`;rzP@xf-LelG94IirVzCJK(>gzCPL2fXO&&|v&Z;f2t$Bbs8J=ed{JX6bG>D}&{6f-yPF)WO&+AS?8?LG&|903~+)L@YrMKdh=vdVtN zzsdo(zX2AU1#d2*`NHk+ti9Qvk^!cd_D@RQ^8G0ybw&}lnT5nIiTOyOc2T|AA3-s} zB*KmIO*LCdYeF1fg=Pu`1O$3q>YSwJfe*a7c06Vp#tuP4ZRaVWhwTk?M%$&NOt&~9 zgz{A)5SyKqYbS>Bq8L-F=+^Er=c?(*R-*A&4C4L!8v$>l$F8k9h%lJ&C*A}O(d~ZTaAn5+@;$bE~fIBAi7}QvbK)R zR7?C!QCDJhw41Ws{>Zyo>m zJgAjBFn2p){Pbj88Ty=9!B5@o(AWgu)EgEE#2ewy5|Q^)wPzc{Gv%Fh#zYJ`XuXyD ztSI>*=s^qG)G=+dsJc^%AnU%T)ibV?27*G)gLj$*?skMppDAK~ZJ}5o9k4D?n1&`k zZ`P$HwOu0QnMF3B>w&e`;Y=wU;K(#LQd3hqr|(4VeV3DEf4iGP7{=)XCZJM!*-+2B zq)>MU2S=vVW{&QFkm?z5)zC8&M;6^i(5qm^yup#1SZqU#pIk2`gQ*`(A>t1nTmu_p z5X2|_$G)mhfIpz`K%@Vi>HXI!ycGX25&h@VSXRZ0vOgDVoh@)SQ+HFA>ihfDQ-f7H zcnokkfQVmbVYy-E%=q~bTGc2%ch))j>guJr&w&R9dT7?o%}p!nk9O+oQjIH~JxU|n z5Rt=J6aMG8n6;ZbkC8#iUlaJpC_hXIrLV4DZKM2isV|FFpH=DM_P;54YWjBG;_9-2 zwm9orcE5oh;?{1L^VK(5o4R;RFDQrOtS$eIegyEp!0%rV{2y}D{w3Z&2JL^Lc#+}y zdC_306%fg^z)eVsyxHUkd6S4d_6_Yz@aCObV7UT*z-XuP>|Y{+7WCEr zPF4A1KK|btVe|zE?}7a63sCB`NQ+NCyS)tj5w2a!NrS*UG)B5jN$p+g(Ro<6QSkJ) zbP=e#E^%GPc?oaBlBU+16;UV@VMW+wSa+N`>iN$qIMWVQLNXbI^zl~@_Es|?CPik0 zN)0&V9csFN4tbkZBy~A93Y;&z+M6;Z((l8|W-k-?Xi3w<1}Q`UArmv6a6BaQ31zmI zX%bt0tF0GA3W>E(%gQzgn_Q%w@XlwkmvN4Dy;Xo+KKLc=;~D1;($>S3?*FAz;%r9< zE!;X_gQqOD|6;e2alQoJB_vfQaxxVHKF&|#s9mrjAe_G2pO|t1rb7RB+}aRGuX@Z4 z$uzlmyx>e3yXA4>G$1Ks2t*n)m+pc>oko&UvVo>|U#ro)bSHHfh(S0$bfeUA$ITP8 z7c~$LLB2fEbRC}%4X&NJ&duOFcsQrZ4VS_3@f7K0K1~wn4R1=%%+&-E#;0CnNU&U~ zP@8`Agna53cy|zZ_lxmg#qg9Kuv!n6oFYLo`w)qZ=aTNn73A-~C~(IKJe4FLP=nXe!Md>_>RK zaubN&8jHMMVQ}9C-*R4FUVbyXEq-jwgI>@X%jZE<@wS%W#*5B$mzVh^;r+`yNOPg4 z{l#9uvg-W-2Gw%MsOvF$ZvQkfS9W-)o!Im7pv$$h;_91x1VIuf(^ohgK0g*0w$SS= z%owSDo`ZuUnDsb-f`O7rY`Yx*pPn*NA)upS6 zNY%ao>yDzef#J)q*49vyzlx65Fwz#GIB#RGWdm?uYm3qJ#)l8ncWTNUrW-xdBGmPI z;&k|pN1+NdXu0)=zhF+QmO`N(#Uj$p@JpgjxD^X&KBw9FcuWbel@&pRujk7vQDue1>~C)9mH*EKHWU- zG}k=N5NEntl42f6Nkb(rQLXud5>&PbQ*|t?t*Ki)lvNkJ+e4iyq~ zYX2(JV7~-Gw|ZByG+!t&D2+n#pd$}D$3(QOK8wbiH-aYdH$%^(E%B8#JE9sxp{yNwxrHc?L28O}U#I`q`dxiI`SHMj%?EPexL>1AXVb+3H7`J}p4XVZg}JNK^NN1Kg-&Ymx@ z`3YCS2^q5-GFZ9oOo^t=$~D-vYp@64Ak@z(XumS%X;-xIqvrU)o!_3-4s|kiXXV;h z4B|Dp4I&;NN#r!@vO{gB7mO_|D$OrNiE@<=g@wU75YjtAVRnNR!gf_&ZF5KtR|(vD zvN1i3b2r6rV>dHwYfk{^{U`b{wn7IcM^*gTdjD)k%23=?T*bzuk!aYH8)` z(JE`V`A^bL!&mE%9_ZnH+*aKoU7gqDlrveHhNA3tGtmwU2eJn|b~6ckG*PIJs@a+(SnD2Ux|866E!*Mnf>r+27V%BX9u>d znrdr1xJ($v zP$#X$#C9Dn4i|OviK?GnfU*>f|OOv}^PjJDfiPd_bVI8eS8z*HU8F z@?)O3W&g_BE3sRp0>@LQqnJd#8kMhhil12Ro`8W0y31g!Y&moo4@HlUglj}>5;Y~p zFE{?%mvX8n5C&G@TdDKuhL7p^`uap@UDycjuUGi-m~~H_P~kVdv+`LIhnezuSVP&{ zuJI%Pu=XK*=Xal*eLJzgo=-Ij1Z9wX&32_|jv~lz>@xaZvklpN7@&B@qe|W54mk$uvKgFWg pPQkI$Q}v*0Ip8DC;hj?==!dUL?&&Lj6#l!EH2q9C9M1}P;Hg3>UQf~0gwgLK1?Ln{K(-7Vcn4?~LN&^2_<(A~|q zfpdQ6y*~f&nu|SqKkHe~%6r{={A8s?aj=N6Kp+r~xR|g!2!xRe0^R%h@GkI|QRX|| zAkY(#xbR0sr^NLsOdSQKnYNvXO{o{8UC|Vge43G+_!ww8AJ2OPn3T`2bQPyMuZ2DQ8y$>&1$lbWcyz+vE1`Zq~S6|4GF$ zX+mp)>BH-9$R<)2#}?efeevRjQU`$sg8NmFNdB&bQ=Vt~cIEXmJm(3ZEp{D8jl10? zc?AVMg)Axbvu~xPYd5Y}Pc>GK5sN8MTy)=3UJ`lXHgsS44yKjM^^@P1)d+(hOfG9sk;R_z+D{oY}oT;zk&*%E}+%Ha+X53Fyl|I%vFI~M>*+!9*@zuyJycvfOy5U@FZnl&J z-+GysuTH3$D3FYg{{8#+m#&6d$sOIzFmZ*eSFBpBXqdAL+tFjg*Pc2tVqn&=(5H1~8k5R(!&-fv9x3 zbP?~F3FZctg}>ha#>x!ot`(M}Px8dt$r-uoHb{y?MVu6fIM&-+i7;Z$$}}Phf@x`O zR@|$lTEoy9&N)0lI^sUUxwII*!cFPsb8$WL9-L70&R2S3nn9iY_1%OR)5hPwpNzVk z?9VC-^IoqTk5QU7``};&zd_DLulR`k4)PTZ;ddziu)t_e4GpagZwn@iRH z^HHh+KfacTAp6T5U-6~6#lc3toR#Fknk3qggfBJgBy}AbkRT`zt&vbxO>C6?yz8X4 zOHYN#`XFpdscMG9=^~3X-{XQ_C8dbIvl09N365)NFU=bzQa zMEZv2JvgS*lKW0ewuqOO(!)Bft(7=|u)KtPbwk4}Wv7nP1oe)0V*XE`KHWjK1})k( zOT6>AI>CPKq%Hn80BX&u11rvUJt>{T?aUp}ast19oZ@D<~%R zi;|Kx77om@vlDxcrkvwS?*bCBm`#q?>N5 zLk=%wvcl!a9;vysx=L?_xVqSK+|bMmS{>jKR6aYgeg z8;pK;c}|b1r-#3upNU)i!B(h7dPnmhE0{rD<^6ThG=y@k=t`OzMp3HfI7^71x>)Ukam85DOnqG* z6YB3-mA3y|W{R_tfZ>7^n&NQ;0&#Y_Y>WtRm5L`QQZA~aMPcwd?2A3}4V97?9TTK{ zZ0nx}v!;+E%pm4GTG{JpBTsl%1K5Tsw|9Pm`rcx9ipM55w0><9u3l+wl3bW28nU^I ziyR2LDpaGfGJN-BWumG$dimP%1#_cziy|nw-u{z%azU68}Oh{%A#(jCC;#l1LN4&v``^A<Hyg&_R^Ml-^721#fQr~ z!PZgoQfFGuQ{(LT-eRvQ5zGzerOMTgGwxnmcy9P_Mq0A`<4}^4d zQcHbZ>E3B;!)t0fOPh3L4;r$x>4=0W!yr`;u^;*^j+;VK(ZadC2g8$Zw9Ck%VtHP=D~ zR_DSx-68!>r~7d*+i5xqSl=7|*!MQ`&lcKL5(3j-V^@o_;EMC;tHP1F*}lFJ5w>-w z2Qn!-+a>czK1woCXO}R3>1~gE+eg3fHe8s@n>O;=c0F0>FP;!4`KEZt z#=$$)!|xkQeu+w#c9HDDR2Gxw=o0albI`bJZx+?qaG4l zOn(OsXBWf?Ci982!zNkf9P zJ$klwUn5cDu5niNm!~oUmt0QmeWwR&3>qe9hnv?y;65~Ows17tYNpJncQm$mW2#E~ zk}Ybx?WQ)9NZaS*V$z2p^U#a)zp)=5?qKB^@Wi~F;$E|>-7B0TUa@036^eThQ5Heh z#wqLQHt{}5ehn`L(bb;-Y5u}wiKt5YwcDjg*e=khjmF~;|D#sfe`uk;MgCzPtzsB^ zHf)yu$v?kAx7o+6s7^Vbk)3rw(pFsqrjaP%(Nt}t7sGT0{-JuZQMD*8VvrwFT4|J|6oE?DP2I+e)~?{zCQd@}s%BqbXWEgQX-{l+55RbA2@s zj4D7dfe+vW}TnWSh$1cB-*4$(4xSBZA0Msc zq7_w`5&l7L2c3=0j-_SIVmFa{9R=F_TaC7kY%;v8NLto#eR|L=2DLI6)T%)oV$4P) z>6rIhbuZ_P+<;Hmmk+v-ToS5^pl|Ei1TbWu*z zNz`aRRi2KaGJ=9W8r?D_`utkVJS+sm8zVeCnLYoA2vRELL`^Sy>7pK}su0id$N|eR z&SCoy+}?bBZEG!SaAk5b@yCTm6=~pv^Lzf@4wI=Am#InKGKgkUl7{@V1^IdD-) z<5kjeySuwzILPGkqBj-2v$L~%GA8QGvWHpn68Dy#$;&g5al48sJq2nEz88)~cF(%= zwTE#nTA&~IPtKJ%P~kQ;gWNpGpXmu* zN+crB-+%S$flw<c#%k3Y`*7Q~8aZ5BaKU4}@vzWH)o0{U|RJZD6ui*lp)HtvF zh}Yz8P|w9m3cP+YQ1}aElK;kc~z$vU8)t!&_qYTj6ijFnVEx-ax;S6OD;kii=Zj8?@%&J}Zvs zDVlB?<923NxnQ>-?tHau8_2}8X_9NS8(7)1-w{P-`uacJ5eb4JYXDEKgFPcNn}p0x zw1G@h4JGr;l*MAo%~@*Qdozi$&g-5XH&2ui%PYls?{y{L$74KO8VfC5f#sl(L=l|$ z5o|ml#vQM;Sp{CJfAc&YZUa zKN=GJPjkiIOsIlOh7j@_oz763PMs2Dm3`66iRQ#$DaROGKqo z&`H8uAtROO?%^gylqL8Um*r>EV3?X=^?l5NjHaDm6jJJ zqBoI0w}{O*SdP!q#9mA8#r9ys|VtFj*^cE z@5*?PJB=r+yu3amPt$CT8p(3_${)2fDVp(6gLjK1%nP0v;+zt{-j^SH-I|qbGdI`l zHlEpd<&oa%KrnH*O}pL_v(*?_BXeHU)@^?!f|j8p&ErTMop-g>DU$uCcL!~d6E$?p#(djfgnnpR*YF4$K`m*X3bhnr1M|7n>(#PbG@1E`x_9x^lX@e@aJpMqM@%* zW<=ks=H+w%b|lTz!1<335nrv!~$Phd5HD~&6pkA0qhKV4GM zsMO6Phn&!m7lcn9*;tI&*eSt)g4Q&7zO-6oQBOtA;(ZRphm83#vIF z8p=lsa*Orsc)dUtVG%*D49p}d)`eW6_`=urqnApA$fISKCYA6c*f$AoAeEesPMTR+ zj4D5=pxy>A6XA(^U>kXzsIHZWY?%~S*T4GtyYeAg;ulbFUPj5gn7A=Z8O$&8N;~rG zqm0INmnH-8SH&=Lv;Grg*uO$CNLEwA=sMDT>D3!4qM0vhH#3vCR@sfMr|dOXk;TQG zjqC-<)-!Lg~LDgmoCR#m7i;4byjacfWi8UW{AX*;&omx#kn0O5MyYDEAx) z+|nGI5ee!a7f9*X1*3xMJt0p_{OxWcudMATiS^4;CGVV)drF_g#b1zw+lc+2=vC1M z2du@c9pZ4Hh!)4Cz?5f?z5k4#pP%02pFh0LHrRAd%-NY}FyKa^rbJ+${k5_|UIh1S zs89~kR!SPp06w5p zMu}(EIX_OgAS?=Y(knehWIa8W0B|9(WWLt}gNf)_7V#rPHJi8MZUhFA{EociD>DB` zPnzfHtvuDG>k0Ym_+a3NOClf(L3uynDc_8YxI;~WaLzPdWU zzP^q^Wekq-jJN1_K7+wv54_|q^UV#BQCbNOq+2dJUpnmH2z;2HL29Z?OL2}T+ti-U zM;;$@VMGet#l7C++u(b5as4F&1o z^l-e~@3i4@sHyx}7;gFXGjYUH;>t)zLvO`&sfMh3&_5FS!s@_uo54juku6Dlny8T& z?YRDG8!ANjElybGrvCJv`v1_u+Y^^nbHF6o+}yOZ-0V!FX0m|{pi!u|m^*ln={0f= z#hmM8ud7j2k$P|g zl7WcbbpL;VCh&$o9R=o*d+cN8nrtbC}qWGU%`k7mZ{Au5Gfdi*glt3^9>FS4Lxtg z@#*Ei*!LxOe{YopG|a;)OXO?I{d$j8ZXHg`VSm=zk@<)po6!0f!zW43fq?Wn$l~IVpQN{Wf3$hTv$>-Kwtn;l#>oAXM2tJWp;&!x zlX$V7cyW_Bep-{V3lY*iN{y$~=O;uYmpNPuwdGVnGS?q}QlBc(6%r8tCA^OQ%}*z6%+P5M&ZXX@QNj^}(2NqG*J$M!t(m2XW|2TvWS zSbIh$KMvqP6Mym5A1`3wV6ot;Dq(!^eFvX#f30r3pb+VGpKy}7k|13%m=t{2x>hXk z!To%|0HM!LMYWLRxM-~F`zu5y^mt+VY%>BamB8^%tM=<{26EwYGQ@c|_13UEuAa$Sakhl#qIS3+)Sn5^F9=%1Ftc$5ExaL-cf zZKo#)yXG&-GXKb|zUI+!lTd=GnjqXeC>~X7n>}|6VFqZl0Uh*YvprzPA+aVf+E^XNp`xTJ(rDGq>aBULDl)&QqIf=Tq^13~SFJ{l zxm4P{_0O87EiBsR<|sTnd&BPdMr$Vq@)gkssmwU>nKT?kJ`Xq0_Z4N<*bO@@$Rt*S z!DN#&CxN<`Y>||C{UXDz%J0?=(4D}|9GN-LX&gy4T`!N#d`JsMRkhppGi-g`easFu zz;~6P(NgkFWzki)aw>hqz>(``E4VMD$X2HYm;Cu>J?LqvjuMkMP=?$NniLI#YXkf_ znvHGLu@_$z67X^DC&*0aN#j=6edkHxO5LGJc)-S=-jfflT0+W+-#U@vBV24QCKsyF zbEwEx03-MP+?SR~#9yOa-_LEuv6IE~O=~QDlFw61$i3OOVCGUR1^v^fILrwe|5}qn zvE&O`CM8=WCOo&nU`^WI|2*^~F4^zj2Mak}le}JJake7Qr%Bb38cqjgj*9~MYvse( z;<>%<(M;GdA9JXK!;a$N_UW`)r*BrD^^z4+azbr)^?xd z&mY?79<`0p2^oOmwNMty^nxQTgS!Q`4ui@xizQuLU0o|a+uKF&dZADe16r@9Cj^Rc zP2XT}rG*mvKqG}C8J}xT>*ewFUOcfDOUOv@)irWazairdMvi+q(Z0AOsmR;e9J)J9 zNRbf-zBT>q53O`7+17aB#P1LRIhCG#t1frb^9cK*WPK)+Rk&!f)#{*|)eo)b`(r0} zekS-UizN5+v^^>rt%j<_Q`D~(R_Eyv z`5sr@c_Gb!cyInC1(*(ZA_gTZA7EfqSq}E-u$>=IRRQ=(7}f@l-TFvf45LPM=rOvK z<^=wjjDEO$gj$Bq@?dBsVmvgiF*Oxvo5BxS%UF7o_#(o>D2#G&@;_|7H8QY&{VuCN zZ)3Vb2)vQZIgKKJ`L)K(;9!kC)Hksfs(o|7ogszDjW-I((nf888R3=$U2VEY zddG?hc_bIHpTK#ki$nzAB*vm77qALp5ke6vmQHo+*FJ^f2&{f(VCia&2 zN@6t>ORw+vt}B75?FL(Myn7`m@qBKZefn^qrPb0(E-NFw!TIybd|VR=GB#PTTfEOu!VXh90pTY?t|c%y~(sYxr&MvN=Z5yPdsAeB;zVk(UczW z#-6CM3^)H2j$8PzSh+CW7tb{JyE)%07sgUKz5FL1DesL@V~4w$&s2UUvcL$NdwXJ;F&PH&N0X#sNSYbJ3^n5jIshj{iRZ|$2PQiC{~ z3~J4i%rGHLTrrZqQUhZ2Yq;Y^3DF+QQ6ZA1Kh*UjvD!Bnz52Yx4DWxj0QB-!1DKYT zRc|)*9NZ#CulxRGX<2Due0OJ8c_&NxG>MnbBuxUNZ=6_CnUOT7@k=#U_oHIFv-B0uG8}>%b7URjN3gw6K## zBa};sL$y%iK^WbMu%XZT@9tt7CZ?X@;e))z?uuu94*k2qK&Dh>XHadO4_T6YjsKj? zQk7|m5qygIAer~6`d`(X>?W&gPX0UGjEzVGt7rfb0>B~}B)TU9pCeM-#3eb)HJV$4 ziM>t0i=4YM0>L2y@n&b6fP0(FuZ}S9sj8^>J@= zw;)I`?6uy>KyTMQ`En)Imu#q_Hrg-IN{@Jk1iniGv4m>4TwJ8$@0N=DJ9hOdlWeTJ z0p!Z=gHq9RH7T*YvksMBwvp?}(-p?qI;b!4O? zQ2)8Oxa99fhK0#}YSd-BoPedH6o!{0ZQrHLhPP#OX>;}FWwcw85}D8=^@rA2rFbyE z5XirZw4|4{kROmD<{XXcNwr&dyTw|&b)hZ#ZMA9md;or(51|SI=bibqWx*MzjvAYU`08r0W;8L-Kdbnzw@A>o z>))~IDO6ok19ftG+t$(3Q(5!JEUbD!2hG51zHoJR0q1YA!9Za zYMB(wa+|q_*fP&QeWmm(C}5(5+Ev_F0jOQ2> zLLB{QArP^*p!05hfHnhi=wBfKaora>y)zp08fa{}By3U`9`b`m13d3}NbJ5)on4XkRtwF~sVf{YQ#`hmQi2w4&(UH@uNoP6(NlcLU z;>12?`#V0!b9ZrZadmEv30qe;4d4v4cXZg;+ecvJd!zxYe5IHLZFA<^2{G9T2?+r% z-unz+-x%i8Z>$Jx3Eg^r&>?`$K02C=oZL!Po4+yC2GkcxH`~VzbFT{h446tZBXl^hFcNEL}XhFzAW9>EMj~MK)OyN@225xNY&qsA1^<5}z@|)0rWdD4fR^KRV&sL!Brl(vkVKrNh6GVqR>nt+S&0$}P9iqr z*||CC8bIUp-0v1cLztqyC-33r%>5T-y@(PL_Zld;EBmLwC$rr6sloe~v7A70qDZ*g zpD7;E8eQc?wE!|@IlGJdf>VYQPg@B$L-o`KMA)&Ka#d2&he8nmMkJf5udmNxEIU*B zGw@!{pY?}ayGv8nb~8AV1Jxv-?&MhG5V7fe1+_c@Yru%e_S{{9Ab+&XWv;(i76QdJ&PiGc(dsVsli8y^9(@&O9mrohbk(`mr_ z3!dG;yQKg8ClOB)JjMfn)bHeciPgG36#-{H&IU}=BFIY9-1=%tbQGoQ%FZ8*$ZuD8%L3e2yj#5;17by*uo8Z{|?>s>avXm+&+K3l*X%AtM9eLyD@q zVJkzq3ehw?{JWrGB#p|K&X4j7c*Lcbn^{lCQ9SAVYkxaPOV`ob*$&NzM!1C^^fNn5 z7hCqQ1Zf(d006G+JJoJhtkgy8uZ>~Wt^rV(Wk7N%5qwWnwFvn;`#woqm7CF!E!}l! zN_Bnp_yG^~UG|8DrCFf;f!G|p*EcfGFCv>35#m^RU~QlpBopRwfSz%`Ho|-FaWG|t zxC$^u#q?>J8^%j#S63K%-7Bal#}C828*ARtO!Y-8H9a9j)RTdVLM1M?Too0E%viMx z6|##e>1P^UuP%;k0Zvq0+{vh32u_1zHEgjZ;6(~R*RwZ6n&ewGTqwsZFW0#o1vww< z<`xk4#Pj959Bqz6005*vU33O&)Z=rohE0wvwRz-;OTx8%c}5;<=CC$$QUCNv%YIl1 zz)A*sn!GSmTn=HQqhA53=}9SZQr|$nHa^v8P}=w!($k3~GA--v@xmR>0 z0J=FIQMXbZZn!*UO4gcYs6U4^Hhw1s+m}A(g4o(tSx%jv7^S#Cp>ErAnD(nfxhf4> zHg|ksJ22a&N(*GA{o2T#@86q!rXnKJJx(%J+|PF~ueJH%B$R3fosn(y7Q`M1Sk3nK zZp>0**AH;svfZZECCrBr1C%*X3oXMX1p_FC#dIm`r)jtbfX7gL*g0Pv&PT%(vV#HE zlz0Bg>2>M-^6>+4h9NX+*|yxfs9)2|%k1iOtvG`iP=jD58fdl*dy0}zRz#Y<@NcS( z?(}Zx-BF}frAS)O+ltef*)Hd?UuC+q`@=|`ECbBzFIxpT<2kP_i$k?_tjy>QA2;;s z@}j@LAHWh+t1LHqlE45=X{GamBxB zG)%CHnZk|n3b4oJ`Q{WH-uh4M4P+Pf=*DwOA+C*cn;R)%ki`@<2s+Z52g>1~9{;tr z6IQByd_`8mx7fEh`<^H$3GC=T???OhQ}eXzo|HudK$$^BqB1hh8+6AVmuFX3Ym9oe zRHtEjfNLThVeT#dglcX8%hV#dA3z47dyDU`zCjizx?Ttt^R(rj;-VuXZihs847>E^)ftV+G9P7_wH27OT<`?!qYi0+sumV zPg{wLvoka8*N6IRR~o;2v0}R(H~H@DEKyQY7S-33!Qp5B{GL@=PVk_|=z!7cJ2l}7 z%PF<|l!ypcvylR$Y~E}n@dI3vQGggh7r04uake^>Sph>7Qk8a(nJDRpqaX;HYF<8%{bsq#k)>?~xyLz0t@LR7-3VHlX}IIepp3xAeE1bo$HC#y z@0mx4ARVvQ%E&u)%leZnemASjyg@XZIq)fdi^^q5(~-k+@)&SF?e`wv4H9NNj)d&&%3W0ibY?wU0-me)tjYb*c0b89 z`+`ictXWCo-dZ1r?T!9fz>fs#um&Ez*2{~-ecAjl78aJoq$Ct)sb1S*bu}09QJz9o zu=YCvC|*0n^&EC4I%zeHnwz7r=qz?Ix+5+ane@X96I(?E`8Vhuh&~WSr2NX4d#WUm z7u4v$fl18yJNHf< zS0`10d3ywvxTx~;s$Vs=Lqi096qdDrjzTGfy2^5557v-dK#mzM*48c!%*e5Su!)s-~USj%GY&YV6mlZ5BAp zN8j80{pZ=(2w>aQGARjeuCDve7ntO(uc0FVOY+;dZyDD!aKvKwV0HtS)3%O9a1;=I ztd4D)!CSS1RaV+2=dh(@^(u#{1I?O1k`q~g??`hQ$~g@zBCwRi9Tyh|k&s`insHy7 zf>*`FAk&0=4FM9|(dLwzQRw!zwTUcNHZN;t^#tBM5LQ_imwuGpJ;7IFMAospfk6B= zQjt+gzO4ogBPP>k3a{uOgX$QOeDBP^HZ(y7Lj*2mC%^jP6U9hQhVY+@kzpO4ZNj$_ zI73!lBxiy=GzSc_REo7i_%5sab&gRBGNq+u4`x0%{rmOQ#Kfe`u*Z432@?!BoblXm zsRYhAQ9K%I>Muz=Qu26@2o}5I%8ZVZ9X2N7eCEFn{TB;RcUjHt;B(#|t+KjuoGBdI z4Qp)l3>~LPaoz3cct$HaDex(r?vW}$FEjIMdJiPQcL`Ol^{BmtwqVJ|w2D4J_Z<?)rG#nCbQ+wWtcoPx7+r8B;)Y-@Kb>F%MZZWQ;t&?EibfV z5mxI{h_*JD>00Rc=z@t zBF5unHSkp_eN$(-$zT!uvZhx+`!}gu$C9LS!Pl@S9{hQq14M#|;v6IQPJj%D4vUbY z6$ZV<5$Cky!2lWP?`bOTf^AT%W%7!!uvYXFERgI*!PlK(9~@#JN{r?XHauJO_3<$> zFaV06FX~cUDXGY{3)2(2v(Lh8`#U?_(A}Q~HBXI5gdt6+` z>Tof`iXYqW!Z)-uz!RLI&<76|XLdDuqJTGwzZ*LVj?0#CK7H4YL>$5Xk+5&+_twj z3Cu}Ln~f5YPT^TtT^$F&Pz(0g?;8gP8MwKJc}22Hq8L=B2ac3aWRv6LS*-gSmzRw( zKqYbLg5QfLTtGyD+)4v!|9@Ubz00p|JqXECyV?MZ)A8}4g+DB zZ8a5Z4x6J-U%i6%mblc`T_vfTE~F4^yRSr5S62g*!n!%=)x9f%wdZ4^I4CS-d65irO5Q@!#9I8`Dtks($XAPadnE2 ze7TN7vK_He`6Um$(TasJGI9f7JFL+?%f{p*0(u5=@|693I}DH@cf`Z%OnqosDyOAo z>FWB!;88^E-Qi)NdCPlDo&0_=!&Y4-RpbM=OM6*ATv|R~bbVaT;lma%oHnh-rwnAt zA_kc&h~KLaB{c^fXV!szPBcGuVt=iV%f8e@ejQ% z4752x{qS2-izwABNXHlD;cPK5fZ9DI2`bVI-sq!Gcx1vwzFRuYHP%km1S z$)T?25dxRnQ>PVX8{={;k(C?cQfFHp2CDN>KsDsHcM#{d^lT;pEP4%U=1c-4f>8>c zUO1q|4&0TD&eS1NLEr)?l?%YB)@2W2tU%S`^u}DyU>jIcs<^Wu0s*tNDXu@4pFjCG zae73~=JZQ>_tIr6nB+k0>(}F)em&>I)lB;~S&S*3Hv+7mI}M;GrI|CX2TCzTn&eK) z6e=oJ`{m`T#oflkH9;fo=ib=J0@Y{Fo>3)CJGlfa;uc2;d{}j{T?!;(9cgZ^v#fI- z2tHX3N?=RoTA?G?);6K#ICL^y{ak1mvur%Jww>m+XnQTPta~TH^^6-d-tz@*@4?$cLtyrSP$!v69rrvKT8qym)Zi9Qs%yz5P*}y~WzW zlU1{s1WqLH>(3D1ze0*N!j4jKr=1QU=DAep-0#eIv{2!S+SF~Xc=?xC7`@%(wMan^ zd2I^@>eP#6FFahbQDz&za+v#++E|V4lJxDs!r&trGcPB4IV}Aesu%QrYtTs1?*oS? z1O()lrU+Bu`vE{&H4H|4&3oYcfC*yY9&<)?eF}I9)Ln?Z?11N{-VK-M>5<4hCCTF6 zdZW>8TN@+EhXnY5-YBUu>p9XytgWq^fB9I|UL2u_mU>!Dg0x4n8aPahXxgxf6;y(Y zlKhk@S9};Vva(E<3hZ}euXWa`ZE_b^MTHX&4-fqiKdhY!44%;GV*tI4GP$}a9&w@M zqtayYrd$)Fr@(te`rNHvcWZ*At+L84aerFWNv&li1R=k?j*NXLDAbQ1yw8cG3-v4FrKS} zo!FX|TOgS}eE3i+t%(5lNB1<{JDcL0tPx(SqN0!l%7E?!Y8j}>xT3az0No8yr!&rt zk4r-nAUJi>_=Oto?S9!`0Lhj@0R-c`EAn#+v)t7e7E^AQkbm8$pu-z~)@5 z7FH~pr9?zTlpencNj6S$6&yE5ce+)ybLoM~gO-m^^A1Qhs)POWbxiV;&ITz;0*on# z$8t7~jtc04ySR5i=nP3@(Z{AH7l*BDuo*<3Sg8FF5mT25H}cm+J&~54RKyTe+P(2l z(>K@;ye`x6_;m!YEzSD#D3Nt_jdEY;6K+{)+&h?_^j--W*AI#MUiilw7=|?;P*DFH~>-C1%?Z55NLx>$-^VH(vlT0=4L}T}%h* zw;KD1Howt@00FJn`8ZhLf@9BX)90=SsvPk3|9rWC%f-nlUPWS=Z*Ft5$RC&lQ6t2} z#iM}xzCwY4FWF!rT%QE)u&&54xMu6m*o#1vp%uTcW+YA@^7Bvs^m`i)P-V4>udz3S zHxYDHRL!M7C;r_=?@k-6qoL49y`45}A`xNJGRUofk(j_(8DLWoaw2^=hK-SyQv{&Y z#YaV?yn8{MB0;arm{tZV)&h!a>Ct(Kd;<2XKwwpmX0sePE`-^l@9Tf;kw}i}Mv0c3 z({=g2)%g0MXf~~|J)m}Zk7hTv!8%Q|xbOs-M(-Ylv^kFg8$W3pCJ@kuorc{Zy_xgl}j}suCZuU-6K*OJurCj2?$eqz+bU z!tv>C*NlOYLZtu8pEK_%cZEL+1jkxV`Aj($-vtf5ESxBxsx{FYZwV+=tCGvnq6R^1 z_nZ#UG36k!WP#+XFu-Z6Kauo#QE?pp15Q&DZXZxLIVF#^NV1{)*XcP((4JCz#rNmX z<-roUfolCe(|Kl%>nnca?I)^Sj!e=;5oW`A?516#|Mr#=*sa{>{(6^`Y-g#k2L$_t zNqIfM+rTG%$BswNV|?i|S?cTUYLyadeOU*yCE_%31)>5Fcc}>P-n~2Hc6ASk@D|Kt z)EkmX_&rUNszO8_fCBwAk6h)Un#R*dG zm^R8A=p(~kbWeV=VfLIiW_~MTGYel@#(y)`ozw0xkMFXXKfJb_INL-u%ejcYS zugV3TN3kQd%-oj<+^f2@t7YB&@uvybkcAbePZ_nz_p}xry=w_7Oiw-w3%3FwB$Zm7 z1}5IR$8AnesbM0LTTVz6yYwh~hrv zlE|_j>%+%+hXu@eJc)iw+FkBrjSoj^gsTS0_t%`>q`m6e7&AG)Pp-9Y89f)xz6=4_ z(iT4v*u7GJYTkoiIF3v;7b@QY!YwB!9&B>B#^3lwBP57E#|O2#3XlX-qt1j$R=CB)p<}aM0LA+-%?nH8W&`9vokM;sR6#nx&N%6Ut^E z^F9+yn%4caWo4M_+gHyA|{wt#bnsMMngo^G}VC%r7 z8F(dVfQ)w%u9}b{UvC(bZ$S5@R}AUw`c*};mb(02r*H#>hN(DLoFCQX&GNLJ= z&wiEYxH-gBnHgXEkRw^$#&<+nK(ky{ot<1Qx;NQRz24l9Ud$S05EfHZt^KnSPW^h9 zk=cAMot8SW%9XSWYl~sHe8wAX(|u4_`XHB_fPl+%|0Q<{;1>i06Ua1RI&=Gb0R*U( z6`F=g7atsEUZ@0smk8_Y+t@ltTsY2LHJ;nX&Ai_|9m-enI4b(KrRy=~7_4futkCPCS}%;iOf!8lK49 zoy>ax@`Rvc0p^n~u=hUzwQsj?{&5GF{z=OVt?Mx;!F_T77LncPi2ABAIi~A~JA7S| z(!Avw-TfrV6ati2W@mM3=pP%ICJNo!j%KL5-tKNHHpczg?-#q?=Lh|oz%Lz`r+jOi zwk zab5c5IT&vkJi@{?9pRNA)Y$K|64nwV#-o1qonsw6v+#WX;Y&V;#1mRK^YfpSM^QqP zli9#~e0w(C>gYC3E2S$t$uQeWQ{kQ~7@Z7a818TxO`X*LX10X!F?Mk}R_lk{A3efq zX|*x{hnR-6@AvmzWt3m;r!A~}NAob|m?3dq53TrcJ0W*0?HM)srgIiRfuW(Yb^LIn zVy%`WdGD$0S0GRSB|wGIbRr#dpMhd}lKnZz^zPmL61eoKu4?FkQ}{?TFwSGOoF3Wq$npVsZL!2>EfR6^Yf-be{ZvbxRo)V7F{wr$Ri10?Rz{}G@2@C~rxGJflq+6{ zCOkovHURFQN1oK+;R$VN$sDb1Mj~a#goumeovi&i7}^4uYi0k|o0z-^VB{nUT14YZ z6Xr;h98_|~F{$F<;MhPQ%7Oqg#J{q#f`$8As!0d=4evNhjd{#+iU$PIF$(H5$SFg-3^QGc*erL&%V!n?)(3L-aNcGpR?U;aIH0ebB=M1?{&?BdOH=BtWF(c z6BFs*{s%-_%*h3e>$jiqEaBo64MXLySM4J-Mq;O43=^ z+@0Kb{`kx#C-sPZmKNeYTHD%o*4D&kc+d-=g7!N6W3fyr%pp-=VPWzDKE)JtY=H+$QwHF$i_P^Ck#Xx{?W+XMXxek z@{VuFa;0*AktWl)Cp4FYq(C!vLArGsEjQ!|nEIkOSBIs-P(xNAgJ2-FyV%S?9wi!x zsa$I5fNts@anc#|={+WU=+^|B^UTx|jbeYc;_m1$+u$nDc}oMS-vf^hHhpApH71~M zV*t*%NTnht$Jk6#!cp<`1nOG9OJ=bV>YzhVvDwd$=bxUO!S5+gmI>nCQuw_B^FA-H zt4ef0xZabn4gE1$>Sp@9_+@%8Uqghn%db10T&i)21VG(%x@PF!dzPO|&B8)n;+jB! zu2wOzf+Kz^(RaEALa8Y- z0v~B!t5r83x*GE7X2>Km8Tfd+yyE%1RrufNk0fQd*3Gx8og3 zV4Wv-=&&`&I9Opt%6@buFj^!%6lA6fOqwo{$yCV8E5=70HDC zghP96Wbe{xR9-TyB(&V22(}Tl*x?!qf&zT>nF(vFrZN6BWE2#$8cP?>UjX~G22yt^ zrkW@J1vwV?c68h#N(&q4Sq&#VcpxV1Sf;Vou>1GSIC-uwGAk) zu8^?3hDR(v^M;?_VEOH$Z4@z)3Lk;p2dKtTa_(D~9s zUO?2!MZ!cO*3Zii%Y?uI_9O-I0LZG>1T+sM56b^+Z`K22WRs4{z@{$R@T+}c-C1_o9xuIjv3$&!e) zM4_xuw7%~7m~2q&beJCwE9XT>Y!MP-HJmqj_bR@wRytt3W~hGG=kz#jnaoQYzO=Nc z5f3lSjw8hG`kP!UGkdsjS)Xw~HMvlKByXe4C_XN(#pSzJ`{3G~D?6(6ajD)GD&0vn z-`X#YP@%}MV%byEsC?g*h4$!xUO5Nd?= z?~=VS5ouTklPe;!s){ec6oDxr9JKQ%LJUuHvHHJR%Dx4KzOi`#$rWmknw)T*she{b zTxaOS0b6G~7zky=l$O!ak#oaZx!F#6`Qk;(%F@k~<3s70$BsvPFs5hNv##zU7rJoa z)ApRj2vDfe+z`$b<<039AQ|%WicGEp$s@W;EP%=pQ`2W*$rDT;$m57Om zPDYwgwp;U#t-bxU04=52FZN_k$u^7rw3R=Z^67QjQZhgf-u?Xi)?w(sN*l9`ucTNR zbj{MD^%Vax*U9iP>8dQihSqj=&1O=~c!j73L8nUEyVLTf_rXc0DgKRwIxEZY(yj}& zaH;z1-y9?&#T!P1zLAlDg7hYfL>t;lcelx^Dw`fV9v?WAOg6)i*8o`x(|RYHwO9-u zo|<5K#RC8<3XP&qTPJ$nOKNtbIjLr=YnAVgUAG7G!dUh+o4&W7Y&5q^Y{DlzYRpqK zc{k+eYfpR&)F_Sc>@cFeq^L`Th$GBD(;dEa%pvo$Xk$D>QUMhn>ptp6tXc zfeCGa+R6NfK%ty$eHT?MGR(w$_Q}3%Ly@Wzlk~xZTZlmJeW5o|HA_9;9q`Mj6@keS zY+WTH+}QOF5C3$!=!dG0h%jekV}miO7bH``Fjq8+qrj>?DpRqrX|Xqw-DosFwfLaI zcH4G&z256`4JEOYe^4azo_94V?^k{yA$H?&XQd%lpD!>aQ-T4%#WUq*8M;Kr019Ei zV1L%A3=a>N@>-hb;*)_{qvx@$JYni$9W;1{#$dQ~A@x-I|&xnmYN7l=d0hG-YX8W$& z1o@ZPdM9?Vuv72h5D?HnA#3`_W}m;49NoBYhtvPZ@I5jU4)HZ?cGna%Hg9d6Vk+6; zQv+6jG|w#MGC_JSKo~NI3M)6;*w39i_nR=J&vMk!v4$wLT&OmBKW|>Ktr*P?j{bZV zjLl>TI>M-A8^*ovsTye(>P# z!QNg3hs{r>5uKigri=Nh+(&!IgBE%-e3km7KCt+HmKrB!!R zlw%z}&TD0JM3)e_KXslonGM!T4O!);=k|yUP{Ty%@_15TkW)j z84MLQyNz3}43-u{oRRT!WKuEwz1t$#0wN=olSM{4Iv$x#z^35{%+$$x{UE>{&DeHG zUO^Ks8riJ!L{uiEOTE$6ZTj)zf{^Z@`4O|}F~=~}2N5k8oqwKJ65FAISJ&iX&B9>_0c#`+bpR*@ z!K*xSLpka8rbz<@;B$|?(taO5#6VC)t&S#}V`pG0@|l(GVrnud3*39-p8$ZXRH^W* zam6n44K3D2MWO584WI#R%~7MNW^;C~Bb%Va514Yj_Q&sT9$IRoj1I&np`v=<8TY#C zXv6co^9H3;^QFs|lgLyD%Jle}Syt#3Rnr7CH7PwlmGIFzGyTpM5DYCIfcgZ9O!`Xt zAWq$H2K<15*QfRJCn=)869&~2Hm8t)RB)<|_pu6C^hYz-zf4a})yxSYoN-I={TEbn$8`5Xox^8Q+DzQ3Vx}os``w7XW@PA_7uFJ z`e0##pyLD+j59buF8C=J-$-V+)bRokjBWWm@5WUdm92HkT50#=y#Q@h>lbOYc&ZrBHJ_J?do>!#I96#8 zBAg|BZ$E%h_|vCyAHQ<zF8rq+hDi=~9VvekBZ98DfDyF+|=@vqY32X1AT$w>r z-?pDnSl9Rl_q?j6u0;O*D}j(-CkjVFC=&BJ)C}e))F)5{CVR}cV@Vy9)y$5)jz$m-5f)4&{Ib=HkH7%JQ-hdDpGV@AkI zm263PFZ2m7WyH!Kt)G8+J?7gT`qhg5^3t^cQ9OF3GcV#eCRK=Yy!xveSR)0o4`J9A zz?bp59Sb2H8EnX(lKb76ZTbEb`sW!Z21@?8@jgl*|Hbl^=21dKS}6=qbQfIN+B)zO z#G2Wq_6f}E@0s3>cG_8hZ7Lh^rO@1Xo|iBCvsIm7m+r{v*gZuZ@9kM@R{4?g1#4QJ z{WX0r7~Z@Z!`nGKlCzjWlFq_QAggTAJ1L5Py4Nj=u7^w3Tv8>g4i1(eZ>_Mn0cwe^kNs*R7>aUetfdoZ1Xi;El8(6BKND_a

T6q5M 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

ax7*?>lkj)))X~bLqY!=<;f(V>G&QlyfgPiX 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 ZrGmN)7{12YekNmx>NSn41y@Y}`WJNlT}A)^ literal 0 HcmV?d00001 diff --git a/.github/pr-screenshots/2500-hs/a-s-d.png b/.github/pr-screenshots/2500-hs/a-s-d.png new file mode 100644 index 0000000000000000000000000000000000000000..90af3c1c036492f0becf7f750df92b18e7fbf4a4 GIT binary patch literal 37870 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 literal 0 HcmV?d00001 diff --git a/.github/pr-screenshots/2500-hs/a-s-l.png b/.github/pr-screenshots/2500-hs/a-s-l.png new file mode 100644 index 0000000000000000000000000000000000000000..3764853bdfcee4568f40b5f6c688c18a198350b3 GIT binary patch literal 38284 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 literal 0 HcmV?d00001 diff --git a/.github/pr-screenshots/2500-hs/b-a-d.png b/.github/pr-screenshots/2500-hs/b-a-d.png new file mode 100644 index 0000000000000000000000000000000000000000..87712955f6b1d084e10fc23b785ed9cac31038bd GIT binary patch literal 59879 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 literal 0 HcmV?d00001 diff --git a/.github/pr-screenshots/2500-hs/b-n-d.png b/.github/pr-screenshots/2500-hs/b-n-d.png new file mode 100644 index 0000000000000000000000000000000000000000..daa8bd32355f6ac34363e914944e309bf921f2de GIT binary patch literal 42899 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 literal 0 HcmV?d00001 diff --git a/.github/pr-screenshots/2500-hs/b-n-l.png b/.github/pr-screenshots/2500-hs/b-n-l.png new file mode 100644 index 0000000000000000000000000000000000000000..a3a4c784154db1cd429c67df1c6bd266be7b7cf6 GIT binary patch literal 53108 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 XfbW&2;Ko1T4n#&m;YGf<;rssq4pYLM literal 0 HcmV?d00001 diff --git a/.github/pr-screenshots/2500-hs/b-s-d.png b/.github/pr-screenshots/2500-hs/b-s-d.png new file mode 100644 index 0000000000000000000000000000000000000000..2e66569d9139e8b1173f5ceb3427741abeb37de7 GIT binary patch literal 34907 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 Ae*gdg literal 0 HcmV?d00001 diff --git a/.github/pr-screenshots/2500-hs/b-s-l.png b/.github/pr-screenshots/2500-hs/b-s-l.png new file mode 100644 index 0000000000000000000000000000000000000000..a2db5b9f602fe6cd86b7ab17acb8f9eab866e9ac GIT binary patch literal 34877 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≪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 literal 0 HcmV?d00001 From 4d6091539a1b30ccc4464ab3c3e9ba465d9d228d Mon Sep 17 00:00:00 2001 From: DoodleBears Date: Thu, 22 Oct 2026 14:24:18 +0900 Subject: [PATCH 6/6] style: format Host settings evidence ledger Issue: #2500 Agent-Task: codex/local/01a16195-979b-7853-abdb-4acbf963c95c --- .github/pr-screenshots/2500-hs/README.md | 29 ++++++++++++------------ 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/.github/pr-screenshots/2500-hs/README.md b/.github/pr-screenshots/2500-hs/README.md index f2b4382eba..9b341df25c 100644 --- a/.github/pr-screenshots/2500-hs/README.md +++ b/.github/pr-screenshots/2500-hs/README.md @@ -29,18 +29,18 @@ controls are readable; the failed later recapture is excluded. Actual toolchain: Node 24.21.0, pnpm 12.4.2, process GOMAXPROCS=2 and Vitest maxWorkers=1. Checks ran serially. -| Check | Source | Actual result | -| --- | --- | --- | -| Frozen install | da6fb748b9a2 | exit 0 | -| Three behavioral regression cases | original 1ab2b33a7afe | exit 1; all three fail for the intended behavior | -| Same three cases | da6fb748b9a2 | exit 0 | -| 13 focused files / 107 tests | da6fb748b9a2 | exit 0 | -| Root/mobile typecheck, lint, format check | da6fb → format-only 01c0 | exit 0 | -| Baseline complete build | 8f4e650db551 | exit 0 | -| Candidate complete build | 01c0f4009472 | exit 0 | -| Final complete build | 08290c7192ad | exit 0 | -| Final root/mobile typecheck, root lint | 08290c7192ad | exit 0 | -| Final two changed files format check | 08290c7192ad | exit 0 | +| Check | Source | Actual result | +| ----------------------------------------- | ------------------------ | ------------------------------------------------ | +| Frozen install | da6fb748b9a2 | exit 0 | +| Three behavioral regression cases | original 1ab2b33a7afe | exit 1; all three fail for the intended behavior | +| Same three cases | da6fb748b9a2 | exit 0 | +| 13 focused files / 107 tests | da6fb748b9a2 | exit 0 | +| Root/mobile typecheck, lint, format check | da6fb → format-only 01c0 | exit 0 | +| Baseline complete build | 8f4e650db551 | exit 0 | +| Candidate complete build | 01c0f4009472 | exit 0 | +| Final complete build | 08290c7192ad | exit 0 | +| Final root/mobile typecheck, root lint | 08290c7192ad | exit 0 | +| Final two changed files format check | 08290c7192ad | exit 0 | Builds produced the Client and natural bundles. The four tracked Browser/Computer client JS/map artifacts remained unchanged. The 107 focused tests were not rerun @@ -71,8 +71,7 @@ distinct storage-write failure, and missing-WebLocks refusal. These are controll failure-path checks, not naturally occurring browser quota or permission failures. At 08290, both hints and the Appearance/Notifications/Models/Storage views were -visually checked in light/dark. Remote Models, Usage and Storage CLI reads exited -0. Token usage opened using the actual dialog button and showed zero tokens, +visually checked in light/dark. Remote Models, Usage and Storage CLI reads exited 0. Token usage opened using the actual dialog button and showed zero tokens, with Memory still loading: this is partial UI proof. Earlier name-only selectors hit another heading, so those mislabelled Usage captures are excluded. There is no qualified matching Before Usage image. @@ -89,7 +88,7 @@ the remote-unavailable state without serving-Host fallback. - An earlier heavy run was reported cancelled; cause unknown. Its baseline background-tab driver timeout and observe/doctor results were retained. - The first candidate browser exited during capture: `Page.captureScreenshot: - Target closed`, followed by browser connection/session closure. Host doctor +Target closed`, followed by browser connection/session closure. Host doctor remained healthy. No cause was established. The one authorized browser rebuild succeeded; it does not erase the original failure. - The supplementary Chinese tab later became blank after the remote Host was