From 497289db71593ee78255cf5c99d7443cb162d1ef Mon Sep 17 00:00:00 2001 From: xinweigao Date: Sat, 8 Aug 2026 00:11:35 +0800 Subject: [PATCH 01/13] fix(models): keep per-provider context caps independent Changing the shared context-cap value on the Models dashboard rewrote every enabled provider's cap to the new value, so setting a cap for one provider silently changed all other providers even when "apply to every routed provider" was unchecked. Each provider could only hold the global value, never its own. The shared value now behaves as a default only. Changing it re-points every enabled provider solely when the "apply to every routed provider" toggle is on ({value, setAll: true}); otherwise providers keep their own caps. Per-provider toggles accept an explicit value that touches only that provider, and the dashboard shows a per-provider cap picker so each routed provider can hold an independent limit. Regression tests cover the new semantics for per-provider values, global-value-without-setAll, and setAll re-pointing. --- .../src/content/docs/guides/model-routing.md | 8 +- .../ja/reference/configuration/providers.md | 2 +- .../docs/reference/configuration/providers.md | 2 +- .../content/docs/ru/guides/model-routing.md | 10 ++- .../ru/reference/configuration/providers.md | 2 +- .../docs/zh-cn/guides/model-routing.md | 7 +- .../reference/configuration/providers.md | 2 +- gui/src/pages/Models.tsx | 84 ++++++++++++++++--- src/providers/context-cap.ts | 18 ++-- src/server/management/provider-routes.ts | 55 +++++++----- tests/management-provider-validation.test.ts | 45 ++++++++-- 11 files changed, 175 insertions(+), 60 deletions(-) diff --git a/docs-site/src/content/docs/guides/model-routing.md b/docs-site/src/content/docs/guides/model-routing.md index c1616e9e5..fdce20d79 100644 --- a/docs-site/src/content/docs/guides/model-routing.md +++ b/docs-site/src/content/docs/guides/model-routing.md @@ -85,9 +85,11 @@ Routing and catalog visibility are separate controls: - `provider.disabled: true` removes that provider from catalog discovery. Explicit `provider/model` requests fail, and `defaultModel` / `models[]` scans skip it. - `providerContextCaps` applies per-provider Codex-visible context caps. `contextCapValue` is the - shared dashboard value (350,000 by default), but it does nothing by itself until a provider is - present in `providerContextCaps`. Caps only lower a known context window; they never raise one or - change the upstream model's actual limit. + dashboard default (350,000 by default), but it does nothing by itself until a provider is + present in `providerContextCaps`. Changing the dashboard value re-points every enabled provider + only when "apply to every routed provider" is toggled on; otherwise each provider keeps its own + cap. Caps only lower a known context window; they never raise one or change the upstream model's + actual limit. ```json { diff --git a/docs-site/src/content/docs/ja/reference/configuration/providers.md b/docs-site/src/content/docs/ja/reference/configuration/providers.md index 57903e853..1e87f416b 100644 --- a/docs-site/src/content/docs/ja/reference/configuration/providers.md +++ b/docs-site/src/content/docs/ja/reference/configuration/providers.md @@ -13,7 +13,7 @@ description: プロバイダー エントリ、認証、エンドポイント、 | `openaiProviderTierVersion?` | `2` |移行によって設定される |単一のオプション対応 OpenAI プロジェクションを完了としてマークします。 | | `disabledModels?` | `string[]` | — | Codex catalog と `/v1/models` から非表示にする model。直接の proxy 呼び出しはブロックしません。routed id は一覧から削除されます。account-qualified native id は該当する selector row だけを非表示にし、bare native GPT id は bare row とその model の全 account-selector row を非表示にします。Models ページに表示されるのは bare native 行と routed 行だけです。selector-qualified 行を 1 つだけ非表示にするには、この設定フィールドを直接編集してください。 | | `providerContextCaps?` | `Record` | `{}` |プロバイダーごとの Codex に表示されるコンテキストの上限。キャップは既知のコンテキスト ウィンドウを下げるだけです。 | -| `contextCapValue?` | `number` | `350000` |ダッシュボードのコンテキストキャップ コントロールで使用される値。これを変更すると、有効になっているすべての `providerContextCaps` エントリが更新されます。 | +| `contextCapValue?` | `number` | `350000` |ダッシュボードのコンテキストキャップ コントロールで使用される既定値。「すべてのルーティング済みプロバイダーに適用」がオンになっている場合のみ、変更によって有効なすべての `providerContextCaps` エントリが更新されます。それ以外では各プロバイダーは独自のキャップを保持します。 | | `codexAccounts?` | `CodexAccount[]` | `[]` | ChatGPT/Codex プール アカウントのメタデータは Codex Auth によって管理されます。秘密は`codex-accounts.json`に別に住んでいます。 | | `pausedCodexAccountIds?` | `string[]` | `[]` |再開するまでプールの選択から除外されるアカウント (一時停止時のメイン `__main__` アカウントを含む)。 | | `codexAccountNamespaces?` | `Record` | — | 任意の公開 model selector を保存済み Codex アカウント target に対応付ける任意の map。target が存在する各 selector は Codex picker に個別の `/` row を追加し、各 row はそのアカウントだけを使用します。selector が 1 つでも有効な場合、bare native row は picker で非表示になりますが、明示的に無効化されない限り id は引き続き routing でき、raw `/v1/models` にも表示されます。 | diff --git a/docs-site/src/content/docs/reference/configuration/providers.md b/docs-site/src/content/docs/reference/configuration/providers.md index aca630a1f..f9313567d 100644 --- a/docs-site/src/content/docs/reference/configuration/providers.md +++ b/docs-site/src/content/docs/reference/configuration/providers.md @@ -14,7 +14,7 @@ authenticated. | `openaiProviderTierVersion?` | `2` | set by migration | Marks the single option-aware OpenAI projection as complete. | | `disabledModels?` | `string[]` | — | Models hidden from Codex's catalog and `/v1/models`, but not blocked from direct proxy calls. A routed id is removed from listings. An account-qualified native id hides only that selector row; a bare native GPT id hides the bare row and every account-selector row for that model. The dashboard Models page exposes only routed and bare native rows; use this configuration field directly to hide one selector-qualified row. | | `providerContextCaps?` | `Record` | `{}` | Per-provider Codex-visible context caps. A cap only lowers a known context window. | -| `contextCapValue?` | `number` | `350000` | Value used by the dashboard context-cap controls; changing it updates every enabled `providerContextCaps` entry. | +| `contextCapValue?` | `number` | `350000` | Default value used by the dashboard context-cap controls. Changing it re-points every enabled `providerContextCaps` entry only when "apply to every routed provider" is toggled on; otherwise each provider keeps its own cap. | | `codexAccounts?` | `CodexAccount[]` | `[]` | ChatGPT/Codex pool account metadata managed by Codex Auth. Secrets live separately in `codex-accounts.json`. | | `pausedCodexAccountIds?` | `string[]` | `[]` | Accounts excluded from Pool selection until resumed, including the main `__main__` account when paused. | | `codexAccountNamespaces?` | `Record` | — | Optional map from an arbitrary public model selector to a stored Codex account target. Each selector whose target is present adds separate `/` rows to the Codex picker; each row uses only that account. With any selector active, bare native rows are hidden in the picker, but their ids remain routable and listed by raw `/v1/models` unless explicitly disabled. | diff --git a/docs-site/src/content/docs/ru/guides/model-routing.md b/docs-site/src/content/docs/ru/guides/model-routing.md index 6aef7ebe3..eb4178cd3 100644 --- a/docs-site/src/content/docs/ru/guides/model-routing.md +++ b/docs-site/src/content/docs/ru/guides/model-routing.md @@ -91,10 +91,12 @@ description: Как opencodex решает, какой провайдер буд - `provider.disabled: true` убирает провайдера из обнаружения каталога. Явные запросы `provider/model` завершаются ошибкой, а проверки `defaultModel` / `models[]` его пропускают. - `providerContextCaps` задаёт видимые для Codex лимиты контекста по провайдерам. - `contextCapValue` — общее значение для дашборда (по умолчанию 350 000), но сам по себе он - ничего не делает, пока провайдер не указан в `providerContextCaps`. Лимиты только понижают - известное контекстное окно; они никогда не повышают его и не меняют фактический предел - вышестоящей модели. + `contextCapValue` — значение по умолчанию для дашборда (по умолчанию 350 000), но сам по себе он + ничего не делает, пока провайдер не указан в `providerContextCaps`. Изменение значения на дашборде + переназначает все включённые провайдеры только при включённом переключателе «применить ко всем + маршрутизируемым провайдерам»; в противном случае каждый провайдер сохраняет собственный лимит. + Лимиты только понижают известное контекстное окно; они никогда не повышают его и не меняют + фактический предел вышестоящей модели. ```json { diff --git a/docs-site/src/content/docs/ru/reference/configuration/providers.md b/docs-site/src/content/docs/ru/reference/configuration/providers.md index abf75d650..ee1da8081 100644 --- a/docs-site/src/content/docs/ru/reference/configuration/providers.md +++ b/docs-site/src/content/docs/ru/reference/configuration/providers.md @@ -14,7 +14,7 @@ description: Записи провайдеров, аутентификация, | `openaiProviderTierVersion?` | `2` | set by migration | Отмечает, что единая projection OpenAI с учётом режима уже завершена. | | `disabledModels?` | `string[]` | — | Модели, скрытые из каталога Codex и `/v1/models`, но не заблокированные для прямых вызовов прокси. Routed-id удаляются из списков. Account-qualified native-id скрывает только строку этого селектора; bare native GPT-id скрывает bare-строку и строки всех селекторов аккаунтов для этой модели. Страница Models показывает только bare native- и routed-строки; чтобы скрыть одну selector-qualified строку, задайте это поле конфигурации напрямую. | | `providerContextCaps?` | `Record` | `{}` | Context cap'ы, видимые Codex, по каждому провайдеру. Cap может только понижать известное context window. | -| `contextCapValue?` | `number` | `350000` | Значение, используемое элементами управления context-cap в дашборде; его изменение обновляет все включённые записи `providerContextCaps`. | +| `contextCapValue?` | `number` | `350000` | Значение по умолчанию для элементов управления context-cap в дашборде. Изменение обновляет все включённые записи `providerContextCaps` только при включённом переключателе «применить ко всем маршрутизируемым провайдерам»; в противном случае каждый провайдер сохраняет собственный лимит. | | `codexAccounts?` | `CodexAccount[]` | `[]` | Метаданные аккаунтов пула ChatGPT/Codex, которыми управляет Codex Auth. Секреты живут отдельно в `codex-accounts.json`. | | `pausedCodexAccountIds?` | `string[]` | `[]` | Аккаунты, исключённые из выбора Pool до снятия паузы, включая основной аккаунт `__main__`, если он поставлен на паузу. | | `codexAccountNamespaces?` | `Record` | — | Необязательное сопоставление произвольного публичного селектора модели с сохранённым аккаунтом Codex. Каждый селектор с существующей целью добавляет в model picker Codex отдельные строки `/`; каждая строка использует только этот аккаунт. Если активен хотя бы один селектор, bare native-строки скрываются в picker, но их id остаются маршрутизируемыми и перечисляются raw `/v1/models`, если они не отключены явно. | diff --git a/docs-site/src/content/docs/zh-cn/guides/model-routing.md b/docs-site/src/content/docs/zh-cn/guides/model-routing.md index b3105376a..70f798b9d 100644 --- a/docs-site/src/content/docs/zh-cn/guides/model-routing.md +++ b/docs-site/src/content/docs/zh-cn/guides/model-routing.md @@ -74,9 +74,10 @@ transport;这些凭证路径互不 fallback。 目录和 `/v1/models` 输出的模型范围。 - `provider.disabled: true` 会把该提供商排除在目录发现之外。显式 `provider/model` 请求会失败, `defaultModel` / `models[]` 扫描也会跳过它。 -- `providerContextCaps` 为各提供商设置 Codex 可见的上下文上限。`contextCapValue` 是仪表盘共用的值, - 默认为 350,000;但只有 `providerContextCaps` 中列出了提供商时才会生效。上限只能降低已知上下文, - 不会把它调高,也不会改变上游模型的实际限制。 +- `providerContextCaps` 为各提供商设置 Codex 可见的上下文上限。`contextCapValue` 是仪表盘的默认值, + 默认为 350,000;但只有 `providerContextCaps` 中列出了提供商时才会生效。仅当勾选“应用到所有已路由的 + 提供方”时,修改仪表盘值才会重新指向所有已启用提供商;否则每个提供商保留自己的上限。上限只能降低 + 已知上下文,不会把它调高,也不会改变上游模型的实际限制。 ```json { diff --git a/docs-site/src/content/docs/zh-cn/reference/configuration/providers.md b/docs-site/src/content/docs/zh-cn/reference/configuration/providers.md index 7e664ce58..c6c631f51 100644 --- a/docs-site/src/content/docs/zh-cn/reference/configuration/providers.md +++ b/docs-site/src/content/docs/zh-cn/reference/configuration/providers.md @@ -13,7 +13,7 @@ description: 提供者条目、身份验证、端点、模型目录、配额、 | `openaiProviderTierVersion?` | `2` | 由迁移设置 | 标记单一、可感知选项的 OpenAI 投影已完成。 | | `disabledModels?` | `string[]` | — | 从 Codex catalog 和 `/v1/models` 中隐藏、但不阻止直接 proxy 调用的 model。routed id 会从列表中移除。account-qualified native id 只隐藏对应 selector row;bare native GPT id 会隐藏 bare row 以及该 model 的所有 account-selector row。Models 页面只显示裸原生行和路由行;若只隐藏一个 selector-qualified 行,请直接设置此配置字段。 | | `providerContextCaps?` | `Record` | `{}` | 按提供者设置、对 Codex 可见的上下文上限。上限只会降低已知的上下文窗口。 | -| `contextCapValue?` | `number` | `350000` | 仪表板上下文上限控件使用的值;修改它会更新所有已启用的 `providerContextCaps` 条目。 | +| `contextCapValue?` | `number` | `350000` | 仪表板上下文上限控件使用的默认值。仅当勾选“应用到所有已路由的提供方”时,修改它才会更新所有已启用的 `providerContextCaps` 条目;否则每个提供方保留自己的上限。 | | `codexAccounts?` | `CodexAccount[]` | `[]` | 由 Codex Auth 管理的 ChatGPT/Codex 池账户元数据。密钥单独存放在 `codex-accounts.json` 中。 | | `pausedCodexAccountIds?` | `string[]` | `[]` | 在恢复之前从 Pool 选择中排除的账户,包括被暂停时的主 `__main__` 账户。 | | `codexAccountNamespaces?` | `Record` | — | 将任意公开 model selector 映射到已保存 Codex account target 的可选配置。target 存在的每个 selector 都会在 Codex picker 中添加独立的 `/` row,且每个 row 只使用对应账户。只要有 selector 生效,bare native row 就会在 picker 中隐藏;但除非显式禁用,其 id 仍可路由,并继续列在 raw `/v1/models` 中。 | diff --git a/gui/src/pages/Models.tsx b/gui/src/pages/Models.tsx index 1872503f4..021ca7dfc 100644 --- a/gui/src/pages/Models.tsx +++ b/gui/src/pages/Models.tsx @@ -142,6 +142,8 @@ export default function Models({ apiBase }: { apiBase: string }) { const [contextCapValue, setContextCapValue] = useState(() => cached?.contextCapValue ?? 350_000); const [customCap, setCustomCap] = useState(""); const [showCustom, setShowCustom] = useState(false); + const [providerCapCustomOpen, setProviderCapCustomOpen] = useState>({}); + const [providerCapCustomDraft, setProviderCapCustomDraft] = useState>({}); const initialCollapsed = readCollapsedProviders(); const [collapsed, setCollapsed] = useState>(() => initialCollapsed ?? new Set()); const needsDefaultCollapseRef = useRef(initialCollapsed === null); @@ -566,7 +568,7 @@ export default function Models({ apiBase }: { apiBase: string }) { setBusy(true); busyRef.current = true; setStatus(""); - const enabled = contextCaps[provider] !== contextCapValue; + const enabled = contextCaps[provider] !== undefined; try { const r = await fetch(`${apiBase}/api/provider-context-caps`, { method: "PUT", @@ -635,9 +637,41 @@ export default function Models({ apiBase }: { apiBase: string }) { } }; + const allCapped = useMemo( + () => { + // Cap aggregate counts routed providers only; the single native group has no cap switch. + const routed = groups.filter(group => !group.native && group.rows.length > 0); + return routed.length > 0 && routed.every(group => contextCaps[group.provider] === contextCapValue); + }, + [groups, contextCaps, contextCapValue], + ); + const setGlobalCap = (value: number) => { if (!Number.isFinite(value) || value <= 0) return; - void putCap({ value: Math.floor(value) }); + // Only when "apply to every routed provider" is checked does the new value re-point every + // provider; otherwise it just becomes the default for future toggles and providers keep + // their own values. + void putCap(allCapped ? { value: Math.floor(value), setAll: true } : { value: Math.floor(value) }); + }; + + const onSelectProviderCap = (provider: string, raw: string) => { + if (raw === CUSTOM_OPTION) { + setProviderCapCustomOpen(prev => ({ ...prev, [provider]: true })); + setProviderCapCustomDraft(prev => ({ ...prev, [provider]: String(contextCaps[provider] ?? contextCapValue) })); + return; + } + setProviderCapCustomOpen(prev => ({ ...prev, [provider]: false })); + const value = Number(raw); + if (Number.isFinite(value) && value > 0 && value !== contextCaps[provider]) { + void putCap({ provider, enabled: true, value: Math.floor(value) }); + } + }; + + const applyProviderCustomCap = (provider: string) => { + const value = Number((providerCapCustomDraft[provider] ?? "").replace(/[_,\s]/g, "")); + if (!Number.isFinite(value) || value <= 0) { publishFeedback(false, t("models.capSaveFailed")); return; } + setProviderCapCustomOpen(prev => ({ ...prev, [provider]: false })); + void putCap({ provider, enabled: true, value: Math.floor(value) }); }; const onSelectCap = (raw: string) => { @@ -654,14 +688,6 @@ export default function Models({ apiBase }: { apiBase: string }) { setGlobalCap(value); }; - const allCapped = useMemo( - () => { - // Cap aggregate counts routed providers only; the single native group has no cap switch. - const routed = groups.filter(group => !group.native && group.rows.length > 0); - return routed.length > 0 && routed.every(group => contextCaps[group.provider] === contextCapValue); - }, - [groups, contextCaps, contextCapValue], - ); const setAll = () => { void putCap({ setAll: !allCapped }); }; const saveShadowCall = async (patch: Partial) => { @@ -882,7 +908,8 @@ export default function Models({ apiBase }: { apiBase: string }) { disabled.has(model.namespaced), ); const activeCount = rows.filter(isVisible).length; - const capOn = contextCaps[provider] === contextCapValue; + const capOn = contextCaps[provider] !== undefined; + const providerCap = contextCaps[provider] ?? contextCapValue; const isNative = native; const discoveryFailure = liveModels && discovery?.status === "failed" ? discovery : undefined; const q = (search[provider] ?? "").trim().toLowerCase(); @@ -966,8 +993,39 @@ export default function Models({ apiBase }: { apiBase: string }) { {!isNative && <> - toggleProviderCap(provider)} disabled={busy} label={t("models.capValue", { value: fmtK(contextCapValue) })} /> - {t("models.capValue", { value: fmtK(contextCapValue) })} + toggleProviderCap(provider)} disabled={busy} label={t("models.capValue", { value: fmtK(providerCap) })} /> + {capOn && ( + <> + setProviderCapCustomDraft(prev => ({ ...prev, [provider]: e.target.value }))} + onKeyDown={e => { if (e.key === "Enter") applyProviderCustomCap(provider); }} + disabled={busy} + aria-label={t("models.customPlaceholder")} + /> + + + )} + + )} } diff --git a/src/providers/context-cap.ts b/src/providers/context-cap.ts index 3a6ff23ca..4a4ac3f37 100644 --- a/src/providers/context-cap.ts +++ b/src/providers/context-cap.ts @@ -33,19 +33,27 @@ export function globalContextCapValue(config: Pick return isValidContextCap(value) ? Math.floor(value) : DEFAULT_PROVIDER_CONTEXT_CAP; } -export function setProviderContextCap(config: OcxConfig, provider: string, enabled: boolean): void { +export function setProviderContextCap(config: OcxConfig, provider: string, enabled: boolean, value?: number): void { const next = providerContextCaps(config); - if (enabled) next[provider] = globalContextCapValue(config); - else delete next[provider]; + if (enabled) { + next[provider] = isValidContextCap(value) ? Math.floor(value) : globalContextCapValue(config); + } else { + delete next[provider]; + } if (Object.keys(next).length > 0) config.providerContextCaps = next; else delete config.providerContextCaps; } -/** Set the global cap value and re-point every already-enabled provider to it. */ -export function setGlobalContextCapValue(config: OcxConfig, value: number): void { +/** + * Set the global cap value (the default used by per-provider toggles and "set all"). + * Re-points every already-enabled provider only when `applyToAll` is true (the dashboard's + * "apply to every routed provider" toggle); otherwise each provider keeps its own cap value. + */ +export function setGlobalContextCapValue(config: OcxConfig, value: number, applyToAll: boolean): void { if (!isValidContextCap(value)) return; const next = Math.floor(value); config.contextCapValue = next; + if (!applyToAll) return; const caps = providerContextCaps(config); for (const provider of Object.keys(caps)) caps[provider] = next; if (Object.keys(caps).length > 0) config.providerContextCaps = caps; diff --git a/src/server/management/provider-routes.ts b/src/server/management/provider-routes.ts index d3f0fc704..83d08796a 100644 --- a/src/server/management/provider-routes.ts +++ b/src/server/management/provider-routes.ts @@ -641,21 +641,49 @@ export async function handleProviderRoutes(ctx: ManagementContext): Promise 0 + ? Math.floor(body.value) + : undefined; + setProviderContextCap(config, provider, body.enabled, perProviderValue); + save(config); + reconcileLiveStateStores(); + clearModelCache(provider); + const catalogRefresh = await convergeCodexCatalog(); + return respond(catalogRefresh); + } + + // Branch 2: set the global cap value. When `setAll` accompanies it (dashboard "apply to + // every routed provider" toggle), re-point every enabled provider; otherwise keep each + // provider's own cap value and only change the default for future toggles. if (body.value !== undefined) { if (typeof body.value !== "number" || !Number.isFinite(body.value) || body.value <= 0) { return jsonResponse({ error: "value must be a positive number" }, 400); } const affected = Object.keys(providerContextCaps(config)); - setGlobalContextCapValue(config, body.value); + const applyToAll = body.setAll === true; + setGlobalContextCapValue(config, body.value, applyToAll); save(config); reconcileLiveStateStores(); - for (const provider of affected) clearModelCache(provider); + if (applyToAll) { + for (const provider of affected) clearModelCache(provider); + } const catalogRefresh = await convergeCodexCatalog(); return respond(catalogRefresh); } - // Branch 2: enable/clear the cap for every provider at once. + // Branch 3: enable/clear the cap for every provider at once. if (body.setAll !== undefined) { if (typeof body.setAll !== "boolean") { return jsonResponse({ error: "setAll must be a boolean" }, 400); @@ -670,23 +698,8 @@ export async function handleProviderRoutes(ctx: ManagementContext): Promise { const initial = await fetch(new URL("/api/provider-context-caps", server.url)); expect(await initial.json()).toMatchObject({ cap: 350_000, value: 350_000, caps: {} }); - // Enable one provider, then change the global value: the enabled provider re-points. + // Enable one provider, then change the global value WITHOUT setAll: the enabled provider + // keeps its own value and only the shared default changes. await fetch(new URL("/api/provider-context-caps", server.url), { method: "PUT", headers: { "content-type": "application/json" }, @@ -2385,7 +2386,7 @@ describe("provider management validation", () => { body: JSON.stringify({ value: 500_000 }), }); expect(valued.status).toBe(200); - expect(await valued.json()).toMatchObject({ ok: true, value: 500_000, caps: { "test-openai": 500_000 } }); + expect(await valued.json()).toMatchObject({ ok: true, value: 500_000, caps: { "test-openai": 350_000 } }); // Enabling another provider now uses the current global value, not the constant. const enabledAfter = await fetch(new URL("/api/provider-context-caps", server.url), { @@ -2393,12 +2394,20 @@ describe("provider management validation", () => { headers: { "content-type": "application/json" }, body: JSON.stringify({ provider: "other", enabled: true }), }); - expect(await enabledAfter.json()).toMatchObject({ caps: { "test-openai": 500_000, other: 500_000 } }); + expect(await enabledAfter.json()).toMatchObject({ caps: { "test-openai": 350_000, other: 500_000 } }); - // Catalog reflects the global value. + // Catalog reflects each provider's own cap, not the shared default. const models = await fetch(new URL("/api/models", server.url)); const body = await models.json() as Array<{ id: string; contextWindow?: number; contextCap?: number }>; - expect(body.find(m => m.id === "wide-model")).toMatchObject({ contextWindow: 500_000, contextCap: 500_000 }); + expect(body.find(m => m.id === "wide-model")).toMatchObject({ contextWindow: 350_000, contextCap: 350_000 }); + + // Changing the global value WITH setAll re-points every enabled provider. + const valuedAll = await fetch(new URL("/api/provider-context-caps", server.url), { + method: "PUT", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ value: 600_000, setAll: true }), + }); + expect(await valuedAll.json()).toMatchObject({ ok: true, value: 600_000, caps: { "test-openai": 600_000, other: 600_000 } }); // Set-all off clears every cap. const cleared = await fetch(new URL("/api/provider-context-caps", server.url), { @@ -2406,7 +2415,7 @@ describe("provider management validation", () => { headers: { "content-type": "application/json" }, body: JSON.stringify({ setAll: false }), }); - expect(await cleared.json()).toMatchObject({ ok: true, value: 500_000, caps: {} }); + expect(await cleared.json()).toMatchObject({ ok: true, value: 600_000, caps: {} }); // Set-all on caps every provider at the current value. const all = await fetch(new URL("/api/provider-context-caps", server.url), { @@ -2414,7 +2423,29 @@ describe("provider management validation", () => { headers: { "content-type": "application/json" }, body: JSON.stringify({ setAll: true }), }); - expect(await all.json()).toMatchObject({ ok: true, caps: { "test-openai": 500_000, other: 500_000 } }); + expect(await all.json()).toMatchObject({ ok: true, caps: { "test-openai": 600_000, other: 600_000 } }); + + // Per-provider PUT with an explicit value touches only that provider. + const perProvider = await fetch(new URL("/api/provider-context-caps", server.url), { + method: "PUT", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ provider: "test-openai", enabled: true, value: 250_000 }), + }); + expect(await perProvider.json()).toMatchObject({ ok: true, caps: { "test-openai": 250_000, other: 600_000 } }); + + // Enabling a provider with an explicit value uses that value, not the global default. + const perProviderDisable = await fetch(new URL("/api/provider-context-caps", server.url), { + method: "PUT", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ provider: "test-openai", enabled: false }), + }); + expect(await perProviderDisable.json()).toMatchObject({ ok: true, caps: { other: 600_000 } }); + const perProviderEnableValue = await fetch(new URL("/api/provider-context-caps", server.url), { + method: "PUT", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ provider: "test-openai", enabled: true, value: 128_000 }), + }); + expect(await perProviderEnableValue.json()).toMatchObject({ ok: true, caps: { "test-openai": 128_000, other: 600_000 } }); // Invalid global value is rejected. const bad = await fetch(new URL("/api/provider-context-caps", server.url), { From a1b9a707cec8c93f50090428a7746ef6859b8145 Mon Sep 17 00:00:00 2001 From: xinweigao Date: Sat, 8 Aug 2026 00:35:58 +0800 Subject: [PATCH 02/13] fix(models): address review findings on context-cap changes - Invert the provider cap switch payload so clicking the switch sends the desired next state instead of the current one; previously an on/off cap could not be toggled and re-enabled at the global default. - Validate optional context-cap fields before mutating config: a supplied per-provider value must be a finite positive number and a supplied setAll accompanying a global value must be boolean; invalid inputs now return 400 instead of silently falling back to the global default. - Sync the Korean providers config doc with the new per-provider cap behavior so translations do not contradict the English source. - Add regression tests for rejected invalid per-provider values and non-boolean setAll, asserting the config is left untouched. --- .../ko/reference/configuration/providers.md | 2 +- gui/src/pages/Models.tsx | 4 +++- src/server/management/provider-routes.ts | 11 +++++++--- tests/management-provider-validation.test.ts | 21 +++++++++++++++++++ 4 files changed, 33 insertions(+), 5 deletions(-) diff --git a/docs-site/src/content/docs/ko/reference/configuration/providers.md b/docs-site/src/content/docs/ko/reference/configuration/providers.md index 684ea712f..ba0a9fce8 100644 --- a/docs-site/src/content/docs/ko/reference/configuration/providers.md +++ b/docs-site/src/content/docs/ko/reference/configuration/providers.md @@ -13,7 +13,7 @@ description: 공급자 항목, 인증, 엔드포인트, 모델 카탈로그, 할 | `openaiProviderTierVersion?` | `2` | 마이그레이션으로 설정됨 | 옵션을 인식하는 단일 OpenAI 투영이 완료되었음을 표시합니다. | | `disabledModels?` | `string[]` | — | Codex catalog와 `/v1/models`에서는 숨기지만 직접 proxy 호출은 차단하지 않습니다. routed id는 목록에서 제거됩니다. account-qualified native id는 해당 selector row만 숨기고, bare native GPT id는 bare row와 그 model의 모든 account-selector row를 숨깁니다. Models 페이지에는 bare native 행과 routed 행만 표시됩니다. selector-qualified 행 하나만 숨기려면 이 설정 필드에 직접 추가하세요. | | `providerContextCaps?` | `Record` | `{}` | 공급자별 Codex 표시 컨텍스트 상한입니다. 상한은 이미 알려진 컨텍스트 윈도만 낮춥니다. | -| `contextCapValue?` | `number` | `350000` | 대시보드의 컨텍스트 상한 컨트롤이 사용하는 값입니다. 이 값을 바꾸면 활성화된 모든 `providerContextCaps` 항목이 함께 갱신됩니다. | +| `contextCapValue?` | `number` | `350000` | 대시보드의 컨텍스트 상한 컨트롤이 사용하는 기본값입니다. "모든 라우팅된 공급자에 적용" 토글이 켜져 있을 때만 이 값을 바꾸면 활성화된 모든 `providerContextCaps` 항목이 함께 갱신됩니다. 그렇지 않으면 각 공급자는 자체 상한을 유지합니다. | | `codexAccounts?` | `CodexAccount[]` | `[]` | Codex Auth가 관리하는 ChatGPT/Codex 풀 계정 메타데이터입니다. 비밀 정보는 `codex-accounts.json`에 따로 저장됩니다. | | `pausedCodexAccountIds?` | `string[]` | `[]` | 일시 중지된 `__main__` 계정을 포함해, 재개될 때까지 Pool 선택에서 제외되는 계정입니다. | | `codexAccountNamespaces?` | `Record` | — | 임의의 공개 model selector를 저장된 Codex 계정 target에 연결하는 선택적 map입니다. target이 존재하는 각 selector는 Codex picker에 별도의 `/` row를 추가하며, 각 row는 해당 계정만 사용합니다. selector가 하나라도 활성화되면 bare native row는 picker에서 숨겨지지만, 명시적으로 비활성화하지 않는 한 해당 id는 계속 routing 가능하고 raw `/v1/models`에 표시됩니다. | diff --git a/gui/src/pages/Models.tsx b/gui/src/pages/Models.tsx index 021ca7dfc..19976ff39 100644 --- a/gui/src/pages/Models.tsx +++ b/gui/src/pages/Models.tsx @@ -568,7 +568,9 @@ export default function Models({ apiBase }: { apiBase: string }) { setBusy(true); busyRef.current = true; setStatus(""); - const enabled = contextCaps[provider] !== undefined; + // Send the desired next state, not the current one: clicking the switch turns a + // currently-unset cap on (enabled: true) and a currently-set cap off (enabled: false). + const enabled = contextCaps[provider] === undefined; try { const r = await fetch(`${apiBase}/api/provider-context-caps`, { method: "PUT", diff --git a/src/server/management/provider-routes.ts b/src/server/management/provider-routes.ts index 83d08796a..0b09a4017 100644 --- a/src/server/management/provider-routes.ts +++ b/src/server/management/provider-routes.ts @@ -653,9 +653,11 @@ export async function handleProviderRoutes(ctx: ManagementContext): Promise 0 - ? Math.floor(body.value) - : undefined; + if (body.value !== undefined + && (typeof body.value !== "number" || !Number.isFinite(body.value) || body.value <= 0)) { + return jsonResponse({ error: "value must be a positive number" }, 400); + } + const perProviderValue = typeof body.value === "number" ? Math.floor(body.value) : undefined; setProviderContextCap(config, provider, body.enabled, perProviderValue); save(config); reconcileLiveStateStores(); @@ -671,6 +673,9 @@ export async function handleProviderRoutes(ctx: ManagementContext): Promise { body: JSON.stringify({ value: 0 }), }); expect(bad.status).toBe(400); + + // Invalid per-provider value is rejected before mutating config: the provider cap + // must not fall back to the global default. + const badPerProvider = await fetch(new URL("/api/provider-context-caps", server.url), { + method: "PUT", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ provider: "test-openai", enabled: true, value: 0 }), + }); + expect(badPerProvider.status).toBe(400); + const afterBadPerProvider = await fetch(new URL("/api/provider-context-caps", server.url)); + expect(await afterBadPerProvider.json()).toMatchObject({ value: 600_000, caps: { "test-openai": 128_000, other: 600_000 } }); + + // A non-boolean setAll accompanying a global value is rejected before mutating config. + const badSetAll = await fetch(new URL("/api/provider-context-caps", server.url), { + method: "PUT", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ value: 700_000, setAll: "yes" }), + }); + expect(badSetAll.status).toBe(400); + const afterBadSetAll = await fetch(new URL("/api/provider-context-caps", server.url)); + expect(await afterBadSetAll.json()).toMatchObject({ value: 600_000, caps: { "test-openai": 128_000, other: 600_000 } }); } finally { await server.stop(true); } From 196b834a0531f5e62c3145e8d7362f055dc3e99a Mon Sep 17 00:00:00 2001 From: xinweigao Date: Sat, 8 Aug 2026 00:45:52 +0800 Subject: [PATCH 03/13] fix(models): reject malformed and mixed context-cap payloads A provider field with a wrongly-typed enabled value (e.g. enabled: "yes") fell through to the global-value branch and changed the global default, and a provider update combined with setAll silently ignored setAll. Validate field presence and types before branch selection: provider and enabled must appear together with their expected types, and provider updates cannot be combined with setAll. Both malformed and mixed payloads now return 400 without touching the configuration. Regression tests cover both cases and assert the stored caps and global value are unchanged. --- src/server/management/provider-routes.ts | 13 ++++++++++++ tests/management-provider-validation.test.ts | 21 ++++++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/server/management/provider-routes.ts b/src/server/management/provider-routes.ts index 0b09a4017..5851ad2d4 100644 --- a/src/server/management/provider-routes.ts +++ b/src/server/management/provider-routes.ts @@ -641,6 +641,19 @@ export async function handleProviderRoutes(ctx: ManagementContext): Promise { expect(badSetAll.status).toBe(400); const afterBadSetAll = await fetch(new URL("/api/provider-context-caps", server.url)); expect(await afterBadSetAll.json()).toMatchObject({ value: 600_000, caps: { "test-openai": 128_000, other: 600_000 } }); + + // A provider field with a wrongly-typed enabled must not fall through to the global + // value branch and change the global default. + const badEnabled = await fetch(new URL("/api/provider-context-caps", server.url), { + method: "PUT", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ provider: "test-openai", enabled: "yes", value: 700_000 }), + }); + expect(badEnabled.status).toBe(400); + const afterBadEnabled = await fetch(new URL("/api/provider-context-caps", server.url)); + expect(await afterBadEnabled.json()).toMatchObject({ value: 600_000, caps: { "test-openai": 128_000, other: 600_000 } }); + + // A provider update combined with setAll is rejected instead of silently ignoring setAll. + const mixedPayload = await fetch(new URL("/api/provider-context-caps", server.url), { + method: "PUT", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ provider: "test-openai", enabled: true, setAll: true }), + }); + expect(mixedPayload.status).toBe(400); + const afterMixedPayload = await fetch(new URL("/api/provider-context-caps", server.url)); + expect(await afterMixedPayload.json()).toMatchObject({ value: 600_000, caps: { "test-openai": 128_000, other: 600_000 } }); } finally { await server.stop(true); } From 1c93c81074896d26ed9b635ba4551d22416aa69f Mon Sep 17 00:00:00 2001 From: xinweigao Date: Sat, 8 Aug 2026 01:07:05 +0800 Subject: [PATCH 04/13] docs(models): add context-cap UI screenshot evidence Show the Models page after the per-provider context-cap fix: Alpha keeps its own 128k cap while Beta keeps 350k, and the shared dashboard value stays 350k without re-pointing providers when the apply-to-all toggle is off. --- .../evidence/01-models-context-caps.png | Bin 0 -> 237547 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 devlog/_plan/260808_context_cap_per_provider/evidence/01-models-context-caps.png diff --git a/devlog/_plan/260808_context_cap_per_provider/evidence/01-models-context-caps.png b/devlog/_plan/260808_context_cap_per_provider/evidence/01-models-context-caps.png new file mode 100644 index 0000000000000000000000000000000000000000..38eddee6742be8f94d57f3101d29505008618b9a GIT binary patch literal 237547 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 z z*I9M8b+Dolf`Vlf`=D}c&1Jlj(>@3`1*009c)nFc$yMbSCq328=F&sCRI25lrS>NL z?Fk?nCRW`VeWFL3D-NN?Q0`N#NPtABIKd(r6r$b+aivol9$MZ%tCph!A+;b$(QG^zww62 zQ>GDX@4kJ@mc9Gl2P;C)($Y0C{Y@^7;WSJ@;XL_Gj%=kLPO}6=_h~EsxR@n2PuB!x zi>aWia{EMvaxn zDN=4RpB9sEP~#d>)TnNdXd_^S!p%kq=U~Ec4?{jzU9Xrao)zjrCv6P__C=_(ayDJ@4#AEET4#X}CY9EKt>betP!6+o)aCO;Rl5zUww^_M za?{36Y_0)(kr5YXu>c+6fZZ$5G%#r#Ep9k;3*}E7UKDsS&0D>|Nc<#bk>Bl9k#^E? zajq3@tek5!DqAIwK5EkD#1R$3KU@{Enye676G4bL;|wr$;} z7n#^Y1u4fSQSbL;TCZ&DIWTftm=x{I)(aOi0Tt6Cc?2pMj!{Rv;_(rxmZOQ zvh?3v?`SN?4#^umhIB)B3>jmq5Jtwu zgu!K6Z82-nn3ZDD;Si}tBzS?*)eb)?J@FSIUc7zVH<`D#Q{pwRFl+A7!HTwG6(0Xf zo&by)A;lQ=E3D8JEf5Le>|YDWmyv9l8fAP6owi=MPL`oi$25%8@*XV0pj|i(Td4!s zu|UTHr>+IMZ=jvJ28h$V$ow70p?^TPLC-d@u$*o2Dl55-6R$|YK^M;`&Y9wERY;;p zq)6~Ml}pg=@RJg+h`*7#7xb$Lfl8o}f|bx3|BFF!9?efQG%ol_16kbsRZI}NGyAOq z(WX$1 z{TeCp*J?)Y*FvB2!gYG>gm8iOEl*DfbMz(TsWKzCLC-d@sJsgI)xWXrZOt{r3Kt6> ze~~TJhmlB;;IT@#2fo18;zY1W-P<>rM+(*+BL^yJYRcr)8c1Yd3f@hd z(H)Y05MfyQg}?CmjC_;LRtJ13FsmvR5GWB&Q$8uZw5G>UPBWMio|+zjtTMJxOUH~( zEr7E63_cVxTUFLqBGy+V4<8_Ttjh4!Mm3HyE>%whod$vP6rfbfPzK;Mytf}@9Ts^y zl@#(dRm-)|190G*hp8h;Rr*)%#`G^FR3uU)cw>V1f@;HTR`4>Sc-kb3$`R$YjwQ-Buj;aEfy{prdF`7QZZ`Oh#^C|vYdid`~Lm=4j+~*@Ims4-+YsN zkG-o)3eRZlmfW{myuk!5;n=~$hmRcgdG_wH>Z4;_!-mZ}_uNsVN3UGDYTNeh5(RnO za6LBX3X&&HnzUuh7SUZcKPvcMeR7(9AWf>m=hJ;_JzHce_ym0j2vbFmc6ALKJ9bR? zwtOZ=7AJavt8Wfw^+A6^k~+}D%lFv3y1FtJsa^wp?9k`g^Y-$_*&#y)ifx2{K0XgI z-wNHw;eA{-d=uU`=L6V;2@}+?DqyM!XfrI8zC;TQcWQ3jxDkj-5M!shl)% z;>VwSa>>OPuUfTg+qP}VV_fM0Ys!=WBT$%&?q-KYul3ByXP zmkOB}P;2N-Wp=2_Hvj`ehcnPx*Qg9APPv4pfU6#tF=NKCry8feAEeiKNH`_i*s)_X zMtk<`q4I(S3wG?-@zqyfX~oEq0pQ|LAG8Rk;g>GycuDM>uMcIc^&mtYng>unapFXL z*&#r3l5h&lfe}Q<7hiky*uU~Yu`VD0Th7C1=MXg_!Az>vX zI>g{YS~I7mEXXiy4UmjiK=(^8QtjHcD{BfOA(DSNF~|%+fv91C)Dp6?o^1O4qKhtK zqEA2lG*7S+SZfeK0k2AcvKnA!4V_C7<+9d3Pt!DO@}cN5$iSUzW%X(RpLyn)e9w{D zBmg)yBG_3U1%J*E72rBp75dj-f6X9<#`y8$IR+ieNaYcaS2=chN`=v*M;jN7blLGz zs>AnKEf7`*$4aFxej8Y%}+R&?TsCFjt~Tl`CdW@bY3Ip(2qY z!OKN#;9L*3)JcfY?I#Tg(+eb0_ac7Pi(g|Wky15Av=Sf}e_VLG`C~x1sO;Eac@vZ;*ufMn01u=B! zkg()7kqtX-mB8g$APMv(oC6_(^_+#YHE?x%@3T~75cJ}Pq0tSIhsTY!o7^ROs z`iKfDMHJ_szhKOm(aBXjJ)|Lo?p<9&fB*ac4`^C9aMGlSqehJs`-xhGtPZRHU;*Kx zQ<2itsZ$wh$&w{!pMCZvmt4Y(YuB#5_S$RTc;gMKQF-RfnRDmP6*&Y`Yqg9PnKR>! zH{STyzy1}k^Upv3(BZ>SM5pJ^pMTzY=SkLFdBqjGcJ5>cToQYx_qwM}nKEnEtasjd zhk`fWc*E$?qrUp;Yr>O|J@38uJ_e-7l~-O_iV2T?{PD+PvmHBj(vA$TzWOTGnc^1o z*IjoVsg^EXs?$@&dji*RTI&}P&O-~53!CX4AjwR3(I7@Ro_p@Oj3Wg=Lb~HZ{S_-# z1WV4CF@r9^@?3NfuMoZxo~d=gt+(F#```awoT*;Wd)Z}|J^SplgbyLESQqh2FTM1o zmtKO4G9M7Dzw*i};PsRmMvzh=B$N+7{E#F!+;GE&4I5O-LA?9!yJRkPeIg4w)2C0D zh5(<{lM`!|Yu2m@l_>KH0tESW7DjNFEnCJ}!RS*esK5H^t5>gH4G}Op*I$4AXPFsD_Jje6{{$JVc3k1XxLBSJeY5O=B!<(qH5VRol= zjyZGYAPa!-#vnRjT&Q6d=`B41#wlJpj%D=n6Hh!5Oo5|AKVn2MW;C+sMQio25afP( zgaNTo0}?5f;S`wI_{%T9>{C>@;ebdg#y{(3nEcgN0-S%YewT;nWh-&K8&c(T}$IMVWCOC%$qll z4;WC_TyxEz|NQ3+5ddm5(q(ttamT&)-W!a3(@i%$@W2B)0(u$uKICpobJX&bvW5wB zabxb(76JPa6GJ6jd-{<~C$1s42}rxX3d=W&hq7U1-NauapQLbj`+6hQE7lNqem@VxIj4l?6c2p*}C=i z#kbvX{dIB;o5kVjO*SiFp{7V!WM~y7DubnI`m|~4|MJ(rCIQlxEn~)vwZcYZ-@d)# z$=6Lz1bl?8l zZ@VKd)300l^XJe1{PWK(`l)~D(BXIAT{dczL_>GS%TSzk*4fuydrjsD=IwLOol9{M z*HceDCAJjn!ri%Zr+`pAW^qqE!HiR27hG_GqyuFMDM)a)oXmu`VwQlADG-J$po|uf6`d3yBa5F9w`CW$NZF zTbC_+=h|zpe&?NKyLRoq;>s)7NAzW-N?F3Z{PN2LxcK7lZQi_P_Ut*&J@?ERXPkNA zg%^swK_ZS0W$}^*LY5l{W7IH_Y(*mx3uVPu(h9T?ZNB~X+t5`?l(2wkS-nFqOJrcj z4x%`Ly+G^z_ut3DfwhB3ndON@Q+qdrTW(xK3_&9oVmd+s##B5{a%QBFuuZJa@-i&C z1_~~^MqG-l910sEMG}E}$Pp}Bw1|WpUaztF%9Se#lgWSu$#tU8ok459&lAk8<9%ZBM=ld=@&t)gQj%3{PN2czza?JymW(14ZD#?3JEDp_1)k8_BYhN z_r324<3;=T+;b1Tf?&7bemgCQ!AiITP%q&{oj#*?Qt4kq3~?C>K1MvoF$~GTPz2ND zl#Y}oFh+jaJYex;Mwa;Cz~lt8b;}kg4!DfCZ~uPc=_y^NhHUzR@p%ZE1OQoiGaqEt z1GX!g{()|Aa?A_^;9mjPjc=U!H#J&+AiN-<_B(ZVd zMUkRp$rNQvw%>%uj_^dh=l8`Cj*0i>P5ASh@XW-#Kf+;$ZE0kivL#aDP7quGuHXU? z00C|QNdUyYZ#}=P>|1^N_U-PQg}xV;Ko!C2tgN%=$-H?^W>qoXz%VpcS~Z2}#R=CM zk($pXy6DB(Viau8AEi$6+B6_E!c_gpj-qyUyZH^6jaOse=JcZwQaYP7jJ6aiO@+eH>ADL5%u`K*&8`i9HVBwu z#~^_eaX>WHe(kl_a@xfW{jO(A)s9_f5EENt8Ddu`kCj% z(!SKPe*MdG7LR`KdvCwq<1a1KtX=~9v z+qS*8Wy{t$=~so3;8uVW&1|#7)Tz@10P+j5hG;SdBnkMLhMk>VyLNpdzaSbE=CO~c z>4g_w5UGmI%<@5^DMl58nH-B$X(SjB{3z_$u|tg@2Ww;(;Fk)WwMFg%_URvgN~N%X;s;^Ui(y_A}j6Pd=s9 zvUui#NRs7|%61v_xjc0$1cxF5yO`A3`olA~Her}9)X5oQe=TcsP?u;+(LUEMsTo42j0A-C!FdAXR>_p{4GA6(L zB{``5S z;2uoy1i|v<%apSj-hhJHm}R=$ansE=i7`y^=gpaG>w$?=7D;pn|8BnNro%^$2*~Hn zoxO0uJjh;y@by<;&z(Exwp(wt&)-IUOZk|Zv(BA8+w&3Tl&0z84b#nh1~zT#G?BlF zrf}uNiIdqcci4siEB{p@iR=S{5(IWDJp1f(!e>bhVcxs%zMJV{Cf{X`hBSt0w;I_8 zBK7r!Cz%~Fv7(a7=J&Q0xRn6})y-K2sKN?pvn$Zg8V@z&pYkus=Bv_{sF_DcYy4W&DE&g{kL0{q&RG-X#beKYo%8 z4;=XBvBw@0mPmil4oxAhg3yI9G8zJGp(CjtdgviUDCKT0WZeSd(i0Zs8J~8zprZg+ zBgO<1k?biDM2RR^(p_XlP|V0CqK+8s*&@yv1Sc_&uw*;yo0!l)GXxF`l3iF7?SHy(NxS&bI@=<)}7FNG)*; zjVLllP19>c#B&K1C?Xx831TQt7?hD^5WR++EK`tMY|Ye3Q)ByX*CM_ z06-aQjTOVoYK}yevtVRc$Zh%c!;a>bEwA<47PK5LIX&tU5LhMQ-+AX9W+4Enh@@Y;M1+3= ztCp&fGV$~*#&K5W5*m~|Xp&RkQO`2WE-A(zZoJ{fYp%UU9w8X#oshX(zGC^c*Iawx z-~rkhLizCf@4Y{M!gvj5`<2uKgS__YYxLr)#tmGU3pM_L2*<+<44Y6qc3#~fb~>yn zh&wQnuskniH@iX%yan_fuu1qS8@RfhONp8$f=A00LP|4wI*W9SG>J;+CR^aLX}~z> zHQ8DrKZ{WUmvsBKVpBtc0v7|Cp!~qB{bCqiX}F1=*v95b(WH&lC?J~to{VK$Cir~i zl~+Xwmc_(-rjk!T{mf5(^0-NA_K%y0JWIZ)m-=ic+By$Rzx zyf$*y>l-(H_UWf<)~%furtkg2h%YQT3YPA?JnvVhe$xMA?v}^B5eh;WYU_-M>@n1*fWTR*tBuumtTFg zaKVCQOP5ZcF~g)>*l$VPVD?u~2tn8&ZV|wkvJ*+=P@C5@flJDo z{fnA32i>8tQnZhC2o1IDzGkV(6Uc{G890>2f7l8^v!U5Z$U z$`sYCH6KPc3urI<4n(t33FvdxYA|J*f|O7|fdNSiSG}MSeJU^!^O8r5&HfCsoM92w786B05$Xz_9o;;XFNEGtB5oWkEu-Ht9&<-8yvqMC8 z=8YOiLID6GY_81svKulcG*yp+z)yi0g@0_$(`ZL2`sxb=t`>ltt5>Z8qoG+T-qQ56 zt}C`mX(P>Q{L$a#v(TiYZ7hT#gLIn$Cq&BTmq-w6C`>KF*9y4|>OHVP5gkz3yD+>+ z#hYKmy$E`$3yMb6L!)KHvFOXca7f+oAO7JV@G>~)kL%X1WwE0}-s4DM)*xZrbmKJ& zY@)>p<`%^bfQax|jH0y8F>_&@kw)SFd{qqz4G|)3J(m{H9SZzedKZ1hBm==DFIdK1 zy;!Hn^+j3CPnhbOoT&m9S^=Uml^K~2Fr#{VE@V=E^{ZcT14#jS7H!Jy^#UUX8JKSU z%j-44U3cE~-~$i-{XhIYNZ!8rz0Ete@8Hi4gXfYZO8~s^;tK~49E^^^{%nW~C$|^I z#uEnNJUHrTvN?$Br=(&@+HpCXgZ%D*)PwY_pZ)A-vVojdU(SC%s`YAqnZ*V<_NW{+ zLA3LzkPQPQ%g`|8iv&y*ED@Y==@=KOQM;g*n;H^ZBGFS4!4rjPDR>hGoR-SpT4s$l ze3@uSZWpF)>}VLUF>+%M)%F68y~;VoqPm;^o6MQD@7}$~#7;rLwrSHFQ>IK7q`8b7 z#4skrx8Hu-=65%*Teo)WM_bLpAGq&+NrX>7`PAO-7heo9t*dyky_&%gktBdhtcys+crk0u~=_-Fnc+6goP>o6W{gfNSfu!yNa-31L-OPA6n{ zxA&-pcQMOdVzuv#dNc)D?CdNS19P53E#0}$H!K{@*NEVQ7|Y8 z0MWD|V$Pho=BZvszydNum}jys%p;*Wy)qrySwX(3TFv3gA_unw9w;aXazsifu$zDc zcXo)ziH)KruI>sg9BeN10t1(XOf7C<6Xj}-03ec$?qVT!paKce6q9Q^c^m>*@I;Uz zRC7y!hhSWs7i)=ENg_fMOj-*5gFpBKYQjQ+z-|eC1Z)DBYSzj~k%uw4sX!=Rq8wGO z1_nk{2N}4f#!>@J4KQ4&Mg>mDEye1<)QA|tH~_1p1)I2xC<^3MNd*E#Qf{f&(2^rE zFX~AZos%^pE|{FJ^3WqTleVLa+<|Z!cO8(20EQcbe=2inuBc5lfqp0S<-N26!}*1O z#E|ANP~fhmcspHK(t%6PT3OTl?&+t!R8kD@r6(w>G^8L4C5Oxl^r9fY%6ElC?XY$z zJ9Jfz8}lqVBHJPeCa+OoL&ksd$tNXoT-t^4$AA3C5LFsCGzx0!`50X4P+5kH3sHoL zcstJ_?c&iKFlmw!QhKs}h1gI;n&jLA!L8E7gIAag+@;#FY7Uuv=;k0k(QvFq*a zg~%bbzGxh7G${%ih*Vlfek95UQZ4`yT?0qJkvM9kMYgVOfdQ65pe71P=^g+6@Bf|~ z#|uF`c;Xh{5bd)b*`yCNx`YA?$Q|@__w4y<&jZUIh@Jh*ufLRyUi&{3b#7_TG1(@#Gg zN5!ab@$+yEITFQW90q61kw_-rOO_!uMo(vutV2LZX2XsZFK>`xGK&W34uEOgyz33r zj&-K0qqt%rM+pvljH0|)2KIlN*;cuAgUSrq3v2y;^tyESW8tAF?1%^!UD z;cd6wD*oT_%Bz;p@4NS&^XJc*eNLV{>#jTRFrt|tUUk*EMHV$>dzX=z$)}Zd$E#`-V~WO zX5l8p;#g#b2Lfr?2WC+zXnEt!H^B?E#Iyhec+u2sZnuIE!7UL8m@}tOn}4sm?FTs#udv~Fs#Kr0!tqde!+tIS%m3@|H7x&NcGug-g$Xilbt<##!d=! zG^-_3qG~mlEQYNBPgtc49UZX*0R*}@DvW%wjTS1MKnTw&+NNTWv zfX5}uVk7{m1k&8;jZK@5WE+=igmDQ*TXQ@;7m;X8_0VI# zvmno~dAs1H8+r@`3j%XjxKd`c)|*h!E@S}DNeFCUu^r%{haS@ILT;H0U_biNk9Zec zScpWau+Fn5L*-P1b>7#Ea@5q6(KtE?UPyt#UD*McJsDPCt1(WXpMCr|Li!3aM0FmB z`|_(VJA<hz*v0VSc3olww zHKR4#6DmW*s{HWYe4{-VW;Uwr8$Gdy#?Y^prY9PrII-!Mg;Im60l=jqcY zMeO!3m>l15!}VLXe0coii7AsN33xvH{Bsl2@Gklc)4qMP#{Srg1X+^6oHAR#?KWVU z;F_SD+QKCs8AKQJ=7kmStFK;UO6`#WX0k!sChBattk1+c`&7g{lW*w>6yhW`vu1}& z$%QzBGx+t6JOC+%phgq0R%JWJMOqWNZ8Tw{PQm$3z0nRBLgDJ6^NQ!yNj$_ zj!4IB-o#fBD-JX#wpb^F05V2s7UjebqFhVj*6u_L^zH5KMUAX(ZQQiUoSIoo#Sy2h zNxgQlg6caIKJXZMd9s}`cV;;PHX^O;kHFX}G}X?Xvs1)wjt`KrV;!Bvix-IrNhs{} z+_fl?#RQYKh%X5r2YE(hMM7b=Py{@YgfTS54k;n1%FJ8?C$iO4f@DT0>IDo;A=-hU zVBMA5D2q%YBD=+~-=%s@z}ljV$Uq1|LIxLEMZ{R|j6N<@5S?;PVTnU<$es)(Zja%R zm{6F6pfk&G9$3;k&WK~DX+&stXh$uaAtL4M5UXcSp0n*Q0CNaRaU>gcVvE$mRj%ny zfM^zV%o6og&!vU*`}gmspy<&ptF;_MiwL#}9BF_jEx~vTzoLs>5BB-%q>&V`co!)| zcofMsuDdbbR$yCO51eBPj0zP2!(W$(GpT$B6xy*2Qf{#oQ2`*LIWR(8H?iM`hyVGX z|GE4QBQpZxG}Re_;UXDgN_{vQL0?=p}=au#G~%rSP7u|F3M6l z1mIC*jzkDaWrAq}(yEm7p*s}_z)uLK5>}+fCOU{57K20z!1QYgJNp{u%$=*@cvKB* zm$XCQa0&|wvyeyG;Vv$EfkzTzYC|RZfAS}PqM;)x0zkJ`uNCx4F6Vuv8FtwC00z7m zTesC6)F4Pst#9!0>C>E7M2T%0%XQC@sarATX9ohiWF^Ld4j{sihmg$ZgS&LZlv_rT zjNT_toeT{+I9TUGhYlZ_J#%(XR~UN%be``#a`?#f8Pm~mmpv797QUn}JL3|P5?Oui}N$XMRrT`?%5QrxtC4xusqnZsH zvm+5gy^a}=rMH(eVuJi^hDp3kv3T%qDgJ4_WCy`&; zn9~y72N|M~3sSX*U}d5~J2Z4O3fB;^O9ynBs8P&-slPIHxR}qGz4i7k@z{f@su`XM zu29N8@l&Ud`A~sy*X;Gl-#mHZ^FN}vSf)kDh88GL|BVv)-Y}N^=zG{hlPhQ-uKDHAf9+S?z+bEkZo&VsYqr$<71dZ1%1 z{t;D5oox5k#w=E`$wEN*$ZMtFo|^5iMU zj(uo5gAgUYhTx|^{i$VY#DzC9CiW2suC%EqpXq4s?rcIYda+VXLg6dD*oQ{>p@xot zNvNFHM=)p6f>qfZOAbZwgIbK!u+V&Dz#_H?NMgH;q{QAL97a~pVzDwZa%K&rI0msr zL=rbv*CjQCWGJfy!zS`35;V3;c!1na0qGI|tOOT9jY59hK{{&=hfpWR(!zCZgj%ke z0_TjO6agr%_2~s`C}hOKNQjFRM~cF8Dty&D^9N_F*&j7tK{f(w2!0r~KnJ2&l#rwq z=@Gy!=V-|&6*ptv_|AeDql&l)FR>M6BY=b#7W~jd3iw8OqMVTnYfC(_6}#aD28%cW z0<6ZF%IpK4)=a89a098pnB&mmUPAzkQW}n&&e7UXYK&RUx>}g(at?Db1u|%Qxf}0p zK%5bXr#sloBR$Lr52R$s8)xO381^-qMq3~Lk<8jdYu-J1_Yl|i+4G#w1O7bxY~}v zH42qUD}Ryu37R=#PQPve7_nJHwvM@?ahOG=vK$;oB@ACB`TlRdAsI8WnEn-w1Ium& zpPcB=H5k#deA(75TOa(+gI>NvFs9QxKHB!t@BQHSR$Ra0@S(#?u3Mrn=ohhb8Rclf zpS}B5Bl0naY=RM(gdAHF=o_ZgV=qgZ2mrBZO_(?Qo+L)7Kr_8LuSVdeb3fEreQIx-86AiILG}KlJ zpbgQxbU>GnCIxJm^y4xteX~OWtrs+i%*7YtRc8+oh}ONtV5YFy>Zs+cb0NqvAR?6i zcE%qCh=F>CwbP0B+;g`m_tjTk5&xL=f;2(&qC1PrCW282mDjIWF>B^b(@h`9^bP_~ zNsRBY>A?30E#Zcc2IUPKUNP@9`&_YN+1+>F_5S-|DV|i~XKT@Kzx~$Eox7qivu4f2 z&ej7Vgn70o2$;t}Jcp41^qGrKnKD)EepZ2 zXqnDb8#Q5uIkZ`|1@jCmC=uuVCb&W`5uFGDDY&uTT-iDsOWLil`-?AbT)9$oDuBd- zsqOC|gy6wz6sAm>Y@s!V8M9~3{N|vKa-6M@z&Nrr@|hm!=UcG3NH|+YTK%EFd8pA)U>|&ETOh zZ;abxc!MLUvGDxw^)W$NReNsaMm=jj2+6HA3)AjA&OdEQ>;8H9RM>DD+pQv)qw2=a-P>@lL#^K&BRg#1&O2m-Fr5qm*;Tw!&a|b_+#xe9A*ni;c znX~fHj^ii7$Pa$U$2;s_kk9gVhSO(HZ+vZ|`ZwQt^X8j^OB2kd9`^Kh;Y}MiA*d|F z^-1=+5M}JhqnprLd%-m_*xly$g|G5DmvnDL!A4>9+`QY4j!+0fbeA+8jKD==!e(16o6t0F zgCcGcs3+nzTkC9s(QGG)R>dV@z)7@IX4yh%tSDTA=X9wWBs>@_vKd@gxoRlU5D5%D zSBUhxA%L7!UWhPtFKa4uYSo2CV5;F8C^vy*HP>>!V(^Cn5tYa8F+fA76pR;{v`LDSi9Ak z&O7dmKQL&%{`zY+W0>N<`PSQAU7gF9EwjVIH#kgqtq^*5crt7s002M$NklV))q1Y)@-e6$`IXt`>jG;akZH}NN25Za)If{?z-9gm zrw}8|sBB&zFP#Y~NkL_H7YxS}yXDK5tDz}HoO3%c8kz`J3sbC&?8u0i@;X|Oiu~G_-C|@*e*OcUSy+z>^cC)^ zgk>;cN$~1f#t^|c5Y?*@_oBn=DB@WX=ux{U3>ZgsO{^!02FmN%Fxo2CFbHa3Tq?)l z8D+RQLgc`a4giq28+mkg@@pWU(geew38vlk4qYQ3xFTXBXT%9l!Dt-KN*I+6DKPcX z^T~+|f{epIgK>PJHhZ3kFR6DIil*n!E-4~|@csv(tDZf5Ha=lt{O6_JJ>92HoH~8x zw7fH3Z@vB2w(Z*(pBNDlit(1$F&6;!sKMomZfO*K6FXJ{KbA-I(E2}~!|_SRVI@ip zM=muc%IGA^5U^5^QebN|OF;#jX8fQ=xwWCj;=^6G@74x$mz1N3n*{pN6&vF;;I?V9 zHAX#?CL08d292W>gB)eRDMqvkt9Tk~5Rs~jy2HQ-tzO-*HRc>>#|r(rH3L{fdP&B& z<4^Bdu5h6*`zMg{Cg-edD8JCxA+`v&B7n(z4(WDYk8-#Q6#CC$8+IsXLs+;M%Kc}> z{>$hh@j9Ht5$I%pdzW};1ceqYzWSPL!rKZ69I%49?D+6Hx?O~{ zxHog=jJMu;+f+Wzuw`kky>{`eS+h59em8>;RIy+IDv(z2Nf^xV$_@WA}nVR;SgZ!qMQol>{TGO zTNQE%VO2~L{^s?{ZZVO?RXSGJNBG#3=(7eGc@sKDbt14lLX4xp17>h*$o3j!{Uvy{ z))YhPDbiR>ZP7ahllW2}3JYjx)WAeJ8kSY}-y6qp_XF z#4uPWm+BcLhGVV96C>&euAn(6@G_vBtZ^yw%&G;;IAf zXzrE@9Xic|)f0~2qp#HOKAo3vsnPjpiCMb!Aj4;+ZmSI8hc_9@hu|w_$P`LVwz~svL)_9j3azFC z>uArLr0UPYQTZBmS;5QPuEYjru~+T^KXJG}DoNTPA#8goEFt!37Dm zxX3KkXou6!Qepz$VbCz^K3*nK%jzk*qf^fPs^He%WJ)UK2b z#mkcDJY6{96TZ|A2>U?y7cMf!elwHui-Xo30$C`vxmGx)k(@BjAEtPKPx3TEqgt6@ z+9)mN)%%mf{$(~r6vK01Qa~l>8l}Ofpo~8=?zo639v(DGO8e zP61Y6^5U3jp>bmKZj4FF{wWI{&yFonF;*J1#ii!c6DR$Jze&UQm}#X9Z@-y*&f2Hk ze$Z(?!c@$@H1KnSzCy+Dyt0Cyr2-OPx*-dZELmOo0d819?iLeu*lj`A)weIy5aL_b z@ZditY%o<~@&Xo=MvkSf9Gt~dX-r*O+av{~PX>~__fOi#&`6oZ`3QxPZ1!}GefXD> zxKtdXC$svOz%3zy4NwJ6(2 z(?DS+G+H!%gv`)HIQ>wmBW1K&kHgyYRIza!70c0)h_m3<*cAFJ=!J9<+otSq zajd^B>Mn{J94u)x-2=#caYjoo1Ed*!fhwleEt!#0pi+@kW*Bm#{^W1#bz6vv?UV1W zyu$iF>mC}B_BGd+WH>QNt0!n~%L!Ext(_iE+H2V?vUC_>)!}CRTm^*5_4AJnAQe<5 zeR#Yiqggxf(@pXCo>4|JK^XX*l0(uiO1_2N)|WZBOA8XeEBSCuwyaA8LKYE)EsF5d z7cM!Qe;lgNidTMr>_9y}1Y6MbSXqZtKjT-c!RO)mIik4lz~iK#l&T?3;IRb1pT&M$v8&t+jXc?i8B5i0ROXF`a-Sur#)!>m!{8Yye&`^(zf|h+bbY)P8%gBcgil}pa z9!WgMv-8&uV~EF+k;Gk}8l_A?3s6RnL+>qE!2tdTU4=?d3dCS0ML{2KiAvZeMPi`F z1N4o&dF=VQ+@=+%cr|lp2{(r73S}8%>?asR;`2 z|FjU;9oFcE7<)PN_TlSjDJ?LW9gz7om6^?B)VBgqMiwL+H>0fJ1EfCB&&9wP_E`1T zR5mZ9&2;5;{yJkWZN|DO&dWPP7hl(}5VGHDT~->yCEFmj8O9q?qLRL^x?Qn0C>OLr zD<~opCSS4|o~eBKT)d0?^#3N=M*F+fb5p5J<%?3|HU($t2x6hk)+DS7$%-TPENqUK zOyk`%^NAg!fb@=Fu%p{bG`XjIpvdFghkh9l?Mw4wJ28oc?KPjs9_>b7{Y-cHo1FBo z2r(OekQq($Xva=q`I~!_n8Vpw+<_V${w@A$I{inlb#@?`rOX$WPpjN`c^(KF%1nG| z734EYwa0(BvqZ$K^%<19>A60AYtdYZzZ|BSA)P-y(QGm7?RWz1B65ziAv&v9UMyYD zAJ4VB`Z^tr6D;_LbQA;CH(>< zF#+8jO^OR+ov=Scf3EuB$?Ih>!M80(5}(^RevPD4Xd>a?se*57EA>(_#NUsBQ03srms(9zDQNfxPJd5MvUwc&>%=JfNqa+KG07ex@!0SGZdNn2AC}*Zxx`6> zsK)r&s$~+WB(~-(rfx0p*uyUYW2|T9uE!mKC=;wI_@Zc$0Qk52wwTFnSl}7mpJ_#= zt<--9LID5>lQ4$}p@x#m`&KYTe0#n$p-bBR{k0WHlPvJq8$nBoE|T*CfI5mi7LRMw zr?In)7`+54g;XxP^f7=i1B-5ZRQnaPF{h_c{47nNnHSCD57p(!%CPNdaf*1p|KP<*f$@5KSE*UscXD-aw>sqF255dh4l?Y00nwz!y7OF|Sad%i@AvZAm25?f zWd|Ida7oR~5zj_u3V^SEeu2CxAq0$@W=y02+Yqm4A;v_y7U4xV(Dk04_Zgsv*7Kg^ z)crO#Uuxfdw-|;&4b!?91S0$gq5Wxdp??G%=L`?0vUHk#DQz+C_C@p(!FDRN*n^&T zhaUhO>7vIUa?KO9kt{x2$j@k_Bdr;5Y6UTOguchVP^du}(txlTP|4p9xVzDY^?mLZ z#uWLl#5=x5A*x_9enQ)I0Fn(~oeT*?VGtx=nF|d%+-n22RG+sZ*4qakF2vCC{T}i{ z^tHQvXE!71z+wSSIzlNS-_1ST|uN4TP{Qhzu)BU(}15AQx{96Di z*(_4N4YYq%WN+Em^25oDf+Zjl=%;SmUp5}n6Et4j@+$g?%lw7mmqNlT?z5yMe=ZLDw9ATH@j z`V;aqE#%VO0cWv*sPuJQ$S@edw#HQxr{liu)O;fI9p&Ru5y;+PX%%ofD`_nOC(Eq! zk*1n#uF$^Ag6+DQjbILY4KXn#?mYTqlgwmbe$wrfzRC?P!ZymZ`KcYjCyU(3uQVjwId!o z1MtR800c_`PS4SL%LTl)`XK5Lx#OwkE{#^^H=hl&#`jbz%{o z6#gDa&doJ>h}HbFL6U(6(6i-)nul02Kx&)|FxEs$3(7*6YJDZ0F{n3>sz*Lj!Soyk zHvN^(j9jSvF0z1UIi=S7Ka+nusXd3Ky@`!?PpibNKe~K|qlt33&gqf>;Og)3v3Bb< z6}CBcPY>#5&Gv#=2=c{h^F!Cm1pskd{7a#Eg2n~{UN4>iQj%IR+xbAAn+2k!i1F-O zZX)JSxE1|)V5_b)_=qnoD#wK2zbtXE|plK=>TQ^zFc8qsF@Ukc*`x{^k4<@ntAkJQ3_!P7wheK zQH>O6cfkC?w$5sfsua%($BPE@QuGj@7ueb4hGWJ3k=CIjc}D(mo0@y~gkP@ex*CM7 z{8^iY30;OW&-R6DLak;U`xKS#$Cpw^XYs__B(Cri5Y+OCjfhdrH8$T1*5;?zxDc~f zb^kJocG`7vtC~+=1b2L2wEso^XXzIQc4Jaj8(t-9E+#ob?XO=i0H3vaCgd<)rW2jR zV|7Ppufyo+c4vF{2i}4rw z-ztW#ir9NVDXl&aqir$+Y2?JZ5Wo|Ak=pb0GgQ2$DIfgp9TdL zNtnP(dq9H#96~HceeN+us4{C+<{$5!Y-op59>-&8b1Of#_=Bf)fG*#UPmG z6m*r?Nw0g~JL{GOA=p_MJ_9R%0zSNfJ21bVu>0EFQ1b5{qG?~`;( zF61?IRlk`u9F>3*tNQr38?(!VdnSx-2$1;%+}~aSQ1}>mFpt;_4=HJAVj|dR9L7Lp zC@3AcHt{{7X~b|c9BGTEA%gvjZJ<-lS!C0#!1T`|YS_AO(xzEjXsBQSURp?3ARJ$% zk5yPydJ;Z8V^d(VDxhUjVqlpmVKU3KP;MPa+4v?&&!6R_-s+0Q(v_|T4cT}?7Rx0W zalFBH9EXSWuzMidc0HJXiT5p|!I(q3eBtIXO)TLxjn)#ejKn%RAcFji&lDf>Waj1; zbH0F$cCMc-_}zR_?xp=CDB98DcV-5c%O7aopEr<-A}D6o@7CxH_-Ov#^?n~00$v9b z*`0tGcJ zJMbaL4>s_7Ua`12nCkrKdU5|tkiiv|!=o%d#=gH4=nV)lAhCT(Kl9ltG*gh0KuS0R zRsfycaJI{&f%Pl;U}yfXmvpe5hLhnw>UQgRwn~M!_Px`cx&Gu<6Uf}5B z0#ln=-#f|}q zkxK*Nwp zOC**2?W(KfX}`<2Jzt7w?H7sQ-1|dO`=psG``(oRHn0_MbRNv!(Wq* z_{?&h-~gOZsCbmcSe8->tzgYRTFpX}p_I40LJi4Edz%P_4+a@cDGGfE5$+jSaGafO z?ZX6nbQdarE6rfGs)Rad9Cj2lBx2JrI>;~>G7$KzwNl3GITcs3DrE9-tiebG(SWbB=RfJMH|LG|G-VLudYee1I1? z(=h}W795c@6{96JtYL7TBWV^EfQsx zt(_%}OM`0_JI%doU9`mGyl^z36J=IyIb+vcKEoW{cIR|4GL3z*On}($E7ztAU@(;` z0Mh5#oMHXG$e`-Y`s3HY=$7)OMYf0ercHGk9?HJXqOJ-^w*w`bPLLXj;+H7I^s+&*`a36*TdflU=|w zpjHo|_=SiXrkNDW881n{i*$kt3)jel5*=Kvz z+|_Nf#1y+>an-&l@K&Fr;B_;}4K>l(DTk`|Hx>$&SdN_ke)+GL>kqY((K}qtjua87 zZ?}dgy0o`PKTc>Z*3qZn2VwB%88&=0O3AZeF0#rc!--{R+Lz`q>9dY3Peq)PQUvlvI-Zc8%&!mO?W{#joz;Fh2fq;y)q8{0&j~ zFMni0kc|%2xF(K3vBF6w!CBLqnM=)mA%qx~)1e&st#nkA>SphNrf(4gFU_L4#dK%l z?HZ=Wzm~KvESsmI@y-Zr=Y|XnxpGL(jlpomCLH4TPGGWJ3WU?>1V4&YaEp4>xkZ&b ztnn$56Yw~Mv?GLA7rF&0td%a!J*)gn3E_RwZ8K~))m&zatb4^+-b6Vyp2+7j{&tq0 zFQEvs(#$cVHCHLA1zZs4-&xG*}8H#yE^+m?O*(M^=Ug;bm2lVWtV?8TM3+U z6m;cfswmL{Gb?A9p*A1vp)p6^AT{Z-XhA%QbE*DxL@6Tn<~e{wZF*Z zr8+ild5)B-B9i1_wo0aqb0{LJMU%)|+1l(Os?pOJnA8#a%ufSu; zXY%LoN9|cBqLXKU3@?w(uD-=1^T##wyt76q(26IIQ?gK_;KN#Z-+~o-eERLjIUb$-eWgtxTbjco7BcitRRh0M!u(#(s@;L>aVrc$;gigd`)-QfEA@>hRgU))KH>ntbru}}D3co)`pZzxY%M*&n ziw7s%k1q2RUC;UAJO7?P*6x}wB+q0{o=yH3WWTTV3dAKqu^EV+K(L03bQ+~Y*T?f) zRXyLr{dsP{Xfav26Qxm6kA%&j3*Tj~%c+-JPI{ZpZxt_Ln5VWD7(1w@N8){%Jt4Yg zXm9iLHJ!%!{0}EFLml$w9ERW(4gWY+$fs<~Lyf<;Gf@M+Z9jFe?`v=1f*XLhO$-5J z(vgQM@$2Pd)F4dJ2zPj@lMEIker$)Joz*6vTWY`SVeF3?e`5cvJ5q1A^FKvPxA*ra zY{qIRN(?$(YcD9G?pokcv41;WsvJndv+n)wH2jK$!mCUIORpQ34BW7br?T0l9xx$y z&4!1sFsQQu8wq=9v=z^9ej95Zv)~&@wdVzPBV*$7Ilf8ju>Y)~H2GjgiGyn3K8}Co zJeK6ctuVo?Br_;{pGx-A%r-N`^Wyd{aXOsRljrk!Zukk??eVxRWj>L5A%PBs<5tk> zwyDn*H$qD1ai$e22CMwZY+xB3mg5da{0Vv$m6R?vggp5cZ$%7>0UiyPk9d)#12>=$ zEET7t?n*X$r+xE{35#D~I}bkZ1;y`CtPtu6mBMr|v*7j9FUiFGcrhaqX7Su>B|;f+ zu#;NXXuG`$V;(+!)4ZZW^iT_sSRxr97Kc7k;azq_G#3f1jBJQY!Dkwi#I-Ur<1i^B zM;D2u<>~gW5*-M)&_cn(4v=^-&|F3~uD@>TK%BRXFiPriDVwiOIu;r>C z)M~3xQwSlUj|RF)dm-O_fkTr1*Hx(9%tYK~HE&$T+wN?-u9y<#AGZeelFpp17~Dc( zi))U0aQ3eON`o9IT;+|Dou|^BWYdHK8Ow(n=U;KBv;itvf$!^}J~~H9tAQ%U-{8fP zMXq+@Xd@xVEAe1-AaDyTs>@L;-)PJCD{7Tf;Iliu${8rGgL_o5+xpM%k8XqT3aDqQ z;^f*R+!C<+m2vh%jg5wDAkj$gAjHlSW!g)NREoc9N`#PSLV;oK#&h-1%O%Kzn5sV625Oa~#1OOvDku;SmV< zk!4zh8+mk8BAv9BL-{{WzWbrAv;XFIyS02o0E^n;#U}j&VsX1TJ7Wd!PH) zjoD)e(d2_;3{KRMA!z(w9cyF}N$&{Aa=`3&hfpue-I|Dmp_sVt;~_r(=%`>-M1q<) zL!AW`j>_1UFIIQmr)QHVpw+oFp{t!+*7(0yxX+qkuCH%@Gfa46Gi?f2;555VEb8ps zuvpm-D%S&^u@NoJ-xuwqu#Oi6l{$*qJiK1_6)2k@TbFVDUfmlncT0k{X!`O!>TQ=Z z1;gimF59Gj3lj1<@Ade@68yLZ3(H;vz;j4*Jm zxBc(8jn*3zEeXZM5gh5yeT|QbBCYV))2I_nuT7ZDGo(N~u~#hwAFDC9EX!vKcE!j& zlcOm?ViXZn&Y?slRJosF_c5ElF7Ksi5PwEA!F-T>T#=v_l$QTC3|=hfP`SIm5C0Gt z6X6fo&e!@`OCM4P>B+CwUWlo?_LVL{sojh9mv_0GD0x2VpF_wiw&?H%_Mx3m&3)ob z6wsqMOpH%vo3PT*nsj&wpXJws_N&eruW7N4`}&FEl@LEof~$B9`e4WtHOuYAn&tg# z$n0Q;iiu{;m}$lXudN|Pa~Iq@u{xaQ(M%3?R zRXBc0ukKM)?pH64@d+)aSm%j74aUpj5_FbPj$}-MAtb?M+m?k_z2Suiw|ruk z!Iz{%f6^JjAW+E*m+9P5LaI-f=CjCU(N#e0a^hxV35wyGqA|n13WCL3Z!sb_f1-P! zsS1T?35BbxE6B_4iCQ}L-|<)d_1nAkaGb!t>v(y_q=_qab4XllZQC%}Dj^_*p{>2` zCs_a6-d$Av!V1QS#qaEtBw%?}bwDxtg+dlnw)HxjJ)gfnM~;9uCUI}R0vn>w`xB1g zVzu9sl+bhD_K?c2luNQ}puJq)xdHIajXbn)4IB@X+^}UhQ3M*7I>>3Q!mG!qZ~QV9 z2lQ5rE27 z0JM8g;r_L(3)K&&;CjpLY?)TR^X0+|5DaMq2-j3QEmbLs+W@9_0RgF;)-NZmwfoMs zC0TG|0T#Mo_Nz_jaZAOicxJK^BIAUOI!B zTeAk&)X}+Kz%}Pm;32Ik`JPCsGM8|lXd9#%#qX~g3Ibk>lE3Qf7=s~_T&+XzSERHS zXA|JAY1OasP&*{tS$XT^_vFhMVpGkaJy9 zq0*!1Yk-aCA0+Js2kQ`EcqC7XP_uKTGtt9vFW6_|WExW{B<6wdjI7FjBrS9XOL;61dZrl48!w0v z9K*m>cozN>6!^mfF8YEzC_0M0W`6gJG^YyP23fj|6m9m9(1I|f5D0Zt)fPYKmDf~@ z26$K4GG;`T+6wmiO8z(~>qdLEt2F1HsWiYL;Siv(#o0Nk;*M$e3yQdwES>-TMIc{R z)z3_vDXcY^d?<<`I4VAvB5j&j8cOFAk1?Ml-%t7cc~zkdj(yd%!akhq2W&isuPH|% zNHLl&BQXm3;6?_26GT}21;3BsJU)A$inzsu!MsoSqQe@qXP}9euy>3|BG8xh#WQ|x zlF#BhKX=3aO?F_R)|X=7tt&a(y_{Y`>lo^{!#9 zHXT%|MQBH)Fn@)LGlH-XI#YPy*EYn?SrCrJB)av9xPEagHNI_F{?>JoTzhqQHtx=~ zMUL0hq28Wue!4Wg!Y9(j3N5?xZsc}D5qD;w^R)aZCppJZh+?0G*}$IbfbWTz4gDfW zn=pxb1`AJeFhBfoaYrReqMq6OZ&HO&CirX#dNLze0A{|hiNZI*1XT}~VBcMWZoj}L znIV<@jBC*&mo&81(_>*cii$~o3@>B=voz#zg7VeV>**L9yTYH(1GOeJOA|-$9QP( zpU^v}#O{ehNuElO$`ik*jNLExrfD?iQquLuXd208az)@xRD-dp`5AcOQl>WUNMD4B zlf2<+qtRAa(Qx0vf+)FuvPg(aCCkO8DG-`A!BReo-K!|loJj`jg1}6_hebftzuq@@ z-_1vwvR=^q|D&R|_J@APbwoOxAQziHKAo@oPGYyny@b3f6gBPAbncm04+1<_;MfS3 z6@P<7=53_>?asyX{x!RsBZp)ka%*tzh%}3dlYJr9$~JCcBP`u0Tq*7`V(^^Zz;jQr zM1^Fc$@HY?`-ZDFRFb>bk=h%pPuUGn?;^uDJhxAv!;7xNi<;Axg6}JJ`y%-j=k-KL z`pj-d?*T!{Mv7VdpU_xJILnwO#2?N!-Ue_CZnHuNA<(GNQfPgXDd5Qb?N+Kg@5^|r z_Mq2yWAjyNu2w7zTJ*c$2W>aqyhEQS=DNKkKY>q#m22w34^9Nz{j&5&YkLakm=Fov zSY17hiZs>(&xSUS!(FPwXI|86zE}j}9;i+eiL#w8zd`r@ayaGg_Lz+zNY+u;Z?Zj} z-LPA2>V7&P=(}I$*;%viTA}{zy6|<5-;wm>v+D%Kg7HwG>uK=S| zV+s|@_^isI80v+}=BgKfri~46&cA$8rvMAYF{#$|NC;8ovTtJj5YU0TXxVj5gD?O~ zGP>;pDZaf#6-IZ$%K_TemT3ZP(GC9+eK0Hgps&tP`(N>rfIl=(}QfXEQFhU~0tUeijG;%GN zdPJ2JR}~&`Rh435v5{6|4Z@FCl_J?jB!rA3toX03$&!rC;{D6HTKuv$v0uzi+6+j8Mj9T|9N&{=hN*Ol(0py;Ee+3hYQY}eJ} zPfh$PW}0VY`pJ&=ynMrMw7O_9%nwmf#uNS0Gn7|yOP3-iXr9&7Sdjsq)&p$U1;U_2 za%mH zLM}X8odZ>2@%-AdjCU@ci^f6Qh7=eKQ|e=4py&YBte0J24}sf#H5E-qjIsFQ6C=3{ zhBN|cH1kU43SMeIqw}&Bx_=-S1t~-iqeXLWIW;wO)`FDJ3>g=L7xp|x*x(+tl6o*i z7UC5meTvkH2;^wea$RpEmz#9;o|~052!>p+8zF+9s|HmjohpPD^zZGJV-VtP-8r{8 zdZI|VC9agiy&0~aoab&ZOm*n_;bZ}OTNmn=tBSs2az_;^>r-5uZuPQY2gL0c%W|vTwg$ zywVXMr?qH>%<#aRZWUv~(8ye(&XQAb2fRg4l}6C4>z{n!gwEhbw)%M!CtvypW*KK> zcpf0#*G&yv-Esw$KrDHnwtqUBx5=SX(BZI)8A?bnB<{jgdP)A5@V)xbgSw;*DC zweg-{Dtx+;q;4$j{Y^>6>Fi_>qu_OK3Jf*AcD^(@#tSCHu4*8Pg%pjsC;T$3GZc2x z0=NGl8#K`vpJ)Z%dnV1|W#GvMys=tgIM{YOdK%SyNd!9GDLfX;55p+m3U|CoRRt-5 z_EGV@*vPHxvz3}WQX#1Fz3|!n*bDQ!naI1qk}YY-?sSY1gl zPUP5Vgj(O?1U6iT>5o}VQ^tv^IwLgo4yLe0c%<2_%!<_AQA*VU6GjchjNCc zrf{*P^F%Z_QOY6&dIPo8)KT)00Dtuz_9Li9L;+B%@*IfJ`WE7jZ95P4_9fXo4C(d9!>EoI4&leXWw21zW zh~nRIgLq^S8wO0pzzN$m}MuU|r?W&Wp+ z!8HNl!r255&EOWAL`v2Q{C(k-0gP?_+mwHDW{JdeeC-(x2tpN@(JEi&)Qsf4g7F9a zcuFJCq-OlFiHm?O;e>Ro5YOdJIfue(IG2$rqcc!kJ5(-Q^x~ycrmReT{5SOzKDkC` zGy(L@qYz0}>z7muQ_dpyxL0VLN?b{4p^l%-g9e*#Ob6EFYmLBP*V0iuiv zABBU4V(cq`o087w^s9cCUXyA`DX}DXH`Rr+f=WAGmpzzyT`uQbEfK5ATMp0`U|+1H zud^p_6*zGsu4IdoBY(793+ddX6YNJ&`YTzdGzxduqQBF|HscURV0gCN{OdE9$5AKl zP2;a#?RYb3bpgC>WBlTQe{&c>3vA^dQ7e2Mn-!@f+(ynHz7CN7qMv_^h? zejI9-X=bV1-awIYf14zl+!m=uTj&?2_P@`Yg*dnHzuhc$jx?==j3};`F`s@_KpG9E z3*Qp+o!nSb5^uPrvVu<`mq&Mu=Ts~-fZ`vSk9NYEDH6$Ko0-nd`-4{@;M3%gocHOZ zAyB4mjzh1495H;Wusl0*rr7w?sWSP$$^fQJXNJ4+M>Wi<*1{(bm=Kdsz1 z|E5<3T5>hC%(#lpeBFL&^7-!n7IzQ66jk3R>~x6>I4hbc7Mf_5w#u^tM=``v$F>5K&L+a(yW3 zQr2+r=2FeUMB3Va#YMw7%>gQmdS=AenF|bWq77h=|Ed!Q_!~@#OJMZYdkFW)3=xc` z-dz;2)|75L{aKn0ZVle!Qncv-$FamkG3>8_+)I%2m!f~9gkNMa6id;pq&*ZtW;}N7HGEr?IggbqXWgA1{C)^&HswKk$mZg zU)wUvKSq!K9*#%ilI{`dZICodD$T}nqzb%bq$?P)(g=BU8ZuE;TL9YihnP0)<)t6J zCMT0-H;0vIkq9@Fyee6HhHU5PKz9&%+ZG2FldBuKsYjE*!bI?HaeV#KUqjI1~kIc4mMH0PgCQRZ8 zu4M!j^^YBPOd^E?^gop`KHot&oST>Kp*S8-rs?8nd^Vku87xgEV!i}P{S;yMmsEJ~ zU%H8{#!wWi;yxFga*)m+)$k7c7QSj5371!>$uV^6c@?Bfs>ASNnp^JYrcVsRO2&J~ zR-v8{xS@pw%fcei1%AM)P1>;a!k)0FB65fxzICXC3<ok3qP^X)U=Im^uzBtXn(Do8-WH=Q@ zrA}TVc3`D&KMAQP<_NapA`*?)Lou~D2Pk47uW|Fz|KcXS7_3ak3jfrk8oZb3;mweB zPSQZsDG88Yq=Y83=~N?umyTi!yFk0O#Wd-mg2#olg_+J!L15#wt|nEhGyI7P!w{PU zvkp4>N>|qn+2bJvIcq>r53}O(p~s}VZ^m0HjEx+g79)kc^0j3bZr|4$8UxAS;jpF3 zkqDy_o(HE>n4wePu4CIl%z=XROC{S!|%$=n&7^mFHn8p@-hmp&i6v& z%B@we=iPdD7LT953Y%T2XptiCOw~G+4oDxaM*A)xq-pnx*))VIc($kD{%@0QL1#dP z-S%HODB+`~h?K2m0^@=gC1Wkq4a3xl`xa{a>lm*hDSxcQ6&~u8kd{A}IzTGeN}6@v z%Dm0UnHt}?1lI*?oD`8vy_p3M&lbshX$2_e=84A z9)M$A)ao}UVqfz3AbdQFz4kl&9>V71xg_UO>2!d_Ay$a{A1u|$g@4oLEFsP~ImroE z{kVbeeS*f;a9g7=|0R)#z$D=F%;HPNS`QOO$P?o!<+`& ze25N}yHWYXY1IBnfw#$T*D@{QTD}FTMKm1SMGtJC?RR2(aS7%|4=uWhb(yz$j zmyaq9LQ4E6JNLLQ4D5&Y(*E;osgO~amWu@xGHj*J0M%sIC+GjGWF-)80tOYF)pU@8 zcHra)55;CBwPl)3iAB=0%kiQFH4<$g4t%t>!IZMioGHTIm~MZGWF>@jvptp*#b7bJ zrFbZQs&Cq#FAdnB#CXdi+@*DP-RP}Ac(mT8iXhTrhoxA86d0^!%!*N0Uh&8qUUzn&}=>EL8> zP+p1Y9N?c2n4VepH(lj=(G7~9QULljl9b>%?LItXb2%((3!lnNk?xJmC&W8XiGliiu< z#Fa=dJRdKQu?hpEEQN9zA}#3; z+~K6ax$H1lrESuAKguRfKgzj04`2(0#**~4>1O_mEhhDa%*V<99mK#{Sk5?I)lG0t zw?uQEz~ss|L_@BdzdGvKK(!QW8P#jz+Vuau0I>J*(TnK7veyXRF?(e&8M7q#B=e=A zdsdZ;b75MwNwo{YU}%HkF@~DO3nA<@^AR<3*Xt0K*;<2BOYl(}^kf;2%tp(a3gky+ z#RGwL3c#kB`M=|E3fppA+4C$&_SZ6S5wJVO4Lgv9ve#+UL31ynH#izhIA5VWr~T@g zP-qO*S*^5AAj=_5;p*xfjKsh1h=vX5s~f+Au5xN9iW$Gp;>?t7YR_Z0>^3iQ6>a@* zs{yW~nb3dkmJ0Ot@u#BS?v9PAjRALe@(bLJFW42F7$f4f+BK#AlfXr8RP|N7lU<4? zAmK>lm|>O`U4jl~qu3Zrl?uE(PaM*-%Mx#6Fy6XY?Gb8JZdx0};Q?1>mg31cgW6Hj z84dXJyC#+zmg`BDVKxYdssHb`v8cUOhv&8`8t0m&+1SSu#*f~svr3QN+E~OyH2GF& zo*(9PX{z&yf^s;!)%IN7QlXeZ`SkW)+GN^cD}`@ayS2+9ueyIUgki4nhrU%z#j+p1 zRx2C_+eA@Y#bh!%bb!cV- zj=z!#r~=1)`HLjEJ~_{qQQV~ITS6P+i=W5grlkws8J zu+2-Ri5&1>)oAI{jtWe@_85;lLR`Z*mt%TFJvd8auTFPe*zoa+A?9`M`s;oFmKZ#2 zlS6ZK)Z*~o@z?T?eGFe+@_=%5rY>^LgzQQH??|j&Nvq2!a|WYQzj^0gvLy+4`Z|>a zhh3a}rQsX`v4p(t&i^ioTe3AjSRb!b@pQSuBX?XBmg;GK0#=?5>M}ztqxO>pYqat3 zBpL6vVh5rvngez`nhG;y1v!zZMD3*7;@=(_plscJIylie89X@+SHmQ84~R_CEn|(3 z+Narl`+za6`iA>%mfNPl_r)_t9loggTp8KV!n8kMox~4{Xou4)E0efL-GbdoA>k--j%WvsZ9*V^y*MQE+1W)pr^!7M_nQ0f&WC#@ zy|$O}YC-ppw+#DMv&r;Ez}{hMD2hM`=#By`OH6tfzu)`opT=gv=T51Q;g2Vw3m}yv z=XH;Iwb?#Jp=Cc==N*U!w*&I5xB+qi5IYoPXI}t6%48<*4Uoelbztn%7k0)i`X;X2QE2W2 z8JYHf8x*Pq=G6H^dftru%uxrw$52irOM2ncTdElgirQR`<7I-=@gX0j<-MW~nZQ42 z)TCZ~kl@?Te13fMSQ(d~L;UpCYO;pr?J0t_bEam&wQmNH(vFFk%SY$%7Qt+iTBgk( z8=~!K#z6O8=n1iA5_@ok&h-uog9D7uH7pq9!@b^cJscy{wDU~h=2Lf?128q*ollE- zVj)0+!}m={6d;%-1~9Tj0VHOgX#sCQ!r{4133JvV6E>qZr2z{dQ*p6b+5p7qTx?)> z>{6*u393X<3Q? zDgBS1wYwfu3ZrGRscKMO8T3twddUU?@#sAxnzk{xP!q6T&A%pi)&xs8l1ud2T5TCo z6F}D>WV0{6D`kJU!fWfr7H6v#UM)xM_e!WNXZbtQ?VW1|M)k?)&&2i)$?)AH%YLJO*1+L%!zkj{`wid43h}mW&GOkeaOO~{-V9k z=Y4xr97O;;L?$MEId9c|O(rkHzXf094+F3I!(1==o<0LE`5RsrSppVQCky2UzE5Te zO8{v!9}NRC15_EWKrEpnAZG?dw{f3=OgIS$!1H?L$%~L_Ln;KLV*LbTXvY=fEq)Zk z?|JBlfIZ1K`3k)C9W$t@+Okh@Z(42cYc006WnJv9`>b=B8w0?f*M2a4|sA zOsU#Dh+7uF(?zmXQJutRx?EWQgJ!*Fp=ejmu0Nn~;6LB>%fvCyAVT zWrJ)wVs1=bM}0Swh=M-hlR%OeOBqT`qSv?pCZt=vKQ(|jfjBhn+>IqSpp)<8^ob36kk$xuVDi@aYRne!bjXUFme)Hbt1D}y z#Z!zTi29hixhco1cI{{2z)UC^VJ1En7z$*8|AJVNoRR7;Y13&-9iZpT{mfFJlqfbv$gHnD)p9*vJd8PA-qRr%gu-`M>i_t`Z_ zTB4|6owv_w+dh>Ks>V)osgEbor@e&_2Um|3nK6YDnC1!Zph($||M z|Mw;TM|b~6z)ASNVDO%(GX5kcW^w>nGd{L}1BJJ8ulw!jv%~Y&ytKLdIlcRt#s4{3 zgGKkr|LyVfqx-Y@)6M7cUsYTqa%^XBo5ROEB%pMj%l_CgcpLZ}>?aQ$McnbMme0MX zHuCy{#pL;ad%zG6F@=Q>>D!-_3O2gg?nbIJmI~TyPCwOYCr~ ziY6lauG#({ts21{_YZ4L+*enGb}hZ!L>ux=);kLtTaH7-ES+yRfNdeM7~pF84kE4L z6e*`Sbz20+4_j#AFu#4SwBORnN1TZ~bzX|_yejdKLH$yMgC`de6RVrHtQU=hosjV` zeNLZvAR+}EKtxl|hp+w4cN4W{-i$igoORUCn(5HmqKFXTY5~jcmPw)JC+5~^n~xuU zsVa$y_oqzwT9=((YS^;3^z1i-oji7fPM6Vy@nNBogkkAo9sri~V!gHho3R3$M3wGy z3VBiFxVxCzzmQDBx!V(R(2at+Lg8HgX=xH9IcWOScrD9K$F5C&cMR=(t)vdV zMH++Egim_?nZ*bBM{jO2f8Kr*8Dh>-n_*FaYOjg;6rb+Gm*4o{iRGk_I!SH{yfsy$ zjEN(E3ph+@17#GDjhFGD2}e}v2q(1Il+=me<*=a88MQh*mL@Cmzv$->s73$VAOr2P z4H20rzk6@qk~p3@IT5aQ1rY=G@H@8#Qrow2jwzoX=vgU0^uc zTU+m|ViLe@vN}sDtEO~^+gD5uGCJ%41oekIvnzEbT?Vmw_P$R4GCVnsCY^}>#^|k7 zC7lkJUu{vQ*zpp4)po1)aXA<%?%1JB_L0yHvR4qg8Kx}Ga(l^-6`;pEyyNM*UT@B9 zHrfltUF`bGZ!pYsiV2gwyBL$Ny5(>>Hzm++eKcw9e~rk`(vWfs5EO9%pIf{%sjuHe zn(xELbf#2jdd+-{l$u2>>LgcknzLVFL`+n=kj z>RYZmA)G3Z5!=D7w})ns;O_Y{9Q_BIokR_x^10c0*dA2T1!GCfTr~vuIE*bPfSt%| zOlOi0fVw8`PWV0_Xps2c%>b-ENRW`;>1nzD$8mn_{PTlyF@1x_<}{*?Na48^4Y*w+ z+K^>9CDVmceX?-xLSe0$DD<JlQsHCK)Xds5mr`_BehkhYf5N|o2le>-4K^lLtTl_Xfiuv7eYzGsC8uGP|GP~kXp z__cp<+TwnN1Ex!p7=AT}#k9(!UPmn4-CKRYQ!^uyC;TqRcf4B$fM6(z7wmTVp9_;3x z!^OrO&qNJ}1V7fJ#~?!Xh$}@H6rqJ-)UUA|nk04ubMYHfS?7VRTET*>`}dWg&b-xo z@IXWNdQxMl^WeNW!|{;N-*?RxmelR(oVR| z8wePyK*xpI-v4<0!af=bV4CJGT;c+hs@4#Brk5qwD|DJCMYh4vvsflWq6xXt0?9!Z z7nI4myYt`ORwE9^xP~$HANe*F`ECIh8Q}jmG0ydS>Syr(xV6S*(Z4HX@x2BTkw=vM zU*?`~aSu=B4i_6WhK;D-F;15Cmsv)`Cv)U_<_qt$yiQA3uK4YjG1uj<-Trb;u4`YjTy z6^OZns=ha7Z`bcFn^P0kB&ePGvvs`A z^=F|CF8{7Ms>B0hOGAlhq@cyGir*Xx6G+N? zK3*FAakbIf*L4??^eJE)uJZ39Jgq1~z_nw6~88wcZxd=2nUUX#~Zb2fK^V-@MSg~6;B)O6K#+_u+xHzQy;Yta@NGyi{ z5G+jn_hI;`!Yy?S);lW?Kls%3;VtrGD%p9RW;=Lm13MjT)aNwO9&y@RrT$231E{FS ze_SC=^CVvdGtuBZ_(l6sI<10XDW%hKWC8jQs9yS6FkqU9-cF%&YWDAn8kDT>by5w$ z&imK(YR^4-<{>t0b((pfjbVo@L;4AP&c&hrCQYP!;v>w`u&0IMM=Ov46Sei@D7Yaq zX6+iwvBe2!pIA)sO2!B|o@o3Xo}`~k6?(T*TQ5gvexC2e%CH7c zmQHFZnDaSI7`x=Kq&9nesu%JGFA47#O)|?E-Cp-UvukUVNupr>f`cCcpkYzS2YqGU zgFp5@dxQ_;JTArbE|>}lBGT~3x4>!BV3&Qt!2e{pgOmY5kc-l7cBZaV_GH<(0L0#? z1pjunJHMM@&(srhox~V>;5VEDPjl%y_(?+>GX7hM?>faKMrxJdCVlg+Ncdw<*z@E0 z2<>!uyailJS#(b-8BGBn9#2@&74QHD6;%mVYt@JP+524DK`Umgw!WvrIHwf4BBPki zqc`^Ks;?5zSl3s0ZvV~CDGDBr1h(mSi#uMtD^VkeYUk8MQUH@^#a+-Abs#*x7~$|e za=Ya)&3at5IMeGi2vtx5q9)UIQL9|N5~0>9?)V&K=uj}sc_0G2@3<%Uk|HtQJHmp$ zvd09n-0-TRXnQQKa+dW+uuVv=v5*+qt9Uu3{AvIh!KKFZah;ib=QroJK@oqCgT!P~ zzo&Ru5)TpUyZ5?>${EDMZwWrrXk||XVEtN)SA0(CU@t7-da}t&N(dp|zrr369A1kz z%0jD%53EIa(rS+(xac(^rA%{Wt_T{3Bmc&QgDS_A)s+apC_|vUui0-Y2qS&%AHIBC zxUUYK!qFVmZ*p1bdOdIdd9OMa%R4Ax?6B4qbl*0nYka6(VH^hNwg8}V9y5BBHo?~1=% z>%Na0ePIk~d5ZD4YRnjly<$c5-!gE<4SKY?%+?kkxY%DAwOcIDl9)uV0}N0o`#c@| zN-@hsLTWbm5dL9wS6BMm0*e&y5I=TA1UJ8m92G9i6G zmZi+Nfz2)Wfe`73g z(69OagxJDi>h#H*LU6y0_4TwQ|0`Doh}7vgcYPTxj{!~geuk@YB*E<*++Sv7Qk}RGLg6 zizGe54<0qQWy3dRMas{fNC->LTtqKotZU!dDG6IHdTo6acjfN_F4*W`J2qJpGcObUbpt|AbO*EF&S_~VJNs#2&be3}1s|UFXtO+K%Zk-g`}B3Xv%K}t z&H;ae>y0e!%X%-zlu-TKvB_ekf&2cB^ehMOPr#Fx`}(iDx+Zq81I!?8xXN%P#&=bS z7HR2Fbt}OJRZD=YEe!|g89w6HdtTE~ZJVB5)4V1a_UAip=E?MtzAg{dC0;6~qm_lB zVaNr_axezF5Czs*S+A+{g>9hN()I1-r+B+twD)&7Hg85IB5|`Y_0fksBkIYYqcBsE zZVAHK_Cqy$&K>$bXo)p>(?cmX?Bw3$A1lrJN{es1ZoWOE3g1nyHnMyz4eYp5dr#xA z;9j@_!IJJjQhpN)6LtJqD8CvgmEK&gIxwlT;3*$Brv;()2|y(O!7~SuejG~!NwQ~V z*)LelVqM$Z=_;mg+V}ISQV4qxJo^l1i)`Ndo}L@>ES-SGN}!N)L&HF?`rb)}u!abG zB-Hcmn)a#Xk;K|VWnM!n=cmQ2EFD=Wv8@oj z_j%QE-O=Aly<`?Wh!lpO-euBc6V_xq>ZCgxb4xC4&20rS&OmMv0`#tW&neKtMhzVk z`SNy_4j$SpHiQ+P!@Q2xV+rO%bgnsvkh}#1zeHjdFnOi8OYpQz`21q&K(qNlfPGJ) zAZ3ofZXPqB*S;*UL&%vM^YkZ{)GMIUU(V5C`8|w!xd+XP!3qm+KBVfu1RUeKFEwqq zO~J)fJ@&I$NE{%wD=FG$GuCF1;QcPo$-pbqZ|m$qr1;$->)oyE1H*FtGO0dE(buuR z98M(f0Gj3*;E&-Dh+H>VL4va`pC# z5_QcF#b@%I7nax~4&LmZqa2zkSZWeVuhwTkk!PzQ6HZ6-tAB53G@+tq2Ry&~g~xF( zEQ;{?G%_KN;Pn$GZRf||A;0&hT80>|_lZpJw*=})!dIE_Le>vLa=pUyB-txTVYRM zlCoB&hxl^#5b62N(-T{U6oW7sa46!hWieZT{)+7oD{><}GpYQFN26sfM7!I?WT0Z2 zUW|5%uzl54Fe_f(z?g_|?z67{`~4rZ-?(BfgbbwSQUrlMsaIhe_&*z5Ul(^SxF;+X zboC?UV$;d{iy&E3)EbABp=GDr88`D95Uu?>57n1iJeA=Rpwi?;R5>erb`T9}cwmDi zm#~LO7@R;(j1A!+tctX^x#s$cX?@25YzjL-PJVY^?Y{?fQ%z?Du6o{qvWYm26LaL0 z;kRrTIX~z5`=bHOMG}*n&cZ*Q30~z^S%_MU=~XWIdZGUG5yfmkm^^4~7ho|sH6d)D zYmj1aPw6Jqc9+81SRc32)0V}y#W_XgMpE-S7*UVO*?d z5zXEfONe-&nk*#TI2owTD*dxh9VIP}Xakeu2L1i14rLy0u;;3jZk`fud84S6EJ zSo$jyF~4d_$c^BRk$LqwK{>Z=(|@yny2lce*ZjNr;}9&0cNx_L|ejutK-PYPCRjUq0DB@~swLtY=5_)Jz8K4{bHfq&)L8oZje~)pUSS zoGfDZdEFQh>IR7sNZ<+gY8pnU2A3={&;*mUp>?pYID;F5Om^dMLkYTEGswoHK-Cg& z)mhx{Xbq1(vsRHxBDf`VIf`W__T@eZ2oJxe9;7Va;BZTKU+k>=caW^lU0LzfZD8YZ z)AnV#(IOcP_ESLw<}G=t)91-3OoveT?H6TK-(qbn@5^zjx5dR>D;yhY=%gOMFZe~v zUMwK=)9iZd395rUUuEOwNEeANA@(K(n^R9w7GGU2sAyIGw3W`gQxLtSQFipMiux=w zj_tTNuX2OCb8qfjE1fH{2Xg^y7Fsk<<911pXF93WZDqGSq)y9Ez$252a38QjGjkwl%QG@W0I#M_a&&D2Z2zBDf#doaH<@DoxsXwQWENBm45VQ$Sa7Z-tb(}oAq3%Hrt87_OMj$H9t7pqk=Zhb zg%O{{XTcFJiIg-NWTC*cqS(C*VaO1ZGFkbmlcF|=5KsUH4-}aKvrr%Hz?^UAjudo+ z>_elN!av%!PkLk-CS)b2u_Hkj+-Z4g=xGcpJ>nZyWT#0;mz|ILk>mrE@M1+hDksO^ zzhW_ygYqKHO6q>eVI~*P-gVRtkEv18$uLgF$%>XBktqtr<+uAhBaCU;{!w9X@IJ_J zo;)n9Y+*gPK+|BDE%8>RitU7{BCv~|t&F2nGWH{kC|FYmHg=_q#y!TpOP)3LS}h(Y zs@c#XssxI~`X5V}w3}Z#wPmK(*kutNH0xwHoIc-!eq$y5Yj;^3x3R;1@!M=Yx~>;~ z9CwB#iHoix>Jk@j z^=^F@Jy=w{7b`e9s85+?R2e;thAmR-y0pm6x)TqYp-+>&1qR*hZ|pVECA#E%72`1j zV=@Z<7qGGd>Be23@0Vd(_gf!p{??=1^XdMTJU&nTq+M5ih`!~ss@QjxU^I`9U5|pQ zGe;z;9pfEkIHTA{;({U|32>OS3YZ#` zZF`loF$G;X?^w(889-c*>-T`myncqUHzvOO4` zF8ul2jooc{*&3~ht9Q3K5ShI0(67kY77?UTeU^Tu>_=g~;b7F*AnOVcEz{6PHqr8iVieJc)zg5ZFw|0r zfOX3pJnqd;BSAtxi4KN+@TJ7~X9TiiIL<6+1snT@3oLWSltmQVu=#Ab0iP0Vq-K`9 zm&wTxOB97X3*u*-PU^I_XAKyJU8T%+oRG@4y`>53w3Q|6GFmuUU629+3=}IkVR-HU zZQySh0U3|cW(ZVByxUxa`D6%;TM|*V?XXmb;Na!6+?a>-fSm%e=WX8}f%Ld#P&}m2 zLUQwfP%?yU4=Q%v^6!9P<6wX&7U;zb4nxw-?>23$tk-1og*O>|)XK1gkfXZobm-uX z`y{|X@tPH9eC|pnFBiwmFqSi=NV`IsRp&dRVxca5;hK!d+F~RZ2dkUcZzICz&Ha~OIcS;Zfvjsb9ZA$QSJ&ns6Rq$<^C(CV+sd@d>O0##- z49P&sF|9y!?G85OOjKg`aN^=2Fl4vw`;ZcBPt@QwQ;kZW;lCWq)WIDb2>S$EoSt;} z+7mKetgHF)f!yuKdZ4s&@4C(We9QjiASUGX=InaixLmFN&$_(d{oed(?#7|P-fafV zNj|=yza@X(7|=nY*oc*jXex8uz6;xPfZD%s~k zJs%ofB}AYawz&K|Key3l_BRzM0qTx^65#!CU!4FA-vLQxI;bmUl|UysbQDWk?m zXRxJX8viHRI9$7Ehel<#j)obd7Y^y!CMg%xmmc z>h61CNzrhA?$W9J^ZKqfn@BaS1Yxd~B>Wl3%ScCoae*-J6^dXGFp|KA1X7|h3Xy=V zh0OjpfaG=zKShj;L`b98&6k||^%(rnuME4!&=o8wZVsdq9Bz#QgQJNUTI*Z+0~1Ua z=G!&n)BP_i#ca6d`N-`PIA|k72uEs0gUJ)eC}qaAngBXhuYf{VL$f2YBum~uR1ipb zadh8Q9HSt2nod~EE3V6OpoFX>m8-NDYN~!wQ*GydW7e$+=o+vO%+9L=uiuS>>)XXd z|7(=1@TIYb9E|11ACNf1U>$g6aj@*RgWPa0#uDnLAskMlD~a*ZbiBBb$u(I7&%WUm zH+(i#;gA@N-y6X@ir_pCP2E%oCp2QJL#XdhTf@=V4hS{NIAwg1Hf$3!*0;UN4Albc z>cHFp~z) zd{*kPg7Yr@12#xJaRf@pAMEM9O=BF0baq{KkOkK1ztGwJJJ0kkF~$r_v%}J2vy91X zQLxwOrh6I~+IlMrx&&?thEOT$kxdM*zG+_CE?>dXHrX#z*izi;OHhOt&r1tPfTBr;61zR(Y3g4)`oU`dvRdNKVff+P6ym_wh0{<%#Mu`jbd5QH8z9o;_9PRfw?WK;|L-)pl>@Cy=Uc4~i6d>7%WEgDyFVB?BH9}a&vr>6EJux0^*7gwptZX8@>{qPBm@l_j?afFNyKcRs zGNuT7Cl}uMNU!+;NfAIL>Fh8^?^*(Vdw5xIIg%u)v)KKj{n}hP*GP(oSOs0TQf!Fh zJX?Tb?M6qUrhwNl;YbYXO#xR_CI_1?8lD0sI;5XZLyBFR2cc+thB~0sB zfy|cv$cp_n_$lOS-d<%6$^UgJgN@ZlLrq%TZTZ(jJaQ)Hpf!a+DK*+)jI18?IHCF| zj!a1m_$1f&#?F0spaLa4RI0|>owd__9^#0dM~K|b<)EnEi-yL}uPaaTfD;SR7K5j?RzxwnCc z%r#J=T%s{UqFr1F=|cP4m5FW?*+g-y+I_JNUg6Rr5TSw8To^%eTNtrmDNUg0fZs!+ zX(5-~=g)t6g%T5E@f#VgWWa(HX;QChTA)Mu?AS!?;(EvoinbhNF_V3+Gv09D*k%4~ z;DB>D^}d62ZfcKz&}_t^@L`?^-p|h=mk^La-T+-Or|Q@N9%73jtN@%TlR83<`6@Q+ zJ74L5neCIROeju)O6|4j;0EL&=O4J$ff3F9n;%-Ffds5*XV%|xQIH*MDo_8E*0u>J zITUAHxzR5bs|)g7PhSampViUd{vrH@K8?Izwt1LNbrbK}T;MqgODCn&J4I?KEADfi z8gDy;@ksj;E1ya0eht2&*=e|wH=)yPv)=P1Ta6l z*2L9WGm`5GhzzimKqjv7;`xD&`5V5CPG``dKoB}VW}9i)F~2{P zS&@a{^1O-k5xFerIW{wK)|~Gl9@n~taXIB4a>-YbRfh?kkJDXiS8SrOQd<0#9@BEr z`(G#ezS}N_mN$*7KYjmb_#HqV)TeFP|GVVFmB2fb-4|^npl%^7jTQrv0h}I!Iy`$b z_@W<`M&p6^)j$_gEoc(t?9AkxMqtDgQVhg81ft)GdifYT-p0V#qud?i(TfUWaWm+0NFh{8Kx5_u2FQ znC)^iGVWSZem)hCk2hEA+FS4nnw=Nn%61fG&ch31acRlqjwwkX`a zVZGxDS|Aho)pmq9Z41&UR-s_tVjQn~cwmF9XfAnCkdwGE5!!GrbV5WBPobru>A!pM zI9UiRb}+MjyM9UIujI_lW&uuVHXD=aJdYo*m-$*=>Ey*on6q&XhU;EuwhLQ(dnY3>`z7KU%OO zPO(V9g?<5N@6I~u;Xia~l3Mc%#IaZ{<{u9y3+|W8T^w8TJ7Z=#`dW_>$|C*ax5%EL z;*8~X3#lgpG36Jt%n4XbPS97n%ge8G_{xrC8_~m@M-L6 zc!K|6%RveVpa=9nOwLVxH36jrCOAnwJJaEcr#0m=W}xu}t=7RH3RsE_{6Qr|A@$!4 z*I249Mp=Cok%xOhW}1+};|%KY>1Sz*&uNqO2fr98h=kThbGgJ;)j&pLP^M&?9RVcQF(lvvm>lAA$}fT}pG%Dbtp`6Ipuj9Z&r zBRMCf2_j&E67Snx1o4O?08DuQcj>pvPjE&6W@T|R(cN}X)&4Jozqt$|$XTsFyl*(V zGq4BLSUSA?{fmVF#uamifeLS1!J-;*V&G~hj!vhH{P6UIPD4aeVIB$8e&Kb2^9id7 zkA0bte7J2Z>s3l#A28TE6i&U9?;m5l#tTz5(ymM#p|@_bungs!X8KyXyObUmVHod<;n? z?I=d%_qBY28L6}4q~+*u*m+#vn>VZ?IKio@$3ESXTE9ryFMN*iCgeCpdu+~JIPq;c z%LUJcd5Jd*{|Adh)!$tKLM178pL_mqsK#tttqYHzK#BfnZsg~aOaTafYx@aO@D9y5 zWEl2A4A-G=lvuGv3f!h;b)^r$3`bgW73pAZmHr(?q`c^pQBI?3S`G$J}&T?Y^{0gc^!rdqE4H^(AP>7Ae&X9*O;Y9L7Baua(KaXhzI z?$7EBTrW}%(Q6zewj_JYoB3r;yY+FrF!eCw??-FAq8%FX1S3ats5pEM7Qv$yL9Jye zoK{d%aCEGPgP*F*D|A-j<9TMc;f{d*XKFpWA*)t=>MnYH_lm8Q21WaXyzCJw2NF3g zt+0zuLH%nkh~$SK^7}|ufpwj{h;`0>YuOJdR^KHaVwcP5)bc;4U>rFUmLe;sWaB_M zL{2Kyoo@NHxv06teOCFO)LCsPu0ETxmP8AUpdD~>Xb7!Q3Dte`b!-N8JWer9@CNl8 zX!M$hmCa{Pfd+mobG)88leh20IgKe(WVl{EWfsCFrMVGzB-~APE|EPPuCyt4abvyC zkS3y?w^-ai#0m)v2})X!pT?d+J5EY6l&1-y^&&d^4IunTIi*|<@?=VqK1Ks2x2@ZWi36_#9CvVv1r=(T(vgq%g zC4wv%ze3nNtn(5Kl){>iN!9U^KMrDb6@%6@Aw+b><Nyu%!085S^zFva-(5u|73 z&lBPBWX>;~Ay#QxRVI)h^sdEVztlW!O>m4?u(}mId=6Z0X^b*gnxx}&;Q}tPwHL#?n;Q1Esi`o3Xo=HlbqOP!Wm(+&UyHMP>Cn>{&43s zeZjVv6$pzO*YKK(%84;8)ET+u(^6a6-h|f{>9bGc9A9L@Jw%E*G{NfVfdOE*|QR=L{0w|8xB(63Y++*=#7V zFoTR5h6*x9fI%LTe?_C=ULA*Kl3N<*uAh#S;9MSBK2-Ct?XuzX z|M#Y`REbFN%fMS91N>x(4;B~xgO}iH$3+1>4I>waT~S}(_#fWz)40L&Rr{m6N6$>1 znDw`BdG;}(a)=Q4d(Va7_FG+wQIqGb&VU=?cReq|BbF&j1EbNH@}VPK8Lol2{=iO> z@V@FWF=9V9Y2TO*#&>aF)0T3i&k53^>=88D67CVZ=h-lQ!h=u>x;b?~lSYzH5v0`Y;JgRKRZp zo3U|W5L|4|(8I}XEj{;ujpQ-Vh<5qI0kboYw&J@&7;JRbHmXcKULp8nAQl%T-9o2` zejmO#EliUHg+T=4mb=W*?{Mase7D)M3p2z4lg-2B3%8^5&>Y%l zQbp%#*9XQyuOuvQnm%{)17L40v+9F=`g6 zUV1PTmzQsrO&I>eWv!czy1=_IBJ;A=35s&WMA9GTf#9WVQAxAXDlMJnxw`?~&X+{P zmoMNfAu1B3$2)1Ju{OgnY*uNo@BZGwwm=6cMR?9Xnnw3sn;x$@=jiZlOq1uXx3 z!uXq1DgU_QzPa9-s$g+qInG zXh1X|tMfOZ66ejsFsayV)_G=AznX?mq)&)0bK?u98W;&Bj5zNgc#J0)gEebSY;=}K zQ|`I%F4ri+=nFr#I+yZhP$x z2R0f{DFq`EY&&SHH(0~e!_tsQ9J{Sr-?OGlw)g6s#cl~eUomL%F<7U5;V;}OEg8~^ zC8ng0irF_z_a}^Zzxg0ufPti{BV)g2IrI}nSlRzK6rY@70k11C_3r@|MH!t+TNdKK z=Ym?KGAA!wBFAcG)-umbvD|m%>W|-`**4FjRsb{QVp?mU0G8crQKEY35@*;9MoV_b z3P~sj7RA3<U|ffg$6mL?^1AExfeZFxJzmk&Jg+Al&_ku~)(WzP2nxXEIoH#OT<0wIaPL2jx;> zFD!1*0EG+j;x;#qtZk@jZxIIEKaw^s*l#$&0&mnyMLiqi=l}c88$K2$4g-V+Gt@70 zN`vzi;!+A+70CAM4dK0)WMGk>URtpGdwv!CuT>YHF9x4y{iGi?EUGUZ4Vx3-;MY$> zI+UT2(z8aeCCjBdgcogt znwYvyL;)NMrP2ctDppyF{a0WZhGAR9#(29R=>jf zP`o|_4CJX*^m^`+4bCNaqav73)gqZV-rIo1$@@J?&D}HW3z}}^6%9v8jB+#V1$wNJ zWi0Sm^hD?Tl!I4Bt-ht6&M~>AS1)?lOo9Rbmty}mz}GnmIP6rF1@EWDQL)vGwuz@? z2-oL?danT2z*E$LBH)NLpCB-isXfUlPV8%yXY3CQLG-}qw%=fn&~4=Da|d%+o3sTQ zez=pgPDV|X=tri-Z6zB?wmMI^PbBQk;=ftLe{xFIF5IT?TOPOm!US2dfHq^6=JY#c z!TxXCZp4Fe#fK8xXunV(H!g>ub6)D7ZEchenhx$_8*Z_z^-vT?D(*71h<%t=>2hqE z1QDd|9RFFuz0C(uxC;%4Q~76XDJZ2fvga%9-g|?Jk-j&ysLabFLuuKEo9*bzuwie2 ze8(H;em}0+3p*nFAPW%h!3(mw@GC7hGi3pKCvWOFRxb&;Jd~E}QL`F^`cPm0Ny~~L z%N7L(iu2XZwO-_YPjP>p7CeF+m}72U0+?enD)m8Xkm+Qsyich^g2?}#o^R*OAq%4< z)C&lN_cN6Yh(?MUm()E1a5#YmMZa*-sgx5h1+QnYVCF)jxI?5h%G}-Kqa*`iyC@MQ z1DEn<_(3tK&bk{G2-90FW^-??x44WB5j)1Uddzytq%P61iAjagRdH)|*T7FDc+~^B zM{D|r)$U3?nAm{{-u*;WR7rArqtSaQbRymDa&^I{Cc>K%KXRfEXSH6xqqHkFiRno$ zCKM-7cICG`gya;#*CyEHdJv|XG2Q>(sfMgnB8mk!t9+v2Z0gnje-^+(QT@%=mYO6V zk{;NG}~GUTskOLkMQ9(iNK{&dr|^f;-;S& z_PqUJND`>LVLbfK4!u660AcyzLG{n(bbzi}XbHNy>-shvtCj=X`EuKw{o?v6Qk1V{ zG$j&>1U<0EyIfQ>G^J2cG`cC3Lw|bl1!+qIFxN0C!Rw0{R(@bozDu~WQlY`Pb@oW! za?iKdEPC~jB6YovND}(CK@$>VKeOJ%d4kB`JJ1H6Fnrk@DZ(WJaUn`{szj#0peq`V zJ`n)K6O&6frNzvZBa9X;3*OzF!BH<-;9f&}_D1l*e`ETiY;Tzjp^cPBD`RL=P;BFG zJAR83xf&j3{+fDc+g-SV^kG7NZvHQfo*wy}{_T0pk5VC{=rJuOU1TOp1t<$9P1zM$ zhz05#Pn}^dcWsqBole6*1&kD93^?_FnrH42YR(R2s%{K_<}gQ$NNr>eWz8G^>bjo) z;xjY$7&W2K$tFo1=L+aW2MwaX8weCk%nH&Vl@FhbMA>WDHMHuwj zA^we$&2R=*z?jt#s3|LY>{jnvraZaFeNAz}sHr;WAX;0tS=~4p&mbPbNO!qpWm^}8 zc(WvE{T)qYJ%8E1$zPL1LJNPV0}+Ce%A`|R&Im$4^vLfS+JZa6R#jZ{s?#_9qfd;l#IL=)SmyZ+J94?TWcxur`)^{5uoJ z6?5Kwo}K-sk@skCXKb2MqLcv@x~4A7%X-eNRX3HvTTg7&ZoBqCBW`5*^uGUPMh@e+ z3F-;=ufogvpDFA9OdsS89EU!hFVxc-jouitmJK1(@z*28C@_lLb!o&0({R(M2IAk+ zy*^>4OBD)~1qNzjJFA4Jq?w8$FKiiL5hjAhf-d5U1mlnkX;j&&^XtZ8 z&}(R8Lf_D4@SE=TXQ$GnpX5f#5Xi1MJ*m<7-2I=I(tLe~*m%2gD4W*5YLXy0>laOI z&lrr*{(Mgku$=`$SGBLWf-|w+kH}RNFk~=NpfGZd2Jm)%yQW1|m}lZHp&CGTz1+YA zCgAMZl_2T-YEtIh#XA${{{n@U_{;MmXxo~OUSqN0HspL)HWq^|VN~lEbIuRby-J-0 zzKVsyg#z72V&q9=-iPJA!-@3nFphC6q53)kq1Sb17NA50$flxlYE=qPe5Y4BbP<2j zwd0cvKW4%sGa!Vhiz=Y%7TLgYX;*g#BK5s(#jn_-b_@fT3Hqf+WiXB-ppeQa+8`aRr zTujI{k$j&u?&wf!8C|tP9E8RJ{+AsG{!%$ZmlKlBfnQ%!?l4JKr^%voQ3dY=+`dYE z=Z&0!78}T0Qx6i5YtGlvfp;9#KG`{@rPA_B${$mLnozi^4H=EYU&Od~V)y2hC>)D{ zf%!a7tv3LAb+3T-7)Tqixz_t!wcfQSp6GVFKvbGwsGp&)^nM9G>l=tf3}B=)9z+@v zdY%6{ys!QhFr)eEtpu(Cum5(y5`aS%vaGuQ4YgQ&P0&8p@k%0is|HQaP$?WdF#uO+ zUZTCv(A~i*?DmLd{-Mc!E9tT8U(SUbGG+o5h(uPT9;gfEW((z!YY6;fOQ;(DJG_4D zL-can6?$=(Z(dOms1`Lktwo8U-t3n1j!P(TjnRKNJR|srQEP*{5dBnFkaWOEDO0C| zY5Go`4v8FpT}+@eQQI&vu_jx2Dp7|8Pg1V86h-#yfZiJu-7GI)?DC7|pM#9WleY^= zR&0jV#XtPQR)gx6w*6*dWTEV1QxSE&18D0Ao*HxkkTQ5@?7{t$zmR(BZz`kS7}o^& z1;)1kiB}%5hJ$Z0nfz6s2d?8EdqAf8KBjUTK=ssm1vEpZpQuZn{RT7e@{e1e(H0rG zTqW_O%SlW+4}US0fsT2lk!&>SP9GwR4-i!jxOlPs&07un{hQ8;(?wXcG zrt5KTn6|(7^FcDu&%Zt`uO{)>2FzNE`Pti5q{_ z2$z)xOBN!C30zU{4TU6nXJm$T`I6o-nTiz*1FqgKcT{~>CiNGDE8P!cN|+K9OxMxB zS5Vw^ukj&yz1C_HxuYztIH2R7rfx<}|FlypJrHswsG^5grH!j~!T}#$VnC-bIM$D} z^_B|V%%_MSQi3Es$IU`2_a#`y-&8PiQMy{%9Onjc0glk+zl|95HLCaB$Y-7s3k{z} z0m`)|J74bZtg%PkUr}EVQ%n%Jee5o_-!O(nAaUx+EPy})!Rx=6rF~B7Rl2R8AFtJV z?MbneEqExr`*B>>i&sJ-YVpy5x^fEI@WC`IiVv+Nt83cY8u(=E+?=g2DKH-qyFC%| zMK0j@b_Y<~6e?g?@L=FY!?NL2AWe8Y!$!8~?sYhmc&aBV5EaOZ3KaibW?blPkV8SK zVmPDQuV1Wyqy&oF>!h9HNUZ7^{9>a{fcn4Zg&h3$Y8Xj9#4x3Wa#RAhq)(Dj!G#OGM74;|KooP> zHQ_YmRCKXSMj;n(*-H)Y!S_z6f&9Ov>S?3!Qr2@ENQ$(Gs?L3w{1vedt=C3zg{J8v zxqGz)iaGp(B~oV3RA?O&y20^42U-dnS9<)^gTqY-eQf-@#UmgC-Q*MFhKC_ zcoeXF_#I7d*q#od^ZS2vgdpN11TF^yGT~Rk?rTEfmzh}gN^NSH-j(mU zs_c8pVDOA!m>%?%aUR?$CVb7V{bEL%Gz64?u^Y+K_3?7Xi=OlH+WqOh+_DS^oGzhk zB;g?6+EB+o-=;n*(xDvbHicWMC4@w-~y`Zj^QJk|AIN-!CEL+ zj;&Hy4!QJyYkq1I3mPB3%lIJx8pep&EI7z0>y&pGe9BKKl|J5vGBw3rj}I?Wcbxosj9^7*2~>9#w*-0CoTxigpt zmSf;2`J3BdAR6lO3^0&Ejip%#7P61RISfKgV&i?7XSh)K(b=Z7S4?9iR6C?(f|~XKh=#&FweA&lvz}=DJFsl@yhQ{TJCf zC;#bcgUx)th!IM>-O%93u@YDGzq3x$RQ|JG;ED+4@q(F`!hjtGpk8q+9;2+y91n2~ zc!3WTH1-|ABxC$v(_`qtJo4fV?$S{XLTitInt4=Clyjc0#9rN$#*BPwq%_zdJ@ZCLSXh1|jhlFPSERgyb-^yQu2qBDWo*boROtX0 zVS~t3L~gWd5Nc4NMTPCkJI?~nq>yDca3%fB?(^0jNc(r3MV_|AUZ}VE?aL)wm4W>2 zf1dpgSl?QhyL?Hwidpkwl`N#HxZupY$UFErE1)>3KTKNx@oj-!@CRX)hO?rUqzuCR zyxI=yH8I^|wH$uAc1eu@ks4q2$?6Zksm=Z~|2-ifxIz(+oV9F?H+OE44w5wZ-yRFh zn+El+ij;H?FQ#r~H2^*>9xJ1@-b0TT`1-WF`evqtY{n=w>icczlqVU)n+{HX#5plH zw7C#{xCnh~7d^(Kt~kze8eycPR%OPrv0--T_76R54rx11-$H^xezc8zE__R6h9_!U zjf)%jo%i8+m_}F~DLvE}aY1NsCh!OuZ)A5B;wfp|i=@VE?+$AjxH(z$?C>t2dxtvSuf6^sc7XQM-3T)kGRP|rrYY~1-%kb4z3`>m zdRAU6LM9s_M zrc7+WhDLBNd(AILpgUU?a1jo7g?~Y@Ft)llllY6E&xhRV=k0oEucTv6c3t0_@d4)^ z3xi!xlW`O!{tZTlNcSd|-gwv5@An57XOr-TzC0gk3)fV)aY;~t{2ilLG*16bjp?o7 zC(8cI8^zoosfmNdwBxTi56_I*z!|t+56{>PWw% zyn~Lm2rl50*appqu683(%1bQc!9tUL^ma$W6p{Bowj{?Mmtt$f3Vb~ZdakWg{*sAx z@|ODi_o<+RR9N^~-|YJsZ-VfpJE^zMcW4Lh|2dLxuB~w4|!*m%?djW2ug{ux7qpIZbrFFqFB!(`NX#@mtv!rrTr*PRD z@=spv|9X%CDUClT%ib_~gNaG5&QdzjS^wCVU!&=DMLIuJZ(+-RpM3gIYKushGD9dG z%AGr+wgjmQf7|*)^K_0a7XyB0zY;{?lQW=Ea$?pfyPy)cELAc;-_Pe?`N|2kKZNB}hvN)aX( z`nojVF_5-9Chy0$)iji7I)!mMtx`}8i)_^O=M0|{)#o2$%&C-2 zSkP3RsKdKa^;|v`=Y~)ogHuq9b}^LKR|Uoa*WZ}|m+CFJlMTzE`w>&T`7X_G4y2-+%!{XN+Iyf*8<=kh#kuHp2I`8~C_mqen zpAdD8T;O6RkxHH6!zSwa{gN{z(9(~;ob%j^!b{jjNB;MSzQN3q<{DG+Q|#4<24dMF z+^Owhn0E$$FMiS#-`KSt(fjr_XR8R}?gU+xJ!jEiIsdcdui_-LzsPRPp&FQtu&lFBd`&|&fJvLUb-NoIy zYdaKmK_}escwm#?-*I&Wf>bg2)f*0=D;gq4))7_& zDlkN*C+(~4A11-zvdMvZ+!4Up6ZHf?1d?FQ9c(eq4=`>TCXniXH`O!cm;lWwxCJGo0xp_G)%PQ?5$1d{)(3BHXaV&V`f3HiJ$h&(yj&#?*)DxpTE&-h1vWr>bBfV%6GQeI$KG692eZn_>@OUTyX$VEBBsCB zJ2NUK%yV1u5mwZFjb-PPOk{!u?dKRZ)AH=`ZPtnp{PdEN9%ZqjVbR^GfH_3MEG-wV zoXt|UWme{J_AfgaM|gHqXxA?wpUV4TEb58N{?|6~c=LUQmtAYC<|5qf11kE_ zQP-YMVbXZ+q3(!FVmGcjP;XpTM!wr$GQc9?6czMNX#Fc`&U2R1RU0x%0Z;Bp>HlW#nwHUckZrR%XBw9PjAhH_hin>|( z4|!Z2(teV9;kVPjTW&3T(geojWkEP|~=VKBSboD0dqbWKN$ixhJe# zJfB%78Y*O2)8%M-`y1-E#6T9I6d_`XWGV*k13|9tXR-38}F=2ftLj0 zt~`aiTi$ziwtqJRp$%fz0&D{0y-pj8$LI&rv_L#GONC{rlv(C4!Ek@3(^Zd{e{78x zp`?Lyv|Za$JzSo-`-@E_6Y*2RHH5@Euk()*0`sJ9fA;8a|BV2U6!DI~87Hpw644ou zpN@Aa;t6K0=p?^N2#e#-qs>I^T`#Ih=!aU8f0;MtPOnhN7mgkVWlSl5342t-9ZwJ? zU=1jjzxJ!_*Q}PDs`?5NN$E;;uFqV%Lvx@hXDOc?^*cUNijNpMqlTsf)BNXAaso%0 z)`^4_jf;BGC^~a02_{X-w-9UfHM`FC9}qKf9ehe6P{GPX!Xi*({s9E|)y}SNoU>rp zxlU?9-`7oQM(K_uAX)lw7_vvtikM6!kWk20>X`mMKEhFvdqeSmE5giVER0c#uxrc$G_iDYq_ zAc?%sQW|ASB;gXlHJYP>)>KDJ+@sXV2`{1ZSdMSR4PVJ9dM>@#jhj!#&00n)Th@jd zwfC+M2cH)g<1qtTY;F|dBku7t75`_IfuR5~xUQY`{vSv67Qw={1vJ67X31?m9RL*J`G(Ti?iRoOCTLu%P>g znBhGor4t26Y?(LK!kmL`U3rvJx3O1fATA2QoRiLp5lNKe=i%iwvJjkl+H%og`xLXprZY(`b>|jgtborNpf6*uDfng$OV7GIqTpcMA6=YGk@k2W0_=4IO}*#jCEu7dp6b(n+8ls z^Y_w*$x(e6B9K2ML<-~WP()AZ^{h-f9jFVIm`k5BrqOVafnjqf2`H`qQEtPIO_PO} zp(a{$bU~Lgia}3bT1sK=t@4GdW+{MR*dV3V?L|J#6(IS4L@}!L{JUzcxh3`zAm^m? zwWOF(0{=Y7L%ZjRfpHbCaISSD6$Mgpk$fR?XdmAXAk(1O38PaN}I6p#V~*5zk;fC{%{ZwgNU4?C)TkxeDt%E*Qp$4lP(r-JMudP797R1>wPX)H@dfY(p1N*|J$~ z9fs{W)Sp^YcF`;{@^~MckHPN9^?EFDV|8ExA_ABJ6th4Qw=vE-Mgk}`qlOQ^BT$JW z1bwBxyXVkwBw|g@{u~>qDLz6L4Oja>_{9>L_x`QXOZ?NH^sufM&F^xU{wprP)GxW= z>Z)zK90C0Q@Pa)s!rYsG=kQ%g;A9E~rfaw$h*MP_r5)fA&`iQiBWN|PNG zx9J3fQdRnhQsHYdtl)c!qtdJhA~$6`Ytd2_OLGJ*t_^Lt-2twZ>fFHgO#(sAI%@$~ zeQmo<;0vPf2i}6i^J>}y9?J^aPuNiN?M$?Cy|8T^(ylQI!56(B_&36^380!+Jc%vW z7c3J1<}6{qaTV{sNQZSnV7id^YhaB3`Fh3&_O$agup@fD{nTRwYY4ze-T_)7c*%=F zug{d~l|$wp9P$81xds4ECz*TRF4~9z$|~}8*$XP=z?@0ah~NYoAGMw8zXG!5 zkk?4^Kt1vd7!w)o0_v`kH(nPYY{ev`JVJ2zRXZ#Jp3=1@k}^#ZtDFg9EAwtut#V`} zxEr_0lJe%;y^r6fhMe-594G{z# zN%i;)cH1njg@-9Qc5sjLhh{*8f=#6uRiNDygiiUP9Qq3FA~}jf3ch!7w4FFOZFP#n z^*47upLkE^?X=xgJMD1x?Y-^ucA(DyjPYjgR$9;3kuK0s`9<3Ii(}Emo}5ENA6sRf z0cg`X`STRHi~s(m-s2lhndwwrYVp$HUzzn#qAYC-!TFjAi{)r(E)B#MY}cs&N4hSKn}e#gkP4_I}Hp}D{Y$h)W5Z@TJLlAzD6R>hf>T_bA7Zt^ojh=xhl zquxwkOPHqp%$#WAfg73Ra(uGHRP|3G&vKi-b#0yd=MH8O0;1$AS3u3|m8?qwL(buDV%!-l_*%f;oOM&dMmL zYul$)ueE?3=pu1Acp4i7*J+1JeH<{jap5p>L`d;m?;{Q`1aUn}|EwOBV%_8KyADC9+JqlfOselL#2$@oqwMTT z!~$le>tWeefu1za1DnYe# z24BfjFfZN>5cXI~gF+`zi3AEV{opQOFa|GM>oaP&YH^iB;^|F{dC(tol;dF5L+!1% zD@mZG*i#zq)wV@SpXZ(&KvFp{abEItv(?0GXU)E$%TU>^8lH>JHV4sA z$;{yn5Y20}hVW1-U}cVDnMu~c+TPZfsn=;Q$fMcWPp%MC3@)J{McgQrk5GBokrKQc zz`cs2rB(wqaVaU%gHc*wc`Tnp7}*TuvZa)X)6EvR>rTWj?O>AJP)W3%uYU7gQ8>>D zh^UVP11)--p&p?WLtg#ezev*wVlVuiFizq86zY=Z$Pw}gH3(fH6k)hwQrImpU9mvF zAT4~-c{6Ekay|x-{&`N7!XQY1Vp4hk^XYQ5U#)zIuk%59uc;g#K1^Ui0kc)0(NRXw zS(eA$ziS~7kWUN^4aH#VxVI=7{4sCBOxpT$^HVF(b@(!PNsX}g1V?i_?$wc!XgK%% zqkgD@c&wskaB3FKBsO^Vqoc>jb=X5bRrP-|KPJp0yWsXarJIBStJ?Qs_X&1tTfy;F zN;LQU1n*@urKLW>08*kUP!6m8?%#ul!|IA{r{-8225B*8@1O?EFz$boSO}lv1fzee zg%dhXFNqgav}$o99LT1M@7S`aTa8Wk(7Gj{MoKRB2J&QJJ>6k%xoxsa$At7@!$!{Tqyt<{oy| zMhVFb^O)xPIR$oMq^1C3^GZa~@6cGUjtpS*PrH|@hH0Os?uTJDRgc6!U0D7 zo1uq9@!U*m0nMZoIPN<1P#R#>#s{cT9L?6NWVJjtkp&rS9*Af@U-33pS>cmkYnZh6 ziKt-qHQ)jBME~45!op3a)wNbWQxrmqXc`@Wksl4K2RB9*5jI1(0RBT`%mO|56P)+~ zSI-PZ2U;`ip~xT?&L6h8yZRHTu7e1LIDv*`VJY}z3kT2X;8~J5goeT#e9od*XWi?p zswaH|hx9Hj@v^?3OMxb1A-5E3GMU%lSu)7wK(saDw5zC))~yS!B+s2EFcOEqdpq6G z(IvISSf(iN-`r@=JOh+7EutsJrCCmLg3dmEYudO)GaUD_I-?}<-^X~E);5$lXVU5l zb>nO5XsVTK5g#O&>BqwHs79g-TW79KJYD&36-DBoL3O6|{QEbXq%G*~Rz|o(=GZS? zkSIRw`-MT#4_52W+b-)O8w%`N`^7&1e6ST(s3stY)c2DCW#Hw-%fq)rFq zk!_O4)m|;bUN`@inY*;9TAE6AqBNOw^qFkN+sRuNZt2IeV1h*>x>MB^K*LjN3QAxG zg~E2&OxSd*(3PHrbFkot2=-~@y{4w&oGw?yCRq8LMnYkG`l%@+FbaHW_}sX2h!jPi zd>z8F!VL@60}E|>W@8zWL7Ycehnm|ToNsX(5LiRWK;qt#0NiOn3+m;)xX?UxqjS5| zW4_<%l;*;AF%17wh&7rxRLD833g3Y6x18?|=3)fBO1`q9@-prWO?>nDg%Njcdm{0v zR#&~dNRf1|phFf5DtFaL>T`XLOPDkr4|I|yU!qHMXQL1|LReeGjILx`xCDR5v;u~& zquCt$AcTEtzh{A)YroTi)89;z6nS~o)@->Sn1>U{!iR!usV0ykd}zHHD8e8|5{vKR zBy6Mj&)Tkf_(O-^b?wMyG6JrZ$>N=~i73H3Shdtyg4PC8PWfWS0jOD4e(Wo|TxS-i zP`Z@)Ki<#<#;K36C5M*%-#(FHvm{B2Dwx&Lb`hEHwa_?^==lO7oFO}1GEH#8uctq=@>Rm=SP-o?;upBvb#Ug@qbl>i2V}B@ihe& zUJkVME+IIuh!8;zhS*R#*b?p@PIA=7AXeWQHdGBR{@uyipwS7OSy#h!Xmw4jL{Ir2 z-r0C;3C0|_4j>KZzn+Q)`y$nnZ%fj6GgCmbEOdVoW3omt)#q>3a7L3vD}5@@g^vh2 zML%9V>q3UQ2Y7Xnf4foNl3`M!F8XlwI=Ti_o}I=C*7#N%vutO$cp99 zlS~-A4V*4!t$ow;0uI&xVY}YrFV(yMap|FFj%fEF6lb(SEY;$;{t-+mm1s-~|6HgA zH+h{yqb47mO{{ZFa_CDBcp=7oz_Yx?fwbC8?ILPRyteNhdSNEr zFM*d0@)wBDgvB2A_efA?3WYEJR_`v8 z&nN8;ZXa0cP z3-$QrGX>W74K*D1rfjf{9qDJ>@Q$F+HLtil~?(Ygzy&O3uWL@!MiF%V5!z_Cy zfxtn9uc$BwQ#={s>?Ej59Na?om{>y?22S@(u&NM4GQp$UHW+*FKi=MOir*pOpzp0d z7{{7`dWyf)Lilz%9Gf5%0eU#QbVw@NN*F#AnMk;0{GN)7Y>TpLwP1V)UM^-au0i*D z%#R6DiZEz{DQtqR6~yHdHFe%!U(YGlJ|L~a8s@&~%`;KWgiDb@Q=-7(W~qe-R<{_= zx-d^m(8&cy#l6829d_x?2Vj56r)sqM9%(1?g@xhjRw`G2+fo7)1$b#EB|?c~e@H>l z5(YPk7jpNrrSYR`eCY#z3G}R9Srgc)wEF!dgydr%Ab$>=Esp=Y^>8Q`Ey#Nyk(E@r zTd_(1K2CTv42n}3c(N!& z{VMly7)!rz8>Mt~HSu;7b^>ZUOd3AD_xQINS8$PGqP~h}PTI(3biI5OiwFtE23?S2#gd7+i6kix*0KCiRyOh7EhtTp>?nW zApaJ)1VWwmee0QlCCASiu?FQvJ-A0mod6fHl zm@Y^r4%fXKhnF=45e|lU$NvXnxn%oD!a$bn)O#Ke-{_(aV|q>%G|h_xT1axbQS~M% zlDoIj=K*o?xeA3mF7-4Svt#c$XsL-T$xe2jM~N@&9tWB-f{n2egBMCSCDJe{*d9U} zbHdtBR^V53!gkFe#vq5MMcm#lJCz0FJzA`@KC766z5jvON}b^} z=aOLu6ub0nY*7bJ7RpveBzkb`6v8Om=k~LE(S9fPBLV{HY8d%-2ZeE(bYa!b@2aC7 z`XA8zQEzE+%LgRk$$Fd!m0H*7X?l(|ccGOu7el})Dlh_BJDaGggKo$U3lJVMz%NrLyiEcB)J*a^@!~^O3nkC4+Cr8$)W03*Gfe$T!Hb-XUJY)hD~<4vOCIj1e=xtXcqD$T<% zdI23*Qe>?>9m+@#?ZSrR(gFWlydl^1<~^<=mThWq(jRZT{#Ebgd;7YxUvpA292fjK z`U4T;bJ$&a0|UFWy~6n#CXMLkF=q`^)a!(>H3OO@TAobuh0BLd%@@kKaV2(G#)Yyg zTtw;}5rG_E$wcT=F!u$Lh}da5h6?{s<<|zLMrE8qWkliYrH!}`PMLY#7a@>1?{CNf zIKq<<%yE&sHtW&!Q#6-S?yJNI`@dNmemj6*;lqJyVC(Wr%pZIYo0kx{rlnOLe}251 z@kN7pRL!WP?gx`WQm?1em0w@re7NodPT~+CUY0u}a=k7)B&flQVSiz*9iqj0-mS#- zJw4q1Lh>==VPZV*#_vyOHyzi6hQW#%wb5JBKGF=ioy_-Ks$iII%Cm{5{r(J%4nIO; zFwY{A^%v_r{Q=+TuZfKF@9i3mO;Lry6j;6d2+id|6t5Y#!Y!TMPaEQVyE&lJFBok` z>`QTsC|1)xse-&4*TQeu3;9C6^ge*xx+*+2O^(WHOuL5 zBzC@;IKbCyp-cZIm4iW`3-#~yEkatnK%J=dIsGyJXL&Nl+}uevhlP^YZue1l9$9bb zRM7YhxqTT;-?WY3$bG`X@P;5n0;^(31Jj!<%xlV+somd(_HOIeb@Y8~7EqUWi#DcT zYXEPiO>b6fRR7t&I++mF?hfz^h~B$e?|aCvZWW{=BogfSGcLtV)BUha#E*L^(fyg+ z^g=R9N#|dABWa?0+sb zUKH4viw2FweD3hrz^Q#~Qr<&rH3zXz>J=Y(pkyv_!K-B-rq#-ze|^r-|Az!@BMzZg z$pz#G$ZFivvg1!yG1h4x3^p`KRS?2n>DuB0eAul$bPl%{+eA;((=lgLd&!U_W@v^8 zjs+@9C*r4tJcMgdVrRfVmBT{Vq5fEWb%cPuD!p76=9uo}R2ck)$ixEoX$8EBKCYH< zr7BtFk0{Yz>zhQ67fak5x1sU) z$w@K3>@Hm*vgCtGV8P_t`wUEl!af7VcS+&^vbYWLYInkr$8UAF`g$sB^w#uU&{2Q<)F!AtRd@JrLy+m*FJCd78BnhcK zoyNq9zq5Jw!twtE9s!`b`$4hz;@{soKArL)T;M1v3v`dFt*b_Vq=H6`2$C4xwsZcN zTk}!lPU|=Dtp@% zt8k!Nr`%bqc#LnIgvVoLQNhcQ4$m^qsOO_XWqDf$psKm^U=R&SuiZZVKnFMPxzDx@ z^7zJyKF*=y6C|IXJA`*8@kZ0DK_Z7?rsod52B#2(9>B`P$#SvF-EpTGs;6zHD0;k{jk0Ap(}IpW$#z3(q`^{V)0{xjw%$(pCL8v5Sezt!?ss=xE?xQZse15I?IC zm*hoqi)vVA>Y$p9=%$nZ?r*#m`n}wAh#!d801r9mb>_)o?{R_8hYvm%T6ZY%&M`uX zU~ix&Z}q7IK8IjbZx1ZL85Ph^oyGb;lBihb^)OK42fp!U!^vl z9f}=14(udSg2QUG0&p`qE_vxx$x@uImWTzj9d9ph?Lx?=U9mL!qEnCOT}7I;R*9fx zEYEhT)9Asu@8u(KcA*|_Nta1W2qL_qGfeV-8afsp)82Hz;P#+nyg!n{Mgoe{@3aaV7^1zVLHs6{N+%=?B=3|9F)Td)X+bWdEyZMa$!AzX6>gO_$z9he z!TDsRSlWE|+~dleMyqsr7?>0@C7=%+v^WFI4QZoFM55DwyWEIo;ICF_YqI4FC#`dY zM;pqM(*jVdof{|4h9v)O!dy4*@k(@QuZ$4ZCr}}Ek-;C9a|QS!h-5hFB>V>uMLXvw z*j}dg>+(As^*1aq*_yn?13B^<5Mpme@dvME@D^aCTvftF_bQ3Rs6N z{@-N{J$ZCuwM?Luzx~L zdxAM~kpTlsbl11RjsPhMc(JfNtuiV3zo;)w36K=iv9mV8VGp5^(LyP>6Doon?bNgZ zcigy}d%A1?OSvS>#DS;5`@)iJfIK?4EGK8KBR7Y|l`U%zDT4T7AZ#sEHsVRwiN{8x47?yFkl07rkmQ8?cQ?3_Ik6908bB#Hab%H7KQJ;A-dZb0&_fBPf)cuB}# zR_a4zEda5$tNqy&zz^f_TQ*LP+-G~<>u>il->1nKl1YYg01X+PLLu2$$q}|Qnlb9{ z@a+51Z}+4Oaha+|NLTH?m$0lLUJ4qy4Gi?ty`jw%MmCbDsPBpFWA%Qze$@aBch&*E z9rJYe9(|&xKs|)7d**6FY)u9A{9JF!_x0Zz`%DG49@6%-(|_3@T4})tW>tm)4NG2U zY)|Vc&8MIEe6mz?RZYR}S`8_+MZR163}c7o29mNfQLG$1YUrEZc!p`|lJ<8LZ`cT- z5r=}Ce3diC#%i;9vVnQ(dTF3l&in`18Tog|mur)l34qFMo`~Bm+fO!Qky;J1sr9JA z>MSm7vLEX!o09|c@7{#w{@O=MqDeLT0iAq@Qs==+d>0HYsy#(`YB7c&E=GTA2L*%u z?h{q5##rKF zpRkmvn}Ru6iN6A?U{Df;>%?1SS>&r)c84?YrxIV_;wI{?{hBX0-gce4B~1dr9!(g( z3!UX{VoENt2Xa9PP$ogFMHZaW(ZvBZ-IZT=k2PV2P0gmF5yykQB8vwo`b?c0azogQ zA1V_MB+#-}P-(Z17gNqUhmazW(}*51=Ecv^#Cs&xi3a#W@WeM*h7Obcl*G|o7UCSC zU^wv1VP4#cX`w@Y%=JIuOUis|J7q8czlogygoR1BfRi~LUP`l>qPQ;Kbfiy*khDpbHg*z>k_&t9t-5S1-zTE$zF}`+7OL0mbisSOP2!f-u*k@5X1iKUkYp`E+JYv0{?pR*Qi< z{;LH5UY2gi)hD#_o=r^I*@J^wI+fPl%ArFiXpELlBMYen} z8qxJW-Gs)UF!^9*wK=NtLGmrj-~iN{!&F6DaAT7A#6K#3T1j47mc2u{RngE=xh3h&hB92N9q7`~l_BsO^lJW08-Sr>5HXi;Pf}PUNB&cHd*^ zY%S((qk)qX{u=;(X6t)o?YL?US#*gK?D$-6 zVb$(?w;`vNjfjcB+Xe~7NVgZ}&P(QifPm==L3C5SjW@?Rj=|fL+d>o#o5ZL+7ns=R3fNTdfMh#U*7SWuUgD8+4-!45()jdA`J; zTHz#OBcQ&qO=5$!xT#OZV850X1h%@@bJBBx2qFJ@&q*p!8nI(6$w1|9yr{b-d2CDB z=r3~x2SAq>hrP(_p7$Eh@H_r51?2N4+kmofH&m^xOGay{I(Dt zn9Fh$n*8D&(rT^^Cvx}01y93oKy|=8&%NcM?GXU-3|P;BGh{;n2CqAX@9~!lZ*~{Uw)4350M+_Y7gL zmU=d#@Dzp4;h6XZe%7I&=jq=EfTjtM9DWVoVwABJ<^y!ay?j5FRGKgJi~>o(r*8%O zwn%uG`~Fo$GX1VU;wd>QEK&cMk~&k+|JBLU{f1xdh}m?SHSMVIpi6IHe`&-@ortl% zTHxFR7Q5mWyLwZlddr?E7bzymg{fezmp(0GxnoKmxn+&3VHlsc@|QZk0K)NJm3T zQid`OK#9#W(@27ub*jvexhvee;qW<7A>Ms};ie3s9^?ejar~bNN%HHFgu>&(%Wz9q(K~eWX9&hwJGo?eNx6{f)-K8pe zRMo&g;fab!+ei61`TfMs%Nr&0rBgh#mi}qi>7`T^-MQ!uD<7+Te#qXsUu^n%V~X!3 ze(nd*T7-Qd@FuPN;qlGAK3>cp*{yYm6og$HX^@ z{RSd_(RUJkPQXM5duo23zKTNAICs9vgw=|gN~(Z{>i;{>9F(xF^|h3E|FEYU@R_`Z z9du5pd>#Qmw*^GhY2kI za+?J^T^}=4<;BTY2j;|y3)%BGW@i5C)%Q1vF3HJm?0*H%iv`aBY3dfh5SdD^*S;Lq zzCo7^VK^Qp04BHgHytp-6Ts#axm(r&)pXz^*;B21yYe_R#% z>D2k$bT3Jj{;DZ`}?eXl}TmU%de zx&W4R*4uRQjXnA%)~6OGdAvmqjLL9$VMVpBe}@B}W(BWDoiBF8f_?l$8h2SX`4=^V zZ*KC>z=8btuvftD=?t_pY5HmUglsPXS&F*NoVBOYy3xbAZ)<+9&j5|qc&NmDM*4?^ zip_s60^qhRda{>x0l3tUIdeuz&Qm@ z*-EKUHEDMTBIQsc78l*oNn=P00);-H#t|LgjuHZwxu9QITx-B3y#VT6VB3JfxV82U z?OjIwUCUj5v#o#~pj1V7Kv?(~@#uKL&ai@-NzraFRnWf^fhnU23 zeZd=x{@-wFOAksjv_ftA$SD#p7<#uZ=%Lv3gE>wr3!H>vppl>;!u@HKpi1q%66>aw z<1>_uh(Ks54P;AkHieTd9k=+8dnE^f7Z=Uk_fj;6lu%K}_CxGH&0jj=v@GM`nPOsJ z;k3S`(z;8z6}x*;LJVI3s2>KlAtlW*3j+dIj|iG+NY|QZ6yK_M?;TnnZ(GCqztre5*eP4Bl&G~j z8d|P2MFdVze&^G?iJvl><2wq(5^wCje`umKlw6y3$V&3p3TczSP2m52QRr4QE+{_l zCHcbr0Fdg|jw8BQ=aS{2!}~OiIngjtv$YuA1pkwsyagyfROlmHxu3~o&1gT4W@|Vc zwObVzXt`S{N}VeYCFbG2!fRE|;~(iyDSwLkyqxM-xZHZ;!Sc~~q{Z%(*5fih!lhY_ zZVWLlIJoR_6B)3wxV)JM?!?-ll~Wj%mJB$ccYhiX3B&}ADhUk8)dcrlR>Yg$Y@65j z&}zfx$5a^I+|Cm?Xm(^8gq(6jz59^R!GA$dgF$2Jd(F$f6rZCfWzz^m7`>P9Tz0c; zm~eZ}pXHf`X|j_+u(vqE0HpYxoVPWMR1S3_*kp2s4W=8D$!CQ+gnARyvDC%07Kg(d zbpkdCI`3C>QhmB)f2}_gdK%>Gka+z9&YOFlN(hwRw9YV&$cX{b0*2pTi)zI%_WCjW z@G|YULeC|BID!bs9~1)yCH~R`fw?GCu>YI(Fe5hBdpdnpsa+7l6lt~citO*>UTNib z*Q?OTa~vwS^NPLZRjyE2E!JSwKH{9ajSv)=oYa^YPU8aM!nX909lx#sw6ctjYg%&U z?eu?Nilxw0mtlO^T2<+njMi!4){HQ0#m~55Nj#vVyhFQ=P_PuYrrH}$z~fIrVk#dI zpc7VTGYp@4bcx$UDBpEks>V2v2lxX%tY_Di;SJuAXN>o|n;D%?))#Ouou;1up@UaD z1&rF@2UtNI?|~J5LQoVtrSNtEK-7q^QC?~=hOW;wVdO(NL}s90Po)vH!hknsbqDA0 z>)lU;riEiD=*TFk@@-`d)9gAQiNyY8JiTY&u15D=Lh2Tmo$b}7WMpJ3iGhjBs0K?Y$#H3b5>@m4HzL*1Xb!fFAX*0WlJIZ2t&| zd%4!OuIq?WttHK)ry;7%7Ok_H%zIYY;iaJ(mc&U2*}uOl0x_^97*w0@MpfGNJ>zy7 zvX+K}Owj|0)`L>b_j8&LE)2b+t`uMF>=KYGtZ50Yh86Z?T0B^XgN<=H4#-fSgdkGF zWTo~gmKwwNEn00L@V7ftVqE}u`v1q(KRD(QcJ1D9Y}>YN+qP{xY0}2FZKJW@Wyrd1 z&L^?>d35?L($@v|BDnnF?||$Th=#FofwR=>CO8L37^B>oDo72BB8C*h!N0QyuH=}Y zpKQ;GAjCa-i1xWQzr}Uc8e$yDE(_EBhS}y-TnN|}3+KeY(&QLTBGh;h2_(R7fON$Lhzr!ayNek@8wB>m_^6?E|Q2VFea(z*ukjP>E4 zNCrp3Z-QW5@H;v1dA@3@$vrQU>u_@mW_96`B>2<56+bZGw?Yk;V)XDayT6^L;i# zh~kkHkL*%L&8-+3b#@<5K2qhvcAiUXO}XN1J03^$3q0IZQOY2W2iG`(;HqPj9B$AD zbdc7S>c8+h+x+Y`kUTw3lP<;ByCIjijkyqP^-#SST0`Y4XhKU^UY9B3CUB-onLaGc&#^=X^zhOsW0+SIp{ z#wE7o0fZd^2tbTp9U@A!ODxW61PL{Xe!tpXt`(Wa6$V@PPKL(wusWD7>c$HJvmQ2) zxF1F~@1{8=Sv7^=y(x_9#>zQ7yn z{8l}I@R$XJM{7^}#fQsE;}XuPv*oi?BXR!;4L(eu`@w6DEm-Bm!Iz}_*|@aUM@7fL zn`t)j*PKdVenPBB1PY6PfbSk)O91y&BCdwF>gMBvai}n_(!|YtO5U^^2LCZjGvwgk(>l_~I&7K;wg=aweu`mQrz^mJxk2zwc|JshK2Uh)(3?PPCxqS_MT z5f{QilkPp@V|P`UVXqjG&rNWd>J7T*aQbocfPbZ(Z%5Isu*khGgV!1Y4x;uUV5D(E z=f3=#Q2wqMX61HEakVLM(z{n9g_{2H9Bk}Rchz?qhUCB;@>4^|S6qBY;m;V(sR~=W zA&?xHwSv&oZEaVpn6k6>LKiIz(-C*NivkhS+KRo>f$?k=fX3^B^Tta5&v(unIv5xH z>hx}e-t*nXS=g=^_>ZFGp9uT#W{5%%^dsl;f|Yh5M=xx^Tir&=l@<3yyZx zXd&_|IJPyknRRRI7_~`IbOeA_QP!--F#ts@f8HMqH3DPo%TKBZmK1pnRgW8xbSt`lF<8$^| z;S*6*w@db(LJ0O#ZbhmJm#w@=jR%>eRK zBa~=_>y+5yQJq`9x6$sDod%!8qF1jBP6CVZ5ISE|P``m(qE0{0V4F@>mA(RrW6 zON!e9!$`RfS=>vq>SIilxI2#?!%(c9jFmbX=ozZP=w~5K1!{y`kAwQRz zZ4V^jinr@)#Lxy}Peo$1&kr}2DC@Uo>zRM4q8tBmnpujSU zh)&UXv>jp1JjdYVY$5Vr}0s&mhs}jWHY0Rlhgbx-p5a0L=r+A z3@R!fO_-3WP{_EI?sVAYou{OVKT^xBnIsovuyo%VjoL=D#YAskFI6Lpl=vONwq%5gh`|9~ot|5EFrP|8swI;>=)(3z09oZ{g_knjQa2)Q zUclzm>cGikz8&F0`!UXH6 zFDl0|vAv(cft>+k$&`FAB?&^+cM-a5*o=CEJMoZ>X-t3V=A|M!0*&PrL2&qi^y4Xz z;~Hj9Xf$7RQDN@BVC#eL`2(a?0Ab;(Pxy?c`bSkozL+nNaPj#Fx(Cu$Gm4=e+}NHo zK%sWS`Iq1yWmrk9L!!Ai5Q}jKB@+I#%93fJw+rBZvkff(gJ89Cf~M!0%zwE#pfc1k zc@WQk1^C!|8Xx=>55#-^cEn!L`LL`HkQPyeM4BVh-AyEe81>tFNd+QIbxF}JZ-xik z9IqL5SpEXqfKDJc6iU52@NKinlKmYhUG4$81N~W356U$hb{r=kJIIUyxHR0eJioIl zl&=85QT7M$ivoa(%x53a1VN%^=(a~iY@^D(eVs^^%6)Z_NIP8QY!WQYc{G_t&XD%Z zL7@Q}-?m_PQo;d>HaRDuoRZ+~kJy5;yi@;cDv$qZ2-`TeD=H*f!x9y}#dF+x2$ni` zSHTo7TvDzqsV};J@3iXcFs}9Jh(IazMwpcg4CJCG&3um=4fC0VWvo7w0c$Z@G?BB;Ivi&?FD0;-(i2ym7Ve9>3USUEadelZ|%9WekT?tXbr zq_;zbWEL?BRph!wKPol~@XFR4K|sWwg!^lfFziNB7u|y%y}#V4pTlrJUnhnjC%xQ8 zXD}uJEfKq0ACjZ7>tAnuSEkL9K!R4de|}v|lFq92y4ZBR*fg(lq*O4lq1W*3?+@em zx-tL|rY&smax13*z%MI#9*4@GqftKa{3R2m!u8Y&EWPpd zS2WFD2xcus{;Owrj}zDnXmzBzWP)pjp!?$o&o&T z$4$P-r6R}f;u7`?!KLDy*{(XlvX3Ar!qmxjFp<-!yCAQ6HPK+Bz z-3!%~hWM6c6XONwpsUku9?rGV_1gA5?kpLM6ODhF`?v*KVH9E(=k$3ptRU7SMQT^0 zH$1-y8;>>(Aa3JLh>dLV-PWZugm^e-us!IUmWJeC%$9AfJiIhd^U2%l#pw6laCe9= zdFoW>0AG3mgrFh)k&!&X9PS9v$2k11Tr`_tv8W{?@u2(VCP7yOshd%NWNQtMKfV77 zMr-LEr3a!u4SwVtW(TcI4}h9N6k*LSZ$9hTnLDvwUX?_XsfoqW{a|Y>v%6KUE~8Zx z+%^Qx_V`&^c-)^b3ZdMH3iSzUfmO0_r+}R>Oae?RHy0i7XkT}gjZmLJdiF}~{S@odw<%tPyi{z9>7 zNA6y|k3hY*BxE!xnp8gCst_lG%YEB7l=wqdhPw5;ubHf~a>7L_3w9`|wmw*j;tekxAE^tFn*8^JJOlbi*eEM-Gi2ZWPK9nT2c{K!}K)#p!H z22w8T0G!UIH2W{0(+!XTK5n-;>T@~gtA?BHY_&~Et79?g{Vt((;T9#}_h!1Qs+Mn% zHwP6ZPMlRpT|7|{BbUwyJPVJ*wlxlX91{NJOE8`HQwoZs8`J58Xhmf1!oRo(se8TyBQtN_iE!_LoMLcQf}Lh zi=InICE<;fVykdyB|agsP=l}RsW>|+aBKmw9v@g1C7DU?bc}@pRC_YQBJn#bIJ5-( z%G2UBGv0MZIwY72*xWQ+joV4uERt+lEvhc(f~I5Vn|jMA^YlMw*UK)gEW&Yvento8 z*MHH6i-5LltBAK0WbVgN9X~%{^KFWoL?sW~F{8=)8;5OF)NTt^^Qt7LvwibRkhPC=65a~E2;ca!3#{o7l+ zg=~zg&H_LL8dxj=i2@j5Wt<<^e?PC?!631F06fwTP=Fc!LL*Y+ax+M!v&Ddf%iVk5 zpJ)o3T@&hu;$?2>EV3mMj+xKzh0(qU=*t&Y488NL$5L%c*e3#B7gn5CZ`J{K0}eit zDl%6B{LA@CL}=(pnT*1mHz5j6VwciB$>Tw|todFzkI^6Yrc(_br)sGXk|E*0s^w2W z=G%UrQ2Sr(k}IO`qv^wD+>!={h%2?UavffltQ@W~X@w~yeUgx#72S0#cBHPDOVVSY zGF}YPB2KTdSdM5&94joj3*!vZ=_h3sLY;P)s39LP>4J1jS*Y$5BwVZcIEMZqC+5*^L3@fR2nc z*w$6&F_E||HS2fO9MI?C7O;#e5cKTC(S_wrjyW|7wTn2#92}an3Z{>jZJI4#R_#0n z_n5O<8=>DN)L{Aonni8Xg=9lG@M@xnn13kxGbzOwyJU0S=4l-SK0^u5B#B=Z2O;t7mQu=x;-@xUZQ(-a`;F5w$)d)7 zu|8j3;daPma~!|Q>&9l%gW0Gk@YPG4VuwrO%B5AYVA6+5JY?>nK_eYu3&~Hkh}?z$ zeR?!Yus+98jPaSBU|48{C+}&3V#|DKb0gM-TgLSp;+M$q+O zD5m+nO1*rXfmWRoHjA{1gx*#K>&3F}R$#K4a?F<0^s7FL^CxKp;aQs(U{9V^VTaI6 z>g&Zj-NI$i=tems*9NQP-=|n+qO+a61*Ygv<=3td@v^vh3S}}(V3wke8{|Z4Qf10& zoux0}Ptz`;N7G??o_@nEq##SjCW8+N0R_BGe6;F- zCVOgw<^+pGZFDO@&yk=No?2gDV`(|j&M1j=pm=jt58eK-p~xN`Ni5i%W0H=P7F90E z&vzZO+~>l%#ko!7HE~V&0-(TIuFucm2~Q?bZ;`_ENV{|^{cFBCN8TtDE-J97#YfK; zq6I@8F>NVi-2fh)dH%OmD~3t zGMD9_A?(PBWoK%di4O!70|fm0IB-o` zbBUXG+0s~Yo`|vP6G@H=VJD=iYB+G-mOsT&=9fAlObrJ z$GAVwZZdiwPb&(fLPSJDg*@QHqLy`x5MbLPocyi$SvdoabV#Pb=7h|lfd7qCE2uiex2D2+7| zF_kT;k60>xBHo<9)6X*x0Uytgq;({kl)-!0jrN-6JEOzy(mSLUA-^lbB0-Ij!1&Tyfr zyfECzcz=30^sk7oK?XLWT%z%5N%5@U({#Jv5r~|xh!$X4@Y>8Opkq@m*48! zes^_c2?A`+eP9b^fp%45uI_j|`+keffnkEE75QG-Ut)2m>efTRxJxr@r_!7ptOO;? z%_AgyY@EbO*rvm9gC5Cul^n9n4o%C7>Gfdvy1To5?@R^c(5M<((wt#X61EXH@L=MY z95G`i`3C65@o4U2`hpX}z_K6d^LVWw{E$Iw?8JNZHg(&%)lNq!u+sDCic zi+vCpLakhXbeJzgc$=&vi@(MpkW{LUN;wo7ZY}Nsra>0_F^yk&ad;@1_jdD)P=xoo z3dej|xcdQ7TPm*}yOArma(FikIyAmwaut>w+Ud1y(~SE~7>7ru`BZPz;T!7jC?;+l zPnd&p?ZLqbKEXaOZ-gYuHrk-TWYmgT#}56`n*{JIB^ny50!X&3)VV){*p-)FCLthx zh}3TggC(EO z<^3|c+*%?7IM%ZzG0<7uMplSv5cv2S@XWBl?I7K;P~$=_ksHbaiIkLKw>15w&&ktu zI?c*R!t@?RpSkY}v(B&#{mxpdKGczg_g$_7Bj^2S58mOYg|D6u?r~I?4#pMX9vL$6 zhcH^ocl-5oxMLj7@cl-Yy|=SG2T`|wC6ee>KoT~c;FDOg6)7an_NXicYt(t=TNOT9 zO{-K~D z)*0LnG-=BzjK&O{W`Y`wTNy>;UDgoc(jv&*QaltyKI=(NxApPZo+vJoJg{Cb;VabW zapIUtsh~7aebTK>399I=7uYI8ksDf2&$Xkd9lwupN*h-Q-6IsHdv9Jf-Bj^*r_+Ay zrF8ts^C3Bc=z|J5$Qfo5w=dvF1ae8p4_QpI08lud@-)lmEEn^A^dY zYG6Oh{(>V5m>hKishJ@vsizDzN!Vgg%_-SamB~X{>O8jBem<+}6lJ3(`=`jh$U!c& z-@~OViPy=zD*JV5PmkcOv@t$T*|9Yx0lw>}ObIw10@j<0OQ{0NJ1Y>_R0MQF?n@$= zQC8WZ(VOhEe_+uEs)b-``R=)mibIf=tdftK^s-#)(2wp#%SoUAlELI>-Emp+;qlz1 zpj&$*ZnofMG}YH5v*tB=mKzC}C5>^Ug9WMZA8G7~oS7u5p7jRF?Sa5o$w(*p@5iDF zF+yvKtyG_pBZ^EOqDNElL3w9mY{VcC*QS~sPOh~?qBSfOc&2ig z@HP&E9UGf~@kq?BnJf-Eqz-stN$T_9$L^D3pm)#VA`p*{YR}o2#dIyQ#HXr7*>vG9 zQm_d-)mGa$HA1|e5Y1C+49Q4`U>7K_ZvELGr#sd&TqHbBZH4Tg;wA`ShLu#iwzQLvtKy_j4Sd3@Oc(0 zh&@J0@t5nRMbaa|Lv1G#S*q=XC~0e7aPn`9DA)}j<%;FwH8KVlMOq!&{Op!Wz86jO zh^#07Vbom5o;@jy7mvwF56iT-n#|p6>@CYMa681*US(+8Kg1*w>?qJ7C3G?QlfF_E zL9}1Po?+}dq^WJxY2%`PB7=7Mgc8d#2d9wf5=WR)XgjS?9o>wd7Wx)lwXm7zgkvMH zV3SWKjh1@H4(2E!V%$2~K-9V%^+dJV{2(Q`d_a<5#=wlnSFvqB$Ixu5doW);y#_WK zu!RmKukiC{+`5$(ZqT-bNPB|0&cmi+N7%cUlLek4T0W>B+B1N>KM0RiyyYo9gDRAd z@$rVc!eZ9Yqw*uySPzJ<2qnGN&{Nva&E%jSmNmEi%mWDa#-E4A&&WdeHfT5R=@GPM z`<{MGSToW-VZ>s%5#2b~!3RP4D)&@a=#optR+gFO(Js~;cP?M0sGTZ>;9OUIZu;7Y zF7~LoU0h^?ve=QCxUademnVvl(Q9eU;JG1M;@4&fcN9)4@npo+%S4iAb~5QW3#2g0 zZYgxRXZOWG-1^-Yd<)_BTz;KS>JAa#CF!ZtK5-&3nWZV{Nfy5>jcvh!!QBM?^J8M1 z_#m&u1=EAn-vhZM!nqY_C2{2aGT1okZZ+vz*hbaXAN3O!0#t%TyhIwlSal9D4BdY0 z_oU~DXw`rrEZ*$FSj_})0+Q5sdCa^hmJSL8^f|cVJj;D3<(F4FIctO(D)!KRkC=fe zB|{F0K`i`M8#2ZML)vi>KfNte`bz>GR_ReHmqNzrY_$b?NbGY2^w}a-lSWHC{ML-1 zTGihnVsCW8nf{(}Y;>xzjPtScUJ6)PqPoY~X*M%!+bijfQ6%&WRayCP6c^Dl3+u>ovlJY&cTah|wtq}HJAXYptuXTW z46~eJ99Zaq+L5@6ll`I$@tiKyrLpz2z4HjT|C~uy6u5RJ4tBMkdq{qK0jxlCCN9(O z92|Y_6vYRmDIL=rYWj2L2StJ1)|V5m7zSQ5i&D zx+u!SAN?LrRQIfmep*X3#}iK2jy^6b{*I1qMEGxw3bG#~q7$cVCBf=AokF z8J~O(oMNyQ-)V~weuz8MG>iunsNihBr19Ym&-qz8hQw)c*Y}*pLzw}$1vqhHE`r)J z2A*oaD$6Ph!c&!rCU8Z8kILjj4=EF4>0XQP?IWaHE^7{Xo~a>E)2GQIh2Pn=1#)q% zpWu&2wSQ}o&5zU{)XU))N!9SHI=E&GfHuH_1<@3d!5SedW|wKZi}`U@kSc;Aml66a zSwGPVQO}ITd$@-k&-Z|i&9FW?O5J3Eyc{9w<1jpR+Cd5Z{S7cy{=Bc{U}Gp@al*LC z>Ko-&d?X0m!Z0_QR@;^<^G*_v%~LoHgct3A$zbB6x!j4hH`s}P%4E#q%Q77b{;_f% z#O8=w{yn~)I^DM*RlW>D3=I#mP(o+3DrTKhhh$=O$lS>><;PGTiCqDkdw5fzsalQf z^U1K85?jX7#&l5G=GNSA8rG0B#>=8jU!A$Z8{MUKyXJzF-(Y7&839Xlx`2o)tiFT7 zJ%=taxT(Gg4}vzwS_@I_v(8|s+M{05MSTHt&-&PuBp3MymNE`Io<>^rDc$RY`kBV_ z=IdT;#T!x>ZvjdS+4x`$F`5|!54~lu+EPe}`x05Io~U(t;&owcCj3J#XR#1*Bq>bi z`byzZO>?^m-zwZ-Q4m520t8QoMm6$oVKf1W%NF@~uhit4jGzGIMJyGMgbWzZsEdkZ zJ1HJgi<+eTnD#{PeQ$3pXoOl)5ITJ*2wc1Wo7cPS;u8f4fsIKqqsgIBJw`GHmEMR+ z7#X8HRUR;#!;+@UX2Kx-9M91VD9 zjaGe|r}bDAHJlv|h{TB-?ckWyLXvFwv`TO|sT4hX4k|_*Tc8F2C^!GSLS^JHl;UMO z*ELS)0_VF{OlQR1Q7ijtd+5^CZ6$&K)l;ng>$j0NWgvU<<>QLBdxznhhV44&g7(iQ zyW?p?r@eFIFH>E8vEQx(o_v$0W3`Y%_b$>`jBDW&G6M#iXN0fCkstfB*B#0^b7BVR z#r6Tqkv$# zfLm2l7DLrS(_+8c$CA3b*Al?OHNdDLMy8R%7b4_fZJvf{!3F);G?{Ds!-*A|mdAMi zg6Y-)p|#CQBi4{loF|M(nLz+0K4Yf6j!Z0f*Z%T29Pe7uHK4aiiq4v`JuB`Ubzy3? z&#-3{A{%Sa2x9A*7ebY1si$-2@(eXqrpbmDr|TX}DTKUsj<$T&Q`+0&lGyVyJ>$#mfe zD-&6NkdJS5{N@>588Dm>#uNr+HZr;B@mY+?OHRX2w)MWqRMx)#kHO&ysUb1=R znG7@T0*{L$2*GNN?6Egf^84;wa&IqWopJ?4`CkWFwS|h36P@afc zmVwr!HV_7E>=4aIcMf&ebf!d8k=OuULhKEEY(l}1F)Vjd3wv}>S z7KJ9Q^Z2$Kb_3lpfS(wCZuzi&JM|?_{VjS~&f>5##t+v;XYs-y4E_!U?xC5}NPFz~ zK4f!(Ax0CD$ALNLkv@7F?8IU#Vs%dU9fh7ywK7OIcadhLP<8Fsvv=Vw5Amupc7&AspW1? z8t|NdkSgY2-U1x+m>HNIaMLx#sSp*t*NaJaDAP!e=DLm&y-q;HzzKvA>)Jc!CSs$} zMtuTmRbudQl~8l5AT%%Ktu1(5s5nE{R+}W^+Ya>1nN|nKYHv9f#Q5=$J`HTjkThN5 zkxrATHVvaJAiF*2;$)(?Ww?zvI*;7#Y)FEj!VhB8+&w&7Sy*56k5!~b$b+kIB?}#5 zwPQ%i&hibvb|qtMfxD-^c5-V5cqTH}71#&wO3{D!%&gr9oHNTLuS~*3g1hZ$5C3!n zeGr=g7Hqh&P}x19^F@4sZa^>a@LhaTR9tP0Z8yaW^mT z2j=t9HIt$&U@G7AM;6hYHt*pslh<*Xg^8@Eumo(gFFjaxhG@%$w41bqtJhETaGCe} znV{`R2gi)W&$!->bjSnNqFl8Y;x&eHLGB#0?2U*0TWsO?BzvZ=XEXNQZ0(iF2I8V0 z^vHDtIl50zIdCiA4UeG?;1QiztV~l{>lZ7XzEY3=q{AYB$U0GMJ>s`!Z|&TE$Kj5( z+UBJupCyIxkoUHne9)B7jr{0Nbyh4CA9qGEL`ZSt8TICGZU2LJv(x>8%d>j6 zw9KSMp(T%~@NawVNQ(UBHmsohI=R70lRI^`lx2W~yeR_e8{gzmj?!Vaqu}MTw8yi=DLs>d!ZVBS%Fk8}6-oB50gafPZ`653R(j`}q0qs-= z@wr$Y9=+`ZgKjY%<$o1gk5K4Ao`MUz9oDi&0@dS@_D$}f*Y4U--DoIP*ebYth%;E^ zM7=B{1pjZv4GuteoBI1+Ur)d}(w&GHCzd;qAiw=wmjl#L9EW2YwJ~a~P>-lust4`# zXw4M^yPzp`D*}8kveTNS%}~_m5vp_#P3YAbFKf~cMbwl~*ave7vg~ASV5S&F(}`$M zNh*ifTh3s@nK1WCG`!*RU1hniv=);?wu`vO6D*_15GyMFO!?$jr{LVr6()HtLoDvH z9EfWcp!P{nmzKV(h|muHP7I#hLq!VEctR7x6QzfzfOQN7mm|1$Y$GYhF;n8FVr7DX zGz>MIMGwXFnUe<*WtXiyujTXOeU^twKW)4v3_bgjZZRLGcSuSQn4nM(xrZCyG8(Uk zhvBYq@@K9|4!Sz+m!*@1t#s?4E}0T)SJk=NjZBpnwm>i)`yqcVev~=+xeFAwXePZ_ z0ys@5H4In`Ya}MyAWUH#)^JwYFbo@_VsR)`G!bP` z1rqIo28ug&6UouWfI1b`ZW)69{Y@n#S(}ZVb=wIGj7BMDa9j@8)v6GRYfMA1Hw{c# zz9Z6TwD}o^KEBJ>FLxWxJ%7?Oj67T&E)5!D238A`3wAg<9Qd~Hhw)3_3L~*6qep^1 zKJww!r1YDWD6j)LOp$WezPox-1cr!Jz-@^+2tC1p@lEa;%+b?5d?$J+VR*2=FMlv> zFh4tHGA83t`D72kjB;~5t`b9KOY|z27FF@z=c37*Q}SfGofsAKjdCNIE%d2yY>XiO zGsOJa5435#{#IAs0;F9AmBsl{9hosP8w#Z{cHoSKuTIP}Q@N_4+o;dE@ieVtjrH|2 z9u94uA+GH#PmuKJ1=Us}*7rw3&DI!*4U^vbiWU(rl*d|pp5V|3{h+0K#z>YuXj3mGgwBAFDfAI855Jlm zhBzb!vh`fZZ%g_8dE`g$*PFhf3J%RZNXM;LBx_jqx)N_5LZYUHnWXADlN#Ael%R?};N#JQ!S(9k{d86g} zL0j?9ik&NQ2sEO)`Y0f(=-DTu=1G)-gEdhqlPw^1(@bw*PiciqJ3_r67Rjiq`OP!k z631ZY&`6os&;uwiNZ~Dm=Xpbi%jOFaK4m4)B6O^NPsC2xEOk4k;x+K z7^c%SkumSj+Ow+yn*I^CB+|n!yhQmJwdJNdY+38Vk9QG`2n3C}EXr7eLNmNin;AxW zLS$R{kQ|%$uT()1nf_Bwe^5kPwtrBiSel{Ce_6)wV#7o-{H-Bn;!IMQv5c0Jj%TN< z$XCrvL_)b=I*UQEmMkg#AsUY+$CQ;q z^26tJDWY-8!f-;iE!LRKd0fio>zj<`jYS@GzJNdbyyMPWes||eGd8oH1vX#D#fVX( z*-(jmM$h}a{Ls7wK}vo%d#8_^hEy{CO9yERQro=;En!B zwKO`{afbY9&Kn#jRRIZOt={o*0SV*=#f*?Y@q%&_F=izavgPROAEYyuzc~&FmcE>9 zB4{AfW@w%gLY#T0zH<7FtXEUzwUvYfLAfXGp0ZD*E9UTR)u5!ke7DlEo0nJY07uv9TyZ2OA?By)WyTz?7o0d{cC5Yt z-hpbsxVH6WW13>0m*{V4b+X5Un~vz#j6=O#iHp1>?OcF4HB+PR%TaEWJS-CWo&H?j36{+o8L3DIHab2*v zvd=3Ho;BV^EmqUEQosztZs>bxQLt-iu~R%- zEO@m-GHPW42zH+;Gnz`b((!xZD^$B)N!wfL41ScAO%ipF!j-wxH=dpT3@$0zIvdY(9TP zEe5sGs`Zv0{+`c!@7yr3lC$8V+6?hlYgeEvjT+fh`AM~xn<$G>F7H-8_>KZ#W4!*n z?@M;@N=AcH4oL(yIH=hM|L=iWQ5$0Vh=RbO6P}5Jn*C8DSZln4MRIV~l~%0?ZwkRYQzU$-w69!1v!xelC5g=3Zt89*x>^p;=O_*v zwyBbnAC|thliik}NAzqLrG)y6m8;G-y3aOETcI$Do`9!A*bzDTN&E42xYUAOf<=e# zCLsBfw!1><4`KyqQ?e|uL|b&-KmODHp6LMNGFS5k*72vuxHk^l5oX88Hm&gOxs*gK z6zAfH%`7#lhjBYF7>TGS7+}lK@izo~l;AtRO=IPyGE(s}m_j6q7IrnQKhxRxwy`|w z$xAX0CJqg&<5?M7^$|h0PAD1ISPaTYEuk6jxi3v=Z^z$B=%br*OFeJJi$>lAU90ci8DX+Pv#~8dHbzaNK zPAxKTjkeGuKTUj*I9f{f*Z}3r|JkLP{xG54+q=Wv_w%78)_+D-!}A@pYjvaw9br5M zDk}e7vaPRC8`pE}f+^~hA(eM|R@dJ%nTHR55*HxK$|n8a3;kR4dJ?@|qjP45S6Ukp z8kbBgx_VM3-y}$0FbFxmx5chw@>Tj{>#}#_r+bS_ji}N)R}!|D9)R)1FAPF>jC~T= zWa_XVuK!03nTXn8+bZCP6-A_7Z|yn}4X9}xA-eVy7t>X{`+K&aFfY4JeYq_(0Hu9X zET>1fXW02yP|cxyBZVVvYQIL!CZ+#esDYU*QA--}TK$4iKUwIDd=LXSFtM2sFgL4b zmuJ<6roTWN|L2bIORtbETFPgE>)4ljS7;$|ct9UBQ2r;rQlWya4HQVkg3y(z-OVv46M1+kFU`YZ;d^0JrO#6Zp zWO$f_kqh8ONh1i@#y8fXiTzo!B?|tp2=#w9^LngE#*b+~voqCp+@wh+aurb%wWlE@ zyaK^oIqHeA*xo^u2Eo11+sFX8ZtrU$z${1TZEc1KFv1zQGRPDPc&!k6pygCiQgHkJ z|G)~sXqW)Y^+Yk2!J{@gU&D@}Y(s4uaRT^uW;BWIE9K9@d&F)T262DhSHdj-M;tiF zb7u$hL`9LyWHlc~0G#aCk$6H;6fyKH z2}4e{fd4fvrYI-F*~R}BU^pv-bzCT*fpGFRLnJTCywjH?fyUF5WLlYkxrhq%rb=hf zbsGa*c|4aiW3U+AstjoUg-WBmNN*Y>ftz0QcwVck%}yrrO%mx>z^Exl_*;*Uganp` zDEUYXChu|s_2diPf8WQrL0YK0K38R8qf24kzF zbgXb8rKVdMFg%5*pg|%3oFoC+a2~hwHni|_AK*|b3IVF>0DwLJRqfkt7s}U~t-qw0 z0Z_&EZ9n@9GoIsI_jpF+H$11V)AEP&6?n~DK;r;S=rIdel>bxb)Ejnl>2O9*uKagv z{oAZ(WW5!cdhJSvuQ&R3k*DEmo^dA}0gj1!>Xq_ldg|Y$>HuAoNBi|Bm?ok|gbePr zaU3hZhG(e8_8bcs3ok#p3N$Dwc!7BbAfs>wh=hRLLb|l@)ex!?DkvNGV$*W-Urq=o5D0@ETxGAp~V7JTRXc5Ck>PGPWgTI27l?KRL z70p}O+DH~yMGTB6n)d13#%n>Zz){_j9zt2@ zrPLArkpYI|nWfaJc7HE|_zE%_K>Y0AFDNT3xRL$;tc2L!Z3z;sW6pfP73 zD#mdtyM}KfUeM&{{$JXCeplQJxO_}D4o#sD$xCF8L8lwCZB-H#J5-U5?=S3M+w>zT zZ@S^Qz7YLjtFQlcH_eY~;Bs`}Yx54kU!VjloM!NV^*SpG;UQBm4}%DU#RE_26Zh{y zzDIL#To@#hqXFL&(ZKJRdvH4e)4yj`g_q~i_g-kB*_D-c#|^G)-IIB?8h^L{C;tbg z5O`LT(L$rtY%6T@*z~94ao}Z?{2}L+3PoaljzIRr_SkH^<%DzJ%f#B;_TQG5H z&Fo;1VExeBuB$x(ZvYB~^XFVy$G|`Ih_Oo_WKVP9Q#LdNwuAeuVbY6Q2uwfVpyl|Y zipPV8=VmpPT}J&2X!rr#$Izl=@`TO*cjz{jDx7ed?kGHy%o{Fy4vlI$L=SI}#zE+5 zM>#_XCpH+`fDF;|`qj5_6#aC)E%-J{&iwO!p0mCOu(Xkby3SX-ddjaZ{o9+x4mjFX z!vmxnpv(O)4(~WA1-tohkb6Aec*R49{tScuFg<*4Za`?k0M-3&fDiKkvwj;w9Ca@l z(hq*4EJYOmAN*Gx=JzhcG;qI*V?_)h?iKP>>Ngrp#Y5YFAnv`v3w7K8TAqJ2reOGD zgi(K&y_1rJ$B!`Te4l=9a@1ddD5cnZ&QKETogoYdS1ZHNE6cd}rW!JT?(ex>+UdVf zpZ~nM0ck2qkQPCP)|tm_XtF2s*`jSu$hWp1{5;-l)PQmoxqB7w@WWML30Q&hvi?7n{@h5x_a{nDaiV_EsTd z=V28n(*f`$-Bv$N<``|N$iV!XBSzSI$>+pvfZS8+>;3g*##A~4dmR!F1zyUhIyay> z31#}lQCj53KTGV54%d<`XjHaYa{xahv!i2?xN(4av2fY=x)aM z*+0EX-|oqor;qP1yl+q=050)L z?pQWG$Vr$d&V0tvHGD}omEI0N77(m_YUmSTV$v>7?dc?6SoACz(>yJ37YJVd>$OBX zAvb{H!<<<>H;jOSN3W+P;R2A<8MlA^SgacOCbRPeOPW~lcs=3k?^)euE{9E<^Jf6! z^E1ixj+c9~EC8`*;QD5FrNo5!=f*V2Wv$Itm!}Z;>Fy6twDw7U@&;(Ism8!m;CNGr z@`iC?hC&i^Bf6-ajZ;R4Mw=)1{}+b-&r!#Q7%YWpTx}5hedcQV8>+|Xm~CgD*Y%mO z+2fuN*ePNZAV#w%8K1pAM@Oak1C9|UN(QrS&vVhBD-=RK%aY6^%uPDGyLOY_&dsdX zakDFqv{$;;X@cL$1NOO(0k|V3dT;%t-`i_I7Jr3|25bU{yutx=)^ZFcK#A*lF@89d zN=^ehxVA(^obRO)>JaIReSWzf8vBB7$2*R@~j)-QBHtvEo(= z#l29Zv_NTlviJVaRj%?xmV9%LwZ=OJSQhF6VAu@??9|N5rN^y7)6{z2YfZ%&rI~Cj zD|NN`WN|J_Odvuwg{;gHej;fr8t_GXo~Oa`baWHhbDS~UjSQ91q*{rSTw!BjCX~LV z75V_nSdo)6%JQzHs``}Ysr9%)$mpTi&Y)>qT+fv6=m2AB&&(i9f)WWb@O_<&`!fkA zC>=>M2e)_o6WE^C5L+xj`%JQz@;h*fa*Vd35>Bw^I9z!1wcZ>3OdYeDRO89X7 zmPO=aC>s29+5LoweuD@=-QNXCRe56;tm{b`QmNsWT_Lv!^ccFkE;&PC2)Ea7Dp{fRFHZ}(*?LxNa2rC{m3Uob6^0w zI=*}JQ8|B_^)yjyPXo@NdPD49M}qtHmx`#gz-b<*=OZM5;pZKjT~K+CoX-l}l*`ie zMgMsf&G0;%wJkkDMg478@i!lxPjdKP$8*?+A|KTQ{HHSbb`$Tj>cR z$Cua;Mh*f1Z53~txeF|Bn#xGKCH8F?I`2M<6&QG2YJOJ_-u=!=0v#GFwT5hvi0oQh-vqHJAu7sGzPQmULQ z5aY`C&w}RFBh`WqH_o!-{%E@FADO_hNUlw~5FA`+Y~4;_o+$N?R6vO(xf?)%Im!C8 zFz}rQUf}sZoVA#AIgY}^A$Ga~ulpahYgCimz@>Z#H#=>NH?kFE*7y7z1?2CpcP^S& zH#hA_eDyWN*JZ4yCfIu?=g*^KuvPQXh~BIHe?=@f8q!$&o_*`h7@8s6B>gQXr34OF zgm)!dLnG9qZiK*JMMdI6?H{W;Hx!(Azip;TAM}{g1b*ZD8|TyQhV6AAV!C4iKJdGx zd`}rWF!|vznI?MBil$B(5sS~`%5%=c45vlcRK{V9{@02AE7wk62#%UEJSEVWfOLUI zm30SVL7-0ZalXc;f#xl;p;OKlKW1Wuj-ADhI}hB3KJa~*5_YrTN#)2#mG~dyB6#bM z25zUWN3VF`7fq%yfe1L{Fy}r9_*Dc3=7f%4$aHv~z$BQLrfYyD|KLe?G;TtbwG0Pn zHOHaUZB*-hIU@hD4Q?wo9Zt^sT#eK|pDV$=ECl&q$rBxyKdR#z3%FC$f45aR4cSMg zO}#~}O{Q;$06_IuWchEmeD$%ax|4m+st;2H2pToy5XBh1X24RS;B=Nc*u$v&#xo{R z@`VZM^r$-U!GihtoH7WCjvx7P2OTyHEJb9Ai;tKu`v~Hm-7P@MYcTcDQ)W5 zWNYu7o@y7|kJ9X^qm#~kDBBTgXO{fFO=xW_8=70yy~6R)5HEZ4j8Kt^{$-+C1-|Qs zkV`VhvOCec!0!XHZ77=L8v~DZX?1!XxtNXA|^RN_H|_32vTYWux7G*o?9!mj&DkCBeS=f19%haLq;zXIr zDu+y7t)7F$H9sxFfMK~-#wAok>#Y^p#O16dk4iY6?(dhE5g8mwJoEfOb$>_MVtofj zjLn54$^|5_1Q9r2)*In;>FCgrq6=Y?KuZ${*iq~8#7zX);(Nu^Yog{WV14!YNSzrc z%dr#_GZQ(YfeXL)e+egNO0C&UcoaG(mkxFTQWPuBnVd5h=_@0uZ3yveRwt z=`)U>>IF2AnFYaxh)9^Blo9q84b9z0A?Z;g)8&LL*{)?|-D0774MJ56boM+9=i^`A zRTo5$#DsyvI+mr?!?z9-6MrQ`phj%KVss)!CR3KmM6H~A=5Ix1gKur8;Qf1C7_370-$)_vc9luhg zBUykU1_Q7{6q_7wRI6(_EX90`M3v#@*F(T0U-*U;8>zKTk6 zjLo~Khlu525;8eKJiRm@VvjlXJB zw*}57j!U<+s8Ax|yzO%N^7Vblmu`5N^ZUn!7NbdYJW|UgHtjPW1C1%Nc-o~@Ye(^y z+&&KdM)#ULp(X=2oWNMp55NBY#@h+`fMGOdP1R9gDE{fOL^i&;peeB68D4n}Fb_0qB#Fi?WM; z<;igj!zC(Wx3b5zNH|ozZwyc*gD~_=;F9F@6TSUYFcmL)Z35?-?7aU`rWPefj`uhk zIoSoBxzA$Yu78>X`VwD8N=!Pjt{?yYAsrv0ad4V|E4F^-R{g@mC=57^|H`LuF#^jV zI2c|WnNHjP2Z_602#1j%6mNJw99JArpzuZAMW&}lQsGF0b)jjB1o{kWDv@}n-+BZ*aKFaEklBmXm;{Z|Sknd_E`FAP@3ifRa)e=do8M z0ymRISd)T$+I(UsYa39yNdH=}Pkrqj!dPXuah(gw|j7JYA6) zXv(hwWF?qoxQk!1+VDbb@_~72<;Yl;_E_r|vZ*9%XQuMVlcMBVy-Mdy45Yau8ItpI z^WbX^0%{uCeS1SRggTulbfV`nmOw+BNe(p5?h>-UbtM+H%B4E-iS-oIKV+ytelqf; z{4$?y&5*=F@l;@pb8mrAI$t@Nx`k81A@ryYs`sJx8L~1d-q$iAjMKu~+D;@pPJ#8y zvSNp4#4nuzYuy#P(tT!&bg5qkKdCN9Ln2N-4t#g^Dk&Cr3)^pajBw+hP*P^)9@i2;Vz( zeW(bssfeG3J3s%s9$MWP_suMx=Oz#1-6J_q#w{&?C8N}%F5w>+uJ+Y#M;qfrMF%OK z7xd<7E*@Ab{W))_gD|Kh98`X%_5pMgbq)gPJ2ra$f}&XPvAnPRVn)JF#ML9v!LIT* zusGTAq#0%wG@^!(onB1vfpdnH>Z17JfxFIa&Z+WkR3vh)QmXPV$!1B?F*EGD_x1N; zOufVPUY#0Rvf-fD61Z{_OWVwF)e2SDU5~(H^&{YBYt-9uv>b!rmuXT@Yx0%T(-W8o z5km?Ruxy~bHvDc$U&fo?b-P9lDu3OyjG>t|Yvm2Qz8h0^p4?34@00Jetz&6BUIB2d ztUGQIlrFPjbI&0>r9zw8b03Nf5QROZXU+D?c|hJB0Udt)o+_lUiG)5;J&W?z4etE6jRj-e4P`oeXq`>w7pY+U^<9nufn zpwgy2M*?ik_MB}BVX>_-Xu_==9;?{ZSpYR2kvC^M*{ZOdEQFMyb3kZ}d^*5Lj>vsA z_CNAevrM5@4(EyR3Z^TGg@|>6C{t5cC`kHE8^$iSSJ#+3MK~!AnWbWG{-TDtbqsR!=WIPd`@(sC=`sM_d!5HB$Y|wg0jti-)-t z$baOwgXO498|Zv-lmZN?qA_(m4SYHnxEcPf;QL1BMvQR=2xr->*tkf#)E;hF`DT+t ztDQUQJK6b~QYM7X>;Phsp(tU@u@$pYFW0Tm>G0tI-xPJK^1!Qq7qK*ECnc-oVKa%L zX|~g3YPjk9Oe<9T60FZB=D)#9cD9KN+SgjwlW1d6MoUTC$*D>WLroi zm(IF$&ZGMl*h<0(pGJ}}?&%?D)Qh=D2_RIuQlvLkmIJ}%491byp(D4IA%gVg3Q@e$ z#Cl9MydO+vXVE~0LS~xs4{-^6VbCAmI)=KdnPsRrbxB^tZDOctt|=^i)4WW$%=w{F z7+{thhszZOiYhI8S%d1rtrh%FO*%dfsVnj8AR>V{m5cgfRzW`g%P76TLUM4qY9PKI zH~biR?OLau)aNp@2{@dw_6=e|Na^;3xAT^x$P#Hr=$k!Vk=A7YM>Uz|?5o|s9Lb0| z4FL{}<#~0z|FVdiirs7Vn#}Z8b@L11-ZEUoA#M^9*Gm$74;J5t(=UEV6|C7HngS;3 zol`CzD}oIEyEYxqvu?dswR-NXoyR2pMQkrTb@!7ACWR5Y_OVm4TQVH-itz`PIak~W zzH^7ZuHj`nVM(dThmn7plNKg}er-l1FRY@@Cb$5ai=!#kd!{8qledX-bo!ec+!1jd zjQJxFU-!*tAp`%FbFFXtaB8?ERhpvYYE*&QSUB_O$O z2)w;M7}=XL5iTvh{3(J@(SFPlmzl}KK$pg!@I8piJ=8abQXS6@EQF==4V&?pYeccwPOrd4RluE57w4ll3svM) zD=D-#uTr!|RRgDx8;+GzW66|*3 zdS#9kE_{O`;}~5`sia1jjrAhO#>XC+QbyzBVD?_f;8yLgcey9KGKM4IFY(QG?l<6M zZfYtiU1}Em@D^3Evd6~J7BSJg#za<$o;qoyQn110XgwQ7 zb#}Egx7+rF%?M)!D7znFwcTBj*F}k-eW~gaJX=)+BiyACHQe%|p+#)^P3Tc@0I1Z~ zqcAuR{rg_g=9{)>ROu#4t1IPZCq6RAM0R}KquYkRqHCiqJTY>+7M(DKMr+%3^W~+I zl@Wmx`86#T#LEr*7)_99a6cr#L_~6rQZ=CEOF{B?{UXKP${Mnrlj;gl(df5rCt+?% z`1m69gwy*(LFXeZk;r<^F}%ENvc@XM;zx^N3ZYw{nfFru)nx|aF$3voB?TsrGZGSG z5n#ADs##&tDo_#a`Lap>O+q8uFMcM8p$3Y<0Q&>zPBEkax>A004 zAiX}{2JnRN05s)6y1NQ;;7aKvd7yLHIF)M|iMq^*$QD@)_@6|7w(BV&8ZaV4KoBA) z3$pjFoyDlo&`QKLDiHx`Lx4R(s&T;RWPQEn$lL-t7$OMcQy8|Srwkt#$H)CKdQW$d zN0S?Kb_?=I>Wq>0hxp}DM|xfx9Z%y-2Tp5lH0CS()zquxj$}FJS@ir=C@tO9KNtqi zCs~H8t#W$%L(csDLVofnYzjG9WV9Gu6@Uv6QRX}vdom~wupa}z0 z0-1s5ehbQ=1qs>Zk+y)oHvLasw_82WHTbB_$&i{FcR2;sVX`3NB`cAIkL1v}5&g#!7;y#@uINV?Lp|eT=$?hg{v;kK8@k^QI zT34xXJdQC<9Ketj$EE!V*^CPN9dn}vvEHkDT&8vQe)^p=HOU_;LLk>4+xx>*`l+Pi zLZa_&)(cZhw8EHPynZN+=pQtb^>0)ePpMpK+$DM@&@^VqQ{CePij)W_CriX9u&O@1 zJCuE+B|;e-8qs0-S99WXDgy2vBZB58O{DumE8Vem1RI8L3!g+vHR@M%CG;?yJ?N7Wj9YAb1|Fa>WyY& zIm2#ic&I>N!;5kaqlsY7Ouzf|-Doyv{IX%gj3xh7y;f zdX%~m(izKu-?t_l%F`Q)k!gRf0eh&8rI+4DL3`c`P;17_QcR2`jQt_I&Hfnnk+-mz zKWvJd8a3$>w{ShHVv{XtUZlg6>(#Jc^9TNjm^PXEK2{`wrOCOquUPAXF}63vZND}l z0tA{%Cd70yvC|I2kY>~ShC;ELyB~|Hg@wdhslH=p*d%VL%!kMyJwk$uE0aYiO~kkf z$zY@gMfxC7O*k;(vrT?xE^CB5!y~`W)N^##cSn9-xRw?u5#tl5x(N zFYWiC#rHP?k6z!ezn6)^b07Z$TG)Gk^Vz9sXi@S8G3Q*miL|rX>rTP^o|pp+t=0>a z>;3n~Y(y(_;RkcaRkCwl>`Kbw@0yEAcqGr&A^7-kG3mxhUJsyxiwmj2g}AEGL0E!I~ea zdE|GDGTl#o6}+V21(V6@Co~}{qb4NsHTD{c;E~bQK!xaaSbgtMcngU)!nEx)TVO-T&Gd5_-;oc zoHZOZz%vrLU%UEPlgXSbw3Zu(AqJd9y;9Fwh4RRE+^LKyMxuSgjL&9ILxl zt`WOoI$Ogds(Z|MfvY-~bF|doT$x+|h(@7P;$0KN-BAQ*k9zf_9ze{Y#SO8~GP%mu z$u$C2mgY_8Cj9#tBV((~d4jXrKH`Y9NckFAb~Hu4n*H7p9+hn6I!saeN?1J%r_A)A z>75l?gw)hyig1VM`28?mAm;bnE$!d_aXB8!@YJt zP`jW@%DMi&{tDDq-_L|fKDfPfJ*!2waAPCpI3^)_+XhU>*DIw92qWCRR159UWxwHQ zy7f%z128gKiMmR;j8c&!TpX&ER*aOCM3}ixeg3oWDm_z2a@s%_#h%J%97?Z=!V#9Z zG8B)D@F;?d0M`0lhT*%l)&595Nhuc)&nttx9WILN&R8EQpRi(RN{z$dD`V=o=@N~~ zJjpjYT2<^LP+EtpOHd`i|4XV6gGWIjQ(}52>Bi+3GOoRbjCv2l5(9=3mgBpGGvLBG zvxEzApS8y-qefNx9Jn(uPld4E0>kOnQ{S`sgN&XbR1xQ#UObQCZif1Ipycc1d3mcf%q#grW(VpfQi{{C?;ZC|{t_{6I`%6;PA#<>K)xW?$Z z&5TwDdLnNN2T?+?SYdP}IyyS8zk>wN1{YYbRif6XWCr5`sx6$z6rWT?w zRGo7WftOTzQ2e8TzN~s#e1NYO8|RZp>!YOJHV5yY{GFK~MQK)N#Hy4ZIqbv}+OjBY zdXAzEvB*e6jXKplnO9i$y^GJ|Fv}YS{Y=-Rau%BC6{dH!tVyUu*DueV%{s@Bpf625 zuwGhxdzl2>G-BPgs?r;xN{Ev5`y_*Eu!7NdWjdmF2(i(Z{^iYT%PFO|fi>c)Q4aB2 z$rbDCWrJX2nIvX&cxw)#+bh}xON2{%`U&2O1VbT1XIXL~+iN?MUt!|N-3oLygwR0;=`6G0@6;r^rsdyGesBj~ zpaAD+QqRwR#0MDunG0}U_xZjf{xUiA;ZMV#kYA>!i#v?_xR%_M1as$w!1r-3rGimo zxqso%X4k=%$DUJQ(gduD`)wNU_k6YySBrf!-_N#^4sYK^fBv{1_)+}pU0O;IfTLpg zu>>1QXmw!k&&{EO_)SX4>yfr_`67%3y6`ABqPh?(+%Q!`A*4j=WXMI*O8MoRaNxG4 z83RvpL8sT5+SCo{@GZ*5tzvQg=1#kjgnXB~?C01&;ZN+rS-~2?R>9u!g(wucPxCiF zoepvCaZJQs-{vh~yS`GNQr=0oU|`O&q)@@w#+GcgQxWRvT=_f8Ckf9RYIPk%?>Rb7 zIOWH!D~SWr1N~M|P9R)4Nna33V0Ui)iE;sU|q#E-=L6xd_?5994jHmWwHEg;_^&+Rha^jA8;LJP8D|bvpIfY9VS?h#RRLEBA3JWjkBBkR;^sDR~hioAgU-N}S*i2hbA51c}}&Q(NJqA|(k>RN+4J8xI>@ z_U{pAAuKE{bzHX-nhDagwr^bck;v`#uWRV0`C{KXK(o#_s7nF3qG&d<+GF}q);>;W zVBcE#oQyiIsR=GGBGT!&ST;gAba&6%R&CioL_w8%4R)!r@ZL6am34I%oR?yxy+QkX z@}g$DF6Z`N0v^d?Q?O=;$@!ax-(~@tJU_af;q#G(B=FBJXN|c|+~4!9-?`(%${tga z4rf}&9%Z@C7k3u~y>h8QoCl9hg#;Y=Pz)>6@{uqMR#3k3a8h0#p)!HgtT$$dv1SJg z_9eOsPMsFWO?zD3z(;6xp-4P$SKRj-uXTif9@2c2e4ZSBt|{P^q|rh+gq7(GZLH9? z?#~2R4zHV}%{0Ek zMCNL&wO4H`TC_w>w~QT>A=QqLZm-2|iDn@eg3s5fhD~&}C86aTkpSwe_Ae&Fy9T<@ zPdGbj>#ls{_Cxj9;|4~xwZ^(s@+#0ORUvTltei=XkFpNY0#}(;n6~aQp2<&#K#w7L z4bg=GGwe6u!sSe|Eg}B6usK&vWxNMBDA%&Y!WY}|nm0TBD$#-U#$vaD z-$+!U6kG4@9M~h{@Vz1+Hw`D=wr-V+1c2}nM|@sF}4?4+m3Be{M-kSa~zM;M**BwAAuL zfW+QQOVu^?1!1zqR&h?ia{{xy9pVB)VD_`_hDNf_VX zXw>BTRvB-4DW7th=Oz2Is?K&_mpG?!+$Iy-p>JFtl|qK2jT#3v$Q61-gse(@2RV(; z6Ly_!owF;&$V9H%otvs5Br1*()#0$NPifTp5syk}D%s?1^R~@2vAV!K(-gE~8m_04 zi3~-~N%B)ATtD>FLk3^BV{CY$K7qr-f^w|mqvPzD&g>YZwHY43vtZ^Wxx_jJIu45J z;RJ^LHAaiZ6O_CZ;I3U_KFPkM;UHadX{_+cpQ-#``!J7^_OSE`rzxbUUf|c(xxQ z3|M9zAy>wGmo*2vmmY&!B!F-TK01;#9XcS4j#m|(X^B^Lh`{hI5h6{RL8vaq30oYJ z!6scVT{Ybe-QiL^>;prF`~@UpWko?V+6YiKeTj-i5k>#a#FiiuisN}~tnS+6ccg*s zg^MH*ANni$)wfae7e{G0R?ac+Zp+A{I)dmq2PvCr|t!NOsiU3kK z=xzq+rr!BxJ*dBYz%cGaVp!UmC}!RMfaR!0M~aHOM6T+piMi19<&)!Pp!#(T$h>;9 z^w_U#T#`-CnC_M@+(=ihJ3fUNjlGlyX6=uwt;mT;OAp3q2_ zWe4kc)ph1hYYs)aQ4uSNA8FV)8nPTl5eFSFnFf8_WF62QTs+|rt)FfT%7l1j-cHsx z#CmJu+W7LUmlx@ebFRs#AmkYJ7~|AsiUmoJ3$*&yJY2|8ZWz334G48Nf4iqr6XtW* z-ah`W<+u$J5xQf>K=5#_GJTOT{)d}ce}j6fRiI8r=u-;4?r+mwR$cR0EPcmTa>LDL ze{FodUD3Qk7@F_HQ|4`N8ocW{-7h2LpZautzfJiPvW;7L`GT~=h~q#W*J(R;5P`CR)$xC13KBIJ2!r5xCOF!=Z7N-11` zHIW`ejntF8}AFwy{qt{#dS4_-w*xgM-U|F3cACW8@?wsR9ubEeI;fjkF?07Ae(6=A=RumT~_nzeA{g4%t*$EE?pJe4LtRhgdCW~@tk#ewA>1ZU``r{T7{*YWU9Xs{jz485 zSB@d7e!9)MQnUE#+@^~aR?Rl4p3TEcpHu_V5!OxCij`ZF^|9kadEVJ%pzDAj1mN;Y z9!tR^4jh=SO~7l%d!7YZNE3-em)>&7U^F{Q{zz$v9}?q3+sY-%a}}tD!h4&c>=upB zyMcWSQ}ShQ;MCbzd*n`jY9N{&v3Dm@t_~v)mz}Y8WR=WsT^Cb{ORQG=&>>%uJ1adb z71EI}KYuty>E?YgwFJwu3fBT1u%Re55w*WSB~6csXwX{vl+bUcMd69vg7I;eD6v@- z`HZ4zFw`7=f-Bvij>F7VqVYg@q`c=UA zkzQ_!XzJ7GN1@H6f)nhO9Y5SMLt8Tj7+T9po-C_GTP2aAkibttOEn>ezT=T2H`fmn zAYQ~l-Z9{2=RVdQCgQsPque^aaPFBBO%A`N6_i);-Z~4mzc@;w(8>x~E6puE+rXr9 zkB0i|j7C1Fu&d~lZNu}NoS%_-xmcF7F+$oMa5KgVhuvG-k?rx}ITQE$5{!&YBh2_3 z(jpif__`nLr(X!RXX=2=PphN>A{mjX0UsGipCw$3&}H|n+ala<*7`#?F2*s|A9ZGw zq(x$N4Wr6Lv6Y~nex65dD|0VvhSU4$%G_SAWc->2zRaL1r8}uzeZdu1LAqbK zCJj^aId7evfiEEo2f!=~6+tqMwruHiFIL+9}5b^AKhNYO-(aXEf(WLP|=13~ug#*RXr=FcYy@?Q_ zf_=;Uiqj+A;eH7)j>qJ4YN6~xjlbtt!S6XeGycOrx1FAQs3dUNNpm)99M+#BV@=sl zpk9)KqyLU;AK)N(&rJ^PVfm^82}UAxsvV=f%!6=GjY$G`MwYavD&2$;+&iQvMKEBE zS%6j-9daJoj?Sux&E2qq8RG5~ha)S|g~aL*1ePQ1f|QYjg&N^sb0+349SLkY>gFrjIvC{JkSVOF7s;OzDbPMXI-5nKHQ}28I;}a9d#- zH>s(2n)f<$@d85%0%BEYV+wjo4T;CmWd&!ceDMX;gNhS8LQ6{@8h->K^cqPA5Zxv8 z%l;6AnCR_DYm`RjR5+NL^AWcbd`Y@=EkoamYJjjG$gc~!a$S}pmPU3&htiQrGuiAm zGleSeM22-Td<$2xNz#g?4L+y0%e^8-Pu=?z_mxlU$_6!zt`&?l=ZkfvDc~d3Z+q1S z2A3JIAzdU+rYV513*DkS%InQ&if$4A;gj2G)dBX_DKSB{RRu)Nwbe!IhcpAn!mwMG zv^%N3VM1=|>KD;1P>C)};*a!TI=yN18R*$?Hrm%tdwykBBq-3*nB6JX3yVC5O7s3f zt*8$4@db%4HFZ8WBl|-Wy_?s zgNUQWFE-JAI*N=6Wja@YyjJ6T7BMGXd-@o4Rkj6U4Rxy(KC3eI8&{=pcfx?oOHBRG zW?{!;B>ZX8>Rcm)glOpa@<0hJ06iruaGVeiDN{ztgO8%gTbVNH#%nLY0o}t^>^D~} z6rmw-8pGd%go;9%5MIVL0>ZK)ajTcJ3gH{z3ayu>9kcMd3F~ksAqJQ;N@Mo_iq|&; z`_UdHoLR!lL+`%`6_@-$cp5L{fLa@!B6bh`iBC-Vl&90v=e6SueHCslje~D!=4l_V z=F>=yQuiaB5`KSDZlMd$`e`Efoz!BIT)vLpM|4E)#FQw}j&*qCKp5E4{N{DGPw+ai zphC_u9SkKVKxmV7sBi}4R~z9aU4KC_FFX;6AHhU#k=Y+<0>a#Hw~Cak4vU=Pzx7(D zoK$7V<>V))7^J{ zHfQKVmAj&)Iou0@aO^0-cYMxXxKnpV-6Mf`y0O6T5vGhHy4_@iM4k`AzB^70LjXj4 z01ER@M%yFOf_pE#!%#7Q{($E~nSKw*iJ}MS_27DHnZ(KwT_z{;6IWgKuJ5V^w;ZDP z%+S+d@5ZccYU>IA$G)%n?$z9xJp?`$1|X#0#Y-8RM!r$+8};u6iaHlyw)rMkS=ws# zdgVpN`r!Qfb_Z=F9Gn8C|FuLG z*7&TX2?hFQw0Lmn#|qv4k9cA*g^CJA!P5y9d)8tW*Y_MRRxJy&eB-%AFr#U6OHi^& zpBK!un->vRLM(?J=2Z+O@hg6ujfiuC2ED~);pZW>IJEuCu+&+FxFeHXdqSu>mc75_ z<*s@yYn~n;=Nv>taMYB@vGY45`HQcMrW#9?bXAztl1b-FnQA=nf(e z>rf?=u^Lm?qs|i+aXdl#PCdkMJzHa>UMv~Sig9cF;nDbB>LG8jms7JX3)!rTijaZg z5A01N9cL0mCNV#Y==qngg( zlvDpO{c=W3Mlc~kHchwN%^r?ay)Ealj;abT>|J8j*z z$XM-&?nA-nX`|rLU2f)n2Osl6Dq%w~*LxDt|Bc~39V9eolHAMteJfu8<567KICD#* zzmskn?Sk-;l4oLHyM)0Fxm}Adjz&(%f(O@LmVm?GytA1r#%M$PGBg^V92(&p^XI7` ziK=>cPACb!mo^G@Z&8rv*V69Bb$uoVx{wh{xy5(P^|xVpjuHc6E8*Bo#3-#|va*qx z5Vz0a-UN)}3QrIMyJE*)2SrJ@4GJ7eDw1@cY;%k*zcmOQ)7}<#UyqdE>E+@6BjT&3 z9!KeFc@8P~VBhG7QQI{2{_BM@FHLXfBznA#Tt#+;QKNU!$p}&F*W6YBGT);INdR4L z`~nj}Rw(5iYxv3-0Puo~keuYznybckj4sZ^OQ+>Fhf8nzO!laBMg{zDMS zngZBu_yPp*{DI}K7(4YBx64QxU;3TJ4kd2lrk3vJe5m&L~}GVo{o?9zy1tQe1;E{$T>clyY%x=Az$$aQA_Qm za9k4+OQbSD!rAkep!)zs8s;ASybCKDx_?P?H4Fg%xI)=X39V+ffSao5M#0(~iX|^q z-2(v3+KM~>Dp|@cHE;&YC0vQ_XC2b8lW56?oVx-FX?+j+$hE|YZp)$mL*Vne&VG(( z%@E({7fybkbr~hp7;2m)bZ(8xZ2eN_q-=F#V3p{6=l)1S7CQG*as_uYeaw82(R@QQ zGlCT}{MNo_9;70fH;gw)*@Hake!gf1;!!`-65V=YU9ko`5wXS!c^dq4?RHk1K~lL+ zVrqfTL3m#^NwHQXZf6X1_>`t0<=D)Z*=jcKgnP>=xzP0k@==gKFIOAKE2*Do5GPE9 zV`8K1WivW6TWufDAF=e(wv~}2nLaeSF`X`D;ksg&+Vusisx-6}U1uH0k6(~#zF%6` z8dc3#*WFp}BO1w+Rn2vEd#czJR|>M7Y2?0LPBkoz#H?T2l|dEmU{zn`i-Q+{)uf1v zlO-6bY77_f&TQ-#!s>h+1sYkGzXNwzwEx8nJVN-t>qsgAp(Rm)#cagxsLz8^lr{3yUyH za_b-N6n8_$pzIi9psUWH{9jg#r0aml3A2I!lb~R?V3l%~03DUSv~%#{_O{nNL+$ymYuC zJ|uKlBWojmZpyq|P{ACbKD-yVii!AxdmX79fawP*Yb1t==Wn>UU5AE3?42}Cd_A~# zz^QOsg?9CIs2uqvnS|B-+PH9}Ep2nrLoid?!1`6q#e!X233o91p6@?C3 z%RUl06>}@Dt{h75%xI+Z4gPy}PKKHWzyC-_Dm+LW9=-Znc9;aYM1s}$pX*2+{(Dx` z@lN|+$z4Ovx$3NQyO5__Rnac(8zj-J^R!2YpFiyb0Kd64^^%kNm`Pp=Txxq2}CZad<*53wR|N&L@@r-RCT7byP7d*e#2iMf##mjD5bIoL(9^EHgN#$@N-! z5@x_J0*25sCRHz#Y*R*@PeJOhwSfja;SY|Er zt&E?OvgWyM*In)v!It$vU_)m-YQ28ieAug_YiZ|nA>}wMwdPB_w|+gM71Z>(K?l^G zq@>JxUEOezy~=Iu1J$js#m&jjXnu8Euw}L(F^r2;pW_J-&9YzTs4*?)!6h6I0QUU% zPj&?SlwxEd^@5+Ro&}Gvp2;O4M{fdfu46h&9Ba(R{{2=cNx}d(o-`13wI5XK7kj^u z*AzsFTrz)j-t~;F{b!x>Z)-uD#LP%;i<*;Ec9E{%XKq9I!wDA&vytUfweZjkq3RrZ z)X%6}r=O)bi!#_GeEFsX+q{TY<;b6{3NvW`w=JRp;V6Wf0&e_hFVqpXaK!eoxiI#m z2PT_Xv>j+yKM)N@`H+@0OI0hWl45bpDyq>IbQGqt6MZ5rumhWOsLJXv2=;0v=#)1u zH-0Cw+azux#>tzXmN)K$7U`BVzK$m6k~!HC__>PeR6t2BXS{X(zdimo0lwePueCy7 zB}Q|617;*A68rN%jz3+u+q}-A;CjaU@Z8}XUU;qp9Qq;pl4rU&`1g_2&*{fy%lqrQ zk0Dmq`G_34Se~plps&X%Q6}#s%g!56H4ylb&Z4* z_;c`ef@tq0d#>2;r4Ei;@5eHGH~Qz-?z{1%y_de8q3hr8LiQTsNzH>W5+#52{R_N# zKAWH?8J`Q7vQGA&0p^(BSnqx5c9S{)w&0t$8c9=)8YgUsWGZ>UPyWz_4W>g=7#w&? z0|r*iU|mrwR-3Zd%-EkJi`+nd5pSyE=E|s;PwVs}Hj4|h=DD|e;RH>@3 zsd;`OZd-5HN2b+u+QD-40Hk9GMZqyl zKPq>Cf((HZXadP5HxybN8iV>LPvD=cRTV|;jxz4+2h$V0L}Vi^9dh6@AcnVK|Lq?B zqE&tmnFbh4v%Ulz>+4wzC;=#znC3192Z&Aw71C$OQw#dfVKX)bc85g|8g~YDhW2Yu zitAqSu8kLIp&rf9v+!u!wOqB8kUC+V4R!$49rrO6oMhdWt~RV&NQW1-33w3AzE$S8 z%zVY{B5_V*5md>9p8e6Ip_pj!c&+@Mwm;Chg|I%=U@vgthd0KoWQyrq15>3pZHe5P z6--1=Zr6#ImvLR7w&%L^gd|=7sE%Au@%B_vvhjMt%1^rHF;6+nKw|w4Od_ z`F2Sm>f&7}3STX#|NHy;A)wI2eksW!-z3Wl$+r2x1_2@K?=3SWyt8>ZK+mU(f(ehW z5p~V1ThJwm%g&;UY+c%RoDaPAsk#UqrmNe;;L^9eq1``SE<;#cLs5N6UZ)C#u{_0F zCx0rSt8>Nd8Rqxe8AvPR<|~5a2bFQVN+WqJYl^0B3l?jfOLKxBiB5F$U|Q>;$7stKWZIV`ov(ooujTj`2TQ{Boc{a!nUXyA?xE}jAyOHV> z4WLUB9@RD7)V0FdNY&J&9vYF{B&Ako!yi{^)x0p&)8{>E$Fyy{TBnvRYR5aNGmn%0 zuQkyR1A1{{_kAfSemq&E5W_O5^_7N0%p@R03>-)$_S_x8N%!8rhaQAB99&vUb}VJ$%m zh~u)+6L%eQpMQOz5W)@-{pQ<&4t}bg?mX}MSkG>5$;RUNTcq_{a&>AQvQS41cB}u| zd7lw|5r`P&KLcR4F5-^7T(GNx(VcI~PwYuk@wS8kEn>IBtYDyy)9uM%-A?hrg2O?B zz^kj{#Eir4oT!f;y*;Rcr=_S8Y4*Ke!JtNuiNuChX6(}G_mS=w`@HAViF0Y50dYNDx0rEodQxEz=OOSga#nnYeLu67(WynabA+kW;mN~ zORzONb@OM;W+ZNoC1Edl(8fW8dZsV#FIRxD`d)z3I;ozunXPrS_DXUbS$7WK*me6=v9f# zSi5+%1KKni*lO7B?rh3EX9LKt=J{~5z_Le0$|6_4#$@{zwa)fuG1x&(M*SygufDr- zxM#pBTFA$VVq^kx4}9eRoDd#bH2vsT%dtdH)nx-eILwd%M#``_B4TRB&%0fqQu(So zCX3+y8nE@o6NoP;R(#GW(Sb`BkR)Y3${Q$#)N2cV7{UKoh`b9-9Jy;1Zp!V{aZqBdL!(j3uG zj$$Gk;#om*Pnl%STd2QxJAw$3boJ8`3jf!+WQqe^8P+s=;r?nT(&(CqwM-iykJ+WB z1d;S)lRo@ROsHUKiX9u;Ws-M^A?|6MK(N0a9Bm~&z1PcskoYEl^yPYZog>7j$Gfps zUVN~Zh}=WSR4?&xw4Fiks#mS)dZLm1C{*5~)dtZ?{KeL%*wx*+?_*O+g&K!dPZ4gY z1Lg3<2(8u@Q=jU7EDikhkqFrTeCT2ILToPbt8Un6higv-!OmxexAtbxB$4;?cl`PT8<=O&_sJQ@(R?_WXkGdSiCN0>CSM zQ`0rRak%!_jTs(V=rYy;A-@-G#I*miL3Dmu$ zm{uEa>inWs<_C!{4*N-HVauxgilXs&bd2fw=EDxtPJ&C;Ma>1QSnfwArA_qiFJe)J z@)b3bV-(ZQq2-BVb-NP)R>eJskF66w$ODs6RjTQ{S4!5p_6?G#?{w!l4d_J&qr3!T zyDwysBf><#3$5FNF4qPqsb7}sAFJ_9y!ol^LXGx@TsQw%r5ehqPw#`4{p?{wx zEPe&@vYinjL0EN3WV%15~)c39|z#y!#yFg znL|PY5Db`rQia;sp%GpGXFJ0BgJ_FC27R6DT3;ng3;+_MwPxT^`(Xs@|Me&-q@MsZ zwmBuABa3{iuc~!nBd1}NF-CY@%je!*deI=uh#VU(UWwh zoRDixe?REswgcvPR5AcG?D=`rK zAW>yDe*^1_C!Bdhkc=J!*P%VTUqx`!7T!rJh4femx0$iV9W9BRgMw6Ecy~Xcd9>*FS+eiYdoHF7>b`d`jA+^`fcTX zMRC@Tis+>P%vWe8->%kEo%eoF(Z4;PG4nofU%-qIIs_8+X1wjhdo-Xh<@w3N6jkg| zKn@W?-0hP(>(8|4$66K9MMG622*dnoe2n4?xez*u34yz2pO?~9IXqH?W$*W1XznCc zxIYfpz3J>`?JJ@lX6g01WL6*L6Ibpj#k+VxT+eutIAX z9YmDW={sOCb^*!83M&SIG3O&E&*3Xq8yOd~&Iz9f?Fp3o9H2;1P~j%jnvK6l7Grv%zV|wOLW;6A z15hHQ2(!PJRgwf4_VY=eVmn<^I-UA7oG2e+kd0{$mjXF7X*yTnrh+AeuS% z3elAwR*l$Vz^f!;sdMsJ=HkYY5a=4mvFJHWN%u-Q`1RC|@+BZ%mF(Y#@x}I|7Lj5- zI>iigv>EC&X~9_jyZqsv`nKb%f}KIg41P@Ue$7MV&2Y4EKK_&vi-(Oc1e*6l80W>h zM`3Dn@5bb~Y9q+~;R$%?WN_v1-`%Lr0>-dZ z7bpivUXqG&2uKuC8sDeAj^yIoYOG_upq>n~YCb(fh zE6oS##{})W##B+f=V^^SB-(qBDpCl1wYPylqv7aYOlz1|xfz97UWL zg7!gF@Aa^7Njv^}jzf<4;}N5OkDfo`l6~cO1!shTeBl{pi!u86d91|H(4d6M3+mnP z!`U!xWw7G9TGGY5 zzui7>8?kmnK?+aop#d4f|<7TC?ndLvm%|19LE85y``4*TzTZc_5#5n_9!RO2`4=)ggH{w0=g7+z?|Aq=m@70PTAa zb2j~;{^BLDLt`rrKD?mVzJCu{>|%iP9Ywh9DND}}L4SvO^>S^T1t(HwBm3wkp4fG9 zsOo$KZ|o9-!onEaECxp=TMRGk%CP-wkF5`fNjL%YDiRF2q<{z7yV;^`_BysPW?{0) z0Sn|2#V_jq8%t2L2G{>_4p#&UfsiXE^kSS|qU&30Ios_N)ufae+f}6YCC5~YwBQMc zGQXX*uIYJuSmM!-LFKPSchE{hU(Z1XYY;1S6bPKP@mTx)zM*6Sxt=6ts=hv{3)Tlg z&cQVc-7a2UJhVF(oayE9_643clkDU+MQHOt`r@$!$d!hM-ztq05SdRg{oR3Poy)8$ zl41EVZ=n-Cp_ibjptYd9qxWeJ$rlrvshY;Kq6GS+1ho!08zzD4 z;Pn#u!V@N)?K-|fk%#3@Xi)cuL4Hl#0t;lM@NcdqTXbGZ-}uOExvgvU-obsr^TN?{ zh05f#4+CdW2XX1{rs?51O2LV(-oy2j(PpVgR=vslnr!dOU~iW#z_;sby6t0z?>VYo z6loobo%X5+to3ipVGNZwz^!*axpleuzHb@V?(*D)5`tyPMD>yBrP{piCEe5|?fy@{IlA zy5s@BEEx;tm_ItoAA!A`&Yo^iu_ z76T6o!@msFrSNC3m;akqz>~Xrk+R(Bi%Y>3m+I&(5d;6kJ z;HpQyAXilIZcF}gePb~|hX>HMC7Iz6LZL{&LBom-nEbW6EW}7xCX5>}rcBt=M6kfr zqCTNbj1J#r`r~S%lh*czQ^*hOpH1Q&>6G_?;Z@L*oWOG%rmcyb@q59|OM*Lv747&u zwKARf!&=)cw1;1tuD?zqy9%~?)LGmv+%zmyNVSxx>=>f0pTJXqOLu0>c!%ck7wvD( zuB7e#d536Y-WKpK;kx-R);kRS99@`M3L>ys^lkg`nH~k@#AWV?t|Qoc{J3m%(*;H4 zrAU~z+g9$}rQsUmNfiM6?C4(98mz0x2)LC5+;-aD!X5%1TFD2!{3oQ?=4k1YgR11w z?QOx=tq70a8&qz#8G8TFiwo^6IA5&pd}h7Y3K_b+#a*F;Xax>kBBW5{i6dj+X#c&c zSj8cfldQsKfOH>P3a~!m5TMf~YUmOj-#v>(0iF0l!Ak;$;j)j_dLr5wROC<3W;9euo;F~99g!{A&E#AyEH^7#5c;iGku|N7U#pF=}9N= z2KB=uV%PL=cTiITje2{z67}#{ljC+XN3*N9vWb4)#h$JqDOQg!Tex1Gztt}U9=fHS z0NMLg(p%Zq?x_}8lHlE#U~bN62k8U{ySpr~VjMBD5PXJHuKhp>j`^1Ai~f`5MB}Z?a>QAMCM1p>oTFH{z(B~*WGyCO?lq|is{qy05zsV64a3O z!{8G`5RKp;C!(2yJX*a?so{fAn-V0K|M&k+LPMt)7)i5K&f1T-2QKM7oar@;9L`@f zCi?%R!j;OwVZXfH5VS=WM4e$k)rC8}ZUeTyw=R&awf-nY3g`LaeBD!xZ|fG1a8;og?E z<)wBIUzHJ+IOHUk#k1#zf;3w|eKQ}PjF>kXy+R1!9-blc>Z7|sRjrXV$608IS$dWQ zsM0p7TO9ujIcSLKhl;0H&22+%QCZn?cG?{1A()9s<@ihk}17$7O< z&eb51>DE_ZY%z0?L&Y7J%2KX;_K2b3*XPoXtqSdv7~T&T-Vea~>jH4xuIlfz zq!7XPINvo3vvv|+)I#K5&em-V80Z5%0HeE|?%+Q!Hr9g%L>Xp@6=B|L`U>@ zS|n1KxEUSTh6)O2@X*3^e2Xx6jqgq@o6aq@uOCO@X0oP{Qy1zON({3SlNp^Snlx$x zA*>MKwH6U01DMhpQkJL?jjKEB0VEtuH*6_Ry$pbxFrR#?1Oq3K`NU6Ke49iK+2ra< zp};2GG+Tcyv}gW8^I7VjzLsYjpzD7i0{?QpcS4~g<8XR6GUj@eJJ`J(E=>n{rv(Oh z=D$b`-KhrRSQkO#XuhBJ-NV>PMFg{6*zo#zfC+6$G!9h*J?g}JPwjny{LRsC^Oh8S zp#->`?}kND%5J`@Kx>xm_>vF0?&+1{+GCjyPuhiiGHwpT4Ob!Q4o+8Zd))M{KSd$U zy&zr~4wyvEvRpqRympj!NF~)exdiFDp{-P+fFj+XAF3x2c9i-jpJ@b$!BdiS(yWmF zsiu2JEhEh-{ak-)0ibg8&U>KfjBc~|t@v&;+wf_(439bDLriYZUvz{O24ZzN8nmPz z?1;@&QS==*p<)fdGm=%*UKy!dG>l@zJMD8-mRi7v8^d06lK=7RkjP0Jo1@MQ1)JW9 z9P#GrqPgsrb;k*J7FeI?;8MmUF`lGe=uu5pt{yu ztJWI_!jiv^QbfNFCC2;lWJ6cL&ohzMowuP+wgS|AA?u(5Xeh=QxYz*-grN+uW?i49|o4|j89BnU!+~k=I<#_#r+%6oyXYw!aE~3`fC!$2-t3d3B3tC(P`IA zQ%7yD#ODSZ^xMcwkn&q?OXQzbs%mz;jBX*jWbf(1huwbV#Y^gOQNGN$Of>#3goi^h zyl@caQtL7kE_JyeggYj0Eg}w?0eQ=FLK1`W*`M&m|Z*VxuFMhMBg@w?Ef$F#UwU&h1LDQVYMXvf9yafRgJ{0JRsuF(Cf< z5ysYTsXP9TaS$dkoHN+U$KE3Zn#3m)T?xIV2NpRTI`#JNIaCqulZ*UEib)EwLIS19 zHrA;7S6!zKMWP#i)GDHd$xGpGT-|M84M2l2EDLf>uxy)Fi)%5&X253*Oq%jqVD%WY z`)dNy36TOw#%4gsFRYO#1bxvxb<(EzjQ{(`+;DDcF(sY}0VzdWNSEfk7OA-) zx*Szy<54Ze6^_^JgF=8~@pOW=_<+c!fI#X;&GhV1?e`mk)xSqef@?Fmcca4p^?@j_ zz%J|WQ!bo}anMXr5ZFNPD@9w&@UPq%@U914+l)EqxC(5RgkoM=#o=0T|FfES^nqU5 zHD|sO{bPlqgVu88#oX-Bj)rcagK1@_J$){^{g@KJhFH7`p%e>i@#uoBv-2 zTq{p9PU=rcif|^{be*$pCgeZo&ZoJxwY7fLE z{$sWn1EI#c%ksRX`lBu40E68#_4xN+)xE)QcKJ_-MQhHZyrRhzgU-5MFabN@&uSiv z6hh?SpAs~sngibSZb3DM`EiBXp^@r$&jIN7IS?R$m#+o0Eu87B{MSZ!+?1mb^_?Ci zzSU^abnp8sojNC8`G?UUFn+@Rl)~@ko3F`83-!tTY5md1o9WaaZTfEQChWGq2Ik{< zJ`3>raCYydD`x+qRyv5Io5128GDmI1y2gb>sZAcB5|L;NQZLjGd& zsYx|9?*;x@=*`<`tjKLj7$(yIWFI3*4AcOV7ieJmiG05@vsTCnC z6xTuz>ra(pmhM$M3H{2|#Vdl34&m`tf4-ZKOks>Qf~pTsU4hyHyV~lgc8ia*#;qC< z#1XgI{h1^zas^x25cc{~GkFmt1~A*izdOqx2D+hlEtNTyUR$DK4g@_}ketxGY3PQG= z+E{uD{`HDJ;bxg2U7kX2>V(%UmH&J-AOd$mN3+ZysOZ4|e7+V6#z&ba;79>t0nor) zXwXKh0K#rMWGq9#r4YgK$DsZ7W5BVwr~rymP8%Sm=AG_^dN>+l+ZJ>aKE5r<6!gGd#ybq6XrjLbzTHRN($ zxR(mvv|AZ=N|yv_ZU3=|p@lNF-9+UVpcmS{9tievA49*Qgp1i;Oo;96E(dXp14)$? z9d+;Mjj$Qe^uHlYAYHuwAjiK35J*3pr@Kl6zV=9G8gOpr{=*M)iu$y)jN3`+*DkI9 zq{m`d=@FBAwx!y`I`RAB)W1Vp>>=4f;WA>K z)1H#ETkC>y&ihNyQMK)Y&F1OM0Ufk=Jhv7I`78KuOF-xrG>DO30v0pORZ)U?#mJ2@ zYwb-p`8(yptX+|6qK1S%n$zDyYzKvQ*nVEfwdtb3G8HTcwQS*MRR!ythQb@$XW?=t zzGs&18iXqN5$0=Fh6@KDPyrPXQyk`{yS?FC(^l03%AzrT6Zy5&fNiC(1XhQag+m9! z&RqgbfKgKJQe>*_moE`imXRB-i!xiY#tBa2gikBtW4i1O#Yb$;{FWl5EiKQG!bQu7 z7OU5bkPe4_U77m$Xp6P(bIEEY@aHk)jwB!2hC1;Nl&y@#SIXDk&CoOXC4^d$=3!NV zQ^GVb)x+PbR;ss7YbwId-xzWn6MSvd7JT;R;^}nVl({Z^d!)qsFzd`M@qSCRh4>%=Ghv3K32)B#B*D<-M<8FZmx` zyEOR>7=P~IF6;BclWz*jUDeK|8!HH>4x!MWZvRUDn!}_S{&VHK9K2WWcxfGbs4b0| zlOve3=znUKysNW1#VBCdTUV}CDN$-rV6Z2kijA4!F1N{%{>AyS?m*N%*SBb}`2~7? zIu+JpHe>cJ7Se0%30YiwWYS%h;o*mr#4*w{h?~yZVHHREN-E7E)&b$m6rIA`@HRci82O=QZrR7;+35+Z$kI*dN)4^Y`#Q~tsYq||&@en>+xQtx51R#GI80;2^Ez%uOuvGuj!4(h(KW!~>>0l55 zU}Zgr0ZwBE6d1Eba~yVf4kXgpzQ321Wt31ddmbR|({cVe@lh(dK6m|#p^D*iD<>!@ zAt-4vVP$NeTBeF4MddA34xyoUn?D%DS@Mt&;e%z(R9k^kfCqC)s5H@K&FV}@;n3kP z(RcO$?wk|lr7eJ`?~A<5)p1Kqs!5~Y8>OX}yauB6jq6yUb=bEk7kg&bYq)>Pyi#H- z(mhF;O8QFnX$2_pNd;S7NY$=PJu8l*v-*MC3jompqWeV>gCT_z6J-&FsZV)rCC@yw z@hF=yolFD*pT~Jc29v0qI9CQ_@B#p40lVP}+13T-1l^2Zju3t`=_UP6sj!@;Q&A4* zOI)}fK$sM9;B`@#8&cs)b8H!s70QHi>AmrM0dGI0lmC~G&|FBdxV3S(Nl+4E_9d@Y zaSKpA=i<4e%EtKNzmIyp&qMr;ysg*s;wQ~8X?ycd<72hiq>PJIZjU*;He?>V@fW@m zXR_y~Tu82?`2L69rz4VVNBkFPT%REv5$HYNR&WI~7kiAl5OO8D98U7NuOXRDdtnSn z29(O;XFwi-pPe6p`pZF;?G&XRiLlgMp=2N4bh;HZ0Fl95g}7M}Jg^jsE?cR#jd%jz z@CHjAuK)<`3=jt10EI4V)ia^J+j5Vl>?S3O*;?hT6;(N8t*69Ff6q9sSaZl=2FFC{ zrx8|#*s2y56X?T)A}?c@Bco(hQ`RJO>eZ_gjC%9?YPR$jEu}mFXE4klJ`|)+#fnet zaVQKU=yr}d2F-0vM?U*Vtzac<982eKrUIxq!0q}i`S9-nh4TCZC0h;3ryBMhW%=e= z>IPb69H=Ac<04SugQQm4u17col7}gR4ykXczK_4VEH4#O`^(d0&>Z7ABXwr zY%|;}xF=f3+?svkr}AFMm{y^Ztm+nVbfE-xpEMM!WHZY~$z@;CJ8hJf(;|YcmzwcK z+bGvgYW5Qx0ET4+DHfm(an~QIgphZw@HF`*_ywF(a+|6|tF-sE9}fG)CbNV@f5P)T zS9r5u-p3rzu2L+p$9)G9mZRcd;XK#v1A^IqJhL zo1`52v~0b0rDey_7n$ep;)|Z>&^<>KgsAW=3p0)0i*` zU}{36w`g*#gD&HVdS1L`ReeA*egiR~%M&Y{AQT2ktTD-U%Ipa{8T*NA)APQj7zyPI6w%AsGL6y z$Hjc6*0lsP&EmNw^QO$FXV+=F*B@psnrzsxhV~b@+`AQcuCz@hR^{2#cvdC5A0r`2Urho;GK-abZIL3QaJlgKT|$-n zdOKxu5meuIq)%Y=4b!G{sN;e7PZ}1RYgzYk4ecnno(Z)=8TYfdjv|s=;|oWm_QPHU z(dS6hojo$K50_C7w8Xxn-G~T96hW!HF#Un0YXs6b6>zl}Z}4Z?+DsB%-i*nJz5cAa z|J!4MfZzx~h0qL70&sB|Cb?g+EBkkwTYqXg?q!f;wEHdyC?yY>9<7Kv3P7ms_=x_n68JyF-~iyhRHhNr!}lD0+AHEGs>Dr)%cxG>pr=DwkmI-cET8OC?C z6k%E7Nz^htvx3x`teYGWq&nw{Y(i7V;Rudhj)2+jY*_RP6{tX~(p;3ES)byN)`wT0 zjjx8=sJ99cTa1vaV2_FX466tcgH)B0rk-&z!rN^2EUf-9#kwFaNN%+#f=G4r44m&n zY}~B}Vl|S4NQD&U+ZNRIIZkO4Y+D!dKV>V9;uFB_Ys{Gt+Mj9>-f#DS=j9}?RY%AUdQ&$U*0fDhW zyiOs|n!7@kKM^3o2I3(Ld_26=ux~bL=7D%28ckn+11TXwA9grnTvrR1q82yfEm>ng zfQ9+e;y4dR%Ejq8$|2M(=45qdw*} zNsKBpR8n{}1U~=3_#4c270D#_lzFpyWr2HkduqpZUqIEn*wS~$MeZUt6%s0>=`$Uo z{}BYIiiXDey`U5}^d1 zt!y+NTXH1JGIfw+4u4ONs0$l}f^LbZQ_le_1YTOs?5(%)E<$1u{fbmp*p+q7f{hQ? z2mI3Z>j@$XhZ^&qrE(emk6ZP8Y#;A1zWjm&g!RFo{wHG)S+w()SG5!&LFK~^Vny3# z47fLzkx&`QY)cp<%=s@pG^?Lr`i?XY#T|G;ml*aoZ5Mnk;5|($4O55OjXJg((c)=l zFb!d)RzL|YHJ7LefTiVVcXKeUD(#VllXfWmc*G*}9tlZ+z0`}AHe;5BmK2UE71iPR z+fy_H{!sMNCBjpsf?CnK0x2OQA=t!e41e^_%Iqo)#%G!e%f&fxPoVQlu(+@VSji+Z zj?7_VZda@YBC}h3mknvx<5=@Z*ArsRm8U3Z%Q2?isn!z<92m?l3&WnnJ>_UEdP+j- zV5Bf9gRS{=MBjwH5GVX4()e#}gT51bK8?c*O`Ne-(di{<-Qc`@v5zl`b6g`R$PpF-Pd*sAOW&#!A0Cxc-= zV$}3Bt~h{jw7{|>Es}t$(BPCh2YS3&QjUQ|R9C(k z+XthzEIK?&J5#Q*C56#eL+EN!JxzfwcfkM4)F&w0jz;$R!j~IB$r>ELZC+pM6TkhE z2>)z5;QN=^{cmlc;MswxIk&HAF%6>n2~_Q{`1p7lhNT z;n9+l3LPXz%~SlKn4LYJPg)?6Z~Ow1y!TQpr?EOU%qV!=bE*WWePQyu z&}6+I?O<;b@jp`M>6!_@0f;(f)q|b}u8fFLzUjUT?{dR|=RwB(R)&2C)7w?68&anU z6N$$Z1{Wf}p>KJSo>VJ(RwGbZ_8>?TPQ%sPI7w)r(!w_*I+}iFm2;_Q#3DJh*C3GO z^y>&P{v6j8j+#>>qbj~GR3A@T=o8O@C@&zNx+BB-o-H-PK-rc9t$7rtC>5uGDsvPA ziFyLPrV7f#;&YT5@pRy4y?T|F;%p-|D2t#R)`0bT&)(xUJ(QO!=JfX(jMJ}NB;+Uhit~P62)>=aVy5W z#gC@m?2B0mdJDz)%E%9}qG>XaN{c`!@(Cf}hD_Gk7> z6hB_kuRti;w~nvs=r}JD92a@=(J46 zN>LdO$a2;g3dR`9hI+lMZDR9Do;QiUYvbU4|3J1Hh*!IPQj$7jtkjw$5Wd8& zROhy7@%}CK3)viqs!0i}#yk*P*H^Yf$-$upi_M|VZz7|jE*u}GU8+2;5>PIS-5FW? z5=*+zS%Sh0N(C%Sdmb%bn%)CqbDObAY)4BZD-DaNpysOfgD5wf@eKP!tO}Xd#!t8P zIyp2;;S|Lw7jguBMD=irX~!IQ3H!joRx4X;;W2EU!Y4x0i7(={{wyQLVtB;U%CJ|n zR%9^a;VJ_z5ys&rD(v;U*}ZbP-!9b{#N`8laC_m4qfT1C{%*fa;_5Tw;+T%MCgK}N zT9`W`Y0pJyx25$ciG-&(OemVUzW9w z@#unBBzkXiZlVwlKhL3!~^ZC5GDgU(1w>!Z}sGzlK5tBI1@F1tX$aG14zAK z5g4Bf?E%2(RfBx=_Msshg|gKJ;v%1;x)3Wmr4FLoM6Lnb%Y7tZ;eKxcyNUHYHQ|d2 z%uB^=wQ$a6P;6U)ek9%*9trb|d_mk>YG`QdB_COxt3h+L#G8hs+g+@nDVtcq9D&55 ztOE1Gt_>jXAVIYsj^hrrC)<2^!sNibl37>gz7Z;G`p-R|eAJDj>wHR#5llqE>!>&U*S z5K5c27sA8j3?(gzYPAhyIY;!{X45m3Pr4zKv#+6*2SpKI-1E@BZv76?Eb44K~wOtG}QN&!@r5x&`LpI#mNfcRT4iyrtLzB#} ze0K9W0adC(zZWKPQeg%&UgOk=wIku+XKM3Ig_%p3=$UF_z@#>7H>IX2Rjsl84-={% zfQLlt;FBez`HskHB$;`GJ)ZVCJPEs&o6u|7gij<1V&aI>mEZhoVdm_HSvrc?J_R~5 zJ8H;nUh6Jw{34JD!4TYofW9Y_FOay!bWpD*i-YYVS(wa>MeM|iY&v3$Iga~rEK6++ zk;){9D0mqYqQ2=_lqMV%AAN~Ofr&H1&Hhve71o$U**lD%GT5G(%l=VGqTnwu_f<@P znv`{7F*bqUqYT#nx_MeqR^F!=dW358a}3s3-+s2^3UQZ3Yy~vw?1(JG(IP5Isq9n- z(y_K;v0?ZGOSn_(!KH& zTAe}@)+^zv_@a9))o?f;9^W7sDEpLOGXeIc6Zg4O4C>?P?joQ;t(n7sy1xpb9_Nq} zkbtHBI73-55X@)9A*cBG(SWUa7;>J;1@(4?VVbFnjY_~(TFIXxM#}tK8liO-W*MyI z&Tdm%@J5dskd)xPZtj!SP%~bb32KcmY~S|@q>_c&VEr;a|M9q1(5LO5=Lk11>LVTX z&)|KwgmAqm=Om+%R|uw3>sqZ6`L$CZAOb(3NZ~=OgW@Cewv44tVOwcjOlc~)bc9|O z9P(}TLDC2%cVP1`8a3-MXH@0p;WxbTN9soOV}+Wm4nZO zPbHR@FGcW>4dq|S{a6pALg^_(_@h)P!~;pZrr1d-OO=#xFtzJ9!V%B=WfTyS>%Vh? za16`E85qGJ8tr;MI%PJ>vm%fbi(|HB*Nc}7aACaAEX<9`oTCG36A)x@^5G-KmhQ8B53tm=blFj z2N72SV*YDn?5kfh{Vdey(yu5gM1XtYZCZ~_$nf8$0AqUdZh&|my^`5xJ7JRzSRW9OhYRKdsk%{HlW zvRQM0ki#HP?9;E25%v{g!B}`OK8=wiGU=8rT*}-$qy00Sz$X+w^$lYubR1U{$T$MX zclnc>Jb>b^jD5}WduS&?zBCyg$3S%cGvgm)v}Hk6LLB`6zMWUhC%IkSkew|J;Fm(_ zrdahpCLN=Mx%}!JuVix#Ktdc#Ge8kF3K^`x?m%I_O*+wya{IUM?GW|v`g#x|Wjl7$A1V{E(o-LF4-8l&qFc2IE}Uojjku__zEA*OlUtMfGNcO=`yP`WSpZP2&0s1ml6cx z&xQnUc4f_hftG#uI^g#}KLd0gl0=Si=h_Z>T-~T{fh^ zwq{LEce}P&kNsHm*)@n7NEP>eCHpaPw6OjpTIoTKOT8Q(hDlOYad`c|+a-vs*{+;n zbxD%2%(X888Po7f5Kz|%AuI0B`OQa43hO;>5NyEDkV;eXKYAQbs{dd$QBC4BJ_7yjow*Y_w2`siF`qQ+jC!B%Y-UdKS?M%JN(7eUm zCOvR(xIc^g^AQP<5KiDIs{(V>|J^u%iKI;Ho7dpDqgowcR2@g%gsQ@qLe3CNlK7<8 zcILMAgoROdp%u^^sZJJs`IQIp@?p2ZIht_Fv9pd>zpR@V&QBkN+aepLD2rht^AxKn z&se5hnK^M+P=1erZ{RFIqUJA+FQC@t#s9 znI#jsYk&{XM3tXV1Y4DAW=#6;#z?^d&B+in1$}rJIDP{`yAK>qkv|s}Y<+`zHA$sI zz*r%ihZGAdosps}P9L&m2&Xg+=r(8goaK!e73&}oEosjS2( zaT3}Rj;-Tbo!htS@j9F^1)5bS{%j*2q#ZP7Ol>`Lfm(z1P;V#&N8Dod2QgshkqxQx zMK-|=e0+S}tCRC-l=N~Lc_8F1qhkEPKaKx>Q!_4wk4zggmzM?Z269bTaW=bfPsb;= zMl^;7X(8=6c4O*}@{m<)>`wd=P{D_ z-Vm14=_@kWEgLe^84=@8)}-2GH7>^oPIXH9#W=DiTa-z&&YPeP?^IzDEdPGGzjDu- zl0|-Ed|XwsmHd{L4V4_Pk`2E*Q#3_3?~N}zI|>o!EnAjUw;`lYk*WyA5W)Xm{?GWT zNkE4V=C5w#fQrez6H@e^mxU~^%V~aGJ9pMuqV+XG6p?B=pm<$fJV)bz` zn|RP^w{v)t3H>CN$PDLdvda&TxyhJP!g4U(DA$RrcyCo^Fa$n{@TsbAs&KS&SG6}e zRRuwpz6YI91fEREy)Y_>xsoKoe*Wv?=e_*_s6M^9+~Vsc+gDM0AN7h9TJ!D5Nu(T> z2(rokoAp0NWhaO1x%r%!SAXF1;-i`8a6TyA=)B^bt&qa*bH6NPRQ4@xY!b~h9G-Yv z!N}jI{R0QzsS49R=S`w&S_mV_YiA;C)VWsJfW8M%ebBrX%^tkNOoV)688Q9Ed{{zu zLNQ>uk(Ay*&fV+h_oNRix3^Vl+-&Dbe^7q^e!Qa;7(DnK-+e)${-)kB>s|`{ zaoyYm5-I*Av=5sKzbYdqGW37$jrfGCUKBk0Xc@f1L$hw+{RP#pp=zzV`;a1x7V)u5 zKck~HKH-b`1mbY)<(uagtzVm;1u2|;G5n2};;`e2HKk(eAQhgn12OKl=9^N*LNTwE9rB+F#T82hl~b7a~#PA7(|pK)vF2xGPXJOK96B_ z_>b?dKJKk|mvT7D2+Q|}bdy1hgHnlYu)vN`F>R%INRw`2ZDpE%J(ziYz@z4FB(8eN5-1c`om_S zu%dE9t~Frs7*c~m2+y7S_U7y~8Efd}=`nhF5(M$WhoV~)z8ZM*`u#Hzhu^EpMmkog z9?sTgUS*#r0XXBiR7co=PN8&iep zDVV&k5GVNhlsKEO-LbPHC5C0s!W8vLP}9lJF=eb^z~7YZPVl(;;DYas?e2YcYie>5 zvhT-ipBuJ6@R_lhw;!#R+NC+``+b%sB1J5c5`|SB^x8797 z%O1;qKIh||8ADdZu<60ta_+}`?7^Dbdq4KW``x!kB@MD;z~ruFwXgr~wd{&ub7Hdd zxOjVoG`Km2);n}|79mg+x+}MnuA&H!lUeZTx*@Z89>aEy16siZbWF?##NMyUgvR+7 zEk(Nl)cRD%BcGex@8ho%IE3A$TWby8x2p^(=?`_|xAkC=^+9W1Vu~7F$NT(SOMm7| zyQ}EK*2F*60vr8<6ub*Qp>s_(M+9W^CaPyb=p$VJHlDD*U9cBV|K?*4O+sRM{yCB6 z;#j2!2Hk;X@5MCwf;`OxGF6w6MA0-(s}aj+CheWs=3%otbQEgP z&V_OB%=-aGG{MSv-L0GCT~Hb}##{yA_fkyYhDd*SfS_qyvEj{OsV}M~s6*1&e&clz(S`&Y-<}^j{ zvtQK7$@~eDDTLa*!c>jQ!=g-b+E_0TVEUs`CGlHq{Agcg2?V6oaL^BN%T()z-?8Z3 zXvPCXPB(ZHueNz#l@ff;)Bb!&L_I)_2zGaI;Vt(j-ahq~hd`o&u=8}2JA<;hytcn> zC!0*_6aNRo#wZZO^((~DofC26X}U?D$PG9rXrBblxA<}yt;j5fWfKs{mO_Z4!VkE!G)4h_Uj9oUz$GMQB`L4 zpp8ns7hoC;P$(WUMD8;H%#&jF?*Zz;e#gOFBLQEcXwpkE1*76Vf=S@Kmg{+MQ6|53f2_PimCjdFJB9Sz^7>wBw9AKu{l&oUQ0sa(3HN9GTEV}^IF zf3A<9e&?(mo`Oi1saPqVWc%QnK%A=zg_gnuXtG`OF@R9N0MHnRKzgf_nB3f1Lm(JO z*~L>ky!U?mlTBoy)KY|O3>;E}#$l;=SrZMoFm@NXT`B^ zhZctH$|jYyXT>YKx|3;ngoeu5mpSe&Jti3tpn6ineuKOEZ?<464#t36HuVe5X18tLlP#KR(i)?_D3gkp?U}39_K~ECt$=KfPYU4K;GCM`0u8PtV$Ma4RgS&`qhrTB$ z9g{TsNY3(PwVE`#IRbHwp)YiV!)Nr$X@E&3)pf$cugP>mK6W!^>l*ecUr2?*BnzZu z$KRfgW(<$xLP|U0cvp3Zjt+!gjAT-6vA3jJYNeu&4!iHoQ1yB!i9|=mi|tA!vvYq|MkBsAa<_;GzI5ay&dDJuiIRLPlmq%~MC$eX zQa5b!!L47*4DIaGQSvQKfJzZX3T+}45}hAhP9`5~)Z)V1do3iOkzKem?gucN7k~nk zu9Ujq=S1UFu2?>xMwWa_FYRkP8ZCrmHAz_3qJX~pOirP%7#eXHd%OfH=Am@XU2Tg~ zwLIAg3lzcJ{oI{LX)s@3w71&9H5<|HbWETtcjfMvd!#3AjrAGSGkt2|`C0yTq6!t# z77wsK`fp?J1`FYh>qOD%(m`ivwx0;(>9Tj@fxP=JDN}$0{4mRK@DjsyiQvQP`oY}s z7>5XNlbE{NeSUaEFikkZ1*f4*ZEp)`yStjLEutP5E9cpvJD5!OIX@)EhL3@yQA6-M z=M!$Q*V7uF^Tpa4ZNa}8uS&@)DpXC=R>-<2eAJWFQCo}O(Mut)3xKm)=SrgV<^Z_t zoo_5mDul6c1XMOHYAwg(A?gjt^7>MGDYn}BAWxZ-HELhEB#N#L!vvu)ulvCldBFEA z}v$WP$c_6xqC+R^*r+;zCH(a=vDbSltfP)gQp?D(E90M*0>^G1XeXq~ z2d{Lq;Pe#0&Xo20_!a_4<+9%LeXPY$9KLtW-b`DvN$!&c<`;wRnlSC*w z9(9XAF7;RBNl>I_%$%-2b zXh>QQR3n}XuPe#a=7>K>8Nz>xQ_1qD7=r2X2^ouh_-|*>)z)rue6XtaTWrV^a zvOZeUG%WBM%)Cbf``wN#qTH*f8CWZpv%9RPuWO2!o-idL<*7<4pNEx036z&2kZ&kS zEh8R3&n3CG&1IA`7fnw$DHvVEs8IP6mc*HOn?Hu`J&GslYg~s;=P)-(u8jeZ^;TIy zPL~;uDdWD3$c?-lwI6vqQjd9jQ)~T0RPB-Ef}V`$+Z+AWTUWLS^9uNsQ}ILSySg9@ zX?I8&GLeYpn&YyK_qvhc7e5@Gi$5Td!^8lAN1Nu{U6;*Vft~|##ibbfSV0fzJRv%L z-a=>ev_=x5S@ezdo#lk#{h0dtZNrwCQ)`` z2rk^Y(4_tx{cz-S^mQh(H&TqYES>awlo6SUR&|L7>AyD9gRL{iW4{mBNZokM@Zm*? z9s!eJRsG-Ns$_}^HRt#|J_97_Q4>nW`k7pK2;2u{MiiqR<9U)FXy})IO)QMMKWGvt zg^HoRh820A7(?01cILo|_llsBcw7_0QfI@Vk%j1mNkLU}qUykbWOFe5_~|rEA6)dg zmR6?~iI7MpU$7`ud`Xm1+%5E)^=Sl_#)SB=Z@op9J39M0qNRS2H0c2s5Jl5*A%m6z zB_iBZkV;7_$$Y&N^7^#lrWoT0GLhoy7~)_O@}lWxI2iUpDkl+q8Dck0W)-1fE0g6GQMNebR7>eZf?PlGS^>;{T zTB1|%*;y1>q<<;Bz5eWnMG^92dc=1wpI$Z%REdTSc*g%De~aU`8DzZ0U@B4>WV@u;qA;j?b5C-}z2-U;J3%~+l3p4U)19s?@1pP@ z*RU~pxw$XV-q^%Z2J?`#EdSsOCcorv@_9+WanrWS(f?KD63rE~FLSpRjU8Sfq1THa zw5yIkFKGt>xYa{pXVeF-n1(A#E$@ z2=qcYZPA!WR#PmP+`^rzA28}=Nvwwo)!5741*rNuBq{HW>^5L=IQE!JZnPbDln^9^ zZ-(DeN)$bcRWYMT>4bH6_6AFPGj~P5uIp{l^0W1WIif1Im42-#Nd$GLn)I8D1E@gZ zKxf2L6)Nvjv>ut-kljncsyOR`g6R0O&JHI`&uYt;Ri0oqT-Q3Q9A1_S)K!ce(i?m8 zO#u-xx-We{Spylh&w`yB)N}>nT0thzyRER3v+`n&r6;72(=Pw;;4N++i~Y>#P-3`> zVWUZadlXuziB{TMgD3y9#gPKc{p`QyhM+{LU#5$Rj*^5)FyAy-9X zmsBERpSc$#b+PfjapSoj690tTN4#}Ui6?7A$O$Ph{R+unZE5yy}J z=r^$x=7la>npW_u5kyVKu#s9UYe^|bMjpGwo8ytR`N+$*D%p!nd;e>O^pm!&DD%VUOovNYLe=b1J@Rt9RhmZ0W(GLgq2r?c+?0KW?Vy zRp+0p{<3_g!Pe1;=2fgpA~>Uqg6i({g0?{R_+SC^kXNO}(CadiGHR`5PJE)|>@Eii z8d>wN6Y3O|3TDFjcHa9FgC>`*P)!GV4K-a6N`JI^OdU6H0A+eqUGYYUyKk_Rs|-4H z5qx`t&|t2;tzp5kZKZWXX()lE6Ho&*P5@bgw$X3-N8TCR_THmZ;@@y zlsrjMrKX9Oa$hGl#)&r|(NfGXOjtFdqfKJ9f`eb+DoR3Qm2T)wg*@}EUa^*X!;fX$ z{-3@NwY=wsLoX5eFx67_EJ^GP1vFMoT2w;L8_ukC*(9Yl%z=VLaex&78Y^MT82s-o zBYPd%@t#HSxaLN0!^cunY+?2rsBg${`*5Tz*3oj&T;|?ZLEeV&+}YTb`yYB1nb|$P zJo6&g&P2X?mQ%icCxYsMc&li8)CSsVcqHNo>Y}JC;M-Brf_=8FL`uq?4*2bU{krNS zQJ)@Zbii>!}8QH z^TgFB|D^lf%MJ&Nh}-8peGT1NH~v;y++d)1=OF>!uX0Wb#yOy$XgV0s7t}1LL8??- z0l`pA=ffTJJblZ!D~X3%p+Y{)v@|*x0zGEmT`9+zPr4O)^vdY3ox3`f547r5=_CR< zaT|VQ+*F`-B=|FdWdhwLk36)O?U=k-*e9+?TMmLcf*f-;Pej{xFhRyPNg10X;@J&6 zMfk~DGZGGGJ<`&Qr)A2;Uzy+3r8BSEQ|3}rCwvuwM=Ax9*v}H~JD#kr9mfBR2_#DOaoNO3_@2!^ zzh39d*X}nnVhZb7zrMw072Gv&4>$m_)j#dVBushLo+!ytdt@S7?pHBE_Lh=Z_Uxv$ zNXlb#@$#OiRl=FuffGp_A{iDVQXg>@H!X$luId7wQlO44gI0o3(ZqA+x1wjTc96g( z7^TEVuKf55(!RE#Kvqp{^)@{Yio=^n^!=#UzbsX=-IZ#6LecTmlHc!pYba)Qhhc*;Dbs*&*o)ljO^{+Cso+odNM;>t={UR> zq`Bfw;?EMf!a3YYcm#wX4e@x3R&yR?ES3+LG!)3#D@zd+ov=4jITC|oABgj?6LmnX z%of7{_ruUaQ_1>LhleTeG$5An*-r5cS~2`Dk$Akq4A-e&fddJD$yHJsltyu^lL{i1 zdhK+{6l)65X{0e-(m&a|1moyZgfRgfoc{OWtjgm9+-lw|d?98ZjZ zc4>MJ5&4)Xb>40(^RmobU&5&u370p1ETDHs{vp9){?PJ49?`dK;j~_D&7TJB^^1EQ zpUACWKUf&kzME;k%&7WWM|7DW49HV@_Hzu*RfSSC<~Y%V$#>E+!J384MV&Oo*++-| zF{@ql6#kew!jq`)hqTQl=)pEb$0_&*LP#*~(ajrQxm!?i^oj2?AhO6<&bjIb}+GB^!D+NUNXCAiCxWh2~BMMTi%)ggF*J5bw73uzpf!a zzjgFn{WAGXoVQMLPA_;}OaDsR?&G%D&?_2bVmFLlUgMS#V;jTpI+3;Zh_|J-Kf=HN z;XwJD)B67C<(121GTzIk@6>8Udx%zzapI9Y#A2FQY=ToZ7F43F7cjCi=zG6%0ew4~ zjRPODP%ZNQ1?>`kViLGuTZOq~06SG21`*afGK7pa~non$j7Ogq0Do+wb z9%65l$coeU>9phTtZ(nm?2YqX$$vyY=R@@*2qx`wMth?!*>-Ls2|`<0B>nsJ`2`;( z>&lVKmdm#SX~)h2R~8dK=|-vDh>-aoze5{OrnQ|}=YFfG+_|+N{&59Lv5c7R=vBv> z(|ax|F!56jn>}7Fb<4T;xVpX0F*JI*TXEzwOU+=fe1HatR5?YfAT9Xvk~%7t1AVijX{~B-u^P z#|Jl>Hl*iD^efT9WG&VRHkQwo6HR{fHX+S3VvjL`+pc$@BKu?htYWx|$)m%cIm$gr zGBCR;chur8OM3AhP}77$)5B>wzF%DZ(=uJ`qxeG+C$B2<;&3=+5M$XKd%Qo zX1a~87Ws~Mvy8Gf1tEm@4;KKB(Gfxmk>pl`R0dL-?j&+HRXHB|H(IYlC~9Uy{I?gT zl30L?+bfn_!I?4PF&EbJZ#50D4lam^WJ;!<1rqdHz}gVlfp^oe=Mc0xc#HbRnbZD* z#!q94G+}aC4lGM_+Qwx2^nW}P1O(szT*8t=d|dY`_7C@!EFPglV;Gzx3T=*L6#@;P zpM~ZeJtpgWLXx}^Vc8P(xxZeh#B?m(@I!#jjkYQy!fcoxzgAV}@q>(b%dyUcCCbm6 z(2r8`5uplSnbRM>ysBTo?SR!GJVwPn{p?bZrRq@%4RE{5YWYRogDH^>hopM+B`Ef3 zSxTky6*JE|?N~xiotrEqf+L3NVoyy0ula)%`e&RRFl=*&crQ(FeMibmp^}2ur|Sxj zY-o|pdx;H!OFBjZIbmt7mIM@BcjY4SS1BVPia6rBmhR0SXGFNXfe5(s$(C%sPHhD< zx~yb%47p7ZENlW>cd29HVIXxd? ztm5ga9|Cue1Wau%{J@pt|Hcowk%B%w^rLyYRUC0Yu9}BCW^n2TtyyhB7BtwNyub=+ zMYd63O*r(M#-)y#)69y;!Z8-_K2)f#olyN$O)#f{=gRZgo50Fu08~*3Zvv&;OK&h% zN4~mM?ek3HU(cXRM9WMekx>=o-3&gXzMm{e(JI`6x*|JlqW&CaosP}VNtPayjUJb^ z(3L+hEa4C-znT8`&9?DS!}m8u@*o>U+`R-e|3OtdHdhr1;&X>$72mHvh-4X6`3>; zN-aHrb$#q~!_j1t#L_wI28`#y-zU}7(WRL%d|kG~o%pISHL?GO0i0(K-b9o-Y#;JjGiymLz3OM)k4gl@&0|%hYE#WMeud*o$J$45qZsP>ipdn|Du)fqVQgF z#0c@=my?f(@vf{qW-Jpol>h|`XE}w?7 zlsErbBI7!wdZD212F=ho09?uOcRHG!O4Ep*SlO-47;d%EZ@G8utOtC+?ss5A@fTJ3}{Ocq3sgdc~K@zO+ z`}Jo{bmb5K`+9~iWC&@;fqyF~NM_xnm%yxqV}+c1|If%L)A3T6WNV`4;|mK5nde3p z7l*x#U7}QvWZI(sCyh0-)A~F&fP`LSZtJZ!z)}W&;%xj)m_f0dx zr#OU0G4-*d&!EAQCR`i^tmb3DKH zLs=&(UgBzkIq{z##kx?{mC}kPOQh24JQx-PKW<*oanIFYsi@#D>8mm)xGSi7>1Kws zQQX&mmeH+C_|?bTrPmtVFt3_sX$F(`eAc`7cdtQAK~E{3*^6MlFo6HvecY&{V#9v~ zV|vpdu~lADZAXW>9C-9e|4j@#WFQLblKQId=!uc0xrKs1Bi$fZY1W@bg@U*>vZXwE z1t#wh%P#sC)pY4B3efJClLIErEq@&q*~FP~zDfNU@W<+-fb2W}{&_4i9+qfZ(UYlI z;Z~NMYgAuW%@J~G9oDFtW2gQ>x+cQHQNu$UdJte-G^~#sEdQ7z`vYgG9Va?Gw|8nG zr#gv5MWZLVI)3xdtZ_lhM<1t8+77Mn`1pM#X0~t4IFz36vfc3gYSJ=H~9ck}a!B zKwe=_@<{N1j9JYHBI5>=N%*+I&Yxfa^bQ~tkfo~3~&ndFL@nwom|?p-#Y0R=fZJ*A9;z*GrRb<8{N z^dEPFfz=rEA3eHu?HZ#*XlN+$G>r>Xu*CU4^8$Ax;t=5}Y|c=*HcdL4((ao^jx%#r zE!@#F8jdLHyubgL!v>la6}Rn#M3Y)uTX%2KIr1wFEc0Jl{11NBR2B@^dR1VHLczL{ zw3$+?mgUtyFBul7C(R+GfjS{r?fTysAZiuHuHbDHzq{)d2hZxVDEOb1B#6YbfBNJ} zg1M^mM(mIHUSaogq-w6EX2Tzo0CwZt2jH|^Q&=z6#i}rAeD?W&{~hok7&%Cfx6+wk z@|}Ibi?i;m7{oJ*vdJ*Q0PSNEse-77UVooumxeH1xk4<(KajzMtJeCv_W~bPfdLzg zOie9J%rTeiA1o2NoutU}kH99RLU{kaBryjTuALLLh{1h-A6pH(#7g}8_oh5xX2K+@ z$%W6k*Qz==Nji#KGmu8qc!EQe2~2AwV)m6tRSt=PzrjURHx*8XS5_|1{yy~!ZMy%p zOP9Qc)h&K;bM>tC=Kr!2+IXE#Z7=Bj0)Dy{8f-ZRJ?sP49f7RCpOwrG$A9JD5x;s2(LJfC zW)dk#=i|#_1TcyWGBAV*Zr4SAzh8^}`G4+#^khfb5_qIn&Z$Sc>zQg&i_Xd?({knok1l`{VpYN}G28w=~~VIoP<=r=0iAh}%zq#2jF$N>k!%s%W)3dZ-Jz1YX0 zxcgjeOL0?EW{SQ$7Er8uCu@apxTqAa``YK(S#3XKI;C5TVskiQBb*9|??E|hJw|9G z!y!Ad`G39U<)j%yI!|5KiEawuB~{T8PO1qiX1fMRF{31&b^HPcx*s1O2L=TA%F;d~ z_SqRWm6^Q8CvRwzuGOswmGKV@Tb8DcEzC!yI@D?G3+ z&3s_~u?nNNfYl0R0eZ%Q?GU9RsGnNbf}B~9{px3=4S7r{exiO2o7Db zmo=g-HCDN@{=n$k15N|vq_&cTh{qAAnuEH!r;1htn{afP0|=t@6|%rm-BNFt(F@$_ zG7>BLzK8P(x4+&lO}E7ywN$!P3S!ESCeI`>7QkDNCi6_7V6n@?PQMf6>CjX#vt(8b zgV(=LXN%mK7N-_}$IBxm$esw7AY6)xFzVEwH@e(JWueF{%YX_0K&kgU6g(C^|5<6inpgb*RP7cPT=~Pa?z;Sp=JfzdJLr4&J_`|r_ndFoMpS7B2j3iQ zx9ql^Oxv@T-I;WW7WvU1(4p<_*MxTDUJ1+(WlR0Hy#9t~CQw|fcz^*0 zPm^i*13hhQ&dB~%zwIu89s(K?YA*+xoEbnJNE~?Cr;D<9lYS z`O{CCtbYCorC^@@IZ)}D-Zs(n%}3Q_YhIqVoaBz=M@7_d?0jyOlw`W{qnF%H9}D_Z zIvDPks2-H@v{Wfa#jidxkp9xd+Z`iG4XzW&@&pZdKr4m3cZLOFi!Ld(CB|9{vq(1GVOh(`g|GKQq zWR)yv75mmz$9M3_PbrK+YCPA#$n@vCQ}egPS|S{`%RgrJKzYj4b{^oGHm@zrf13Sd zX!EJt>(R%wkLoXbKNQKkZWVlL|Gil%69}t?=F(3h>6pxjF!>SR6{Nwj909c_Hw|aPu2wnzv1ZRX`LjZFV0(Ogym1Ff+9N*14V4Ws0E@gkX-z1(d6*j_D#IMhbHTIdT zzWL(qF;m8RlNMDTr&GsB;8Q~`<*J6mbpDT3eRM8xx-db&buQP$Qw|(Pu=Q~t=cE?Z zPW+|d4xETmVGnI#-NB6bR5uAgmR|zegULiR4B^S*ngQm-aQ^46?m2V%MGAmco_7R* zx20fJ(BkDK?bfrSbtJehc?H0@MzFFa3iQNn9RiTtl256OlF!=?bS#_Pk>d5Q!haqE zL{-EA$r86JFXy_18|=^S&+9M!-NVs0bZ>j}1ecV~fX(>z!G$DL>BW#j;Z;wj3+@^p zv7nvlrQ=|QGPXNF!y^FrMo9oKpz$rOeFdtlS?z3I z>%09tmzpy-ZnOHHC6Ut<8Izh5kg+M)O%)oH?0w047>`#E80)qQwZacT3t6+~efe5$ zvRCU`E-=ow=LdtSRHO`|<;MVE_1j!)c6Zyo!v#QiH{xR3M#%?jlbAS3B%<1fIgoQzfIy1Lxn1E^ZV02)P( zce}5*FJ+QjM$IqD%9=f9B!K+$67_H?0ih$ZJ7{M5A~;Wq$nemNi<*gmpE^BqMu(2F zrO@dGvddLChx%`*F~o_Q!p~(4%qk{dd6UeeszNncXL!Aa&MJl=506fjN*kXlM; z+hZcmSJ*ZV{fd7Ue7KuI%qRuRsbLxDNnt1k^tVka_3i=q@n*02FVbqkukCtB9?>q- zSULmPXfgl$<_bNEAGkd>DyJ6n3lr{~uGA7Sj=^Vjw*!h%DLPWN(%-R3;THgz|WWb`TK z1q#pB9@^-O^Z{?OS0d%Culv-{aBk@oBHe6$uA+|oVtmPYRk z&^*$ns1r7?!y|$}h0{C~wum-POm-hQ0yqj&e6CWL{Q?L?FEwg6zj{Yr%jcv!h*8Mz z1nJP0%btZTTLT(q^J)%>ou^IgHy?V)5>EJ<@QJpr9OR}QTeV?t_V6hm9#MK+Ts#wt zIDE)=%u*?_6i&~#f09Mc@2ZkF#39|+UJvVb6I4(QViINDFKaqUm_Sz(@=MrwbDH1N0XJy)r zRgTnci2@)DD!xlqg^*`&6J>o!L5h6DX7!ns#yL&DiqC-^v4~x|+bXs?Z;UcNIvI!F ziz|CAx1P@#Z!_$jQwP?|HAVksXg^h7X3;BuOm&t@TGNMOWzA$qWqhu)#rH^x+54XF z{=DN}{6Xa-uOA7Kr$j2$WOpu=z@gW%$vo5yHevghDn=3w3O{#Vl6ls|v;c4x=uKS3 z8x?xqjNIi8av24L)Zy|=UeN+N!2vXzqEwj2r(aD<_fieKz7(Q=KOG&>mY(R^!1c1Y ze~T>p+2>2)f(g2ayYW>-{SjJE2L@NkEQ37PXr%CoVvRZl+S|eS=u*bF$gQm>#e~_H zRM%)yt%h9N-@h)}0lHQ6CO{-igzR;{!@WWY+U7|*$XJm$;bkug@VH@Dr?p^QZmX5p zkH7m!TJ&m3q~EhucU>yE`}X`KuLP=dkn_8FklLhyq~%BSFU9rKxfLX z)vlwC`v{;)z51%A7@v~-T>K^#oFXiQN14nr9*=0154H#J2HQSHF^2XZjP((+39GML z;?T88KQPMW^~$YQ{0PmyZmEt|!^}FcXn`HeCXLtZ* zTElD5w|wTZ`kV^)xb~wB?v{$*<(fVB6XNL(5J3bbvLI58DAc`@Cv1Ul)>Q0H_h?(# z{qh*HIIuf2FBcDsPU^1SXCY5zaPfc75>&^V7C_$8fhd)YqKqbW(P_hrPgShK`Vg`= zGC4A?yxWTtLo65(WV$Fa;`SmKgP=DNtK!0Au+!;s(jEY$LjpPUl(o9Zt#lQ7I3aUY z)}2P@&dyE7&BdeTD?jfn>QI?U(B>jF%Z{!U*#zP4d#>;rU|M|EPvyqbJr-^*nipU+ z%4LXI)=Z`qUG9qd?4$TtOS96{ zk$m%31p+2Avhcr^FC>74Y;;md^37jM=}TtOmM{|c0op} z*4f!bp^ADDOxt1Hfx|+&Y2zhp5YAl~H6QzTai`FDb~CE=7n67R@#Ti>Y*k95n*%HU z6ko()h)?`2N~JHlcrJO5Ek@DKzw(B|;{6VMo^7t3yOk@&I{UEcd*^;ip})(ef#i=$ zqcXTc$qWur3PIhiVri#h$lS!U7FCA1#iqWa{iqhae_@W(Xb!tn{-o@#vl|C3$ckQX z0MOmEK5r~s_9PkE&%qy_2PfVT5KV5$TTolVTMBn`E$6Ax`%GbhTD7BQ1&zdkQkGKd zV+w=H8Ry}&=JWBQRp?dOEQ>UvQPOo3(k7`UVk^-bFfW!*p+p0N-lIDlYDj? zsz+;OnB{!RprF8ouLCCUF30Gy=b-Q4eQclrYomM3DNh&AJ_g~@WABSV-d?{hoGt~E zrQI6S6}!0Xw7}cs*YbTwT9b+t6wZ*0g|?MWp8HS;%lt^7m)tuL7}{6-5XaQU$OYnB zq(7p*?B@ED_@RcVP}p8c=Yn262d1b=qSQrOGOlc9_ZkeZ#@ zan=b^zlq|(uXC(S#B>4_<1w{oK#)Y~{$NIK%GmCUEk@#tBta}FfdGaFE&IGy(V=16 z&tt~U+aeUmk=L9kbK^b+Gd+^nJ&}EqSz$|HNz1{mVjY$hC?r^ZEA8KiS9oNk0%EA5 z+TP8WJc64X@40v3*B-sc98N?)W5$n|O!eyv5tqOI+Dn5ZP-9QK*?{hJdX;9C1N$jc5a(jc-|Ju3y)QR7n`S z$m{XX&ChM4*%RHa$wC{rBzC(dzk!@ z-1z}Nf_Uz>S=P91*6|o^WU!p%uE6{2OY z&1FP2gq4YL5Krw>dEv=x&<~!FY(3Pt`$h2A#As+sS`{rZTUJ{%1rA?bqVKKVyp z68&5L`ip(`e!ZUB9)4ELEj!J{!Ia9F{X%9_e3IJ*U$16}JBZo5E6{YX3q?^PejUX7 z>|4@xGfm5PJQ}_d5D#%)z-Hqyi-3P48Z5T57E2_B`j-mRKrLO@7{aTTV@8$Q?L^u%q1bU zp`sQdqVSqD=XS6&ewjsM(mQQ;$6m&dUG8N{M1eKM-|IaRs=A1HR^H$UIti$`0J2!s z#=0T0(jdmUe-gyAt&WB4=u4a@N!~Ebog%C%Eft=@;HL!^H2huS=rIGU4pWxkpZ8!>Y#sF4aiv z(Ym=MQQK+>MRBSGE)|=aO6I_fr`?D5jbYvY7ug+V87wO-cguGV7799*CNWdRMB`!- z&H>VveO2|EAf%%?2ZHzoUYsj*gaVJ0EmL)=<5vfOHM-5`2hpe^K8vsHP4aWz3E4U- zBby(JCrqe${?s;P!Wp-&p&ru6T)C~N_eI@Av^j-nkI{f>MDppyb_-fq=7$3 zQ#Xv5-gd_PVx zR-d@}e#N@2mCI}1P5d_HXEK=hz)~*9PDUkWvzC-qpG`dQ^k|Yl#=j?wQz_?k%zs_B z9}>B>G$V}-q~xcH|5C6k!N88r3Scz-U`O=B=iK0jn}0%lN3^2CX*fEy0kO{&Lzl%) zJ*m8-Nk|kMdGcoQ2G}lnq@GKm0{+B>LjK;Xs1oQGtTWJyoGKk=oXo{-v5r0&R3VJ0 z*u1g`2oMo6J4HA|Nikz%Z!nr(bWlcQ@N(&Q^l9-I`1=T%T&*&K&V2vQGTY#MFeb;r z@Jll5!#jtW_(g?lQn*kl-gdoF#emKlI^BGxDTRNmBRYYcf;-q)v zPfM_|ITiL!qkJL<`zAimXfev;P}cBT&!L3Swi!V3;wGjoba{+dSwrBZ^?MkDL?%b< z0k#}vMzVs-E7rT7za>6Yvl{`y#9i+ zcg|khm1Dof^vPEHzkC2J;XFKj*0Vu-b3QnQSVJ^x%K>#ldP)@=Soev(4jF#1gu^!3J^OY^t<`kY&g&P-ZL z7?gd+&#^$B+6}K03q5~u=E>qk=a}98?lw$pDm|>Ryef%|{Hp_IGb#}kzsMaZ$?R;a zRfOc&#j9VB_U{?2s+)2l`huuDM4^|lRI9JRp z(z-6Xb$fX(s$5kpQiNc11L`h@&p@WHm4l&hFR62|{7Njo>OE+PnUyqzYLzhE3crI$ z61N;0bh(3VLE`HFK^&9o9U zC$yf-QH`l!azO{NhY2D0ef>eI@b-MQ=M-UD9qNb2Uf;0x`%b61acBxu^EXJ=eJ+B8 z2(|B)e+r~^JEFjv5(X%$cLwY>V(Uq!Z3o7BA-p4U6mwO)?M+J zRHJt#-(V*!fr(90SR+{!k#dVt{x+=@7p#tDIrnm7MxP#mn6a~LnU_AYKpVwQR_Zhs z6`2KzYw5iPLgn{a0Cnk#?Ut=fiZw26hXLz4PV@+BTz&859OeeE_vf>nft{nDTNGGh_V!FT_8jBLk%jcLcjhu=hcs68z2pn_ z>PZ*!9AP~ zx=?i8_npY~sr63^+`pvS**p|jhAm6o6CpWt3!ew6ie|VQmbhkp)asb#K^FX?RUsfK zLYG=VcJM~2Ry;hsr2dSuUoUPGsI;85M$=-0EP$<$BUuQmP|3ir2*o}@BT>}IKn;&a z(oYzTBEumfHYQT@al*G4l90vdaAkBY;sJ>bnYnuJ#KEgmhdWr)gVXktd=5IA59)Zt z$wh&DX<;{ZKd;O{im3+?)^RxzyLoiU>7989!c~HQgwd&7(m+tFR6~l_?8~*YmqX{6 z7)D48$3FM8lr0!r$Jn7pZWs?q9vbWg{x|D}Mwbf$cp;ih)zaRXMNQvr{#Fc^j$Z+G&51(v`r-b`}raw^> zKvM=2IfX+!&M{lcjKwl2=Or;WgARSxjeLdT$gJ>pKe4R_T*x6q9={NsCDJ98kNV1Me973i(+g~bsPHHSwj5DyXlS@}C1~=A z-x(09ZkmuCIv& zTSj}M-?F-}ah1e6nXP>6y-J>d&FtBDoUONV!Jui(`8$)|9Y_WA z5m8O0^X*^)?F_0QY{qhWS#*z8x&V01H-a!`F&g%qxAd%B~9=QKy@nL_z{_og$5enmqsWq(J z+FTc}4=47V1bVeg_Km9pHlexml>o$eXO{DITsY=b)DZ#H;so7n#GXNg$eIQ(OuLf6 zwhU@iA`z>kJOe>J_e;Y*??IRQ6q&%4{XkMP=+CzNThNaXU!)GLi9wAb9Ny>iKyrPceJ?Us z?6|jwO=GSA+ChG@<3m-a4eevVJ?yALz|dA1bXCBkQ{~1zSC#;wGuYfq_$BD%dX#Z+&ll zC`9JGw(T!szJyY|yE#!Uqo(Jx-Vm+u^4La!H+ zWlfGPB)kbKUa;4eLe&mOt}G_OM)K^WM%MDNtXP%ZauTVWZM2;%U#hLD&H9?LKMl5({=s@jd$Q(d-z6$q2iY z(!?vpl36i(wD&JhBl}hK>?I*k6c>S*e+i_&du$X3^7XN}sEv52T56IgwJ}yFE=GRX z^04?VN3&`~8;8#*QiUOoulXWOfiauPFo~>8q92Q)1qBxMK=d}K2~+wjiWY(fqPA9{ zg*JOE%3tJ|2t1K`ua%<+JrmuZGx=XhLK6OR(S$oZ3p6c)jU;>s_o84C-s*Vjh=uZK z8>bk}xIVXBhISy=gqr5v&@LOq9k+srpg2`A5rkgVU#s}nV#B~9>NPx5zceQPe~=JB z_m=zw$P2gkK}2ume+DT7j01zhqDu?yWU}wc-o*X`k&=g>j{pRP*kQHCADm8ZTNqkv zEva=1)yWvs{r_|B07*1%jvgh%_0}AQaoT5LmF-DZ(!9J)KdjvCE3MN8z=|p9dh;mv zDzjgiSX}>FQ3QA*N&}uTSa}01S+0KohyN%fVnN#cVk!)lam#CSVT>ci(95}UVkcn1 zgWg7K{&|%ND9jL3)Qc8{6!cUZD<;|h=ffDFp%2%qF#_?LzqiGau^het4luTGa%iSJXFjsAzRzyeu8#qqPqSWwT8kB=#cj!!RMcgs^T z1)urM#X?tRstSK+@5I6JD6q2Mai6PVr5qiVH@E9}YRCRR>X!gyOadmgs<$qIx5(tV zs=zy;_vpi}tS$^!p+DW=b?7wKHaWw@{D%(yZ?CF< z0#KGPFuI(rZEYT%i&s|fzdwElGU4{oCLBS+0N{?CS>tc2oEnVfL_|Vjc}BY~UO2!; zs)bvnru;v&AaK;Fz#NZ~(F666pFeS*t64H8&`)fiBX5^C_(DZ*Nv) zC59msJ=P2dsV$_f^%hfWQuu#1`R}X7K-}EVFZz{~RF(pOZG{@qz^(J)RT$lO@Ylp1&Q6nkig zJ0yS)=PnSV_-Bh~N`!KzWr^xBwN<5Pfu-BIsR;{<1#GHIBCGfJT}T?KKXFh$*^Xvz zWi=%F8W@5h8Z_n`@-ja32;CK(jfH1dkszCi0s!>%z=<#S@1f~o;$&9rbzJFT7NNO_ zI&>t_4~ja~^kdHuLPiL`lA3;#EL;b#@TYtfkW%Q1B&K_(cusV^DEpe$kj65N-;8PF z|0W_mR-9~z8u(YSRdQbh)cs@a7!0birPGWwplH2bIAw@f(Kv8ZJY?8`*;6N)KB9Q` zW6nlO9RJ<~nHuYTseFxcm}A9=5QetHI6+;$;v#MFdMuZ8AgeShfD#V1L_ZL3iWi~2 z%b{~zT8hDe`P}qp?}8yrQk02w$+~ZtLV-VC)qWes8$;bKiMAT_gH|Vj(!2@EV73|$ zvSQK>IWCP?0cJsVODE=^Wdgt&$>?EY2#T@lX_RG-u}h-RHy#U#TDE99EKZBahWp6P ziD(k6{2tbg+LSe5+8^nP+3(_&W~ z0lEq?tZ+?j>iT_($8t`xv)@~Yc75mv1&k2}W zsrzLz?`va9lVF^>y00oX>X!?ixKSW^Y5YX-#hx8r07P6zpj}ur`0fPfFS*GP5hBno zk;|n4t5T9!$yFvrVQ@W$FgHt+Zir_ik6^1q4L>Jd=-AyX&;;dysZSKbv#(6_N&Alo z_1h6a!Kx%NY7}o_u?BB|>(qgd07pk_15ia28S&s(D^NgJmqoMqpBu>m1zRt+j#nF7 zt!RhnpfbI%uBJCrG3Hfalu@Ks=XDGG04Of^A>g9%pe@h3mc*K4VxlAT><@J@hl>9t zLx_VH*g)f-u-f9z#}xG1;>F=N-?9R9P{&qp%Af35gavUE|d)y)i zd)jd~o+n~h9vxEce{`Tqe?6V{aKswJsGKF>@bJ|O06fhvZHn<2``#QUCy?^HtaLWL zdsWy+Vii1_fpqG(6-Kn#oe>_j@VLeI^d61rgfZP#R(_FvXb zg!nly1$SojIqJu@%?7mpxqARInh1&KlL_eD6OkkugTrCoWzKfWr&lz7@{u`X3FTQUG2NEjRMJG@JSuwX&+>VgxpwO16OGd&bmq zRfQ!TnsPtj$fh*B_Op8iyZLl-pV(4al$L2YL!eU<1hKW5U@$6#{rKujPnU1+dHqJ< zU0?HIy6{ENCjflI5qOuo_g<~%`$-M|y5A5W$@#EXu)e&tOu8PsZ0vO&F+H81zc~&7 z=ihK00EjW!d5^u(^OdH(H+K0J_(Nd`sPrn?FZai=#r)x6t=E6ID;^;e4r&qo%9u;QQ&;+~VTxDG~+QGGBdJ)n{L|C)eA_8oTM- zCWq^CB#NNp+Lr0=<6=~#A0K`9_vJwf0RBtJ{jz_pt-)oh9o^N*OV7-V;tFAj-T71d z`NL7c`>ylz^B>+{sE7Mckh%EXHpy5@^E0qvCDDGPGQJ*68pvzPwp;!+p{DTEm_L$H z{hUw>RI9QtL1j|Ja_0gzbF=ghhSfvg7-F=5rBHB}R;K}Lf9Rl`wm=8g;K6L^D?Ew2 zuwWWQzu%1_@TngHXIJ2LH@zYJ?QElE=NA3^e9u<7-~qtf0W0B@* zN8Vf__nP3KdWsgSkkvj7sQ;bxTu+}~T&NYJT>a;)EO3GJ*^(17#}F)G$mHsY7OflQ zf1A^Ot`E^M zID5}oM6<*a82UGXmNU3E+ai%=cC3Oy`1UGU+uj=n$CL!Y9Kq`NF-*23+)c1LUk!S zug_XO)&n|_`+&Nfw{S{J5N~wqZ&Lx#{i2;qrP;7BrvMHLtuYB#nT8x~S%N^de#ukv z6%h`-E^YNm3^Mg7V2|JdpuO4RS6RNjVUjTQm`j$gg4hR(BK#veeALK~b|`-H`<)$; zG1!rlfLU!g8jkRAIp^Pe$u0IGioUhI9gsOSkwy{d^B6&323~S`b8~c(k{Z+YYSH*+sz^CXx=3+4$|TJf!{4~evT+deh~#))O$3yCGMlYz9USa$1ZeEc zj?Hr+kU*nUeG1OLeDS|~V}}?O<(9)?@hxBUqv$UXGfBBxPP_j#ePR@#z`9dwz^!(d zd-Ir}ByH*Xw79%RACxRp4-M%lIy*c+`GPs3QH~r-?zm-kXF@UxO zJWAhI^^1tT-Eb?C=x6#dUp0o>+@37*KrYo_y>zI42TAVl-6WF1AeuuB>Zy5aAt<-! zfetquYYHs(L|j!TGUNuUu|cit$F}8HEiIBoyc$D)F>o5=jQVn;(@{Nhedo#XEX^n1 zGh^@7YH0U&bT{WLA#X!1t?LX{qoumQ;PI4}L~`Mfn@f$5cg>v~UHl%mCz)4W9w zo_mo=a>_gZsAuu_7D`C01PKevdwnU}gLQPNY9ZabK+9$;8Mr8ryCz%>>6k&gGjS2p z`UU{WRS0AVYGi$NS8LD$w5mWlTjS9PaUTI9KnRIAW${Ip6s_u;O7(ILIqf%&Ii{>! z8RzUb?{R_`O<2K~qSaww@qjuF)+XpE{&mI7 zt=O^9DlqAj&w)m^!H*ar@uA`a4}`{zf#2%kkT5oXcLrC>f4Y^zyuG`@5oq-B#I@te z!L@Mb$|lW`cUkRTR2p4Pdcqq4;J<(-<)pk8 zj0Lw#tJ>arIay-!zNf3}O^N8e$9%IF8#AIMKsD+o249v)2Kj$Jx&0stM_7=f1y}TO zes|Ra$S&^}1(NNg9t>woIGXxoUy?Pu}48vzH-XuH=7$KR9sZ zFYp2a&huT~(Oa(;=Zbc^*Iz6l2_Rz_Y!k&66fSifIcfq}#&tA#n zK5RdEc=`A`TCpU?Y;wN?KtY+HfgFYNyS+^1y1?u7dTDrjmBh_$ky!xjyh^GWV<>M+ zrS1g2`~U>Nl+t7DWT!c#<+niV(-Zs(WrEYON@a(BQXTJOnpp3N_*e~%(OBsPVXDt9 zR5FqiF?Co(aPU*JO6|KmC-S=CTI*i8>W6i(dnK{KQP9;YmHWwKI|4uVm8`6;iHQ|kRGL)ooO63cTzQaB}&b*WHh2u;nt`U0&D1g@?mES367+ zNN_ie9w1k5JFgQ^srZ+1gVa*@6IC!9fvsB=xR`X?*Vs56B0?-@VwG9A!c1)-a73p~O7_}%5@t(#e(QJ|O8r|nBDQZiMaytC5_FYw8V3wHa# zGvm{|4dTBN=)b+!eeAJfiBy?4Y5hTb|Fi&7++wnLg@L{M!i7WEcC?U>9ts)JK!;wsF4;4t%BZlH7m?V<1gg=4K3p&9B|}H_1P|*ME?nwwEV&Sfu=u zgL@;jy#OovCe?`rfn-l&Q|~r@A|0ylu&@&sxE&syBEu&H$4oI4g?+0kKj$o;oaAZA z49^t{v-Oq-L$k5LmxPxtzQy~|hsbiJT63_oQUHYqFH+{spZUgu1$@Kc;NYR5r-`Jg zTdmGA1Zl%tX}@Q?NwT^$o)7^|8FpNg+WD(6+PdvyPnqRjNhNKmg0jQ9nal=b%jc`U zX-cwYVt03ml^kD}GlTFjo1a8uO22*97z!VCIG5GL_=w%t^$xvj({=x~DXmSb)k93&Q@ZYs3gFx1Go(#?p64B;j9P<_FVjPpK$mJ3QY*LnK?FwXS zpxef+pxG+!*z}Sy{kRO>AIQt89FNBhxr(KUFaTaxRACT5zGu{-5~nQ~M_2TD;^!CH z*{Ye(6#Sc}u6&<|pH0`TFm)L5tAv@oj*rzL@13?EgOl#~^LR>l*~or-xkL5z3QYwD z1z8!q-%pmMv(6fv{^%c7bUlM*P1J-W+I65Jn_kt^_UJCf@OX4Bl6R(Es9^e0dqKWJ zMtianOa4ivF;no$5r!&3h}y!XT8;@PRls5~>J(axAuJfP8&`&p&bbAT|1WG+j~0J| z?MljYQ)NoOUove+N?wdME_5zN5_OK)*8qRUcPM4nl7Y1b(g0EFg&& z{w!FYCddHaTiT_s8p6*HBNG=d_iWGDxvdz;oBoD{{I{h`Bq{OVzDQS;MUbi-)G3w~ zB*=sgGBat=Uwwe8uO?ADh7-)_#gHHb05sEmtQpk&h>%-(LRa8MfD-KLXqzE(c6& zygLE?5ysTc?;7WI!wAj4pRKrtq?@W>529oH-l(|1P@Tgy86}S2``kdAE{t_xormCThG`_JnFkWpRZo_sPz3 zR{og>POQq}4!XE%YmIUuH)J~_ArGj16VzC=C>BVl)~IOzqdAK^+Pzyo^MopAdvX?| zIk4D`(dxd$Ax>h($4+UWeIQw=&?5yo^l&>YBqt=6ZlB9b-SV8cc zUoJ8Hr5{HCA%`S-3)OuZWmN`)lyxUHAp@+n0l6K|ggU_nj(N&BU#+~T6T&z=NyVr^ z`PE^m2GWNtP2ObFEWoww!?4qU+qq;o;*G!qgbd^xQltOf9RlD8G8;M6jAFDBna13M z7E&Ae&))HfwtNwarm>EdRECqW-OX6?Khag(q^Bsq>cG3Tvf_2YHbva2*f=**)$dTn z#a!BTepx`q9g^zGqnOS{lV$?cCdra1>ua3s?FGC~*98d$gAOg(Fl2(ic#`jPQMo!h zw|*)vAgC@%dVJ~bj+O6;}6aym-$Mb_HBvVFg?>_Vx4*jze}71g>eE4 z`M|l=;;W{%6nZj=?l67~%!R{ro1*4D&x!a?AZ&}!{vEa)b7mL4x|KtApG`*`=fdr=g$29<%D3sr92$klQ4M1^*~n6j~U-4 zI>M80jl-WYrGX0P45(|tf-l>3m1?QPCpiPPc`tW|ah;>*IuMAN55PQVnEX7vn*par zA5DFHer*?8g)c52m5R{OHt=@bq9+VVNxgeIXfO>vUxZqoVt|pbP&)y|{untPJ{}xK zKY(s^(Q{hg8~82z(+lsD1-GC*QlJC++uc}Z0yblNk0`(mtTSji1OjE#9=|JqQ&6G& zMsfh)zEJ@ERz3m!HawlEpcxqiOTy0UogN$A-qrx&W2x2vNc4OF!X5%v!-dt=@wfgX z>3Yjir>$~_XB;juGkmmG`MM{NL2vrt zl}aD^dNMh+XLo!Vi!>^_7$M0>2?6VVjHovPlg1_!0kW`WwO?aGP{kakKr)k9oH&Ed zr73p|DsjqdT#S##?`m(v?-wXc9F*H6o7<^rqJ!(g!JELhncG~g?ypPLy6C*?ik5b5 z2ulqV5`g_N_Q9PPgr4|b%<2%3#;5S#PliLnY3iA z)z2VmJZWZtRS6yf(q_1pzk5C~(*s2SH`+f%1V>C*#FjC=I$2^%3w+`Y9u)J5cw<15 zgi>Sl-RxG{HqL-r95Q*YG$-2xGY!ar582zlZ_h?svUZmWt4rd{MWF|qW)ffLhw}++ zJ^c!!_ty(GyMmD2))Dz6D!m>w2%30T#lmw4AfiTdfebU7y@9H6ta0*G3J zdSs2%acPQl$z`!m<+O#eAQr3bLTVatyh5OU8Dr3@T> zR21cu%?v|j00nLtk3p>vHghxV$Fva2Q9RUAMNIn$o)W}6(DA}^f9%|MUCd#(G&t~^ zg!0*T(|ht3eDqp_LTaLZ=%s{{6Z0gQe!TeEc8U_4gQN3)5463V&qt~Upv$T^ckBYK zY<~Br@$I{QHpbR{OnqmG71L;gy=>z9Oe5aNt=IeM{z~pOdGL|&mI9+BT5W*26C(4o z6$@CK!k&P?LLiIrp~Qr*)xWUbU3c1BuTG>od?&^?9_SyHB`|FEs5BxE^RhAWq4jEu*cY z0lf?z8Q>TB)|qCP#qRMYjU}_^%lNXo=6Esu>_Mz)vHggvZP!Cre0p@8I6*c%@!Z3g z_Xt%>6C(~u0yf3F*?!Mr^ssdH?r)~~C%z$3?zSWt;T#pP;w~Epvc_Q;8XCoLHJTUI z)Wk*q=J)DbiUTEExnn4zs@h7I*Yg~DKgDQB9)?^Z`9^ObzcA&t6b2O>pH?l9S|lOh zz4YJoKf-SBJgKe`Xokfgqf)4}9D<_b3BJ6fw1|Et>>~m&W#QR@>A)u%d|uDQ^!$&< z_@C++-yA*xECio`adr^~wE7@qEtf)Kf2XL+c|}Nfg(ChUK`2*tTD@=}xxC2YaLRyI z=)JFdsU%P;X2#ZSF#UjtlEHCFgFX54)!inXYGTO*MS)08YHN+ol46ZDf>8#`Wb;5f znLCC#uCu_G==aY)3xrVoM4UD!4WWMuefzlKk^75m{TUIQ7+NBc+_=VAdy36LXHBQS zug`PeZx@f%-GKqN0k++CcCy@W7Y%Q<-vv~e`s(@psCL|uB)5Ul1KmOUtx+hgC{S3| z!Fr$!z2md9h({Qt85kt0WL+fBFZ!Q(PQThS5PS^$N1JPuAog(#cyY9n{ z3#v(qt- z@7xClH_OGM<|D5J%b#^_nAV~)PU6h1Y;uvO+D_*`LxYZOBw5hod66)z1UHwL6PyZI zS|HxDV!6VY!7XXQXu&f!_L0eO_RGOgl3}gihSt$-tMtdBWx>J*)pj+8{0M-T5P8^7 z%@Tr8A}IIuOTOmcc!|4Y|NDko#|kwML!4>+LSt)Zz6o#k1AAnEE~&|{R3Echgu=Ke zy)hIR;voc$a}teVsRcJNa=aeSHiEfS7t~fI9v)y+Flt&G!exqKJ<3EkrDPXMhd5*Y z@a`l-XbJ4~vw+9%Sc>ke2bl^f@iz2Vn9~Su>1K({(N2X#utD$p>oYh%$2=#`v?dPJ zD}Oh7$wgTU0}BR>4n7&4OPvd37KWay2ao}Hj|RR+-PY>-I>B7ve@N_yzKwc(a`KyF zyNiL<)Bmk~cnN3a2nT{3EeAkA`X7KkTOezoCiP@7)Qy%E2eAj=vovbL>AJui0dnDotRjbq35(PJE&5YP#F#)<0ealT)Zp>*wHLph&sX< zF|6c0Whk@?w|@tM3FG7IJCqX&KZAt?iH`X^U-1rbZQPkDLqS&<`p2+8!OHXEvr|0y z9KhE6Js{2Pp_OlyyaMSH^OR;%Rk(FY3Pm30%ly+K@PHpS!E8?9XoGFE){!g6q`Sg# z3(2O1*$hJ|;qTzAlV!{_M*%3qjc5hLd*Xr8Xb(3&?x}e!>aOkS}~7=!_7CAxH6}h!z#z zW(j2vz3_^8z;>tJp5lbms(Fd`gsX-bgSkvSb;-a2-~l8flVkUWWzauKKgO9M z`pEf*5$?>}TsSeunIfCN=&TD^!BY zXd@6^-MbJ16jt?7D@f26Suq|T?_4Y{_2}Yf2tGWW>#dJNfck!%hRC7XHu{LTSfUPb zR_4G2Y7SS=$B?QVIs}y{BjwVh3S&cS>X|<;6oH^<1+nCbBlfqQY7`A%N$^mlq>EE% zR`{68LOOYMsKIYTCQ|#-sXv5_`sLhN@yk{ZymBHy!J}C%+2jJaCD>H<4I4u{=?LO! z)#q44k)8+gW~oYgH@J}C@)=0r%F8Z!9%dSt%fY3YW5aT;>q%QT=F}j#>{k>P;`}|{ zSOhaH>SJQnkW8v7g^7n8Ocm8~{Lmz|uInPkKE}~4*fveJXLdom{q(qSCX!bwwn|~a zy=Pk1dX@jqyShOK{F-gRDNCA8A>KOZVLd6x{)~yu+PYPL=NURyq(7ztyX~Betd2DF zKg0Rkc!pLX%*4O`Ha11=rE2@;VaEDUS5WXFO_(Bk*Qk_76xV7s!NF84M~H~{xK!5s zs?OHr&r_Gn|M%3G4tSwc_MAv+lr&2t$^z09%!Cb3F!3P)b8N|gaat$}V1@sTl~x$T ziy#aqYqH7G@FY6C*YnDK^%cBv^jkH}Z8`&P6h`_?U6%y5%B3p{iMouXRmC5_wgsO9 zAIWZ6^k9=o@9AYwSbTw`w>f?KW|EBhl`%m-dQ&j}*P^BxYew=kob+(Qk$Tvv%gB;} zDJBs8e|I4zi#j4fFmqOg%K-{Uc)*=0waNWDqXB)=WVmybr(`>DH2V-*3U=m@`77-U$ zv#Ry5lmb~a11j1!hVJzRG~7G-{X>2F8D~n9C};T?k(^`X!B{0^cBzpKt|E6TmVPr2 zRGk$1_`}&x;>%-9zn0s})b~XkoLBe*@$(q@k@H_#+=?N~h3hCGi~KXUbNc;`UKt4N zUP#YTlXbg!(s%&N{p)aaM&qMpF`nTe%@BP;fR~HrYFnV#naj(^LJWm%BbWKeHzF95 zBfNwe#78VkjWP8Ew5UTdDRjnYxCg4Sp8GDa3m9D|G;nUFH8!pZ=#{u^4j(mp?%N&w zY+UvdSGc&3ra!iW6UGK-&0C@JsDHOit_rHY%bfBR%S$_=JVpTUo+*824Y3+h{ggt-6y?I%jy&;cGU;*D>XTbyn(kL?LdaFsQXYno3Rk@b zliciAZxD^*(o05$W+wIeH-nSv^}e#lI>ZE7t$m2=$;E z2pq-cRDbs^hbrnm`Ch3x5t3C^bE^7-3=RYS*4Y{#ggBKeG`*6nePo5c@+CW5K7y%j z?>=<1f;j$#$dlmm2D%U-oX3RLsNbqtlCmCEq{*SuBiW;&-xR_jyN70A-dAWz+_qp?A8EJ|Cv(}2X5HfUqPd?s?LsKZcDfP%i zlBYqVCw`pU03Hi=3C;>^@EVT10-;3%d)}u_S>(}HdbubEnCZENjimS#YSQ@T!-~RB zeGB+)DvaRY_Le>j!Fic8b#>YN5&Ef}jdowk%7`-u9$5H!bC8L?_R83#+4dv zo_2ELx9RWPc~-a@#Q$vohAafnR(-}*dJQz>cxk3oA2b?%k}*~)8yqcD_nN(_EBn0H z@j>>ZB_(ugVN4^>Kqn=oq8d+``_>s{JDzFqk%kfLMd(6s#r-n28cdThH~mgBOj8Y) zTzI32VR65Y{>Yl&AhDtV3H>@NKEj{7pb{RHHX&*bUv*sdmW#F-myw%(>;p7OH4IpI zo6L#$dD_qeEBZ&CD&KctXj?_L$QP^BUFI=J&W2U2e zIeu%~L1}|aUibE;X=75SPLL8X#pZyqb~?Axy-^@tFt?32=J>SqVWbi3p*uAtBfm0VEUCSI^2ay=eMPew2dA8}K5zq# zcr1P*#J49+=AjBqrqIsAx__l)mEfCB>tfrp7E=9+^I4mOQ>NQZ7MHMvvb<-9!oA!0 z-s|l;(F~U_gt54q?rRpYK;i)P6T;3HMD%g}=CFzu2LpGDup(e-#1ZrhX?4^PR*D3e zbUVExONsVCI(>r`4ooA~wq@_KXYYzD{Dw}X;9PIeR^^sZMPAqdncXdlkOLa90Had9&p%o&hvpOqX z$ix&Vy6ugi)6$?!99!>AvpU1e`oY{NS8N?6YGZx4&;XTEG#b%T{JpBGz-7@noO73Y+Ji1}Nqu;>jsFpXbD6=v8gd3E7~{eWH?G6OAy7oJ+h1i#nPuZh4)9 zoaY9ygiCzr4LvUF$zi06y_P?4EbJZ9@+>RAz5M;Lq@_Ts&!_UjhY7l^7Nw&={>}PJq zf#>sf!?pqR^1uzw6g(6ssW4R5B#p)?m5O8&8I!$BUJzp_q`_tZnKSJ7X_LTz zQx{v+dcc^^^C=^Y$$66y8jL!4Qdtct^`c^TbE!#_ujiZ!VzV3E6Z;*A1bWq!%&0JFmvoBr?q zs01wc6DGbUJwJE5zkk1hidWzuTR>2nVej0*gAe)|yQ zh&?C7qw^g zgqR7+-W=rs0l>;RibPE<-IKrmcc5nQ}Q^#Lqrh0TwV(`dk*-w|LdA-{zESP}ajNfHU9Lrv$-2ru!2~=wlJxfWa*&=+QLH0Wmmfx?c zL!w+aUAH|`=4HlW{J>-&X)aF|ii!@wDaS@fqj*jqIgi6;LNGTQiXCE{(ND37+3@MM zDSh%$a_5;{0B7lYb&4)Va-?#pIdth?vlmxEU!Jb3MZc7>emH7t`!Uj7<_^zd?`p_X zRwm4WVg_@A_$oK~=U}#u2~A1G`_Y%v+b~ZJ#(o1kJJ`;-KlLUvy^%nAK2sa~9N?$V z-rf{uU1v~)XG-PDpY1E(dF+Itu2q(jfykFJ@ddCvj_k8__=8f);dhG@@X%+nO+_?c&WnUb?&F1JN<@DmBwoFhkR61Z9D)4)+a4k=JcIwc|s z(D)h2+^=3l+!_xPQnGE|(Z$&=Eh}K~^1z%>H^Z1hYYwM3IDCDSQ<}LWxGi;qpWRWN zqC+bdmsF~%)&j~q%DSt2%QNm|^|aet=UY?PiNOluEl%+#Fi{99Dj$AU(?|_9Q`3Z4 zaNy+|7`^Q*6D(&4E}AJpdd+iR{nLG$a_yo-YN#Ps073V~R$HL0OI~KVM6A?5$1;h4 zqxB_XyR3b4=0NChN^M&S2cplgRkBlk*O$%5K3=O)v?emC>bl|Eh!z;~uXlIEX73&; zT>C!T!hgN|y5n6)IChUyg`gJNxS+c`IK{H+^?_lUB)+>Nb(=wkimC+9l73)=NdjBR zvxRn77TV|A&_#HuKUPArQbea^C`6hQ*0j>Jvr~vCEF{83 zkWil^xOd|3C6rAf7Brm_P>|_0R-8ZfFB!p5j!;Rb!3H~bdVNlrJe<0FyWT+l;z82)+v4@%=1SLg;H!}9`5N7Jz2#|F`%cU0 zGp&*VbrIuuFy1eW1Nv`^OTQX&LKKGV&CUwRvQg9E5^@OqfmL390A_f>FB+(-ulTAuD>R3j6; z;;NZ7-P5ZpUtCVzJJ`Rf8g0AVoDkE+a@F9f%-MCnOeQanNfwP7Kxn}b3G-mE-%H;VT6wRw%0j15v zIu$ma5%Y4?!50Ce|Ey-Mm{zWlTme0t{R;Z}GH#0>3*{;l{8CH-%!P+wANU=q(V14) zvGQ9$L$0u$uh}c@jC>J4_yLSI(~pxI&rOB>Q6|Mlt&uq~w4ADckn@*{`~81Bon=s* zU9_wj+}+(JxCMv7-QC^Y9R_zNxI=K40KuIEcY+0Xf&|w)Ip=)0Du4KwDqi+pt9N%l z*6LISM2_5TmpOb;#N>>+RIdN~OaYc=pplLpC6-Y`5@AppBUIGgCpI587Ut&IWk*RR z8()Ua7{;ige#f8t&@R7y!#?&LF6HV=W!_I;Ltv|? zqyOrpttjrL2sXn1{n)%)nh82=kd}ga?k*;Nv+Fin)HkEW2+TXb&tL5vefBWR^w|A^ z`k>U^E!kCfV7qy<`16k>W5i7m*cw3pC^S4uyZIAT&Sv+uP28LOPbWRyL*D&;h;gLI+4iW0N1QRKxd zN~5-JrvqxO-bmivStd%F7Ebis2VjElVwB&vKLTbh{}v|;R*If^VN~5??r3v{{;_8> zckJh!5Uy#I-Bnw3(q(rv1dl3<##b!wae4s=U%$tVBF^PZ-Z1(5+F7pH8fI}5&f+in z_B8Qch#_xFtyLu}5ue|D}Qm zIaH)ij1HH@-ndAXNVtN7Dg2I)JdcK&G;9+C|13_uTi@Gjsa~<@WAg?>iW1Vpw#UK1 zSK4bOs=gQh{GGqBy`|GtRNlR31vC5ve1T@i{gfBTqz^Ja z-n_5qt6xqM1uk_0-=9+GdxvMit+A~SaD9;$9CXZ71bXG#X~PpL<;!?>igHLA8Yt`x zmns8D`A5v{qFRm7k$+P9+eqAr0=5R&xP$N;L^{05MqdS&A;Mle@9tcn<0Xc43DHI< zN)Hl-4~);(=JX5`zLNI3yg$v53Vmy7xO})VW%?bBi&MLe0>N0Ik|#%u#51dhs)U#> zMcA4Sw_Rc(MGAv9yE+_Z!^I~w&UG<7m9x;5xx}9C)>b?ta>?R{M zO(|B{wzn1=_W$gQS*zgvAD!mZjzgT*!cGwz&Z;bUH?7dY)@gdi%*{g~re@-fF5I<& z!@1t0cQy8h`o-=12ES{1F$^}J@cp22Si}2I43s%eaq~M4jfGx0dU(>iSs9y&p_}oO z??ipOPBv4+U%}27bF!D=bper?A%f#BME%-<=)xO=1^r=(JUZD##)<$`&M6UT&{cwj%qq@|m*XY3Q@sjvz=EH?It|@ZAb#D<@dtef`Cl|kiUbe`s^2tk{#hnbRXP?`tQ@+wr^H*{sv2m zgo%&LSV;8ymOclWi8@&sF$F$wq=CAqm%qX{TTh)k*EOyG=!(;w&Z7`%)pc&qFeRmaLJ`MBT z&xRw=>A{#uVC<|!lk}H1QU$f_gnmV@|FS|YbW_msE%${Zcw)=Bw`J6;FdK*{9UAIe z4@S@1%aSd2Y(#jB8%vz3uIUL99qV&i53=$&AJcC~kv3Nh`jF0Kz56cYq6)-a95qX3 z^(+k7(aBs9!sueniTJ-24cMs*!5zHIW?&i1Z?6zY0TJ4|+6QU`D6uuR}1^jx7&jH|k~2U620fzG*6)NA)~4c)@Mt`nPfmI%7RC zIa-FTrTuG;E4fOa4C-m{rm}$v{|5mneP5C}CRrjo_6w#c$})4VGPCKIQQt91B(_i1 z!M6Yegh@GIJjv*(U;^jbCoza{I{1Vg6JKblP{toSwGU6i?WY@(Q_MOpuI3NdKrUG8 zfsN5fqN5p+zMebd_CK#f#Y6bRf9bN?63b|~!xf-|C`|nfNs8#CAa$yW+rAOLiA(TY zeZ>Nucz0cA!b4gZbkOX~!H@2gCpSHtvyloY+6z^_)@=UaFLWj+mYS3KUIOwBn~_GN zSOM{8DKY&9iIiZB{c3^uqok;)2v)n4m1p)(9P@;N^zO6I{j5mUbjvs<78d+0wSR0StWnzUI=-)P2Myr>W5U2PX6|Of zL>f=OQ#rqUZs%~dR3G3xL{qqA!-Rk%GtvT~6-@j-lDS{JfO-p{eGS2bCKGe&t?|24 z%>L;I4%(viUIrS{B~q1O@%mI=GcEW_ek_U0+x5L(h?T?6qMxiFTTQa6`rWj?jQTa` zj50^Wo1L&cTD1aYx0X`jf9MQ{T2k{9Y3XKI546~P@tM$-6H$fy;6^HXw$?pHR+R^S z*iMsB>?jPmXL!vyB^?vY(Ll&Fa+$&7aIr&}1;a)n69eHk_H86t- zq}f(eQ!_R?dJ`lzow_Sl`)^LL1N_y?6vwI)HY8$CC`Il^m}3aOZz()8=oqiJ9J?3B z<8LJpm)kAHpi1y!#EeaXE)h5X*`LL!r>V~4ZYS?=D4yT4OyG(JEe$JG{Z{a)Pa6@g z`p{t8v7k;>yPwrdbC6g(M>y*V$Uff=FBJ6pm=yeKjy{zyz@yHGM$CKl^82H=r>Cd4 zw_xw~{{H=}@15};8l388Q#1AWy|Mx~-rwIpgeDRX-&S5;2Ez)xdE84X6!hhYm>nO^ zN+kAmKYxNlx0N+kt|e2O+_`=hSXrv~55CLEt(oo_6$orv(56YcWoT+#u;k+qOY|?F zyk^x)>R0lu6`7EQilVPSd4F`o{`uZ~eED=UDX zf4kcD%Cq(}jl>Ing2cz;SjAPKBo7jI4lV9H@LR3*r?#yA9}Bzo52cmMOtkI;FSYtb zk25OQH0eL1@6UR`10ro5rpy1TG^&gP4Jr$i19gMbc3s8gG0~#6I8$rO!MuQQ57i*h4g=a27*kW&*U$~ z6vuyQEp+X2*S_!PS^hdvaQ~u$F8{7lD(>WNN99URd8H7{yI<#+x3#?Q{cOOFR{kan zum(c9l}V4j_ULeJXC(BT~fsLx0 zUh9qwFh1b+Y_jL22CX{1FOWP&gL7AxAMck(1^z4nDB|L+9aiM%s~xU;?{6=Xu) zU(Z>XB<|k>v(e{w;90Je&T2bv&EF;QeiVba0tk6~afqr{dU>||ZO(rcN}%@a+*(*y z-s`6OOmbenKHK-PJr6=PslVh2Z;Aty#kvXK1|4EY0v!7m*-s&*_UhL)^zGuCZ9vdE6<@b;MBWEcg>( zXbnYPm;Rg+s+d39Hn=$)0EZ|~lPTP(-0>RET&TnVR+9hEwf6&Zbooct;phI1$P>UJ2oKOWrA zE86t0QS|rgArEW!)!;ws0K6UW6(%$FjR_?`me?5CNHdU3Yyy-{0wO?O|#287)!zPYm&|99Jo*?;L*PVG|d(&w1PlO6`Rpr@B1} zV^!?S+Jhy=hC6Q~Y`)iwg}nzZW#^8I0+|QYkM5;t*JLR_Ga>2SF>l$BUg)9la$R*N zZs7k*c9={>-_TB~DZ`Ei0JD6-A!BLE0+K;a2yuAq_b$PVa$v5E6mVfB=T(prZRW5W+P%(mW! z0fm9PhwxbtCY@HBEs?-p#r{4JQ_%nk*lqs`HmSc(^t~cc5+>h)3uX69;#k(Yyf0}o z4MKS%;#hm}ZCnUUY9Hf_Uw0R))LnqDE5UDg!vi=Ryu9O2d&tsIvuuWtbLha);w4m+YOYd$$91row3DOsbNeaoH+6kD)Xtz?$< zvnZ-D-GwsbJP#IM@8g-I_?}l|IeHKTTvR+w%hO&~Psfi=H9-vRSSHbIE zd4!fh!z_p>-z#izo5v&0K z_~^^WZ7`VNk9QxDZt~z8o{YYTS;aknS;w6Vgo1S?|E1qd{K(M9+sNv*x6O(4o>x{! zQ{b3%;iKrD^asWQy;R`~Pnr(Gqj8S4pEYw@O83 zRyhak_R|i_6@zJVmkG~d*j1La$TM7*cGhCs62p^Qs)&gGga@OC8RH4s0Q~!@LhWKX zYFgIKpBdw~l1!oBI{3a~YC>OlW~}k5z@^I$7Wn#Zn$;k&Z@D#Rs*5y9gnl(TQ+Kdl zGliUYO^y<=98ylOjn<<5)f)fYq;o zM-{et#t|q5t`gFXSWNfD&yVT&Q@KC|@#SxfvSiSN;J0ALvy}$p4woHp?@y!sN)MAU!{k=;CDXYd6L|+JcMipsN2%u56+$gQ)*EZx#Q9nG^|sjN zVfwgN8!VopKmYwOnUZv8jhqnrc5OWu*Z``wyHoVMd~!Ih8xw1IBUGpBZqfd{b#3@Q zX_j|+`_zOPUQ>=xj51vf{+uP%eyjSxRj+KE8v8MfaC8XHK{ddTz8IOUMSN)nf+n!Y z_@U4wX{E*W?TI`Aze0Fq6lpkTpp{4G>nFFwnP*YMPQQP2r+ z;$QG?nYCmot`w^Q7X{-=ok(31EPR{Nj}Oi2iz!!uXj>l8DYq~%H_QSzKOd%-d(otr z@24}MI4FrL_sD)wVHq~<_%YmuR}G(cmQzF0|7TGoMB3Mu%vDtdiW=sB9|&jJns zAbb%v4~2VjyK!rv z*>YlA6oPs5sqksi8eJ~A9+{RGBHQ^H0%>sK>fiSSw)W#+4EX|tJTZ?E9>EAX0UyRj zG3r-xkck(Rjc5dy2nY>s7<>tWV}YSup{&~+z?f~60lg%!2b+%=CHTQR*c+Vi>L3M= zSa8KI3P5WnZ9oGeohUK13=_-GBKvVH%+G#}LG;aCPKX&H@qf0CqZeW^r>oaaEs3h9 zf2lt^Q#1#6zw8S-~xsZ3j!blaU7R>XWPR<-u6^|B2@V!xoTn5+sbPBF zp+xr;8OZ?j9)e&YcC-Da`WK za-fzPQQlM;Le_sOcBc-AhsmPWaclYIwL`3ipa7+KW$>PO+SG? zTYn$~9KedQe-GpX2q*2n47?mVCTW5Qep?AnDCUJkWP30L9|bxm5a zeu(|yM37-00)IN7Y`25=h<<~6qR_O0fr~?67F@82EA%igNVb{M1I8l$=#BufKg1m% z|A`z)u&Eoe8|sRD`v$xMQ-z|kq3wbRIjpx5Oi;B6Bjgm<#ZjbU82xZHoB?3$3IvA% zEIs@xWhFpf#Ow}EAqSWRwabwlcSpjm4^1crZGfzU4;jY|M5Gkhw(A7np*~>f64XJ6 z^JVnNIm#S+*ML4vROEOV5XO^1XDY>+ErbD|R|igPlr|ltt*I^}1{<-VZry3k^p%^C zumYoWROLuFoI^P$}8!J4FU7NNTH@)fzNyIQ6b*AKEM zp$RZ^5a?n7ji&idXBc@B_`k5Av3rkijxH2=bRWX6I%c=J=)qZ4a z@UW_`wwQ0l-#O~R0_H&ocWoL{*xX^B;avOO!R`wAGHQ@`-AmK@gzyAuwaD;PbXrQ` zwUl5Z(f=5^8-blVJ&gI z0W3_LAx7_4XED0bV?YcD5N5TA3d4HjZU6yMw?2s8r@ekeRQwY27`S29s|X@?EI=#% zX&55hJg;?jSdla(1QsQ_wd)WHPZ1k$qYl&qM?Yui69zh*7K9lKtRT{rH;|uPh16Dp zrN0dz4V4EY@;HEoo)|J4iNmO65(G^f2ozU90C3RiGS9QN&PPGjR^Yb?vD zNYw{L!+R|F?RWyJ4>yBl12LVsT^h^9mwZ=>$jmotLN`>E=(>?x6KDkWud{-e?pz!p zj0sOhI8bEhQ;IMV2H-+kr=a9@eV>>)X@;Bgk5T7}-)Grq0qo2Q%k3RFaK})0RYdq?s+)4_YK3iN> zPL9J0j4Z%>_WpiFTd&pmDAHa+_AhtTwo2wQxaj4u{Y>-{ znD4lJnXee9knWZ{<>xoxX7YdSElAPvzO=E>sLnrC-8~(hl+ih_=mB@};ai#OB+hZ~ zQ%XT_G!;`3qeNr$`w*1|_F&`x_{#;lVx7!lhpLDBW7Dqzk37LXI7S1zFXN&hoCRlX zaMLo)YztuDC(RimMp9V%xzUxzsm^%- zX4MU|7vircR#pYMms`W)3QB3$x9~A8Vv$ZX$^JZ~k6n2UX;?1z&Yl+S_?{aR zu!PoB0|O@Vwm`65RQ-4(e5P`0!zU!A?OR+F2p|x`rUK}hQAhLyRXt?kL(`EIU9SXt z5|X5XD{^BE_*bXf8(JMPXej9=Wt%%d@)|#5=wZE;3Zf4_sbyn|4^twHr!hO3AD%9z zR|F!ee}-;-yth{(Y&MMybK^L&B5#KK?8*hCBuGNCqCj4DteSUoOHg2j{3}m`?sj6E zXp1^EBESEiWj4!=h1LppawUN&&z9JTJUm9h+yUjXNp6p!pU6 z_5!@a;$aYi0DP$DgICXI4d&>*es^|EiC0%cXy&a+q5}7p{d%yEhe_;$2FUcR84kk+ z2rMvrUhyA0_CP1E&Q(}Sflzk5>4;kbdL4a$x**#xfIKqyY6Be)da+ z&!wu~TS|eY<$lwp)V))6=Qb{lAg<5t`*+3<*w?ZqVed^1DD!pMjtMsVp#$YL{o!%T zqKdJI2#QJ6HyrWu2)Jw=ol8@K>|6v^W1Ry#BePsYah#d$t8JYCnz#z_uPy~_kJ4!?cg?pFT#0Jw@E%ur+`_)TbFIw-d7LBRlbxW))*15A9|J)LeJ_6!FgGyvD2 zKLDDXJRL$EhpiNF`n7fNnFjVLTA+WGbkB+oonA6>+uHVbuu4@!Dbt5ixaFJ zhu~d=MU`Ga@YUtT*?{IP5?S2NF)4tb33Z0S#5kW_U4@6Y9&Fj(+(t!h+MS#HdsVR3!=)I~SxbkmVT;`IS!~~L{+|0MmF(FV?3HNzL=8GGA0>(1&;M3=zs5Qe zH50z|C{#kEkkzqq%?W2N6m^XaZk{)%P>6;g{8pJ>Dk||qrpe{?!rC=0nr<%bF5vG9 zxdfyk_Id3|K`+DtPkKs_bYQ`Hd8Ho3x34`5f`_4|9%PsE4oW|hKYjX|UkHw9UD0i* zjgJ?r>m5s@zTQl+K$&MWxPB7n+z`|9#MWF-g=ers&>0bh+TA6Z2;y_7`5GwO#41+- znskWDsCz5lEUUQ!!w>d?y8VSQap9t*?fXE&>+AmNk^mOk9!uI@<1T}g=2V79sY`QdrMTvf1={Qwp; z2a`aaSm5>I7`ApBw8P(f4_4WXM@O;10M!{4paeU4^fq`$*jHflTY*j9hwmR?U0+`Z zvvsA;xqQKB)j^sNMHY|Zf3V%p)5FVXCJ`izjS$qkqRFEHQNO{6Ru@MXg~maa+$$BA zNc8Xsq9!(K4KczAb_kRg8%km*YVt8P3>Vq>#6+_r_-zoPylNh=Yp6ZE-bN8vnJM)c zkNAM>#iVBQhuoJjnTLL5g3kvMD&f{jArzQc3egYoxMz1YX`q$>cMn3#Lv(3X0=wTI}y~u7cpqe_utC4>cSg|Y#Pe~#c zjwO809k#(5r z`M|IdW=?hZ%Fa@N0VZ)Whu1gc%-TEd!vn2Npkrb!c(ypyQ4sM@j%IZ2MFyE|H=F{ zsS`>E8Za_oLR0_~4tsTn#}@f9?cE!8N6sEEZ36_WV}*X8JG`Ch?KHf8TzBHe0!m{{ z%=XzKyaoq^)q!kC>RH;|i|B2tn{l2N8}R#0fx>y+bDdQ`PX3s6uQaz|S)uqZ`Tp zlv&GxQ0%KgAZ{7Be}-EHUkUEK7vWF`35!v}rLMWqP|DJk*Eb<+vV|l4o+o+jLSoq zXK6KSuw(7{?P9y{rdyZ^>K+&(3Nk;fpjc|Oaxh0Zw#_>2p8&?+wycL{|K5gQ9}rnyyx@WHe#9v?SyH0E(R zK*UR@0@QBeeJBm*aQpL@K0bl7^S=K+7aekI!~8@bIx>`DPmhql*X8uk-1g0iia!No zfmPDbMLh9IS{PStB8n`$5wIm}iWP1sCF8mJkdSQtRqC1)0s*dRVeghY6q{G<*_Tw{ zk=}4-L?!s(=a-IQm*)zRHwL$c@28&vX2vpu!=b=b@Ip`npcCE#7!Ik$)6Yw6?kwa2 zg@wiTZN+zaWyQP>PWT26#|&<}7-;GN&GH~l_KXfm?7?Ne9?La0Kmf0jZ9Iqv!HSRv z$?Fd9oah-q58D78%1w?@k6sCgP|Zk8L}l5GM*9?Q3lhm_A7;Us#d0OS$|B!@LSKdc z3QM6QitDx8aq(@vW0u&u;-AN0&bvSxJv~GzYy@h7Oo@#6{jI%c0ng8hrBspLK#7l+ zSfH8NYnOzEE9cl}-z-{)c3Teq^_t8aj)&+Wmz@8+Lo|&EmBxoWee@vqk8ieC@Rjyh zmlvvthxY4!fyN-T=qPrc;k$c-*YbQG_5xIclyPvwSe&Fd)BXtc2w8m6+32pi~S98Af zq!(XQjg}K>Wg;QR{KW)p5BXI{<*I%LJ0q3NnDlok`%Lgof(7>QNd_;ef#-l`@=U(0)-n=wP*B?f! zK3*PB+xMLxhQ(1C$Qigifv&^ZVe325@;5pf)#4^lv@}4jHP+8Zr1T0Xzm{e>&Vt{% zoIg1-XFr74!mRRPQb4R;W7r0)k0p}=kgiDfr#P`F@*ukhXTpnyJkemxE-@5TwYA|c zfwX!ZA}TmgC;+5@udvwAw)wg200q+8fslTQeHcU}R;Va)iO|a~K+FcCDfLWNhS^Zx zlb_Ggf|h}Ztimz78y|Y@fOjy^B_!UGaM79>fpaV(ElZ`U>SV(8%3Av};<|zlPSNhO z;%yd3*9q3gAE%sxoC?F>xB3Rb+ilh+AJ~Q1J_V+vKGoBSGBeH|?gMTx!(dl?NCp_s z5Qa>}>(9?xa?a#mC}mC1gPj51Fk2i(Z!inr5*YL9zox45CM@u&68vl>zF#b% zrT2opGvg4}BN`T6875DKv$$)YBgU${zk*j(2tC;P1hs5ts@Vjmh zVgtoM7dkdw+&+tO9p_KnB_Su)^g{UflLHN@ro`C;lN`w1IuEEDZpBqvlyX=aphweL zd8ioUDah`L=&iDqum%$0Ep=%09`ReIxuv~LiMyDEN~ZTvG9^_B3R}&_R2AI@>r>gs&glQ$@6XNYNR4!R4|eR+uX`*# zf3YoR{#mWhK8CFvsTQja@og%V1C67=AxrH?Ju8dMR8BlkRxO%-y(Ij~($wK((iXIB z`6<~fILL-rM~p!Rh=zI`Oq=@BVin%o2_}T1uUFD(1DOevVwR}~_sdR?KDG80f&pu% z_gHyIcct5gat^F=Bp83KrzC0t!&&Hc5mYc!vqvq!NtN00?>*c^!Us+cGZORQ-v7fD zY7J09f{=}CCjS$LIXDVyrP4%e0KA{ zE48|xDLNF%eo31xDf}3Q(XeEqL&SP z{O@9GQVZ9qcQbh$&-wi(_lDkcJhFNvq(aN2g*d$qiK#dlPX=9^DW{O5_yw)55W{hL zh$Znh8x%8m+wbwL{7jr^9giK&cpVP zgB9s^C*sXEKH){_NqnKt>Es_gn(;B8q%`51^wcX>8ot;5*^n1ZPVtY$;S>88wq%DxRiA_D z=iF?{$UDZ71?9Aid8r#Gn`SnzA{C*AS)@2qbkB2XxlAMO_vG*dq(Lp17HT@hS-LCk z`tI<6#h+bf2I@;FIP_Ss*1Gxo$}-Q^#_ew0W#>J=|AjXsMFnxh-M$f03JYl_BRpJ9nKtrG3TfPf>eD4(qGj6}B+sqe-&XB0KnPLp=?fUlq zz0ZBAz5M7bIf1pi(fmw5E4!pux)yI_p&W$;u#_45ce{hXPXaP)6v~G{HNnU7%kuZ} z5shkxx>Pr)I9sTJu36mihpJ|IYdn!lH{5Gmi3q8UIC_dpwRJXD74~h@h(?Xn_}Yb6 zmH>r>UZyGq zO*w{KC%#S=Kw#;F@d6RP`IJpZ%a7^kkX^fJ@k1(S`ID(7)BdJ8kL*OQQ`a}$kl`Ba z`D}5F3@3=1$`nz`G3d9hr~mT&LYWfn^rS&4DM~Ib9w^R*`(^hreV8;-qimQvYsj6V z)9?=EPKSq7zkFdRSvMP+M%i`JKuxV`xb5E|<*P@2{fEkOKBxS%34KJ|CuAHP`^Pa# zk&hE7JR=WPb@i4WO3KBb#uxpCytLskdG9%=cVxrl0S!}lUrEU2MNF>;U7;eg=QHgV@IWlSd8Ee?^Tl1H~;GMwXpfx`j{;8GGo65 z1yp+|-NG$%2Q(w{g{>*tdTf9?@u^|Orm?yLAkPNZWUoARBOq7o>U_Pd(cS)d>gU77 zrxHD{*natbL{YkTc3!x!^p%ZTYCo#}siCuAW<@t2Jx5&R8*s2!j0Zgh<{Vg`2(*10 zjBYSJWpm@oGQpe)|Fe%}VyBvx0Z~IwPKO_~9XICf*s*_-n$ZXgu_*|FVS71Ptskwk zRNjq=bN$sgpGG@p`JYEQ|@TeVx;h6~ z{xYmxaFBV4dvQg&6k}t92~8_i%SWS8(1Ht5ZK zp^_J=@{&7f@)WZT(##+4`jdFb41h?{?^{pX-3r(bwG#aDE0(cIrK1to<=L)U%jhDz zm$&1IC&jxUa}0K_$>qCXIhuy4Bwj==v2;hmg8qfE3xWaimTyho``USE&|8i1pN(FW zvof`#xb`$3*H&0{=V1iUM=h(Qk6&6WkMbEW;j$=AHeu5F&5TmLQN6=%hy?;GQBtjM zUKff0jy6eHy+@op?IgK2^~3;V$4fS>VuU7IQdUBR2!#M^3AFEW`n0~Xh2&B86YenN znQM`a-hnZud0*@b++x~p4}kS4opshkqULEQyAck%}8LC3eT>Wod`xbxjKxj%aMgXX~#(B70tGUc1<>C&n?swx( ztO|X&XXvA4I4KD`G6ysq z&o$)K`KC}GLmJORSN4>Q)c{^Y9>@-V3oJ!AIWs;X@AKN(+fh33AjWy4i{koNjgF2o z?OLk>E&fen>8p^3OYsO?bB$FO8GxwNQTb)+^Uas(Sa)r(4Xpl+R^9=HqMjbN|2E^h zmGRiq)|0(~re~s#1VR%3Zq`B+iNr1{gVK@PJC#tAXGgp;>z{IhUYg8B!}q3~xXW9G z+{@d;td^FiyOrLDix>0|_@mh8-NsDGU_(qp8n;6l6-*wnDAmh44%8kGzQwlK%rM1B zhxH9dEDQ8JsCZP)mrN){3uOnSt80yGV>`j6doqU?Y~Ky0Trr1|qhb|d>L;5K8>U208lo<__5YP8WwcaC!;vn|!imS(6*Z3P4_;lVD>f+bfOcb+2-a{^fk9vb&`#wI~-{&E+HmL+}-~!3YzYp*{2wvVwy17W4UZ(n? zj=U&;DyE3|+%h?9kf85Cfln?sc2HgI&C}MUFR)SPzIj)tWZX8iH}T`u$9n~>&;Mh) zpB$HEj^9{A>wcciPW;7D=Fq}m8UDbP)zRKGm%J~Ryc_xHm*cML9H`dAo&J2CRaO31 zMVo@DdbFa)gk3yZO615XXcd!+FrPp!lveurm zIvq8vVx&F7s|o1j*;PUm2-S8aqPLp;b2tv)aK-{7^5UI&xf!?0uM5Z6#$QCRQH5{D zslaiB`sykILP9BYQFHUOvT<-Azwc0JWpR0_#8)vzDsvdAkJo1QyTy+Z8u<*fRHhu?gGelK9tgHg~E&hY)7J5O&t6iOP*azo$og<%(XKJ3RGwqLFl@;sIB_HO@^ zYa&RJ)xqw67{64b{qfx17ZHxI@O(30%&VAyqT>P(C3@Z2ad{(75MVJl{n))we0V?F z?)_6KeYbx6ln%kn`|qt{p3`LiQ|(_PLmboy!+MDsV`(5Hk^W>3cS}>RD;Sh>zD3Bn z)QTNPDF%>cvtgDA5jvrdvvpN~hEM)?(edemRt{wevq6=H^GUav`EI(UWtMzGPBZoS z0+(;2A^}G)A~pjG?BKe@jt!;w)tb|dgoX6Zqb7P-CXM*z>PfWa?oL6aq?H{vq78>% zi=@YwAHN?qdd~9mjac`kCKp$JJgQlmkKQ;?9PMjyg>$GZd_(+(aMMx{ z7wFIUaU|3?kMOArx5y8aun5%IuYgqU2t@G3_{AMM<=sHd|BD%_+C8w4B4D;5Q#KE0+x;FT$Wi{`xxFk8M%zT)n3Jw__my5QmkJM@Q96PdJb5;QkuvHos z9de$Bwjfh%Y8yFfvfstUjn9Btamq~rF+To0z#mUoS@sci+GA)QSw{kW;f{!qXoH1^ zd85B=S&+!%2hhzxughuE_o$%jV2bDY<)sOxbmq*vD}O+xvZjXU8pYG|?q4UhbI@O+ zMyb{hFoY|KlrMBSv!=tx)tZYCmR7jWU(o3$)})l4$>>;RgOo>VQjH1qD`?VP9Z@SL zlb-xrLgmfN&`x93JAM61-G-O#=C1BmE=$$>yEr_{QbD2xBm-_3_yvp}J*ecx%+CI- z@emf(ozO)kJpze8Hz(KY^4An;tVQ`bB5snbTA(2cF$(Q3TXI39+w+)z1EoocJ}_`j z{kOLP5g~P5wkYR;+jrxw)@%I-a4GjgAd%5|j1#G40yx^q+goh&q^nARc|uC550)XXFX z=&4_g5NAz$RrEJV1)1U9(GCQ2K~-@LX?2j5;|>N+ZEWCbd&%=s=&*6v+fahy zETzldiN$9)iN2X9uLq)EDZQZa*pm zkfmg`bEWv~fWChFXbDEzm|RfzQnks;H!7jxqqDX6DSrDBIHBeSMe9=HPUMwz213fzV~%$%!O6)VM8z z9Non?c!Rtq=;6+zdVas#@vf`X>l%(ip=A+ic>b{xwvHyT(PlN2L#{( zGQmU4b8y>ZHvr zj>N=#=u|?IiV%Jev3JvLW|>U?Qf#Amy{yOD9BX<3%DcOJYvbJySWP2|Q9Q-xV`i?c ztu?lZdVAwpP|y~_&Lkgsgg%`v+23ER<0Xb;?2!=@C5%~i+={N~{GOekkB1>CLbPHw zb4Z|}VA1ghbR$DSg{jzHta-wrk&0=+WKf4&Su5r1_B!agt52va3&&V8WLsz@{uHF( zg+|3bv@GfxMhYP;uUhVLC}-^)JKbilim-(uyxjcy#*RP zaBnjJ$Xvn(su;s`5TI?o8(e2S1!&`AdBb6SK2B_jimn3SMcyCdDx#k#ohX~*~w#q}jTh}9K+tu}dX&pC7@|t3E&&|;7dW5PJFgnj(8u(0v_}NAST|8!or5hfEmAZf+4dx?y zgH%$V;hvp)4lG|tYSXO z_urCdbrj=;@$onO<9Wui5qxE$tlW?d6=j4|xQ|G@zW`Uv|h|(38<(FT133D-cM8mD`z173yCfp(*WRo{g4txZo z^%7+n9tVJHYiq{>0ks5`{DZ|PqLOwiSV6o_W!wJ9t8a&{yRasPExH*{$H0tQ zk`j9B4kZ1hV!5dn&~kYPEG1WGlL9|0m!|6H&?Fz4>@00_v`vs*zFDr`zctGgFkyit z3*c!%t&jvN^aZ$=Rn?)E&wioHvmh3=(yDe=dhSI=--)j1{;S4Nulbmc!>AeIDSl=I zjEqrHuAU$;U86?^7|$Yr3TBz?QfI|-G)DvJVXVD?#Z**VGB$5Qf0kG#Cs)sqi(%*1 zH{Q5x!-gY=4<9?;jeQCr4lMbc{FyVSZ`g3fiQ^~E^qhvHf#UL+Rk$|PlT;{Xp|7X6 zv9Y1Kv8lJWch8>P$GW-}bk3(m9Z4i}y3ogNxDF&N%s@Ijl(Df;V04skGl8`p$pp** z%)=ldegTxs9#EC7WFX7fw*tQLH zE>Se6I35PdseDU3vUbh6z@;}?&*mBMFH(r19E%Q3& z>(WF*SfCOuaP;t@ryhIs=_emQejICHORSluW}LqocqQ;6P=5^#G=9`RKD{o4!1L%z zJy=pjqV6FB8}c>03GjQiOLey8Pk>t}icpajz>{B&z6SfYEZ0}qf`PS`0EMQ8fHqxV z%>g@8njHvtVC@Ly;y?XyL=8&4vc!Or?kdaY)GCR3!G4UnDX5$?uxQr_9Gn?zgUG1> zApX#V0YV)-o)O>J!5x$EtQrl#v|xPEMO?48}au^S}{zU-WH zRxDpJbM~yEp^?WQe@tRiCm@lB#gb^PNN$I#Z=iqg-hJ2IaNTRKy*4@;XlQ7tsj4QS zm;vFY@9S7Epr)p}W8U1}zP?B#iueVD_5%S~INb0bxSjDRwm6VFI~Rn4V{_-t#WtDb zq)?Rl+Pd~>ZE;yzf8j;l$Bzd_N7!^nBCO~Gn{mK2GLKu(N`l~-!GQeh=SJ2p@lUC9 z=@AcbEcA`YzkFt7a8x!-no!9YAI!o~4|H+Jbg-}C0C3sT75=KKKX2YV78reb(epU>9ey004ov7mre{BiosMBh5Q3s^+-d-eq_BXnK*d-f z_iJvzFeG`?LuaaZSmz~?%Nigu0a_udNhk+%!{E<8cI@cS|Nnn``l%<@UU<=lE3ZbY z)7&zJFvTG(P$3q;{#mQL$D{O_1RrMbtWz(DTnlP*%mO?)M0*Xi zcZKFUvMwAiG<$)N)Lta*nghz#Fo{>*qKceAFP%lI9B5!#V2(KiTFU01|16;jBw+z& z0X)XGUn#q$%S%8>-Y@$?>{HmamOXs6dSl%l(>jSdOX>~KeiFkklBMUf@ff)2Uv)nCV%qJV-MhzvqX>5B>N*A;1A)M{x3;dmVC}Z;+YcW) zeE7(rXgGr5G1nFAO=5X4l;qWyUs=8S{KiWz>Fe!1ux}qCAO;5qd;5AXx%d*Khet-< zdh0C;tYC(y=o5?>kH-CeAMNFkTpp|-0_P0&wuB1;IT-cF0m3c!DBNP)JCi8B0vs3I zH!3Hm69FN(z2wVLr(X~*c(k>)VUFz!<_B5N$H8t+l?s9=#(Y zfA+{?lS^!1k<08Hl{6KHuz;{YrCIR_W9_s7sJ9_xwJ8$pYyJz?DBS%KZ0uokHVh=w(?DQV7N8gy>ok;3F z@lr4}_T_}U4BCsQX6gmi8(+p$2kQxqP6t#@qQI)#X2%I^li4vaZW{TT#33w@j|KRU zEgwpYH2l%D`GE2_#wL+Pg~owa)E7Bly-=@H7s#w%rLt7jHfoP?G|SW)12&lpVqn;MXapr%-NvC3LRc^!}aT9T&!dU`2eAfxqdDHQXj98&aFz@YgGA0#V zxom8bh|%VoTejSAp{Hs`fFH%!RPZHIePfSspHT&7N?OdI1EJwAAjO8p9fL>ax@mh)@WEHQ7cU)|0+r( z7OAeSa$su+x*>@J#+ugbYO1AM90R5h>+Y5)vJ0-04F`X$HZh-%#d5LGptUPq+R z1_0%_GBP~;_KqF9-+B9qKRi-fQ`^+iQdi$lT@6PAYwrv~wPdm?8dMXSd@Zgflm!yc zkCkHC!#3l{o^E<}(Fq9#gNUpg8W;=)M-i=w8Hd!xAq@EN)%Sz>&=`!jt@I9X9*jFv z2z^HOwS^!l8uEM&rs<~aFzxyz$3$|(vv7urDMiSkggxvW%(QIVOl=crk}UqRTTUHy zi}(UfSisBzyzMp188=LSH1VvK*TFTjsaBcPhbfk1H9$6B1II^+)!UJ%G6=wdXhGCI z7!9^m3HU`?MPLa^b7+E)gVc%$_`E4mX&Ez}A?u|v5IGvOLlwX{@^*~f7Zz&3Lh*pW zen}D(B^*r~l>0Dd6+ZP8X6!FpzPz!qS&qwm*om3^v?cir!{%tPI+}_=<(NsM^437b^5QrsCH$iZ)U4^ z%U(DX5@siRu%+Cwdk7f@|D9NMK?;V)YU}Fa!8kWQa)5Q@=#h6_a>>aI3J>e zAE#|v+xG3-=~34B<374Qo^Ut}zXcl%05S7HH;De|=^~cm5Ec*?s8kE2zrp%TttVKM zK#1wcRBR23U;LqZz)%d8JZn&lHJFO0&=3vvB0LUKBpwWhL-12meF9c$OJk5s0&tMu zVw}hLIhZI=6sE~?j3!LZv2j%bJ#A=X0hPBhKumuYlBsj$Cu8Tnf~8c8!yT`s;9lSl zD4J{LF<{LnPzj1hnJqhxG-*vIjfZM>9w*9V6NajUmSp%0rpFj+C@LoZG4(zqVHE$u zRIwal^P$Pk(l$ri1li@A=O*r>dA@)O3*@!{)e6OaT*2Sw!)l)*cS+MQYzo2WYn!D= zlUN)8b2Dgdhe3p~0#Clj)QD&|ow_la0YYgyQR&h0uuJ+eB6AEN=y0GJ zkEBcNI>GtT8H{)jj-pdlVXVVOW9M$_v9Q4DOCS^G`%U01f)RapjCek`(I-16y zl75{IDHelw!0+=#A_m_IrbxJycaB89`LluTha!P7+R*a3w?c3253gBVwZA)tohjIT zNR$=Ze1MM>jgr~fV~qQN%|sgN>ano}?eoD7+{|M~4kI+8rKJUTHsyK8?LM~U$bka~ z>85ME5zXN9IEM#E5!JwNw3cJ`OQQsJfd-v}8J>U%3kVC8y9JD|uwI|D>YLmFhDtoO zAgDf2!|E)?6SV|>(>Xv0HLC0%Z&uVQimDz)!z3{t2ARgzz=Wv*)0j-D z{ft@TO{Xe2UVi_ty=&XD8#k^}caJ5_%4BAojK3g%k&nrj<`c5~Zm;CUZysA0&sZ&K z)ZN*87YYPPkOX)L_Bq|8S|m{SDu4u02P7|ue-GEYzL>UrCP=Y~%dLtMV@K)=7~A3y zsGC2DWqN_SwZjpZc-Ls-wDsuG`2w)>WNhz)oYHTvdRW+8EU3r0Ri#>cHA9J|)k3Qo zN~{>spwH~1Xr%c7JiQ3;`o!x=%MH@wWw1<-*;C0>Cc2}lR1#y<*sRXLk`k=qRGOrD zyU@5mL|<9(JD=!Le+69l;`s=)7vyL_3o^il7eL&8ynXZL z^(R~DKpuW5^nd^S=l?_gAk)#goCHfD;)^yRTuBfty!eb>$`+j6UNVWrg`l?0(jLeo z0!IYSIs)->1S`9;l`x+4*I)r0X>ifv70T))!!=Al0Xq@u7~L=`X~<#_0J$Hr7c zH)k`LU$p|c1D##y0d7!@Ea~n46ip;9Eo>%eS|L=#$Zw)<6Ctq$rw!i-<10RE#ARI! z!|{$Kz3ANa9bX?A82@Gw5B7?xOI8G8&-p`f<{67ulkPCR<*&uGK~I!r8IzrjNd zco70Bn7?AqiKiAQhK}2gHmJr!KoIFbm3s(-9Q#}Z&>}zn@WXfC{R9TYEhD^3zX$K*N6hjqi!{Ewr9j2ggps^$nk#`RmU= z^PvoN+yUvJ3Ps<(dGq6sKVo&v$kGArQ9UAXMBv;b(B%sfOKpm-VIW>fSnDnvg9-+r zz)pHxNW`WK3S~thK%$JHGaXgL*+~FCr4MqW0to1h%Z}gU=uWoPmGk~2jVGIZvVb!4 zsb+;L^{6rp{jTUd7I0`zBR?`mY66i6ZM;-hCUNZ2HjpNr7^g$hy%Qy&7?Bh++7kK^ zt_F}5z93)?&%DTLiPa4A`g7RWayjH?upJ!P%+@(U^?uZI^z`!t*y<$c3EsJ~%7>D> z^1dId)bvFx)YfWP%eP>TqwB@jbGWX`V@M4+S9(J5W+ttRhD+-N#ty>_@l3zlkyc~r z04n(7`h`G%HwPgx!5^(Hr=T)u@X9_WEMlSoa_}iIK#UO*_>Kn3)`lB4ewMj+&ViI5 zO2q4nK*7bV_{YZv`D7vIwG@iEE;c@akJl4^x+M@qK;PYcd2uH&svIgcJc7&h${2A= zf=c1KZ0^anbZ5lT>=gAp%V-^ZO#aoYZ(hIR0~AScGx6xfO)ZO$R($#L84|DtrH2JK zzdiBW`*&~u{ilC>aes4n$G2dJXh@jR#P5b&zxv(HySMN0c8ug%iVST8L9X>|bVC%5 z?TEk;feVcQu1naki8+*P41R*%6dnY1Ieo&th2bP31YENKwMUya= zyewr6&$86>qrj!^*a{<1AF6tep(&JrlPa7qL+s_$VpK`4hblUf z)jthvY?+x=>3b#lv~wQy`QU_x%n<=*U=1iN+Q>qR_{{`KoO$~6pb zX0ic#zzZN>y?TYu!hsiUGtM)B4bA!G^QRAQKYaiD@9%!Q!iPNA=%N2)#RAA~f~5>t z%z$TSZa@B7m}M|==qb1{gE8tdQz{Pl5rHED=NkcC$b)%4&+1vrYXmkX$nAomiY_bw zaI@itmjb`uaLy!ZQA9E$zS4l9X;m_G*hR$XgUTq5eB&*M)kSQKoq}Y2oFX2=UF8tI zZM}1UTe&Am+rxG0sMC{Dr{zUgdok`fyAmYWYsPvYm+S02d%_(MZ>NIwxaCqeOYVUD z9085>Kn?sRCTPGJkkw^6XHag`!f}m+H9QMuIJ#7{(UnrW^r|Coj>*te38lAH+ro$G z0013kNklpzfx50!!8!d3RM6?YM;jW3#t&0mcW+(~IJ%$`qOZtj5HH3<8Z35vXFwv$TSw3vamw45Ict1&2ur zr6nNdHJAJxWpSX=&?DrYsgE$ASAG-~8?y$ola1 z-9K+Xq6hd7iz(Gq87}1k#f?dmih$Z;okv;7EZ@g9HbPZtKPZ zKzWG@hd>cYLzbKb@j@0RVn!1w`|`nH69NP*WVqwT|p!R~COoIq2VK7k+ArR|84x4b9 zgt(Rg4E!@F^AZ}51Tk5{LLN1NEdH@dHf{t85kGH92D{lJjcPhd6H^bgm2YgsfQCc@ z&qu6H;HSj!vIfdZat$B>2Op-O5q91hN2oy2b+`ef5>%6$PHH05j#d$*+tI{h8%2P* zhOh5Gy!-s+(|6x}_sz{Kyzc-X>&Ckq}U)PRUb_e zNBM}r5rIpHK)9YHrj9QyfW)git{4d|z-d(#0|=uc7|3lB2nieXVK*JjKihWk>oSeuI3v<*>aQkTP-_>5Q zBTY;n3Pqc!cMsvy^@gojY00#WkBF%c=$YPcuW&?RZ`_ELW?64-XOj;`G>f`Sp8^qY zt_8y4d=6zq|Ksh)FJHdknTR*9U)^A7!41xuDi9 zjLiL4Br@KA{P@o|uiw0S{fe^Luh>!$j=To451&3F$#4q;U`f~M3KfV9T%n^=@Ua~c zI3jR45#aTt)LJL>Bd#L80hB^Dj=1DNMLj;-;suEG#=}7dMHwPu?V>z!1tG4lf9yz8 zcpe%kW|66set9KZU&vw&&Nfw4FT9>((a9V^d0%wytqdE=VSgix{nT-Olx{=186eg@ z6YK2B`e0L_*MUu{W{pBrqZ(7>_^vKgZ)em!P)#MOE@i4_C>5O0E$djONW`rx>i)L5 zp5_YHIbY3nW`6LZapIX#9fC#-wQh9Rrb2^uX}Vf33T;1?tiGGHb0it)IT_<_(e|9jCs~GwvNI2a zSW;lj#sW^$g2V)^Fi~#A4RHMBS#|2NmoG50K$S`_bhay5z(oz11y1D}Vlu%J71AkD zoaowyBjX^g1`VzSy!6KMQCJ@VEiu3{1CP8KLMGAxMg7MFYArJLa(+5jY}nDG``IWpn2?c4+~$BQ%{cJ1x$X zjR0fpix;>Pqw2)26W5g{NDuJkM!;UvSZROKBa&hilIvgtSYV6LDhQ0OtaMs}6kZU5dn{j8S=q#i4R66P&!QCZRdpNS< z)L4~d>0h~5Xq{uRv4i0Xmw400S)au)Owd3Oa{(v{hkc0ibe4fMkx?n|u>3q|lp-St zvM?oldBeBj2>aZ1wKXEv@YGqQ z(X^6f1^Et+tgxz*1y1xjR4IF&$wC606XJomeHmeJ^seG@Eo!j#2Nq4ncP?m^1Ac1e zLlSXa1NcoZKPtgjHi#^w8|a#?vQV?fmS={8mGD+%Q^dVup{mhFj*jFgJ=F*>ho$Ex zjzq&#ZQ{ePry2ncElb;orn|gb$q71m6zM1*BVyfY0WcU7-EoWQg-Gux07RFP2cncV zk>#BIBZyP_K60W~%`hQn2E1tZ3~xEA(veE?aytf;)q1KK1`5%aMj`+ZENO{84Q`ym z779e87^&=8q!i)|b_8J*0f^lIQfibC=?wx@78}VH3oF^j1}$o;BpAeEz};Ry6(TtL zu-ZWRmeqY6+0x=kS@o{eb4)6K9*9+QVLlt5xq>`u#8x@d-ePn}obxr?%IoK{3O_e^ zlvy$i^LyI@SU3Vj60uAn2-dxn!Mgx3G0OlL>A1bbg^noI1?74J)c9uymWjrr6P6?h z**jazV9)7W|ccO2VWJ5 zk~S6ymSjP(i$Eg8#lo>Yn+PzygPjoTWPj35diWr|_C`i(Ux9ffj^x_@|5m zCux>tFv+&^A-qx1=+$&&l!EXwNb4iegvAKVFYuE{FYmAL1xrzBgf!bA5t=xFQWu2q z2WY-3Qu9NDo1aAL!3nH(K=vWzEA*-n8*zarJ1vnpmXct_H(|UIj(}Oj2k@i%G$Mdb zb$#^`T~=>s$n}7y;pgGS5rHQcfx^=@C7ZgK;{u>dz2R-}LA(g-*uBJ~2#HRjs_AA5 zAdWN~X+zlxqe=%}EV&hngbBgG&;+wVF$!N}S*8A{tBkLbyiDkT%IC{k7 zOi3u#J77@JY4Tp^wgJ;2!PTofQFk=CM#sICI($-!VvQ%kR2QSD3eGh=72*}*pkqoE z;HUdOW0T9DX@nW>3Y06VU^ze1RZ*I1+ScxIy7E}MxA9F=wpvl_Xc&c);kH0R({oI} zNjKI|;A57g-mH3#pm?b-IzAlx4QN^|F`(oE1}+Sk0E66ax}b(-u`{iJdU$yx*^J%@ zR5c`*8W*lhs+*&9CS6)-RS3yccRe*V z@#54VO7)Jkv?e-exttnR^^Qbkx}iyGnPO*2&=U{J2yi-X1BSIPutpF^5mb3A1+*x5 zRMH6tq7pc0Sk(Yz#3qX{+g{?)2@=pK{KpZZ`E-u*2uutB>+2enb08mb4ah0reGRbH zmN3u+vTJpNatXvyq;@QD3r0|*WJ{@V+R-Yb7xm=MrA-nXhzpJYuIqRM2)c@rVct_O z*rCJpBLYu30ytIIZO&)c{Ye>4HXxV)CscF4@Y;As;-FpP!pM@yXi!`>{4}L-qP2<; zwmLg^Fp7@XcgLoNjk*-I4S=-TV`=wX1x`c`azfxhrpr@EyuzP?PS|=X3+1fgDHI*Z zpg~H4rm>GsP$#yEdM5r=a%PBk@M1=L15{|QBFQzhMFJ~`pnK}vs*rLfq$@gV=y;FW z1exH~IAW%^Z^Tt0T47d^o-3sZJaU|lYl|a`P5U9rq$O}4GC;wZIyTJ6P_Unb?9qvU zA_=n$%ok9U=vkszhX|`jCkW>TTR;P$yjXVu;JSu;fcVe^-w=sSim|jICK#B_wR8g? zy1omqyXdHEOJbKKrSf)=nv>!_`7DN;gT#r zY&|0I>>{wy89FP*kb|o}sK6({sddnGw-=IPE{*_`0Qd;<-pq3H6@k4*N_*`a_&FutekPnCo_-~SXE$^ z1ddNhvf=nEuWcl>g$w}VAK(BH$iFVj0O|lYoDq;R%>DW3gs)!^k|>%aYcc7QT0KM2 zwNVA2R7OG(!LcA@zh*;O!c|Zl zNLb*gqh1iUfQ}(qpj(Ar<;W_g8uNmJIz4sNHRg1U!oGUP zvXjShpQKH#u`(C$_rr-376>Ou5DkjBSCQ0w@W%@Gv1+XMY#^ETIvd*x3}O3CjZp>c zmrSBmW=;RCp*=A$rKev|)4m1G_hPfwg=$LtAeT+yQh=#-Z$8B=05|OIwTmbjF(H<% zu=N0fVi&RuBID%D*D^o|^W)@_1X2>qEQ5Ga;^!@Kpg_*?kpZCnVAIS0HSJGw4R?HA zf*+f(G=-TC1~naJQiLQ(5i2p{0I?v8Ne8N>5!krG0YX#@`42$@QiuKyijVEdMgU!m zU4z~F$@+LWc0}M(BjDHVE$z269jE;4m7P?g98me_vC1L{H0>qa<&;5MHA9INIT{N| zJ9Voh*E3aeRFdZcw<|1m+=1b&CZI7{f~3LT+5>R#WdH^7021hC4&tfini1Fp730)N z-_vH-<;Tv7qm+$6roFOs9k4jGk+5Dzr){~^O;DC;pAv<_+cvbT!xfvpOhP4jna~W? zDm_IZ7ST|=>O){^mS+A2V8YKxBbRantg(Q9p`+Vm%x3zIB^oz@_QV7@Y-I!>Mqm>+ zD+h58FKz&3n!qI61YT}fuECZk#B~kV{tN}A+$-H63!sA8g*4p&q-4?xmV*s^353K$ zB?~OWBhq$o;*6m?2sGS9Nkha@zuX8QIfXug?uWk?Q<}?-%whQvfk%#jjU{c2;K-z{ z;IeKPhLjNHVfr}=bit<{*9ct0Q)#D#p|zsc^6B&*Ix2&^F?q(ruL+cJv7V=J%7x=j!KzT>0a-A-3hno$-KC?7y@a@h**U!x zk<77QDr`QyC!GSDha}nxvtoI3EflEVe49w_32hl(2FQo_p3=oiORG$IWq6HzlSa3R zHLRF%(z}))L2bbdky8ab8YCJ_xU3q4a{7h&m!ruK5N7H|uEhhSF}UxowTw5WAxI;~ z?HvuuHAoiVvLLAJ{fRTd$)eF!fR&f#W<|uQI&d zthg?MbIvcB(BZx0N7{gkJo5%DniB3&L*QK$ z(gJOwVq8omh-FMt04dQ_AZCdqHFk-%6@J`Gtu!^3yGt;4QPLt%=V&-=+N1aFp`%5U zjbxr<8&)@AeWTB{-%LovHZgPR*icf1pOTCNOv+^hn%t8#q!^ShKm)}mCV~_tDVSLR zE$8**)6pP!86*-1CLYg9gj|D-HnLYN_V!0EFMFU_Oby63*@*QF1W7V`2-ye&faR#n zQ1Xo#4Q+V%!tAsv_sfge0`HKq6LFL-Is*Fa3c4b54HxamVf+z+%Z~sDhsQV%Q=J@B zinhR{k!O-Y(iTOg`h%zpXso1&Xv|gv;jmgmzmB$EMJ2~7H!5|kbNxiFB^%lIax{dE z`=uyzlGo}l^6q7u769O>Ic zXO&c#u3or`xsa(OJcXhr$(lPM&9$EFVpXkC>a{hNt?VPRYiQidhbyY)#2h&SmS9ex z#DO?t;oh2|y`aU!CA|pJWvJ;OiQk zf)7RjNeh_;;6IA6?1F?+Dq!IBXM@PVjR^-Mw>?4RrddW{2bJTFnvU(cMu4viK__D$ z4So8#M&j`Mh`{4VAY95H)sWmMF>lbAqZ?JmxSXtxK8Kx#l}VrGU&6qy)+%7a4l16E zj$Dh4Tn4MZ<_L3B$}ki^W~xKPxfeU-hctLO=sUER0B&NrCJxvM=`OH z(kjo-w7si*SRcnT^}gPro#It#So83fE8sL<)@!!i_XA^&a3&2!rzDxp{Ye3|a44D( z9)%7pDjUQU@No$+0nQIqP%6uk!;FNo3^?M^3FQzh*Pu^a0v(>Apgc2-dz$+2V2cqP z0S09tO!!q;Ux7y|uu&Inka7aLyn|}V&XhQSCRsT~&Qaa5&(gt<(uGF=J?2_jH@pmz z-Rjtm2pkc3qzF9j`DZ78yaeEqzv8Oz?BVFu$$&-`iN>)+u|UG262F zR(Pm@HJ8OB@xGU*0Px3PqseC(LPS8ruTDS!vjxgEAU}cB!64Tl4C2G34dF2g*QB74 z*}@l$;qx2;174N5ALJd(3S0FMEb@b~$TJ5Gj&g4RJE~730_c}$Ui_gS9@`OtBLYu4 z0t=V&h>it|Mi?WiL$ffpn3jRAA|-2hiUjwF*1FvjGGD28q@H8mf*f`a9XY*CVC$V3 zbD~F#fwflK{o)3K78KWY-_!jXn6pW&1~SLh&CMRG5Tq`c6GCRedwDWz#0JQx;>QM| zXd$9~N2Jy92k1f<_OYtan2rp6vC^^<@^Aqkj|F0m*v<@;Y`QLxP7q5m4D$;j>=7%! z(1{$cWuP=alPFt+5t)!W&WGBDr48nI6$=79`g>sr{4wv zLvTyp#+@4(0Y~AvL;zg^?|{T=hGRj)b7}I!&vT7HH<&cEP(w$7{Oq7m%3L5nCCTba z2{Pq1JQ*>M52|-$501x=%c2F#VQ6teEo)sg90c1)nb)+3j#&%Bk9D&&mx6rsU_MTu zR=eG3q&PJStNp1^+}!m&oCy9_sHz~X2CV Date: Sat, 8 Aug 2026 01:27:36 +0800 Subject: [PATCH 05/13] fix(models): reject non-object and floor-to-zero context-cap payloads The PUT handler now rejects non-object JSON bodies (e.g. bare arrays) with 400 before property access, and normalizes a supplied value with Math.floor before validating so values like 0.5 - which floor to 0 and silently fall back to the global default - are rejected instead of accepted. Regression tests cover both cases and verify config is left untouched. --- src/server/management/provider-routes.ts | 27 +++++++++++++---- tests/management-provider-validation.test.ts | 32 ++++++++++++++++++++ 2 files changed, 53 insertions(+), 6 deletions(-) diff --git a/src/server/management/provider-routes.ts b/src/server/management/provider-routes.ts index 5851ad2d4..a196deabc 100644 --- a/src/server/management/provider-routes.ts +++ b/src/server/management/provider-routes.ts @@ -629,8 +629,12 @@ export async function handleProviderRoutes(ctx: ManagementContext): Promise>) => jsonResponse({ @@ -666,11 +670,16 @@ export async function handleProviderRoutes(ctx: ManagementContext): Promise= 1 — a value like 0.5 would + // otherwise floor to 0 and silently fall back to the global default. + if (body.value !== undefined && (typeof body.value !== "number" || !Number.isFinite(body.value))) { return jsonResponse({ error: "value must be a positive number" }, 400); } const perProviderValue = typeof body.value === "number" ? Math.floor(body.value) : undefined; + if (perProviderValue !== undefined && perProviderValue < 1) { + return jsonResponse({ error: "value must be a positive number" }, 400); + } setProviderContextCap(config, provider, body.enabled, perProviderValue); save(config); reconcileLiveStateStores(); @@ -683,7 +692,13 @@ export async function handleProviderRoutes(ctx: ManagementContext): Promise { expect(mixedPayload.status).toBe(400); const afterMixedPayload = await fetch(new URL("/api/provider-context-caps", server.url)); expect(await afterMixedPayload.json()).toMatchObject({ value: 600_000, caps: { "test-openai": 128_000, other: 600_000 } }); + + // A per-provider value that floors to zero (0.5) is rejected without mutating config: + // it must not silently fall back to the global default. + const floorZeroPerProvider = await fetch(new URL("/api/provider-context-caps", server.url), { + method: "PUT", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ provider: "test-openai", enabled: true, value: 0.5 }), + }); + expect(floorZeroPerProvider.status).toBe(400); + const afterFloorZeroPerProvider = await fetch(new URL("/api/provider-context-caps", server.url)); + expect(await afterFloorZeroPerProvider.json()).toMatchObject({ value: 600_000, caps: { "test-openai": 128_000, other: 600_000 } }); + + // A global value that floors to zero is rejected the same way. + const floorZeroGlobal = await fetch(new URL("/api/provider-context-caps", server.url), { + method: "PUT", + headers: { "content-type": "application/json" }, + body: JSON.stringify({ value: 0.5 }), + }); + expect(floorZeroGlobal.status).toBe(400); + const afterFloorZeroGlobal = await fetch(new URL("/api/provider-context-caps", server.url)); + expect(await afterFloorZeroGlobal.json()).toMatchObject({ value: 600_000, caps: { "test-openai": 128_000, other: 600_000 } }); + + // A non-object body (valid JSON) is rejected with 400 instead of crashing on + // property access. + const nonObject = await fetch(new URL("/api/provider-context-caps", server.url), { + method: "PUT", + headers: { "content-type": "application/json" }, + body: JSON.stringify([1, 2, 3]), + }); + expect(nonObject.status).toBe(400); + const afterNonObject = await fetch(new URL("/api/provider-context-caps", server.url)); + expect(await afterNonObject.json()).toMatchObject({ value: 600_000, caps: { "test-openai": 128_000, other: 600_000 } }); } finally { await server.stop(true); } From 1ab2439d93329a188b638d35df6324ac5b523788 Mon Sep 17 00:00:00 2001 From: xinweigao Date: Sat, 8 Aug 2026 01:27:40 +0800 Subject: [PATCH 06/13] feat(models): add --value to context provider CLI command ocx models context provider on --value now sends an explicit per-provider cap to the same management endpoint the dashboard uses, so headless installs can create and update per-provider custom caps. --value with off is rejected as a usage error. CLI reference docs updated in en/zh/ko/ja/ru. --- .../docs/ja/reference/cli/providers-accounts.md | 2 +- .../docs/ko/reference/cli/providers-accounts.md | 2 +- .../content/docs/reference/cli/providers-accounts.md | 2 +- .../docs/ru/reference/cli/providers-accounts.md | 2 +- .../docs/zh-cn/reference/cli/providers-accounts.md | 2 +- src/cli/models-runtime.ts | 10 +++++++++- tests/cli-headless-parity.test.ts | 12 ++++++++++++ 7 files changed, 26 insertions(+), 6 deletions(-) diff --git a/docs-site/src/content/docs/ja/reference/cli/providers-accounts.md b/docs-site/src/content/docs/ja/reference/cli/providers-accounts.md index b0e0fa29f..e9864c64a 100644 --- a/docs-site/src/content/docs/ja/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/ja/reference/cli/providers-accounts.md @@ -253,7 +253,7 @@ native-main トラフィックまたはジャーナル復旧を受け入れる | `disable ` | `--native`、`--json` | Codex から 1 つのモデルを非表示にします。 | | `provider ` | `--json` | 1 つのプロバイダーのすべてのモデルを 1 回の書き込みで有効または無効にします。 | | `selected ` | `--set `、`--clear`、`--json` |プロバイダー モデルのホワイトリストを読み取るか置き換えます。 `--clear` はホワイトリストを削除し、すべてのモデルが提供されるようにします。 | -| `context \|provider \|all >` | `--json` |コンテキスト ウィンドウ キャップをグローバルに、またはプロバイダーごとに読み取りまたは設定します。 | +| `context \|provider [--value ]\|all >` | `--json` |コンテキスト ウィンドウ キャップをグローバルに、またはプロバイダーごとに読み取りまたは設定します。 `provider ... --value ` はそのプロバイダーのみに個別のキャップを設定します。 | | `shadow [model\|-]` | `--enabled `、`--json` | Codex のバックグラウンド ヘルパー呼び出しの置換モデルを読み取るか、設定します。 `-` はモデルをクリアします。 `status` は `sourceModels` も報告し、プロキシがインターセプトするヘルパースラッグを示します (デフォルト: `gpt-5.6-luna`; 0.144.x 以前のクライアントが使用した `gpt-5.4-mini` は明示的な `sourceModels` オーバーライドで復元できます)。 | ```bash diff --git a/docs-site/src/content/docs/ko/reference/cli/providers-accounts.md b/docs-site/src/content/docs/ko/reference/cli/providers-accounts.md index b761a3aed..016ffe680 100644 --- a/docs-site/src/content/docs/ko/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/ko/reference/cli/providers-accounts.md @@ -252,7 +252,7 @@ native-main 트래픽이나 저널 복구를 허용하기 전에 수명 주기 | `disable ` | `--native`, `--json` | Codex에서 하나의 모델을 숨깁니다. | | `provider ` | `--json` | 한 제공자의 모든 모델을 한 번의 쓰기로 활성화하거나 비활성화합니다. | | `selected ` | `--set `, `--clear`, `--json` | 제공자 모델 허용 목록을 읽거나 교체합니다. `--clear`는 허용 목록을 제거해 모든 모델을 제공하도록 합니다. | -| `context \|provider \|all >` | `--json` | 전역 또는 제공자별로 컨텍스트 창 한도를 읽거나 설정합니다. | +| `context \|provider [--value ]\|all >` | `--json` | 전역 또는 제공자별로 컨텍스트 창 한도를 읽거나 설정합니다. `provider ... --value `는 해당 제공자에만 별도 한도를 설정합니다. | | `shadow [model\|-]` | `--enabled `, `--json` | Codex의 백그라운드 헬퍼 호출에 사용할 대체 모델을 읽거나 설정합니다. `-`는 모델을 지웁니다. `status`는 프록시가 가로채는 헬퍼 슬러그인 `sourceModels`도 보고합니다(기본값: `gpt-5.6-luna`; 0.144.x 이하 클라이언트가 사용한 `gpt-5.4-mini`는 명시적인 `sourceModels` 재정의로 복원할 수 있습니다). | ```bash diff --git a/docs-site/src/content/docs/reference/cli/providers-accounts.md b/docs-site/src/content/docs/reference/cli/providers-accounts.md index 7fe218226..1e47ca078 100644 --- a/docs-site/src/content/docs/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/reference/cli/providers-accounts.md @@ -341,7 +341,7 @@ proxy to be running (`ocx start`, or an installed service). | `disable ` | `--native`, `--json` | Hide one model from Codex. | | `provider ` | `--json` | Enable or disable every model of one provider in a single write. | | `selected ` | `--set `, `--clear`, `--json` | Read or replace the provider model allowlist. `--clear` removes the allowlist so every model is offered. | -| `context \|provider \|all >` | `--json` | Read or set the context-window cap, globally or per provider. | +| `context \|provider [--value ]\|all >` | `--json` | Read or set the context-window cap, globally or per provider. `provider ... --value ` sets an explicit cap for that provider only. | | `shadow [model\|-]` | `--enabled `, `--json` | Read or set the replacement model for Codex's background helper calls. `-` clears the model. `status` also reports `sourceModels`, the helper slugs the proxy intercepts (default: `gpt-5.6-luna`; clients through 0.144.x used `gpt-5.4-mini`, which an explicit `sourceModels` override can restore). | ```bash diff --git a/docs-site/src/content/docs/ru/reference/cli/providers-accounts.md b/docs-site/src/content/docs/ru/reference/cli/providers-accounts.md index a99dec555..d46bde34a 100644 --- a/docs-site/src/content/docs/ru/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/ru/reference/cli/providers-accounts.md @@ -316,7 +316,7 @@ management API и требуют, чтобы прокси уже работал | `disable ` | `--native`, `--json` | Скрыть одну модель от Codex. | | `provider ` | `--json` | Включить или выключить сразу все модели одного провайдера одним действием. | | `selected ` | `--set `, `--clear`, `--json` | Прочитать или заменить allowlist моделей провайдера. `--clear` удаляет allowlist, и тогда доступны все модели. | -| `context \|provider \|all >` | `--json` | Прочитать или задать context-window cap глобально либо по провайдерам. | +| `context \|provider [--value ]\|all >` | `--json` | Прочитать или задать context-window cap глобально либо по провайдерам. `provider ... --value ` задаёт отдельный cap только для этого провайдера. | | `shadow [model\|-]` | `--enabled `, `--json` | Прочитать или задать модель-замену для background helper-call'ов Codex. `-` очищает модель. `status` также показывает `sourceModels` — helper-slug'и, которые перехватывает proxy (по умолчанию `gpt-5.6-luna`; `gpt-5.4-mini` для клиентов до 0.144.x включительно можно восстановить явным переопределением `sourceModels`). | ```bash diff --git a/docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md b/docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md index 20f4205e4..32c5bb62e 100644 --- a/docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md @@ -286,7 +286,7 @@ v1 恢复矩阵覆盖的是事务文件通过重命名发布后 OpenCodex 进程 | `disable ` | `--native`, `--json` | 对 Codex 隐藏一个模型。 | | `provider ` | `--json` | 一次写入中启用或禁用某个提供方的全部模型。 | | `selected ` | `--set `, `--clear`, `--json` | 读取或替换提供方模型允许列表。`--clear` 会移除允许列表,使所有模型都可提供。 | -| `context \|provider \|all >` | `--json` | 读取或设置上下文窗口上限,可全局设置或按提供方设置。 | +| `context \|provider [--value ]\|all >` | `--json` | 读取或设置上下文窗口上限,可全局设置或按提供方设置。`provider ... --value ` 仅为该提供方设置独立上限。 | | `shadow [model\|-]` | `--enabled `, `--json` | 读取或设置 Codex 后台辅助调用所替换的模型。`-` 会清除该模型。`status` 还会报告 `sourceModels`,即代理拦截的辅助器 slug(默认值:`gpt-5.6-luna`;0.144.x 及更早客户端使用的 `gpt-5.4-mini` 可通过显式 `sourceModels` 覆盖恢复)。 | ```bash diff --git a/src/cli/models-runtime.ts b/src/cli/models-runtime.ts index d2e03f4ef..4a340e084 100644 --- a/src/cli/models-runtime.ts +++ b/src/cli/models-runtime.ts @@ -20,7 +20,7 @@ const USAGE = `Usage: ocx models [--native] [--json] ocx models provider [--json] ocx models selected [--set |--clear] [--json] - ocx models context |provider |all > [--json] + ocx models context |provider [--value ]|all > [--json] ocx models shadow [model|-] [--enabled ] [--json]`; type ModelRow = { @@ -163,6 +163,14 @@ async function context(argv: string[], deps: RuntimeApiDeps): Promise { const state = args.shift()?.toLowerCase(); if (!provider || (state !== "on" && state !== "off")) throw new CliUsageError("provider and on|off are required", USAGE); body = { provider, enabled: state === "on" }; + // Optional explicit cap value for this provider only (`ocx models context provider + // openai on --value 128000`). Mirrors the dashboard's per-provider cap picker; the + // value never leaks to other providers. + const value = takeIntegerOption(args, "--value", { min: 1 }); + if (value !== undefined && state !== "on") { + throw new CliUsageError("--value can only be used with on", USAGE); + } + if (value !== undefined) body.value = value; } else if (action === "all") { const state = args.shift()?.toLowerCase(); if (state !== "on" && state !== "off") throw new CliUsageError("all requires on|off", USAGE); diff --git a/tests/cli-headless-parity.test.ts b/tests/cli-headless-parity.test.ts index 8a976bd57..37fd4c1ee 100644 --- a/tests/cli-headless-parity.test.ts +++ b/tests/cli-headless-parity.test.ts @@ -209,6 +209,18 @@ describe("headless GUI parity CLI", () => { expect(runtime.requests[0]).toEqual({ path: "/api/provider-context-caps", method: "PUT", body: { setAll: true } }); }); + test("model context provider maps to the atomic GUI endpoint with an optional value", async () => { + const runtime = fakeRuntime(); + const code = await handleModelsRuntimeCommand("context", ["provider", "openai", "on", "--value", "128_000", "--json"], runtime.deps); + expect(code).toBe(0); + expect(runtime.requests[0]).toEqual({ path: "/api/provider-context-caps", method: "PUT", body: { provider: "openai", enabled: true, value: 128_000 } }); + + const offRuntime = fakeRuntime(); + const offCode = await handleModelsRuntimeCommand("context", ["provider", "openai", "off", "--json"], offRuntime.deps); + expect(offCode).toBe(0); + expect(offRuntime.requests[0]).toEqual({ path: "/api/provider-context-caps", method: "PUT", body: { provider: "openai", enabled: false } }); + }); + test("combo set parses ordered weighted targets", async () => { const runtime = fakeRuntime(); const code = await handleComboCommand([ From f61cb63eb76ea95bd58d77573d8738e79e555722 Mon Sep 17 00:00:00 2001 From: xinweigao Date: Sat, 8 Aug 2026 01:27:44 +0800 Subject: [PATCH 07/13] fix(models): count zero-row providers in set-all cap aggregate allCapped now includes routed providers with zero model rows. They can still hold a per-provider cap, and excluding them made the set-all switch read as on while a zero-row provider had a custom cap, so changing the global value sent setAll:true and silently overwrote that provider's cap. --- gui/src/pages/Models.tsx | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/gui/src/pages/Models.tsx b/gui/src/pages/Models.tsx index 19976ff39..67441e66f 100644 --- a/gui/src/pages/Models.tsx +++ b/gui/src/pages/Models.tsx @@ -641,8 +641,11 @@ export default function Models({ apiBase }: { apiBase: string }) { const allCapped = useMemo( () => { - // Cap aggregate counts routed providers only; the single native group has no cap switch. - const routed = groups.filter(group => !group.native && group.rows.length > 0); + // Cap aggregate counts routed providers only; the single native group has no cap + // switch. Zero-row routed providers are included: they can still hold a per-provider + // cap (e.g. a custom model added later), and excluding them would let "set all" + // silently overwrite that cap when the global value changes. + const routed = groups.filter(group => !group.native); return routed.length > 0 && routed.every(group => contextCaps[group.provider] === contextCapValue); }, [groups, contextCaps, contextCapValue], From 7de5b088872f1f38a9b27e5e95a936a5d42ea331 Mon Sep 17 00:00:00 2001 From: xinweigao Date: Sat, 8 Aug 2026 01:30:12 +0800 Subject: [PATCH 08/13] fix(models): show persisted custom provider cap in the selector The per-provider and global cap selects now select the saved value even when it is not one of the preset options. The option is already inserted into the list, so forcing the trigger to CUSTOM_OPTION hid the persisted cap (e.g. 128k) behind the 'Custom' label and made different custom caps indistinguishable. --- gui/src/pages/Models.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/gui/src/pages/Models.tsx b/gui/src/pages/Models.tsx index 67441e66f..bc2014231 100644 --- a/gui/src/pages/Models.tsx +++ b/gui/src/pages/Models.tsx @@ -1002,7 +1002,11 @@ export default function Models({ apiBase }: { apiBase: string }) { {capOn && ( <> Date: Sat, 8 Aug 2026 01:30:12 +0800 Subject: [PATCH 09/13] docs(models): sync ja/ko routing guides with apply-to-all behavior The Japanese and Korean model-routing guides now state that changing the dashboard contextCapValue re-points every enabled provider only when the apply-to-all toggle is on; otherwise each provider keeps its own cap. --- docs-site/src/content/docs/ja/guides/model-routing.md | 4 +++- docs-site/src/content/docs/ko/guides/model-routing.md | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/docs-site/src/content/docs/ja/guides/model-routing.md b/docs-site/src/content/docs/ja/guides/model-routing.md index 1268afc17..3fb9e5f55 100644 --- a/docs-site/src/content/docs/ja/guides/model-routing.md +++ b/docs-site/src/content/docs/ja/guides/model-routing.md @@ -87,7 +87,9 @@ model ID は変更しません。`openai-apikey/` は API key transport 失敗し、`defaultModel` / `models[]` 検査でもスキップします。 - `providerContextCaps` はプロバイダーごとに Codex に表示するコンテキスト上限を指定します。 `contextCapValue` はダッシュボードが併用する値でデフォルトは 350,000 です。ただしこの値だけを設定しても - 変化はなく、`providerContextCaps` にプロバイダーが含まれていて初めて適用されます。既知のコンテキスト + 変化はなく、`providerContextCaps` にプロバイダーが含まれていて初めて適用されます。ダッシュボードの値を + 変更すると、「すべてのルーティング対象プロバイダーに適用」がオンになっている場合にのみ、有効なすべての + プロバイダーに再適用されます。それ以外の場合、各プロバイダーは独自の上限を維持します。既知のコンテキスト サイズを下げるだけで、上げたり上流モデルの実際の上限を変えたりはしません。 ```json diff --git a/docs-site/src/content/docs/ko/guides/model-routing.md b/docs-site/src/content/docs/ko/guides/model-routing.md index 187c40a20..f9b1eff92 100644 --- a/docs-site/src/content/docs/ko/guides/model-routing.md +++ b/docs-site/src/content/docs/ko/guides/model-routing.md @@ -86,8 +86,10 @@ fallback하지 않습니다. 실패하고, `defaultModel` / `models[]` 검사에서도 건너뜁니다. - `providerContextCaps`는 프로바이더별로 Codex에 표시할 컨텍스트 상한을 지정합니다. `contextCapValue`는 대시보드가 함께 쓰는 값이며 기본값은 350,000입니다. 다만 이 값만 설정해서는 - 아무 변화가 없고 `providerContextCaps`에 프로바이더가 들어 있어야 적용됩니다. 이미 알려진 컨텍스트 - 크기를 낮추기만 하며, 더 키우거나 업스트림 모델의 실제 한도를 바꾸지는 않습니다. + 아무 변화가 없고 `providerContextCaps`에 프로바이더가 들어 있어야 적용됩니다. 대시보드 값을 변경하면 + '모든 라우팅 대상 프로바이더에 적용' 토글이 켜져 있을 때만 모든 활성 프로바이더에 다시 적용되며, + 그렇지 않으면 각 프로바이더는 자체 한도를 유지합니다. 이미 알려진 컨텍스트 크기를 낮추기만 하며, + 더 키우거나 업스트림 모델의 실제 한도를 바꾸지는 않습니다. ```json { From d95e6b615f169d8def964e1caf1a13899c2e1b37 Mon Sep 17 00:00:00 2001 From: xinweigao Date: Sat, 8 Aug 2026 01:37:54 +0800 Subject: [PATCH 10/13] fix(models): document and test --value as an on-only CLI option USAGE and the CLI reference tables in all five locales now show --value only on the provider on form, matching the parser's rejection of --value with off. The headless-parity test covers the rejected off --value path (usage error, no request sent). --- .../src/content/docs/ja/reference/cli/providers-accounts.md | 2 +- .../src/content/docs/ko/reference/cli/providers-accounts.md | 2 +- .../src/content/docs/reference/cli/providers-accounts.md | 2 +- .../src/content/docs/ru/reference/cli/providers-accounts.md | 2 +- .../content/docs/zh-cn/reference/cli/providers-accounts.md | 2 +- src/cli/models-runtime.ts | 2 +- tests/cli-headless-parity.test.ts | 6 ++++++ 7 files changed, 12 insertions(+), 6 deletions(-) diff --git a/docs-site/src/content/docs/ja/reference/cli/providers-accounts.md b/docs-site/src/content/docs/ja/reference/cli/providers-accounts.md index e9864c64a..44d79db3b 100644 --- a/docs-site/src/content/docs/ja/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/ja/reference/cli/providers-accounts.md @@ -253,7 +253,7 @@ native-main トラフィックまたはジャーナル復旧を受け入れる | `disable ` | `--native`、`--json` | Codex から 1 つのモデルを非表示にします。 | | `provider ` | `--json` | 1 つのプロバイダーのすべてのモデルを 1 回の書き込みで有効または無効にします。 | | `selected ` | `--set `、`--clear`、`--json` |プロバイダー モデルのホワイトリストを読み取るか置き換えます。 `--clear` はホワイトリストを削除し、すべてのモデルが提供されるようにします。 | -| `context \|provider [--value ]\|all >` | `--json` |コンテキスト ウィンドウ キャップをグローバルに、またはプロバイダーごとに読み取りまたは設定します。 `provider ... --value ` はそのプロバイダーのみに個別のキャップを設定します。 | +| `context \|provider on [--value ]\|provider off\|all >` | `--json` |コンテキスト ウィンドウ キャップをグローバルに、またはプロバイダーごとに読み取りまたは設定します。 `provider ... on --value ` はそのプロバイダーのみに個別のキャップを設定します(`--value` は `on` でのみ使用できます)。 | | `shadow [model\|-]` | `--enabled `、`--json` | Codex のバックグラウンド ヘルパー呼び出しの置換モデルを読み取るか、設定します。 `-` はモデルをクリアします。 `status` は `sourceModels` も報告し、プロキシがインターセプトするヘルパースラッグを示します (デフォルト: `gpt-5.6-luna`; 0.144.x 以前のクライアントが使用した `gpt-5.4-mini` は明示的な `sourceModels` オーバーライドで復元できます)。 | ```bash diff --git a/docs-site/src/content/docs/ko/reference/cli/providers-accounts.md b/docs-site/src/content/docs/ko/reference/cli/providers-accounts.md index 016ffe680..70a617929 100644 --- a/docs-site/src/content/docs/ko/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/ko/reference/cli/providers-accounts.md @@ -252,7 +252,7 @@ native-main 트래픽이나 저널 복구를 허용하기 전에 수명 주기 | `disable ` | `--native`, `--json` | Codex에서 하나의 모델을 숨깁니다. | | `provider ` | `--json` | 한 제공자의 모든 모델을 한 번의 쓰기로 활성화하거나 비활성화합니다. | | `selected ` | `--set `, `--clear`, `--json` | 제공자 모델 허용 목록을 읽거나 교체합니다. `--clear`는 허용 목록을 제거해 모든 모델을 제공하도록 합니다. | -| `context \|provider [--value ]\|all >` | `--json` | 전역 또는 제공자별로 컨텍스트 창 한도를 읽거나 설정합니다. `provider ... --value `는 해당 제공자에만 별도 한도를 설정합니다. | +| `context \|provider on [--value ]\|provider off\|all >` | `--json` | 전역 또는 제공자별로 컨텍스트 창 한도를 읽거나 설정합니다. `provider ... on --value `는 해당 제공자에만 별도 한도를 설정합니다(`--value`는 `on`에서만 사용할 수 있습니다). | | `shadow [model\|-]` | `--enabled `, `--json` | Codex의 백그라운드 헬퍼 호출에 사용할 대체 모델을 읽거나 설정합니다. `-`는 모델을 지웁니다. `status`는 프록시가 가로채는 헬퍼 슬러그인 `sourceModels`도 보고합니다(기본값: `gpt-5.6-luna`; 0.144.x 이하 클라이언트가 사용한 `gpt-5.4-mini`는 명시적인 `sourceModels` 재정의로 복원할 수 있습니다). | ```bash diff --git a/docs-site/src/content/docs/reference/cli/providers-accounts.md b/docs-site/src/content/docs/reference/cli/providers-accounts.md index 1e47ca078..5374446e4 100644 --- a/docs-site/src/content/docs/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/reference/cli/providers-accounts.md @@ -341,7 +341,7 @@ proxy to be running (`ocx start`, or an installed service). | `disable ` | `--native`, `--json` | Hide one model from Codex. | | `provider ` | `--json` | Enable or disable every model of one provider in a single write. | | `selected ` | `--set `, `--clear`, `--json` | Read or replace the provider model allowlist. `--clear` removes the allowlist so every model is offered. | -| `context \|provider [--value ]\|all >` | `--json` | Read or set the context-window cap, globally or per provider. `provider ... --value ` sets an explicit cap for that provider only. | +| `context \|provider on [--value ]\|provider off\|all >` | `--json` | Read or set the context-window cap, globally or per provider. `provider ... on --value ` sets an explicit cap for that provider only (`--value` is valid with `on` only). | | `shadow [model\|-]` | `--enabled `, `--json` | Read or set the replacement model for Codex's background helper calls. `-` clears the model. `status` also reports `sourceModels`, the helper slugs the proxy intercepts (default: `gpt-5.6-luna`; clients through 0.144.x used `gpt-5.4-mini`, which an explicit `sourceModels` override can restore). | ```bash diff --git a/docs-site/src/content/docs/ru/reference/cli/providers-accounts.md b/docs-site/src/content/docs/ru/reference/cli/providers-accounts.md index d46bde34a..aa80f15a8 100644 --- a/docs-site/src/content/docs/ru/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/ru/reference/cli/providers-accounts.md @@ -316,7 +316,7 @@ management API и требуют, чтобы прокси уже работал | `disable ` | `--native`, `--json` | Скрыть одну модель от Codex. | | `provider ` | `--json` | Включить или выключить сразу все модели одного провайдера одним действием. | | `selected ` | `--set `, `--clear`, `--json` | Прочитать или заменить allowlist моделей провайдера. `--clear` удаляет allowlist, и тогда доступны все модели. | -| `context \|provider [--value ]\|all >` | `--json` | Прочитать или задать context-window cap глобально либо по провайдерам. `provider ... --value ` задаёт отдельный cap только для этого провайдера. | +| `context \|provider on [--value ]\|provider off\|all >` | `--json` | Прочитать или задать context-window cap глобально либо по провайдерам. `provider ... on --value ` задаёт отдельный cap только для этого провайдера (`--value` допустим только с `on`). | | `shadow [model\|-]` | `--enabled `, `--json` | Прочитать или задать модель-замену для background helper-call'ов Codex. `-` очищает модель. `status` также показывает `sourceModels` — helper-slug'и, которые перехватывает proxy (по умолчанию `gpt-5.6-luna`; `gpt-5.4-mini` для клиентов до 0.144.x включительно можно восстановить явным переопределением `sourceModels`). | ```bash diff --git a/docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md b/docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md index 32c5bb62e..37bbef829 100644 --- a/docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md @@ -286,7 +286,7 @@ v1 恢复矩阵覆盖的是事务文件通过重命名发布后 OpenCodex 进程 | `disable ` | `--native`, `--json` | 对 Codex 隐藏一个模型。 | | `provider ` | `--json` | 一次写入中启用或禁用某个提供方的全部模型。 | | `selected ` | `--set `, `--clear`, `--json` | 读取或替换提供方模型允许列表。`--clear` 会移除允许列表,使所有模型都可提供。 | -| `context \|provider [--value ]\|all >` | `--json` | 读取或设置上下文窗口上限,可全局设置或按提供方设置。`provider ... --value ` 仅为该提供方设置独立上限。 | +| `context \|provider on [--value ]\|provider off\|all >` | `--json` | 读取或设置上下文窗口上限,可全局设置或按提供方设置。`provider ... on --value ` 仅为该提供方设置独立上限(`--value` 仅可用于 `on`)。 | | `shadow [model\|-]` | `--enabled `, `--json` | 读取或设置 Codex 后台辅助调用所替换的模型。`-` 会清除该模型。`status` 还会报告 `sourceModels`,即代理拦截的辅助器 slug(默认值:`gpt-5.6-luna`;0.144.x 及更早客户端使用的 `gpt-5.4-mini` 可通过显式 `sourceModels` 覆盖恢复)。 | ```bash diff --git a/src/cli/models-runtime.ts b/src/cli/models-runtime.ts index 4a340e084..e5a276955 100644 --- a/src/cli/models-runtime.ts +++ b/src/cli/models-runtime.ts @@ -20,7 +20,7 @@ const USAGE = `Usage: ocx models [--native] [--json] ocx models provider [--json] ocx models selected [--set |--clear] [--json] - ocx models context |provider [--value ]|all > [--json] + ocx models context |provider on [--value ]|provider off|all > [--json] ocx models shadow [model|-] [--enabled ] [--json]`; type ModelRow = { diff --git a/tests/cli-headless-parity.test.ts b/tests/cli-headless-parity.test.ts index 37fd4c1ee..68ab04993 100644 --- a/tests/cli-headless-parity.test.ts +++ b/tests/cli-headless-parity.test.ts @@ -219,6 +219,12 @@ describe("headless GUI parity CLI", () => { const offCode = await handleModelsRuntimeCommand("context", ["provider", "openai", "off", "--json"], offRuntime.deps); expect(offCode).toBe(0); expect(offRuntime.requests[0]).toEqual({ path: "/api/provider-context-caps", method: "PUT", body: { provider: "openai", enabled: false } }); + + // --value is only valid with `on`; the rejected form must not send any request. + const rejectedRuntime = fakeRuntime(); + const rejectedCode = await handleModelsRuntimeCommand("context", ["provider", "openai", "off", "--value", "128_000", "--json"], rejectedRuntime.deps); + expect(rejectedCode).toBe(2); + expect(rejectedRuntime.requests).toEqual([]); }); test("combo set parses ordered weighted targets", async () => { From 4902a89d40605cdb6916e548b6ac825c94404f70 Mon Sep 17 00:00:00 2001 From: xinweigao Date: Sat, 8 Aug 2026 10:10:03 +0800 Subject: [PATCH 11/13] fix(models): require integer caps and count hidden providers in set-all The cap inputs now require a positive safe integer instead of flooring fractional values: 0.5 was accepted, floored to 0 by the server, and silently fell back to the global default, while 128000.9 saved 128000 without the user noticing. The apply-to-all aggregate now also counts saved caps of providers that are no longer in the visible groups (e.g. disabled after receiving a custom cap), so changing the global value cannot silently overwrite those caps with setAll: true. --- gui/src/pages/Models.tsx | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/gui/src/pages/Models.tsx b/gui/src/pages/Models.tsx index bc2014231..8958a7622 100644 --- a/gui/src/pages/Models.tsx +++ b/gui/src/pages/Models.tsx @@ -644,19 +644,25 @@ export default function Models({ apiBase }: { apiBase: string }) { // Cap aggregate counts routed providers only; the single native group has no cap // switch. Zero-row routed providers are included: they can still hold a per-provider // cap (e.g. a custom model added later), and excluding them would let "set all" - // silently overwrite that cap when the global value changes. + // silently overwrite that cap when the global value changes. Saved caps of providers + // that are no longer in `groups` (e.g. disabled after receiving a custom cap) are + // also counted: the management API rewrites every key in providerContextCaps when + // setAll is true, so any saved cap that differs from the current value must keep the + // aggregate off. const routed = groups.filter(group => !group.native); - return routed.length > 0 && routed.every(group => contextCaps[group.provider] === contextCapValue); + return routed.length > 0 + && routed.every(group => contextCaps[group.provider] === contextCapValue) + && Object.keys(contextCaps).every(key => contextCaps[key] === contextCapValue); }, [groups, contextCaps, contextCapValue], ); const setGlobalCap = (value: number) => { - if (!Number.isFinite(value) || value <= 0) return; + if (!Number.isSafeInteger(value) || value <= 0) return; // Only when "apply to every routed provider" is checked does the new value re-point every // provider; otherwise it just becomes the default for future toggles and providers keep // their own values. - void putCap(allCapped ? { value: Math.floor(value), setAll: true } : { value: Math.floor(value) }); + void putCap(allCapped ? { value, setAll: true } : { value }); }; const onSelectProviderCap = (provider: string, raw: string) => { @@ -667,28 +673,30 @@ export default function Models({ apiBase }: { apiBase: string }) { } setProviderCapCustomOpen(prev => ({ ...prev, [provider]: false })); const value = Number(raw); - if (Number.isFinite(value) && value > 0 && value !== contextCaps[provider]) { - void putCap({ provider, enabled: true, value: Math.floor(value) }); + if (Number.isSafeInteger(value) && value > 0 && value !== contextCaps[provider]) { + void putCap({ provider, enabled: true, value }); } }; const applyProviderCustomCap = (provider: string) => { const value = Number((providerCapCustomDraft[provider] ?? "").replace(/[_,\s]/g, "")); - if (!Number.isFinite(value) || value <= 0) { publishFeedback(false, t("models.capSaveFailed")); return; } + // Fractional values are rejected (the server floors, so 0.5 would silently become 0). + // The editor stays open when validation fails. + if (!Number.isSafeInteger(value) || value <= 0) { publishFeedback(false, t("models.capSaveFailed")); return; } setProviderCapCustomOpen(prev => ({ ...prev, [provider]: false })); - void putCap({ provider, enabled: true, value: Math.floor(value) }); + void putCap({ provider, enabled: true, value }); }; const onSelectCap = (raw: string) => { if (raw === CUSTOM_OPTION) { setShowCustom(true); setCustomCap(String(contextCapValue)); return; } setShowCustom(false); const value = Number(raw); - if (Number.isFinite(value) && value > 0 && value !== contextCapValue) setGlobalCap(value); + if (Number.isSafeInteger(value) && value > 0 && value !== contextCapValue) setGlobalCap(value); }; const applyCustomCap = () => { const value = Number(customCap.replace(/[_,\s]/g, "")); - if (!Number.isFinite(value) || value <= 0) { publishFeedback(false, t("models.capSaveFailed")); return; } + if (!Number.isSafeInteger(value) || value <= 0) { publishFeedback(false, t("models.capSaveFailed")); return; } setShowCustom(false); setGlobalCap(value); }; From ba25c0030a2fdb704dec8bea80093cbe9be8ec1b Mon Sep 17 00:00:00 2001 From: xinweigao Date: Sat, 8 Aug 2026 10:21:41 +0800 Subject: [PATCH 12/13] docs(models): clarify apply-to-all covers providers without cap entries The contextCapValue documentation now states that toggling "apply to every routed provider" applies the value to every routed provider, including providers without an existing providerContextCaps entry. Updated en/ja/ko/ru/zh-cn. --- .../src/content/docs/ja/reference/configuration/providers.md | 2 +- .../src/content/docs/ko/reference/configuration/providers.md | 2 +- docs-site/src/content/docs/reference/configuration/providers.md | 2 +- .../src/content/docs/ru/reference/configuration/providers.md | 2 +- .../src/content/docs/zh-cn/reference/configuration/providers.md | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs-site/src/content/docs/ja/reference/configuration/providers.md b/docs-site/src/content/docs/ja/reference/configuration/providers.md index 1e87f416b..b2d37c7e3 100644 --- a/docs-site/src/content/docs/ja/reference/configuration/providers.md +++ b/docs-site/src/content/docs/ja/reference/configuration/providers.md @@ -13,7 +13,7 @@ description: プロバイダー エントリ、認証、エンドポイント、 | `openaiProviderTierVersion?` | `2` |移行によって設定される |単一のオプション対応 OpenAI プロジェクションを完了としてマークします。 | | `disabledModels?` | `string[]` | — | Codex catalog と `/v1/models` から非表示にする model。直接の proxy 呼び出しはブロックしません。routed id は一覧から削除されます。account-qualified native id は該当する selector row だけを非表示にし、bare native GPT id は bare row とその model の全 account-selector row を非表示にします。Models ページに表示されるのは bare native 行と routed 行だけです。selector-qualified 行を 1 つだけ非表示にするには、この設定フィールドを直接編集してください。 | | `providerContextCaps?` | `Record` | `{}` |プロバイダーごとの Codex に表示されるコンテキストの上限。キャップは既知のコンテキスト ウィンドウを下げるだけです。 | -| `contextCapValue?` | `number` | `350000` |ダッシュボードのコンテキストキャップ コントロールで使用される既定値。「すべてのルーティング済みプロバイダーに適用」がオンになっている場合のみ、変更によって有効なすべての `providerContextCaps` エントリが更新されます。それ以外では各プロバイダーは独自のキャップを保持します。 | +| `contextCapValue?` | `number` | `350000` |ダッシュボードのコンテキストキャップ コントロールで使用される既定値。「すべてのルーティング済みプロバイダーに適用」がオンになっている場合のみ、変更によってすべてのルーティング済みプロバイダー(`providerContextCaps` エントリがまだないプロバイダーを含む)に値が適用されます。それ以外では各プロバイダーは独自のキャップを保持します。 | | `codexAccounts?` | `CodexAccount[]` | `[]` | ChatGPT/Codex プール アカウントのメタデータは Codex Auth によって管理されます。秘密は`codex-accounts.json`に別に住んでいます。 | | `pausedCodexAccountIds?` | `string[]` | `[]` |再開するまでプールの選択から除外されるアカウント (一時停止時のメイン `__main__` アカウントを含む)。 | | `codexAccountNamespaces?` | `Record` | — | 任意の公開 model selector を保存済み Codex アカウント target に対応付ける任意の map。target が存在する各 selector は Codex picker に個別の `/` row を追加し、各 row はそのアカウントだけを使用します。selector が 1 つでも有効な場合、bare native row は picker で非表示になりますが、明示的に無効化されない限り id は引き続き routing でき、raw `/v1/models` にも表示されます。 | diff --git a/docs-site/src/content/docs/ko/reference/configuration/providers.md b/docs-site/src/content/docs/ko/reference/configuration/providers.md index ba0a9fce8..b291397e0 100644 --- a/docs-site/src/content/docs/ko/reference/configuration/providers.md +++ b/docs-site/src/content/docs/ko/reference/configuration/providers.md @@ -13,7 +13,7 @@ description: 공급자 항목, 인증, 엔드포인트, 모델 카탈로그, 할 | `openaiProviderTierVersion?` | `2` | 마이그레이션으로 설정됨 | 옵션을 인식하는 단일 OpenAI 투영이 완료되었음을 표시합니다. | | `disabledModels?` | `string[]` | — | Codex catalog와 `/v1/models`에서는 숨기지만 직접 proxy 호출은 차단하지 않습니다. routed id는 목록에서 제거됩니다. account-qualified native id는 해당 selector row만 숨기고, bare native GPT id는 bare row와 그 model의 모든 account-selector row를 숨깁니다. Models 페이지에는 bare native 행과 routed 행만 표시됩니다. selector-qualified 행 하나만 숨기려면 이 설정 필드에 직접 추가하세요. | | `providerContextCaps?` | `Record` | `{}` | 공급자별 Codex 표시 컨텍스트 상한입니다. 상한은 이미 알려진 컨텍스트 윈도만 낮춥니다. | -| `contextCapValue?` | `number` | `350000` | 대시보드의 컨텍스트 상한 컨트롤이 사용하는 기본값입니다. "모든 라우팅된 공급자에 적용" 토글이 켜져 있을 때만 이 값을 바꾸면 활성화된 모든 `providerContextCaps` 항목이 함께 갱신됩니다. 그렇지 않으면 각 공급자는 자체 상한을 유지합니다. | +| `contextCapValue?` | `number` | `350000` | 대시보드의 컨텍스트 상한 컨트롤이 사용하는 기본값입니다. "모든 라우팅된 공급자에 적용" 토글이 켜져 있을 때만 값을 변경하면 기존 `providerContextCaps` 항목이 없는 공급자를 포함해 모든 라우팅된 공급자에 값이 적용됩니다. 그렇지 않으면 각 공급자는 자체 상한을 유지합니다. | | `codexAccounts?` | `CodexAccount[]` | `[]` | Codex Auth가 관리하는 ChatGPT/Codex 풀 계정 메타데이터입니다. 비밀 정보는 `codex-accounts.json`에 따로 저장됩니다. | | `pausedCodexAccountIds?` | `string[]` | `[]` | 일시 중지된 `__main__` 계정을 포함해, 재개될 때까지 Pool 선택에서 제외되는 계정입니다. | | `codexAccountNamespaces?` | `Record` | — | 임의의 공개 model selector를 저장된 Codex 계정 target에 연결하는 선택적 map입니다. target이 존재하는 각 selector는 Codex picker에 별도의 `/` row를 추가하며, 각 row는 해당 계정만 사용합니다. selector가 하나라도 활성화되면 bare native row는 picker에서 숨겨지지만, 명시적으로 비활성화하지 않는 한 해당 id는 계속 routing 가능하고 raw `/v1/models`에 표시됩니다. | diff --git a/docs-site/src/content/docs/reference/configuration/providers.md b/docs-site/src/content/docs/reference/configuration/providers.md index f9313567d..ce98d94a8 100644 --- a/docs-site/src/content/docs/reference/configuration/providers.md +++ b/docs-site/src/content/docs/reference/configuration/providers.md @@ -14,7 +14,7 @@ authenticated. | `openaiProviderTierVersion?` | `2` | set by migration | Marks the single option-aware OpenAI projection as complete. | | `disabledModels?` | `string[]` | — | Models hidden from Codex's catalog and `/v1/models`, but not blocked from direct proxy calls. A routed id is removed from listings. An account-qualified native id hides only that selector row; a bare native GPT id hides the bare row and every account-selector row for that model. The dashboard Models page exposes only routed and bare native rows; use this configuration field directly to hide one selector-qualified row. | | `providerContextCaps?` | `Record` | `{}` | Per-provider Codex-visible context caps. A cap only lowers a known context window. | -| `contextCapValue?` | `number` | `350000` | Default value used by the dashboard context-cap controls. Changing it re-points every enabled `providerContextCaps` entry only when "apply to every routed provider" is toggled on; otherwise each provider keeps its own cap. | +| `contextCapValue?` | `number` | `350000` | Default value used by the dashboard context-cap controls. Changing it applies the value to every routed provider — including providers without an existing `providerContextCaps` entry — only when "apply to every routed provider" is toggled on; otherwise each provider keeps its own cap. | | `codexAccounts?` | `CodexAccount[]` | `[]` | ChatGPT/Codex pool account metadata managed by Codex Auth. Secrets live separately in `codex-accounts.json`. | | `pausedCodexAccountIds?` | `string[]` | `[]` | Accounts excluded from Pool selection until resumed, including the main `__main__` account when paused. | | `codexAccountNamespaces?` | `Record` | — | Optional map from an arbitrary public model selector to a stored Codex account target. Each selector whose target is present adds separate `/` rows to the Codex picker; each row uses only that account. With any selector active, bare native rows are hidden in the picker, but their ids remain routable and listed by raw `/v1/models` unless explicitly disabled. | diff --git a/docs-site/src/content/docs/ru/reference/configuration/providers.md b/docs-site/src/content/docs/ru/reference/configuration/providers.md index ee1da8081..78e6275ef 100644 --- a/docs-site/src/content/docs/ru/reference/configuration/providers.md +++ b/docs-site/src/content/docs/ru/reference/configuration/providers.md @@ -14,7 +14,7 @@ description: Записи провайдеров, аутентификация, | `openaiProviderTierVersion?` | `2` | set by migration | Отмечает, что единая projection OpenAI с учётом режима уже завершена. | | `disabledModels?` | `string[]` | — | Модели, скрытые из каталога Codex и `/v1/models`, но не заблокированные для прямых вызовов прокси. Routed-id удаляются из списков. Account-qualified native-id скрывает только строку этого селектора; bare native GPT-id скрывает bare-строку и строки всех селекторов аккаунтов для этой модели. Страница Models показывает только bare native- и routed-строки; чтобы скрыть одну selector-qualified строку, задайте это поле конфигурации напрямую. | | `providerContextCaps?` | `Record` | `{}` | Context cap'ы, видимые Codex, по каждому провайдеру. Cap может только понижать известное context window. | -| `contextCapValue?` | `number` | `350000` | Значение по умолчанию для элементов управления context-cap в дашборде. Изменение обновляет все включённые записи `providerContextCaps` только при включённом переключателе «применить ко всем маршрутизируемым провайдерам»; в противном случае каждый провайдер сохраняет собственный лимит. | +| `contextCapValue?` | `number` | `350000` | Значение по умолчанию для элементов управления context-cap в дашборде. При изменении значение применяется ко всем маршрутизируемым провайдерам — включая провайдеров без существующей записи `providerContextCaps` — только при включённом переключателе «применить ко всем маршрутизируемым провайдерам»; в противном случае каждый провайдер сохраняет собственный лимит. | | `codexAccounts?` | `CodexAccount[]` | `[]` | Метаданные аккаунтов пула ChatGPT/Codex, которыми управляет Codex Auth. Секреты живут отдельно в `codex-accounts.json`. | | `pausedCodexAccountIds?` | `string[]` | `[]` | Аккаунты, исключённые из выбора Pool до снятия паузы, включая основной аккаунт `__main__`, если он поставлен на паузу. | | `codexAccountNamespaces?` | `Record` | — | Необязательное сопоставление произвольного публичного селектора модели с сохранённым аккаунтом Codex. Каждый селектор с существующей целью добавляет в model picker Codex отдельные строки `/`; каждая строка использует только этот аккаунт. Если активен хотя бы один селектор, bare native-строки скрываются в picker, но их id остаются маршрутизируемыми и перечисляются raw `/v1/models`, если они не отключены явно. | diff --git a/docs-site/src/content/docs/zh-cn/reference/configuration/providers.md b/docs-site/src/content/docs/zh-cn/reference/configuration/providers.md index c6c631f51..ef3d4d286 100644 --- a/docs-site/src/content/docs/zh-cn/reference/configuration/providers.md +++ b/docs-site/src/content/docs/zh-cn/reference/configuration/providers.md @@ -13,7 +13,7 @@ description: 提供者条目、身份验证、端点、模型目录、配额、 | `openaiProviderTierVersion?` | `2` | 由迁移设置 | 标记单一、可感知选项的 OpenAI 投影已完成。 | | `disabledModels?` | `string[]` | — | 从 Codex catalog 和 `/v1/models` 中隐藏、但不阻止直接 proxy 调用的 model。routed id 会从列表中移除。account-qualified native id 只隐藏对应 selector row;bare native GPT id 会隐藏 bare row 以及该 model 的所有 account-selector row。Models 页面只显示裸原生行和路由行;若只隐藏一个 selector-qualified 行,请直接设置此配置字段。 | | `providerContextCaps?` | `Record` | `{}` | 按提供者设置、对 Codex 可见的上下文上限。上限只会降低已知的上下文窗口。 | -| `contextCapValue?` | `number` | `350000` | 仪表板上下文上限控件使用的默认值。仅当勾选“应用到所有已路由的提供方”时,修改它才会更新所有已启用的 `providerContextCaps` 条目;否则每个提供方保留自己的上限。 | +| `contextCapValue?` | `number` | `350000` | 仪表板上下文上限控件使用的默认值。仅当勾选“应用到所有已路由的提供方”时,修改它才会把值应用到所有已路由提供方(包括没有现有 `providerContextCaps` 条目的提供方);否则每个提供方保留自己的上限。 | | `codexAccounts?` | `CodexAccount[]` | `[]` | 由 Codex Auth 管理的 ChatGPT/Codex 池账户元数据。密钥单独存放在 `codex-accounts.json` 中。 | | `pausedCodexAccountIds?` | `string[]` | `[]` | 在恢复之前从 Pool 选择中排除的账户,包括被暂停时的主 `__main__` 账户。 | | `codexAccountNamespaces?` | `Record` | — | 将任意公开 model selector 映射到已保存 Codex account target 的可选配置。target 存在的每个 selector 都会在 Codex picker 中添加独立的 `/` row,且每个 row 只使用对应账户。只要有 selector 生效,bare native row 就会在 picker 中隐藏;但除非显式禁用,其 id 仍可路由,并继续列在 raw `/v1/models` 中。 | From 3e23b4bcd4cfd5bbff4ab431e5d6ef67470283ed Mon Sep 17 00:00:00 2001 From: xinweigao Date: Sat, 8 Aug 2026 10:29:23 +0800 Subject: [PATCH 13/13] feat(models): add --set-all to context value CLI command ocx models context value --set-all now sends { value, setAll: true } so headless users can re-point every routed provider to the new cap in one write, matching the dashboard toggle and the previous CLI behavior. Without the flag the value only becomes the default, preserving per-provider caps. USAGE and CLI reference docs updated in en/zh/ko/ja/ru; a parity test covers both forms. --- .../docs/ja/reference/cli/providers-accounts.md | 2 +- .../docs/ko/reference/cli/providers-accounts.md | 2 +- .../docs/reference/cli/providers-accounts.md | 2 +- .../docs/ru/reference/cli/providers-accounts.md | 2 +- .../docs/zh-cn/reference/cli/providers-accounts.md | 2 +- src/cli/models-runtime.ts | 6 +++++- tests/cli-headless-parity.test.ts | 13 +++++++++++++ 7 files changed, 23 insertions(+), 6 deletions(-) diff --git a/docs-site/src/content/docs/ja/reference/cli/providers-accounts.md b/docs-site/src/content/docs/ja/reference/cli/providers-accounts.md index 44d79db3b..9c6e6edf7 100644 --- a/docs-site/src/content/docs/ja/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/ja/reference/cli/providers-accounts.md @@ -253,7 +253,7 @@ native-main トラフィックまたはジャーナル復旧を受け入れる | `disable ` | `--native`、`--json` | Codex から 1 つのモデルを非表示にします。 | | `provider ` | `--json` | 1 つのプロバイダーのすべてのモデルを 1 回の書き込みで有効または無効にします。 | | `selected ` | `--set `、`--clear`、`--json` |プロバイダー モデルのホワイトリストを読み取るか置き換えます。 `--clear` はホワイトリストを削除し、すべてのモデルが提供されるようにします。 | -| `context \|provider on [--value ]\|provider off\|all >` | `--json` |コンテキスト ウィンドウ キャップをグローバルに、またはプロバイダーごとに読み取りまたは設定します。 `provider ... on --value ` はそのプロバイダーのみに個別のキャップを設定します(`--value` は `on` でのみ使用できます)。 | +| `context [--set-all]\|provider on [--value ]\|provider off\|all >` | `--json` |コンテキスト ウィンドウ キャップをグローバルに、またはプロバイダーごとに読み取りまたは設定します。 `value --set-all` はすべてのルーティング済みプロバイダーにも値を再適用します(ダッシュボードのトグルと同様)。指定しない場合は既定値のみが変更されます。 `provider ... on --value ` はそのプロバイダーのみに個別のキャップを設定します(`--value` は `on` でのみ使用できます)。 | | `shadow [model\|-]` | `--enabled `、`--json` | Codex のバックグラウンド ヘルパー呼び出しの置換モデルを読み取るか、設定します。 `-` はモデルをクリアします。 `status` は `sourceModels` も報告し、プロキシがインターセプトするヘルパースラッグを示します (デフォルト: `gpt-5.6-luna`; 0.144.x 以前のクライアントが使用した `gpt-5.4-mini` は明示的な `sourceModels` オーバーライドで復元できます)。 | ```bash diff --git a/docs-site/src/content/docs/ko/reference/cli/providers-accounts.md b/docs-site/src/content/docs/ko/reference/cli/providers-accounts.md index 70a617929..5f9624b80 100644 --- a/docs-site/src/content/docs/ko/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/ko/reference/cli/providers-accounts.md @@ -252,7 +252,7 @@ native-main 트래픽이나 저널 복구를 허용하기 전에 수명 주기 | `disable ` | `--native`, `--json` | Codex에서 하나의 모델을 숨깁니다. | | `provider ` | `--json` | 한 제공자의 모든 모델을 한 번의 쓰기로 활성화하거나 비활성화합니다. | | `selected ` | `--set `, `--clear`, `--json` | 제공자 모델 허용 목록을 읽거나 교체합니다. `--clear`는 허용 목록을 제거해 모든 모델을 제공하도록 합니다. | -| `context \|provider on [--value ]\|provider off\|all >` | `--json` | 전역 또는 제공자별로 컨텍스트 창 한도를 읽거나 설정합니다. `provider ... on --value `는 해당 제공자에만 별도 한도를 설정합니다(`--value`는 `on`에서만 사용할 수 있습니다). | +| `context [--set-all]\|provider on [--value ]\|provider off\|all >` | `--json` | 전역 또는 제공자별로 컨텍스트 창 한도를 읽거나 설정합니다. `value --set-all`은 모든 라우팅된 공급자에도 값을 다시 적용합니다(대시보드 토글과 동일). 지정하지 않으면 값은 기본값만 변경됩니다. `provider ... on --value `는 해당 제공자에만 별도 한도를 설정합니다(`--value`는 `on`에서만 사용할 수 있습니다). | | `shadow [model\|-]` | `--enabled `, `--json` | Codex의 백그라운드 헬퍼 호출에 사용할 대체 모델을 읽거나 설정합니다. `-`는 모델을 지웁니다. `status`는 프록시가 가로채는 헬퍼 슬러그인 `sourceModels`도 보고합니다(기본값: `gpt-5.6-luna`; 0.144.x 이하 클라이언트가 사용한 `gpt-5.4-mini`는 명시적인 `sourceModels` 재정의로 복원할 수 있습니다). | ```bash diff --git a/docs-site/src/content/docs/reference/cli/providers-accounts.md b/docs-site/src/content/docs/reference/cli/providers-accounts.md index 5374446e4..dd6c48f2a 100644 --- a/docs-site/src/content/docs/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/reference/cli/providers-accounts.md @@ -341,7 +341,7 @@ proxy to be running (`ocx start`, or an installed service). | `disable ` | `--native`, `--json` | Hide one model from Codex. | | `provider ` | `--json` | Enable or disable every model of one provider in a single write. | | `selected ` | `--set `, `--clear`, `--json` | Read or replace the provider model allowlist. `--clear` removes the allowlist so every model is offered. | -| `context \|provider on [--value ]\|provider off\|all >` | `--json` | Read or set the context-window cap, globally or per provider. `provider ... on --value ` sets an explicit cap for that provider only (`--value` is valid with `on` only). | +| `context [--set-all]\|provider on [--value ]\|provider off\|all >` | `--json` | Read or set the context-window cap, globally or per provider. `value --set-all` also re-points every routed provider (like the dashboard toggle); without it the value only becomes the default. `provider ... on --value ` sets an explicit cap for that provider only (`--value` is valid with `on` only). | | `shadow [model\|-]` | `--enabled `, `--json` | Read or set the replacement model for Codex's background helper calls. `-` clears the model. `status` also reports `sourceModels`, the helper slugs the proxy intercepts (default: `gpt-5.6-luna`; clients through 0.144.x used `gpt-5.4-mini`, which an explicit `sourceModels` override can restore). | ```bash diff --git a/docs-site/src/content/docs/ru/reference/cli/providers-accounts.md b/docs-site/src/content/docs/ru/reference/cli/providers-accounts.md index aa80f15a8..15189c25a 100644 --- a/docs-site/src/content/docs/ru/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/ru/reference/cli/providers-accounts.md @@ -316,7 +316,7 @@ management API и требуют, чтобы прокси уже работал | `disable ` | `--native`, `--json` | Скрыть одну модель от Codex. | | `provider ` | `--json` | Включить или выключить сразу все модели одного провайдера одним действием. | | `selected ` | `--set `, `--clear`, `--json` | Прочитать или заменить allowlist моделей провайдера. `--clear` удаляет allowlist, и тогда доступны все модели. | -| `context \|provider on [--value ]\|provider off\|all >` | `--json` | Прочитать или задать context-window cap глобально либо по провайдерам. `provider ... on --value ` задаёт отдельный cap только для этого провайдера (`--value` допустим только с `on`). | +| `context [--set-all]\|provider on [--value ]\|provider off\|all >` | `--json` | Прочитать или задать context-window cap глобально либо по провайдерам. `value --set-all` также переустанавливает значение для всех маршрутизируемых провайдеров (как переключатель дашборда); без него меняется только значение по умолчанию. `provider ... on --value ` задаёт отдельный cap только для этого провайдера (`--value` допустим только с `on`). | | `shadow [model\|-]` | `--enabled `, `--json` | Прочитать или задать модель-замену для background helper-call'ов Codex. `-` очищает модель. `status` также показывает `sourceModels` — helper-slug'и, которые перехватывает proxy (по умолчанию `gpt-5.6-luna`; `gpt-5.4-mini` для клиентов до 0.144.x включительно можно восстановить явным переопределением `sourceModels`). | ```bash diff --git a/docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md b/docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md index 37bbef829..aae5d6608 100644 --- a/docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md +++ b/docs-site/src/content/docs/zh-cn/reference/cli/providers-accounts.md @@ -286,7 +286,7 @@ v1 恢复矩阵覆盖的是事务文件通过重命名发布后 OpenCodex 进程 | `disable ` | `--native`, `--json` | 对 Codex 隐藏一个模型。 | | `provider ` | `--json` | 一次写入中启用或禁用某个提供方的全部模型。 | | `selected ` | `--set `, `--clear`, `--json` | 读取或替换提供方模型允许列表。`--clear` 会移除允许列表,使所有模型都可提供。 | -| `context \|provider on [--value ]\|provider off\|all >` | `--json` | 读取或设置上下文窗口上限,可全局设置或按提供方设置。`provider ... on --value ` 仅为该提供方设置独立上限(`--value` 仅可用于 `on`)。 | +| `context [--set-all]\|provider on [--value ]\|provider off\|all >` | `--json` | 读取或设置上下文窗口上限,可全局设置或按提供方设置。`value --set-all` 还会把值重新应用到所有已路由提供方(等同于仪表板开关);不加它则只改变默认值。`provider ... on --value ` 仅为该提供方设置独立上限(`--value` 仅可用于 `on`)。 | | `shadow [model\|-]` | `--enabled `, `--json` | 读取或设置 Codex 后台辅助调用所替换的模型。`-` 会清除该模型。`status` 还会报告 `sourceModels`,即代理拦截的辅助器 slug(默认值:`gpt-5.6-luna`;0.144.x 及更早客户端使用的 `gpt-5.4-mini` 可通过显式 `sourceModels` 覆盖恢复)。 | ```bash diff --git a/src/cli/models-runtime.ts b/src/cli/models-runtime.ts index e5a276955..e451bb100 100644 --- a/src/cli/models-runtime.ts +++ b/src/cli/models-runtime.ts @@ -20,7 +20,7 @@ const USAGE = `Usage: ocx models [--native] [--json] ocx models provider [--json] ocx models selected [--set |--clear] [--json] - ocx models context |provider on [--value ]|provider off|all > [--json] + ocx models context [--set-all]|provider on [--value ]|provider off|all > [--json] ocx models shadow [model|-] [--enabled ] [--json]`; type ModelRow = { @@ -158,6 +158,10 @@ async function context(argv: string[], deps: RuntimeApiDeps): Promise { const value = Number(raw.replace(/[_,]/g, "")); if (!Number.isInteger(value) || value <= 0) throw new CliUsageError("context value must be a positive integer", USAGE); body = { value }; + // Explicit apply-to-all switch for headless use: re-points every routed provider to + // the new value, mirroring the dashboard's "apply to every routed provider" toggle. + // Without it the value only becomes the default for future toggles. + if (takeFlag(args, "--set-all")) body.setAll = true; } else if (action === "provider") { const provider = args.shift()?.trim(); const state = args.shift()?.toLowerCase(); diff --git a/tests/cli-headless-parity.test.ts b/tests/cli-headless-parity.test.ts index 68ab04993..8a9b7ef22 100644 --- a/tests/cli-headless-parity.test.ts +++ b/tests/cli-headless-parity.test.ts @@ -209,6 +209,19 @@ describe("headless GUI parity CLI", () => { expect(runtime.requests[0]).toEqual({ path: "/api/provider-context-caps", method: "PUT", body: { setAll: true } }); }); + test("model context value maps with an explicit set-all flag", async () => { + const runtime = fakeRuntime(); + const code = await handleModelsRuntimeCommand("context", ["value", "128_000", "--set-all", "--json"], runtime.deps); + expect(code).toBe(0); + expect(runtime.requests[0]).toEqual({ path: "/api/provider-context-caps", method: "PUT", body: { value: 128_000, setAll: true } }); + + // Without --set-all only the shared default changes. + const defaultRuntime = fakeRuntime(); + const defaultCode = await handleModelsRuntimeCommand("context", ["value", "256_000", "--json"], defaultRuntime.deps); + expect(defaultCode).toBe(0); + expect(defaultRuntime.requests[0]).toEqual({ path: "/api/provider-context-caps", method: "PUT", body: { value: 256_000 } }); + }); + test("model context provider maps to the atomic GUI endpoint with an optional value", async () => { const runtime = fakeRuntime(); const code = await handleModelsRuntimeCommand("context", ["provider", "openai", "on", "--value", "128_000", "--json"], runtime.deps);