From 659e69f8f7f21f0368df0f910918524bb9e531ab Mon Sep 17 00:00:00 2001 From: DeepFal <41166795+DeepFal@users.noreply.github.com> Date: Tue, 13 Oct 2026 21:23:25 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=9B=AE=E6=A0=87=E6=94=B9=E4=B8=BA?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E5=88=97=E8=A1=A8=E3=80=81=E8=AE=BF=E9=97=AE?= =?UTF-8?q?=E7=AB=AF=E5=8F=A3=E5=85=A8=E8=87=AA=E5=8A=A8=EF=BC=9B=E8=8F=9C?= =?UTF-8?q?=E5=8D=95=E6=A0=8F=E5=90=88=E5=B9=B6=E9=80=9A=E9=81=93=E7=BB=84?= =?UTF-8?q?=EF=BC=9B=E6=8E=A5=E5=85=A5=E8=AE=B0=E5=BD=95=E5=8F=AF=E6=8C=89?= =?UTF-8?q?=E5=9C=B0=E5=9D=80=E6=9F=A5=E7=9C=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 添加通道 - 目标服务改成列表:每行一台主机,多个端口用逗号隔开(也支持 8080-8082、主机范围); 「添加主机」沿用上一行的端口,粘贴一串 IP / 主机:端口会自动拆成多行 - 新建时不再手动指定对外端口,统一自动分配;预览里列出每个地址分到的端口, 连通性测试并发进行,结果标在每个地址后面 - 超过一个地址自动放进以名称命名的新通道组(也可选加入已有组),只有一个地址时为不分组; 编辑通道仍保留端口栏和「新建通道组」 - 网页面板同步:同样的目标列表、自动端口与通道组规则 菜单栏 - 同一个通道组合并为一行「组名(N 个地址)」,子菜单里整组开关、逐个地址开关 连接与授权(通道组) - 当前在线、历史接入台账增加「按设备 / 按地址」切换:按地址列出组内每个地址 有几台设备在用、谁访问过;按设备的汇总行显示访问了组内哪些地址,并带上授权姓名 - 网页面板的在线连接同样可以按地址查看 --- README.md | 6 +- README_EN.md | 6 +- cmd/portrelay-agent/web/index.html | 330 +++++++++---- docs/images/app-edit.png | Bin 142164 -> 147954 bytes mac-native/PortRelayApp.swift | 725 +++++++++++++++++++++++------ tools/ui-snapshots/main.swift | 24 +- 6 files changed, 851 insertions(+), 240 deletions(-) diff --git a/README.md b/README.md index 074b637..46935e4 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ PortRelay 把这件事变成三步: - 需要审批时,App 会弹出系统通知,一键批准或拒绝;访问者的页面会自动刷新结果。 - **计时从首次连接开始**:同事拿到授权后不用急着连,开始用的时候才开始计时。 - 授权到期或被撤销后,**已建立的连接也会立刻断开**;未授权的连接直接被重置(TCP RST)并留下拦截记录。 -- **通道组**:添加通道时目标可以一次填多个(例如 `10.0.1.11-13:22, 10.0.1.11:8080`),每个地址一个通道,自动分配一段连续端口,并放进同一个通道组。组内地址共用一条邀请链接和同一份授权:同事授权一次即可访问整组,撤销一次全组断开。 +- **通道组**:添加通道时目标是一个列表,每行一台主机、多个端口用逗号隔开(也可以直接粘贴一串 IP),每个地址一个通道,自动分配一段连续端口,并放进同一个通道组。组内地址共用一条邀请链接和同一份授权:同事授权一次即可访问整组,撤销一次全组断开。 **通道生命周期** @@ -208,11 +208,11 @@ make server # 产物:dist/portrelay-server-linux-{amd64,arm64} ### 3. 创建通道并邀请同事 -1. 点 **添加通道**,填写名称和目标地址(如 `10.0.1.16:3306`)。可以先“探测”一下本机能否连通;端口会自动推荐。 +1. 点 **添加通道**,填写名称和目标主机、端口(如 `10.0.1.16`、`3306`)。可以先测试一下本机能否连通;网关上的访问端口自动分配。 2. 访问方式保持默认的 **仅授权链接**,然后点 **邀请**,选择授权后可访问时长、可用设备数,以及是否需要审批。 3. 把生成的文案或二维码发给同事。同事打开链接、填写姓名后,就可以用数据库客户端或 SSH 连接 `192.168.1.10:33660`。 -需要一次开放多台主机时(比如一组服务器),同样点 **添加通道**,目标填 `10.0.1.11-13:22`,表单会预览端口映射并自动选上「新建通道组」,闲置关闭、限速、访问控制等设置对每个地址都生效。创建后点 **邀请整组**。之后要加地址,点组卡片上的 **添加地址**;已有通道可以在编辑时选择加入某个组。 +需要一次开放多台主机时(比如一组服务器),同样点 **添加通道**,每行填一台主机(端口用逗号隔开,可以直接粘贴一串 IP),表单会预览端口映射并自动放进新建的通道组,闲置关闭、限速、访问控制等设置对每个地址都生效。创建后点 **邀请整组**。之后要加地址,点组卡片上的 **添加地址**;已有通道可以在编辑时选择加入某个组。组的「连接与授权」可以按设备或按地址查看在线连接和接入记录。 ## 配置参考 diff --git a/README_EN.md b/README_EN.md index c36b72e..2e42079 100644 --- a/README_EN.md +++ b/README_EN.md @@ -58,7 +58,7 @@ PortRelay turns that into three steps: - When approval is required, the app shows a system notification and you approve or deny with one click. The requester's page refreshes on its own. - **The access clock starts at the first connection**, so a teammate can accept an invite now and use it later. - When access expires or is revoked, **existing connections are dropped too**. Unauthorized connections are reset (TCP RST) and logged. -- **Tunnel groups**: the add-tunnel form accepts several targets at once (for example `10.0.1.11-13:22, 10.0.1.11:8080`), creates one tunnel per address on a contiguous block of gateway ports and puts them in one group. A group shares one invite link and one set of grants: a teammate is authorized once for the whole group, and one revoke disconnects them everywhere. +- **Tunnel groups**: the add-tunnel form takes a list of targets, one host per row with comma-separated ports (a pasted list of IPs is split into rows), creates one tunnel per address on a contiguous block of gateway ports and puts them in one group. A group shares one invite link and one set of grants: a teammate is authorized once for the whole group, and one revoke disconnects them everywhere. **Tunnel lifecycle** @@ -217,11 +217,11 @@ Open ⚙️ Settings and fill in: ### 3. Create a tunnel and invite someone -1. Click **添加通道** (Add tunnel) and enter a name and a target such as `10.0.1.16:3306`. You can probe the target from your machine first, and a free port is suggested automatically. +1. Click **添加通道** (Add tunnel) and enter a name, a target host and port such as `10.0.1.16` and `3306`. You can probe the target from your machine first; the gateway port is assigned automatically. 2. Keep the default access mode, **仅授权链接** (invite-only). Click **邀请** (Invite), then choose how long access lasts, how many devices may use the link, and whether approval is required. 3. Send the generated message or QR code. Once the teammate has entered their name, they can connect their database client or SSH to `192.168.1.10:33660`. -To open several hosts at once (a set of servers, say), use the same **添加通道** (Add tunnel) form and enter `10.0.1.11-13:22` as the target. The form previews the port mapping and selects 新建通道组 (New tunnel group); idle close, bandwidth and access settings apply to every address. Then click **邀请整组** (Invite group). To add addresses later, click **添加地址** (Add address) on the group card; an existing tunnel can join a group from its edit form. +To open several hosts at once (a set of servers, say), use the same **添加通道** (Add tunnel) form with one host per row (comma-separated ports; you can paste a list of IPs). The form previews the port mapping and puts the addresses in a new tunnel group; idle close, bandwidth and access settings apply to every address. Then click **邀请整组** (Invite group). To add addresses later, click **添加地址** (Add address) on the group card; an existing tunnel can join a group from its edit form. A group's connections and history can be viewed by device or by address. ## Configuration diff --git a/cmd/portrelay-agent/web/index.html b/cmd/portrelay-agent/web/index.html index 18226ce..71d5f5f 100644 --- a/cmd/portrelay-agent/web/index.html +++ b/cmd/portrelay-agent/web/index.html @@ -329,6 +329,16 @@ .preview-row { font-family: ui-monospace, Menlo, Monaco, Consolas, monospace; font-size: 12px; } .plan-box { margin-top: 8px; padding: 8px 10px; border-radius: 6px; background: rgba(148, 163, 184, 0.08); color: var(--text-muted); font-size: 12px; line-height: 1.7; } .plan-box .route-endpoint { color: var(--accent, #38bdf8); } + .target-row { display: flex; gap: 8px; align-items: center; margin-bottom: 6px; } + .target-row input { min-width: 0; } + .target-row .t-ports { flex: 0 0 150px; } + .target-head { display: flex; gap: 8px; font-size: 11px; color: var(--text-muted); margin-bottom: 4px; } + .target-head span:first-child { flex: 1; } + .target-head span:last-child { flex: 0 0 182px; } + .plan-box .ok { color: var(--success); } .plan-box .bad { color: var(--danger); } + .dim-toggle { display: inline-flex; border: 1px solid var(--card-border); border-radius: 6px; overflow: hidden; float: right; } + .dim-toggle button { background: none; border: 0; color: var(--text-muted); font-size: 11px; padding: 2px 10px; cursor: pointer; } + .dim-toggle button.on { background: rgba(56, 189, 248, 0.18); color: var(--text); } .add-member { background: none; border: 0; color: var(--text-muted); font-size: 12px; cursor: pointer; padding: 8px 0; } .add-member:hover { color: var(--text); } @media (max-width: 860px) { .member-name, .member-meta { display: none; } } @@ -442,7 +452,7 @@
- +
@@ -451,10 +461,12 @@
- -
- - + +
主机端口
+
+
+ +
@@ -1069,16 +1081,14 @@ document.getElementById('tunnelId').value = ''; document.getElementById('tunnelName').value = ''; document.getElementById('tunnelOwner').value = ''; - document.getElementById('tunnelTarget').value = ''; - document.getElementById('tunnelTargetLabel').innerText = '目标地址(中转机 Mac 可直连的内网目标,可填多个)'; - document.getElementById('tunnelTarget').placeholder = '例如:10.0.0.10:3306;多台主机写 10.0.1.11-13:22'; + document.getElementById('tunnelTargetLabel').innerText = '目标服务(每行一台主机,多个端口用逗号隔开)'; + fillTunnelGroupSelect(groupId || ''); setAccessForm([]); setLifecycleForm(30, 0, 0); - fillTunnelGroupSelect(groupId || ''); - document.getElementById('probeResult').innerText = ''; resetPlan(); - autoRecommendPort(); + setTargetRows([{ host: '', ports: '' }]); document.getElementById('tunnelModal').classList.add('open'); + document.querySelector('#targetRows .t-host').focus(); } function editTunnel(id) { @@ -1088,15 +1098,14 @@ document.getElementById('tunnelId').value = t.id; document.getElementById('tunnelName').value = t.name; document.getElementById('tunnelOwner').value = t.owner || ''; - document.getElementById('tunnelTarget').value = t.target; - document.getElementById('tunnelTargetLabel').innerText = '目标地址(中转机 Mac 可直连的内网目标)'; - document.getElementById('tunnelTarget').placeholder = '例如:10.0.0.10:3306'; + document.getElementById('tunnelTargetLabel').innerText = '目标服务(内网主机与端口)'; + const hp = splitHostPort(t.target) || [t.target, '']; document.getElementById('tunnelPort').value = t.listen_port; setAccessForm(t.whitelist || []); setLifecycleForm(t.effective_idle_close_minutes ?? 30, t.duration_minutes || 0, t.max_bandwidth_mb || 0); fillTunnelGroupSelect(t.group_id || ''); - document.getElementById('probeResult').innerText = ''; resetPlan(); + setTargetRows([{ host: hp[0], ports: hp[1] }]); document.getElementById('tunnelModal').classList.add('open'); } @@ -1114,6 +1123,96 @@ } } + // ---- 目标列表:每行一台主机 + 一个或多个端口 ---- + const isEditing = () => !!document.getElementById('tunnelId').value; + const listItems = s => s.split(/[\s,,、;;]+/).filter(Boolean); + + // "10.0.1.11:22" / "[fd00::1]:22" → [主机, 端口];不带端口(含裸 IPv6)返回 null + function splitHostPort(item) { + const m = /^\[(.+)\]:(.+)$/.exec(item); + if (m) return [m[1], m[2]]; + const parts = item.split(':'); + return parts.length === 2 && parts[0] && parts[1] ? parts : null; + } + + // 粘贴进来的一串目标拆成多行:每项是 "主机" 或 "主机:端口",同一主机的端口并到一行 + function parseTargets(text, defaultPorts) { + const out = []; + for (const item of listItems(text)) { + const [host, port] = splitHostPort(item) || [item, '']; + const row = out.find(r => r.host === host); + if (!row) out.push({ host, ports: port || defaultPorts }); + else if (port && !listItems(row.ports).includes(port)) row.ports = row.ports ? `${row.ports}, ${port}` : port; + } + return out; + } + + // 拼成 "主机:端口, …" 交给服务端展开;还没填完整的行先跳过 + function composeTarget(rows) { + const out = []; + for (const r of rows) { + const ports = listItems(r.ports); + for (const h of listItems(r.host)) { + if (splitHostPort(h)) { out.push(h); continue; } + if (!ports.length) continue; + const host = h.includes(':') && !h.startsWith('[') ? `[${h}]` : h; + ports.forEach(p => out.push(`${host}:${p}`)); + } + } + return out.join(', '); + } + + function readTargetRows() { + return [...document.querySelectorAll('#targetRows .target-row')].map(r => ({ + host: r.querySelector('.t-host').value.trim(), ports: r.querySelector('.t-ports').value.trim() + })); + } + + function setTargetRows(rows) { + const edit = isEditing(); + document.getElementById('targetRows').innerHTML = rows.map(r => ` +
+ + + ${edit ? '' : ``} +
`).join(''); + document.getElementById('addRowBtn').style.display = edit ? 'none' : ''; + document.getElementById('targetHead').style.display = edit ? 'none' : 'flex'; + schedulePlan(); + } + + // 新的一行沿用上一行的端口(同一组机器通常开同样的端口) + function addTargetRow() { + const rows = readTargetRows(); + rows.push({ host: '', ports: rows.length ? rows[rows.length - 1].ports : '' }); + setTargetRows(rows); + const hosts = document.querySelectorAll('#targetRows .t-host'); + hosts[hosts.length - 1].focus(); + } + + function removeTargetRow(btn) { + const all = [...document.querySelectorAll('#targetRows .target-row')]; + const rows = readTargetRows(); + rows.splice(all.indexOf(btn.closest('.target-row')), 1); + setTargetRows(rows.length ? rows : [{ host: '', ports: '' }]); + } + + // 一次粘贴多个主机(或 主机:端口)时拆成多行 + function onHostPaste(e) { + if (isEditing()) return; + const text = (e.clipboardData || window.clipboardData).getData('text'); + if (listItems(text).length < 2 && !splitHostPort(text.trim())) return; + e.preventDefault(); + const all = [...document.querySelectorAll('#targetRows .target-row')]; + const idx = all.indexOf(e.target.closest('.target-row')); + const rows = readTargetRows(); + const parsed = parseTargets(text, rows[idx].ports); + // 粘贴到空行时替换这一行,否则插在它后面 + if (rows[idx].host) rows.splice(idx + 1, 0, ...parsed); + else rows.splice(idx, 1, ...parsed); + setTargetRows(rows); + } + async function probeOne(target) { const res = await fetch('/api/probe', { method: 'POST', @@ -1123,71 +1222,58 @@ return res.json(); } + let probeResults = {}; + async function probeTarget() { - const target = document.getElementById('tunnelTarget').value.trim(); - if (!target) { - alert('请先输入目标地址'); - return; - } - const targets = isBatch() ? tunnelPlan.map(t => t.target) : [target]; + const target = composeTarget(readTargetRows()); + if (!target) { alert('请先填写目标主机和端口'); return; } + const targets = isEditing() ? [target] : tunnelPlan.map(t => t.target); + if (!targets.length) return; const hint = document.getElementById('probeResult'); hint.innerText = '探测中...'; hint.style.color = 'var(--text-muted)'; - try { - const results = await Promise.all(targets.map(t => probeOne(t).catch(() => ({ reachable: false, error: '探测请求失败' })))); - const failed = results.map((r, i) => [targets[i], r]).filter(([, r]) => !r.reachable); - if (targets.length === 1) { - const data = results[0]; - hint.innerText = data.reachable ? `✓ 连通性测试通过!延迟: ${data.rtt}` : `✗ 连通失败: ${data.error || '连接超时'}`; - } else if (!failed.length) { - hint.innerText = `✓ 全部 ${targets.length} 个目标连通`; - } else { - const [t, r] = failed[0]; - hint.innerText = `✗ ${targets.length - failed.length}/${targets.length} 连通;${t} 连通失败: ${r.error || '连接超时'}` + (failed.length > 1 ? `(共 ${failed.length} 个失败)` : ''); - } - hint.style.color = failed.length ? 'var(--danger)' : 'var(--success)'; - } catch (e) { - hint.innerText = '探测请求失败'; - hint.style.color = 'var(--danger)'; + const results = await Promise.all(targets.map(t => probeOne(t).catch(() => ({ reachable: false, error: '探测请求失败' })))); + probeResults = {}; + targets.forEach((t, i) => { probeResults[t] = results[i]; }); + if (isEditing()) { + const r = results[0]; + hint.innerText = r.reachable ? `✓ 连通性测试通过!延迟: ${r.rtt}` : `✗ 连通失败: ${r.error || '连接超时'}`; + hint.style.color = r.reachable ? 'var(--success)' : 'var(--danger)'; + return; } + hint.innerText = ''; + renderPlan(); } - // ---- 多个目标:预览将创建的通道,并放进通道组 ---- - let tunnelPlan = [], tunnelPlanError = null, planTimer = null; + // ---- 预览将创建的通道(含自动分配的访问端口);多个地址自动放进通道组 ---- + let tunnelPlan = [], tunnelPlanError = null, planTimer = null, plannedTarget = ''; function resetPlan() { tunnelPlan = []; tunnelPlanError = null; - clearTimeout(planTimer); + probeResults = {}; + document.getElementById('probeResult').innerText = ''; renderPlan(); } - // 可能填了多个目标(逗号 / 空格分隔,或含范围 "10.0.1.11-13:22"),需要服务端展开 - function mayBeMulti() { - if (document.getElementById('tunnelId').value) return false; - const target = document.getElementById('tunnelTarget').value.trim(); - return target.split(/[\s,,、;;]+/).filter(Boolean).length > 1 || target.includes('-'); - } - function isBatch() { - return mayBeMulti() && tunnelPlan.length > 1; + return !isEditing() && tunnelPlan.length > 1; } // 通道组选项:'' 不分组,'__new__' 新建,其余为已有组 ID function groupFields() { const sel = document.getElementById('tunnelGroup').value; - if (sel === '__new__') { - const name = document.getElementById('tunnelNewGroup').value.trim() || document.getElementById('tunnelName').value.trim(); - return { group_id: '', new_group: name }; - } - return { group_id: sel, new_group: '' }; + if (sel !== '__new__') return { group_id: sel, new_group: '' }; + const name = document.getElementById('tunnelName').value.trim(); + const custom = isEditing() ? document.getElementById('tunnelNewGroup').value.trim() : ''; + return { group_id: '', new_group: custom || name }; } function tunnelPayload(port, whitelist) { return { name: document.getElementById('tunnelName').value.trim(), owner: document.getElementById('tunnelOwner').value.trim(), - target: document.getElementById('tunnelTarget').value.trim(), + target: composeTarget(readTargetRows()), listen_port: port, whitelist, idle_close_minutes: parseInt(document.getElementById('tunnelIdleClose').value, 10), @@ -1199,7 +1285,9 @@ function schedulePlan() { clearTimeout(planTimer); - if (!mayBeMulti()) { tunnelPlan = []; tunnelPlanError = null; renderPlan(); return; } + const target = composeTarget(readTargetRows()); + if (target !== plannedTarget) { probeResults = {}; plannedTarget = target; } + if (isEditing() || !target) { tunnelPlan = []; tunnelPlanError = null; renderPlan(); return; } planTimer = setTimeout(async () => { try { const res = await fetch('/api/tunnels/batch', { @@ -1222,28 +1310,42 @@ } function renderPlan() { - const batch = isBatch(); - const box = document.getElementById('tunnelPlan'); - document.getElementById('tunnelPortWrap').style.display = batch ? 'none' : 'block'; - // 多个目标必须放进同一个通道组 + const batch = isBatch(), edit = isEditing(); + document.getElementById('tunnelPortWrap').style.display = edit ? 'block' : 'none'; + // 多个地址必须放进通道组;新建时只有一个地址就不需要新建组 const sel = document.getElementById('tunnelGroup'); - const none = sel.querySelector('option[value=""]'); - if (none) none.disabled = batch; - if (batch && sel.value === '') { sel.value = '__new__'; onTunnelGroupChange(true); } + const none = sel.querySelector('option[value=""]'), fresh = sel.querySelector('option[value="__new__"]'); + if (none) none.disabled = none.hidden = batch; + if (fresh) fresh.disabled = fresh.hidden = !batch && !edit; + if (batch && sel.value === '') sel.value = '__new__'; + if (!batch && !edit && sel.value === '__new__') sel.value = ''; updateGroupHint(); document.getElementById('tunnelSaveBtn').innerText = batch ? `创建 ${tunnelPlan.length} 个通道` : '保存通道'; - if (mayBeMulti() && tunnelPlanError) { + document.getElementById('tunnelNameLabel').innerText = batch && sel.value === '__new__' ? '通道组名称' : '通道名称 / 备注'; + + const box = document.getElementById('tunnelPlan'); + if (tunnelPlanError) { box.style.display = 'block'; box.style.color = 'var(--danger)'; box.innerText = tunnelPlanError; return; } - if (!batch) { box.style.display = 'none'; box.innerHTML = ''; return; } - const shown = tunnelPlan.slice(0, 6); + if (!tunnelPlan.length) { box.style.display = 'none'; box.innerHTML = ''; return; } + const shown = tunnelPlan.slice(0, 8); + const tested = tunnelPlan.filter(m => probeResults[m.target]); + const failed = tested.filter(m => !probeResults[m.target].reachable); + const status = m => { + const r = probeResults[m.target]; + if (!r) return ''; + return r.reachable ? ` ✓ ${escapeHtml(r.rtt)}` : ` ✗ 不通`; + }; + let caption = tunnelPlan.length === 1 ? '访问端口自动分配' : '每个地址一个通道,访问端口自动连续分配'; + if (tested.length === tunnelPlan.length && !failed.length) caption = tunnelPlan.length === 1 ? '目标连接成功' : `全部 ${tunnelPlan.length} 个目标连接成功`; + if (failed.length) caption = `${failed.length} 个目标连不上,鼠标停在 ✗ 上可查看原因`; box.style.display = 'block'; box.style.color = ''; - box.innerHTML = shown.map(m => `
${escapeHtml(publicHost)}:${m.listen_port} ➔ ${escapeHtml(m.target)}
`).join('') - + `
${tunnelPlan.length > shown.length ? '… ' : ''}共 ${tunnelPlan.length} 个地址,每个地址一个通道,访问端口自动连续分配
`; + box.innerHTML = shown.map(m => `
${escapeHtml(publicHost)}:${m.listen_port} ➔ ${escapeHtml(m.target)}${status(m)}
`).join('') + + `
${tunnelPlan.length > shown.length ? `… 共 ${tunnelPlan.length} 个地址,` : ''}${caption}
`; } function fillTunnelGroupSelect(selected) { @@ -1252,28 +1354,31 @@ (currentGroups.length ? '' : '') + currentGroups.map(g => ``).join(''); document.getElementById('tunnelNewGroup').value = ''; - onTunnelGroupChange(true); + updateGroupHint(); } function updateGroupHint() { const sel = document.getElementById('tunnelGroup').value; - const isNew = sel === '__new__'; const name = document.getElementById('tunnelName').value.trim(); const newInput = document.getElementById('tunnelNewGroup'); - newInput.style.display = isNew ? 'block' : 'none'; + newInput.style.display = sel === '__new__' && isEditing() ? 'block' : 'none'; newInput.placeholder = name ? `组名,默认「${name}」` : '通道组名称'; - document.getElementById('tunnelGroupHint').innerText = isBatch() - ? '多个地址会放进同一个通道组:共用邀请和授权,同事授权一次即可访问全部地址' - : (sel ? '组内通道共用邀请和授权,同事授权一次即可访问组内全部地址' : ''); - // 放进通道组时名称可以不填,按组名命名 - const g = isNew ? newInput.value.trim() : (currentGroups.find(x => x.id === sel) || {}).name; - document.getElementById('tunnelName').placeholder = (!document.getElementById('tunnelId').value && g) - ? `可不填,默认「${g} (主机)」` : '例如:MySQL 实习库 或 财务系统 SSH'; + let hint = ''; + if (sel === '__new__' && isBatch()) { + hint = `${tunnelPlan.length} 个地址会放进通道组${name ? `「${name}」` : '(填写上面的名称)'}:共用邀请和授权,同事授权一次即可访问全部地址`; + } else if (sel) { + hint = '组内通道共用邀请和授权,同事授权一次即可访问组内全部地址'; + } + document.getElementById('tunnelGroupHint').innerText = hint; + // 加入已有组时名称可以不填,按组名命名 + const g = (currentGroups.find(x => x.id === sel) || {}).name; + document.getElementById('tunnelName').placeholder = !isEditing() && g ? `可不填,默认「${g} (主机)」` + : (isBatch() ? '例如:订单服务' : '例如:MySQL 实习库 或 财务系统 SSH'); } - function onTunnelGroupChange(skipPlan) { + function onTunnelGroupChange() { updateGroupHint(); - if (!skipPlan) schedulePlan(); + schedulePlan(); } // 闲置自动关闭 / 最长开启时长;旧配置中不在选项里的值临时加入下拉框 @@ -1309,10 +1414,20 @@ const id = document.getElementById('tunnelId').value; const batch = isBatch(); const sel = document.getElementById('tunnelGroup').value; - const port = parseInt(document.getElementById('tunnelPort').value, 10); - if (!batch && !(port > 33000 && port <= 34000)) { alert('端口须在 33001-34000 范围内'); return; } - if (mayBeMulti() && tunnelPlanError) { alert(tunnelPlanError); return; } - if (!document.getElementById('tunnelName').value.trim() && (id || !sel)) { alert('请填写通道名称'); return; } + const joinsExisting = sel !== '' && sel !== '__new__'; + const name = document.getElementById('tunnelName').value.trim(); + const target = composeTarget(readTargetRows()); + let port = 0; + if (id) { + port = parseInt(document.getElementById('tunnelPort').value, 10); + if (!(port > 33000 && port <= 34000)) { alert('端口须在 33001-34000 范围内'); return; } + if (!target) { alert('请填写目标主机和端口'); return; } + if (target.includes(',')) { alert('一个通道只对应一个目标端口;要开放更多端口,请用「新建代理通道」'); return; } + } else { + if (tunnelPlanError) { alert(tunnelPlanError); return; } + if (!tunnelPlan.length) { alert('请填写目标主机和端口'); return; } + } + if (!name && (id || !joinsExisting)) { alert(batch ? '请填写通道组名称' : '请填写通道名称'); return; } if (sel === '__new__' && !groupFields().new_group) { alert('请填写通道组名称'); return; } const mode = document.getElementById('tunnelAccessMode').value; let whitelist = []; @@ -1322,10 +1437,10 @@ if (whitelist.length === 0) { alert('请填写允许访问的 IP 或网段,或选择“仅授权链接”'); return; } if (whitelist.includes('*')) { alert('如需放通全部,请选择“全部放通 *”'); return; } } - const payload = tunnelPayload(batch ? 0 : port, whitelist); + const payload = tunnelPayload(port, whitelist); try { - // 新建统一走 /api/tunnels/batch:单个目标、多个目标、新建或加入通道组都在这一个表单里 + // 新建统一走 /api/tunnels/batch:一个或多个地址、新建或加入通道组都在这一个表单里,访问端口自动分配 const res = await fetch(id ? `/api/tunnels/${encodeURIComponent(id)}` : '/api/tunnels/batch', { method: id ? 'PUT' : 'POST', headers: { 'Content-Type': 'application/json' }, @@ -1339,7 +1454,6 @@ closeTunnelModal(); await fetchTunnels(); // 新建后直接生成邀请:新建的通道组邀请整组;加入已有组时组的授权自动覆盖新地址,不用再邀请 - const joinsExisting = sel !== '' && sel !== '__new__'; if (!id && mode !== 'all' && !joinsExisting) { const key = data.group ? 'g:' + data.group.id : 't:' + data.tunnels[0].id; setTimeout(() => openInviteModal(key, false), 800); @@ -1598,6 +1712,14 @@ if (!res.ok) alert('撤销失败: ' + await apiError(res)); } + // 通道组的在线连接可以按设备(来源 IP)或按组内地址查看 + let drawerByAddress = false; + function setDrawerDimension(v) { + drawerByAddress = v; + renderDrawerClients(); + } + const hostOfAddr = a => { const m = /^\[(.+)\]:\d+$/.exec(a) || /^([^:]+):\d+$/.exec(a); return m ? m[1] : a; }; + function renderDrawerClients() { if (!drawerScope) return; const info = scopeInfo(drawerScope); @@ -1616,15 +1738,45 @@ // 同一 IP 的连接合并展示 const groups = {}; list.forEach(c => { - const m = /^\[(.+)\]:\d+$/.exec(c.client_ip) || /^([^:]+):\d+$/.exec(c.client_ip); - const ip = m ? m[1] : c.client_ip; + const ip = hostOfAddr(c.client_ip); (groups[ip] = groups[ip] || []).push(c); }); const leaseNames = new Map(info.leases.map(l => [l.ip, l.name || ''])); const sum = (arr, k) => arr.reduce((a, c) => a + (c[k] || 0), 0); const ips = Object.keys(groups).sort((x, y) => groups[y].length - groups[x].length || x.localeCompare(y)); + const byAddress = info.group && drawerByAddress; + const inUse = new Set(list.map(c => c.tunnel_id)).size; + const toggle = info.group ? `` : ''; + const header = `在线连接 (${byAddress ? `${inUse}/${info.members.length} 个地址在用` : `${ips.length} 台 · ${list.length} 连接`})${toggle}`; - container.innerHTML = parts.pending + `在线连接 (${ips.length} 台 · ${list.length} 连接)` + ips.map(ip => { + if (byAddress) { + container.innerHTML = parts.pending + header + info.members.map(t => { + const conns = list.filter(c => c.tunnel_id === t.id); + const byIp = {}; + conns.forEach(c => { const ip = hostOfAddr(c.client_ip); (byIp[ip] = byIp[ip] || []).push(c); }); + const devs = Object.keys(byIp).sort(); + const kill = cs => escapeHtml(JSON.stringify(cs.map(c => c.conn_id))); + return ` +
+
+
+ ${escapeHtml(publicHost)}:${t.listen_port} ➔ ${escapeHtml(t.target)} + ${conns.length ? `${devs.length} 台设备 · ${conns.length} 个连接` : (t.enabled ? '无连接' : '已关闭')} +
+ ${conns.length ? `` : ''} +
+ ${devs.map(ip => ` +
+ ${escapeHtml(ip)}${leaseNames.get(ip) ? ` ${escapeHtml(leaseNames.get(ip))}` : ''} + · ${byIp[ip].length} 个连接 · ↑ ${formatRate(sum(byIp[ip], 'rate_in'))} / ↓ ${formatRate(sum(byIp[ip], 'rate_out'))} + +
`).join('')} +
`; + }).join('') + parts.auth; + return; + } + + container.innerHTML = parts.pending + header + ips.map(ip => { const conns = groups[ip]; const first = conns.map(c => new Date(c.connected_at)).sort((x, y) => x - y)[0]; const ids = conns.map(c => c.conn_id); diff --git a/docs/images/app-edit.png b/docs/images/app-edit.png index eeebb51b27260908f8a6a1b815748e706c4c4a43..79268f7799f10658c0477136d17b3de7630d5b6b 100644 GIT binary patch literal 147954 zcmdSBcR1Jo|2F(?X%UqbA%!F&*|V&ojF4o6viHcyE>V)CGRrKRBxH}0gzUXZ$c*fj z`+WEPUB_|V*Kyp}eciwR?$2?2Qh2}Luh;YW80UFD&gaWtMd>2hKDvDb0)b5al8h>W zu#TzdYqXSn0Qma+fT{&V)<9t?v2u89B#vlyv-#Hkr{q z&v`aJW|^tfxS{?)1#fi3A$bu-rN3trQrF`x3`o0`})7W`2Xd{|DWEQ@c-?j|M%}r_}~BdzjfXJ>yj0p z+9s`}RNs|tlAvlh@A^67+7{mt%hlSpe=>Centhg3{DE{0!=&#d``JCzBX85>y?>n`Jpd{dll?wY8 zBQoNJbJtqT+1{P*=Jzv5O--E{DAOB|=3OCG%DhHuLP#spb&CX8Sw~*klpge#A+31u@S)(SDW{s6 znsvE~u5O9`r~8i{?eQ~UQ+l0$cYajDV{Id*?1jpurtK9x7VYW6?khZ2TeB793JK3$ zPilR%^f&z%#Qizmaq;m#`b*q$7$_*t)7uxgFHW>kQBh4<^YimhIoaCU%E|e)+fkp< z`St79H!lC6Ad|cLU3=Lqk_rS82}Z=#$^Nb?bx2x|5%Qh{fO! zVk&vlEdM5#7xDTl=14Q^QvCis4?R7-pTS#Ivm~Xc=y9QoL5$O#StlxZu#7$Vb|)%n zEyE2gEx&&(op&jg{JU~{vOS~qqsDc24)?nXUgBspZnj(H}@nPv2M> z4oW%gy|TJ$)%9VdJwv;xsmapvFeT+%751YH3=c_)>|=h@owh}L;m4dZpDGra{` zLv_V>=R2);O2lkckW0QzNZ4FxQEpfZSzBG*T${|y&nK?wVCCkzI4LtTbI#E4uyoVs zd4m&71v)o1G!hrBjf_~AS@X)Ij!_^6eb%k*?9S5jn4T37=r8qH7aVYR*jTX>h!?UQ zJg={RO!SdyfAQUYzV{8npFDZe+1Yu)hs3JqV_+cl_qsY_8oaqko^itYSL4v^P(`+J zor0ob!d}{~&EH;CK}Vb{qu4^c=Ex%-Euf@fxC=FP>R z(HRN~idlT-#)i9}fwlR2o7J_oGkT@PrTNLS0n~2GGf`r9?KL#0D|nDr&Q4AOf`T27 z1M-KSwHH~c`<$l#cVQ2_ho-u+TWM{~%|-6~YD7L`JsEK8CCmM{mm>siZVr@sOs=ma z#dy|8$hY{VrA@m1E(r?{r#*aFn$^?Ovsb>sU82mWHney6*U}}vCso54TDi!w)Yw@4 zvHB=BHntl#Zb)uzoGbE4N*Wuf4Ku6RR@>d(-P(GmB~fv~es=KF=K6An$cNlq{z}p} za)I%BR=xRly$lG*PVTCnp7p^`KKYOSZD}1TtvUzQs})mh8)C)G%xnQMyEJ88Sy|co z<6T;Qe)u|tGQ9*H7C0%))zx*tbDb-u!Gt#PMz*n>oZQr#yV#&;*XIitbhqErpC7H` z2vJa04l)Q&Pfy1#@Vh79zrTG(B11c`os5>&&(79X$Zd(U=dy~nwkV>(>D1nt$U}2; zbA{5cl%hluUL7K~P(rN#E@D<8|85^X!g})LLqEUfk0m9WxbU*|8By2ON*X=BQSaWa z9wQ^8j!eBID?Pn|@s=bt_CMoEG4&DWl0JSEkd%~E8BTe4jU(iczYHgJ$6Vj$ZQ&~g zw;#8fJKnr`GpeYX|4s#uPCM}f8-MN~@iRDcv-q2JcEd7hh5PKM-3@1%@2v;p#mi7z~J<_u}YQDOTB z8lfmNv5e#?>V@WQ9DPh#*wlrEI~h{A+Jh(L2I+R;qrLOa>Qn6VMfWf;Fwhz?Ha5Op z^>oDetU2ku^W`3^=o?Lb!NI|qnVA~pv+1208z>WY9R|m~e*LPoO&TlCaP;V}BsKr& zXvPpzR*PGG#dlvs*?rnf$l30<-0${Va%(kcrfM0b;&#;mojT&(&W`RRC9PQa)pUZB z^Lt}sV|RC?m0pa9V`^L+^Q#9h4Z;;)3D_m^waQ~B71PyKRBXrU8M>Vu9RnXfzLm|G zkd!o#Z|5UAKNR!cpn@dhd24IyS5hz6)Y>p^NzV<+dGwDvR5PpVn_LIk{f0 zc^f)y3iDQXu0^l(bYD@J)qC;-2R`QIC0U_%nwXdfa1P1wb0=R*)0nax{qp6@nnug% z#`0_XiJxvGTdx1^APvpM(`U|+&c|$RJRDsQefjczQC4;gy?{~8%gnOBkp{G)qN3-{ zW&52=(9+VHn4E0+sG8Cmc|9sP_>=W3vqq!>KN^=Uyr1BJ_%9S_F|^uLvV5qd^9Rr~My@3JkF>-@-n8LhaV)@i1<+E{~M zK!6dEs-Y43=FRYHVTYWhoR1&hHS5zRA_^lSA{Gwr*x?f&e>@`!&HwWO^P1XPdcYH_ zhA2^I;D@aRZhnW+D;dvGpOcg-OrLnr<(vQegp5738tIw`DJj2{y3Y=7vr29=@4H(~ zFJLKT_v1_Ti<65B3sTb319!(5{0zRLlNC6O1xfzZv@khL);;>P&8$5=0)15HOwve# z|M_F+r6kM4sI8lu%L8_H#8o0}yxJyhZ*Lzp;^gGCrE>gD+1B56ENKvvD63f9rD}8a&yZiniRajYBhs^(VUqKH2 zUjQA3hAivN{r#Tbo-tSWk-aIF*An&G+FYiT{WkK)|L{rGAw*o}&63ny6I4TYcXuQt z>Ykh&Nyglj&Lned@*NdCg|!!o9|1#MwKyP+_;`9$_%qKHYin!7Z_N5P03oDh3m5sm zeNyHBZpcQz94Qo~k)d_h#l^+d71f%TR1Gca+O4ew9Y)n>?@9ImihZk>Ev zY+Ks(%y(M3j~Oyr6BS>rFaMToF<@X|m~;zh7|TPCwdi<<@~()6Ds}I??dF=}j5U_N zuhc`-Dn{4=OUTB<)7ablx{sNkKScaA0BrbGIkbF1oBp4nq_jNeo%7K8vRiU5D=188 zKl^tbgLUMzzamzM5Z0z&%y~xV?p;8Dz{Q?JDKKt&+y$}Y{_|HIDppg$T?$DdLEgJ7aJn^19Zi;*j^~U7P9;L4-4^QkJIsWINYH;MYeh-zO)8gz^!5`K82oiA^CPU0YlG`0-;wK>^>hM8x0l*TDJt`GCMcqmJ`P(JkNo zG;~6H^5mnV$LZeyd7(^doop$->u@@dnoElXc;Ml~7VV2qk7l6}Ok-!oJvYKX>gwul ztqhajzC8^1lX)ZCk6{q7_X8iD1KU(Gi&M?c3Ld1Tc8=-QYuDNU9JzH1zl4UF@%<^X z>MP_wV@=E{)6d(G-Y4XqB&Vc|_Z8&@1(CnvO-9P#Ez9gj6p(DWiQFyT$Ir~X)^~c{ ztQH7r)zZ>ZQ%MP&pqzehjvPG=A0|zCIGB=QQ2zh!!ET+nT?;t}bxe=3laz zrf#b^8RH(WZE9$^P|IDGezThp3_a%yU!!;6aT5st#njKYlviE<_l^IRh5z@2i~o`b2>%bd#(zsa_&?N4{?Fd~e}7x$ z+7vv=Z4+J#LTI0W4ZY7JBO@O?*cox9eZ@!8b%9+%qV)ayS=oA(IF}hK zi@OOnq#$als;Xn!sHRz2S$Km6XG4FP_-oH!y-HI}q4Rox`u32VNkXkoSwTS|dOc?n z?J4xxvu80eK^7#0$bCa)E7?Z8H&j%f1qRkVW0qdo*xIXWZehWFvv{SITuW2)&UAN( zM?`3-)5gjiz-@kEp}q6zGiUk>9n-WjqWLXCOG?D4ZWcLBBT`YefU9kOT8#qH|ECw! z)J#Nperj%R&dJF+sT>W?#E)*m!}IKb%i_ef6DLmC*x2ZJ5oV1MZbEl{Jv)CaT+*u) zz_`5#)g9ags9P=ZN|S3^a`L6L8xL!1Yfp1>PN6Ghn>2jP&VKWGV`Bp#7_bpJrowL7 zs>{j3@-{h{$VCMN1R56HhzMkSe07270vk#bd4mDk|&P7jYwGW?ga84|kI@>J+;KGq&&Fx6gW@w2tRVOpM;`dgw?zLPFvHk{Q_woIN>n8|sOv z>9}NhsG-nxZqa^iYYV9w9$MSsE$D-NRbfw0P8RZ5TL7u7 z@<>BR2LUz+hx9V($s;JZysZ{BF+oX_=$s!B;t z)~7WFmf3#q{IV`^sq=ux^*k}~DS!e4T7cyzPe@m{a1Hha#aJXs$+GwFpG{AGtFDfK zKBHE4x|=DFC^|N>zkBx%sG0P@0VPGnP1K+PuPqP2PGN^p_7H^$9|^C&?jYqU*W}|= zfDeREpT4Z8Cwc6cx7%y*W?DKrIayg>KfjuhKc1Uw3}P%M0{!#c6x8-;93jmHwzXz1bH-Q?^TQVF3GuUMlR4c2h9GrileW7om2QX9Y zX*K8HMY^=KbZ19Pd{R1Ty>Z_~oF8sP0K+Of3a*{e=b7O;1!aY1DhUxI(;pu6v7uD<= zgBr!@Yko-|MjU6(FYnR?QZl3kLKEPPn1bN2xH$vtg=^vBqnp>gT7G_Wf`FPAO$2M` zre1$nO`M#Tf=^uR$NGJ25oTeLIUfAr!2?jZist4&H6f?5^LY8~uTQexzaM0L&@i@p z=gvo!KY%(O`uZNBr>CK&2FHxAC+Sy0;e_!1eXjU zVPOc9tQ;H@0P0Ayq>md=EC4sJw#Y{XeM7pOVxAZZ0HEiEa%08yk^bR1q9Z^7FDM^)j|D=U3PnP$Lbl9XeB$%t6K@bwqSnnnh#Uxa`a-Etoi;Z%si#fw!Yfz+nW^IN?hzEV1p1aI%5BSIn~ zo`0%OE~EnmW=wWuX4_KyFt z^Vf@tiX3bh0Wre3^^_p@h9L((e)v#RQ`1aFdq%hLWpFU_A%7tAmKEy}u(77z(o<@Q zzxp{-wq41qBP9&xvW6&BR8-{d%jVB#ZMCW`Z3UXj*kNH|@w>M`x}~S{^NW+pph-Zu`xwyO^*?up!eu@%et3pC^Z?6u^A*}Nldn0;>$}#n^@+2A=hCy`6 z9VDdXtUHOxw5{jEncz!rRa1h44_^BLczY&ne%1Z(;ltf=A3mtYskDZ@cp2sOIx^CA zZNY3t+t=3@a^qNNenElV$#NUhiPbNpe>(_RbhvAC7VqN zmB`%8EX8p<$^{u2S%OvMg$pewA4oB8azd&oR2v-`!8YH}*4Eb4d3 zE`kdKHg$b{eKOR<$Vl9M1(FP4rP{LY#fumFqWl9GUcfSI6DyJ5c>PC;emhMF1$ZS5WbtL{eI6XN0}5R~xFU|1-lkW?5& z?w~{Hu~R;!<9{rg7UVYEq_7CW+BJBuVJy2qh$xmU&**x2ZAFW_HQONYA1Ijb5O4LX@h%w!Ezof~=xE+0j4e2W^0FYg z`jmix#%VR*xHtokh{!z|yIN65UkTbICL~VUYoI0$e` z1P2QXB)kVvN2#f(WKTVLR3hiG%}0~dy1%$!CJ5yvjayd`!z&D??#>QgaCaA*9-o-# z#^6O@(xT!+c6QhI42T4~4;&2_u!=;S>YNz>`Yb3|1@S6yZpR3vqP$!mcrX9>w%8N^ zwb-RUB9ofkaiy|dUv6c!yWjGay0BNXYi|oe-tr@>0E5$&E8kIoI;BpZPP?~bw|&ry zSFf}OJ_r}yId`KdKR?H^>jTu6`HAAq+yY`jZC+$x>~;J zTTRW6r@kX|E)YMklO5ueF%2;Qy&7+5Ms{FWw$Jx-U*F~@pWR50Xg)Jl476m9H?_13 z*IzSjPrrdkz-`#sWzBG!6TCarw6y31lTzQQ2Z{`sV?{N}p~2UZk(>U>nt9=Rk7WIM z6nSg{ zYYiwji6nq}tgNgc>QEm~QSO5{4yf_+IK{1_hY@_kGo z+;jlocRa)J0y?cmF;EFUqoePl^UlOeEOdOP6cs#Zy?k%8A$DQ|6P>B{Ribm4xeb=z zv;6R8jpUJ*wssJMXsAcTvu7C5>gwopvZR7ZIFgVSDsMO{opYHTymy6-o=4x?x_^2N z+1u37oS`i^!T7r~>$Z*#s@52U?5DMRi7en8+6Y~HiaG~&9`)YMjs4Uqvke)(I2Fw? z?~cch_hmeX_}5e;!KMAtvg2J8(hcjmYx_3meYx-WE!s_G_qVmR5%I>JozSl0EBkhC z|Aa!mJk>Q{FZvt91Q|j7*yv|OL6e0AJkdMxzUc9n0g0T5LKHM~lY;zwzQo_^?39py zBj`-o^(p*i0KXTk5nn|~QgQmV^wP(JkBYm##N1D}aA9EW-CNahkP&r`Yp(>XI@=PF zIFRNlAdjuAxUiHE_p%`!n5{P_b#!zTbDsFToaR)4?-dnqf~B8-xiyE1@#WUpT^yEP zQo|iaC(wF1xw(J$^U@zIhSG(F|>@C)C3F& zE<-U>)JI`$>*xS_k%SPEW7ZOV>h_^)pMmulMDD~Ygnwm2Rg!R-J;uxX0Z1lLk0z#j z5q)bbBVpkhM;lNI#OuJoz>9%&l_kFyux0?_$S-J2w9ogU_uqV}ngUt`QD^8~;jDUL zZQj9&D~-+H_STUd_Lo8MfG;(1*tDk~Q4Df$bZpbrY(*FA@0U1z`ZPFCk@+bU!#^u? zx3!qE!3Th}u}L);Wz^T>vIYS$qYLYwNW~#z{VUSk>3B?Se-`zn)?y z#>r`5attKRbG10BTP$}TKKug67Nlz(U!e4zxcIbHS4bG3-;e&<_3K34tWM8FU%&C4 zuINPA9x^h_&!9>IZ)2H&Yf8}e0|G8botASr6;d-eIEejqaBy&TUe@zmO+dCm{hrz# zlS{sOBSk$mfQGwSXN-uvExS}Lb_ZYL19j6aata9x+nTFlVsf9|CK9oYu+2xnU*>~F z$C-Upn75{@us;b5gmls6zkB<=av*ZNC)y<{t$8l^bu#{;uxsoI}sxgsY?1tsk)hQPf zOEF!r)MBQme`PoPl|k4Z{rqIv-?cPQ@{V`91&%gSQri~^jeI0-Zf+7WF_DoIGc%09 zeYam9I(+!9SU+!3y!hHR!F%>>1g}xeJKZ7(GEP&SXYqd$ zi4?|KSBaIIo|2L!_!1`<7y4YL1?bn}R9DN_ub`1~D4^x#gFfUEv74wD8OU#r5X66K zDlZ@3+oJl4hvcWUen9|LRIKyaO};eMH9RuX7AL*?+_`hmS?--bKPlI8M?~blLPF}h zccb&GWKYcT4xk2Jr^?bHAYrHlUDS=uzToxoku& zH#9Ujf5uU#7%9Ms1@ zt*q*X=gOn)a_@p-J(~#(BrH0Mkb()M{4JAIB+S(Y4 zgnoSSf{5Xi6qPW4&w1qN0f^707>UhcMqE1ozKJD;vhiMUKgP8p`uS*f7cPL9U(nZ& z_4k)Y0FoaSdiL(q45kI_9I;0H1<3FYEUCYYR5m4sNMHsEY6s6?Mx*WHb`*vZU9Ec= ziIN+$6(mZk&ZXPJtX&-5PL=i9o!!6{_V&ifF-#TQF=5oRM- zprUl0bb~)ePfrivTZG9WBR$=?A=+d0&j=t5fFMfO>Fe*Vyb`Dz@@l)gfvF;cc7)$(QAtQJTis{Fi%wdzvpW-qjCA~Z$)zZszi zFfdqIT5hzq)g*WS23kCS-n)H|>i+!!V5?IYJByzB3`hjq)v7!A0eBzEtN>G9y8)o9 zxR}_j+qW??1lj4HB^4=DBX*z^y+;KF!d9JKUAfkMu$;Jlez3Q&MSyN)<$J_A=q6F2 zq3wuz9eu*=+F;hX?|-R)S9(v5j;YFNCxpF1Wjf7%y7tN14*e*CDBaADHCsJLLpcWpa}K$Pw{@LzT%D+X(&jBE@kp+!ZJ6{AEh(wd>4Z@VAl47}67*hFDKZ?gOMk&w+mY~xgBUBpC1 zi@f6R%Q74wG~StuAwpd^Cu7KZFEf|BVRUlf_K>E3=KpMx&U$!`car$*@gdl zfytjtBl-B7mVO55{I*Hk2rlE0HlaJA2OjZ*OCqFpgm^hB4+SH<@404i!M5@JyX^%` z${oJ*LB|yT@#es8f=lhckG{lmDB=p+A%FA+I|lqp3$7V*;T5(QmstL-;HXG(^-fY0 za?%P6_hV`334>IFb1o3*EEfYrjuHklGAdrll^+YMHR3%I(;&#p`x!euYYvG5f{E5O zGAwa<&kf?mT;K@dC7q8kEgaI)~>OZ@pn3z~^U*C8J>LjQ^^L2DcQOAkaOuaIq*MZTY`Z;Tqh+{XT zEJ^2XNTdrW8FO<0E_?qzB4i%AR?N++Z|cqfQSQCtq=xHp;D_IReSO5ffB*LF7e-=eLVE2TD0x4|$AwYrU%sT&VZl(NW2oWcBbzdV zeZH{JiCJiCIXa^F4M}=f1IAts<;=>?F0vnaEESiWp8nRpK<6(83L_&UUESSIzxy}m zhO3O|FvCz5HwL1^s$fRocAHVaQWKN@9Syt9b0ZDHckQQ!E%W`^q&^_UEKSbfOGKV; z-6x`Rn_%;iTyld4g`l%jh=)hzOxWcFRbQ!3JXcgy8u44;cjOErUwE$I!lA04i204V zMZV+Ibv+NqpWlL$G}NTxc$k?lEceC69!pVog7(tJM+Yqxlhe?RPiv%?Gtm(G z4{b@6pQmyj)=m$MOTgt@sJYHNv?NLnH0zVgg~7DfN-PEsw{;^-gpUCER7 z!X2UrInG=;_zepUlC z$*V#aSfN3ZRuEfzgPp=5|F>s-TqidwuW?Yxa$?Mk;ghg-^y}AG_^(C5plK((?Yvq# zF+XP00TyP#ILwcBzc-MsP|gEbfb;l31rN$x0}YS5x;nO#hm-RO7y4^Sn%%F)I2eKJ zBl#~ck3n#-N5}4!G(Z4Eeg*NZ3Z&07uA|Ekz7H<~?54M9jluQsKC`PE02f@E?*|(s zw+y|yK*q7;kQN}#L@NN{jxV8)COSSqD|r&06F4!={lxe9^+*&)v)nfnYO7P5B>&V ze^%18HTi0c`ycrz8;GB_0K|@^j(;~+QFSF^B;ldxbCz8FNz_}dt6}q-v>3HrpuUeLDNG%QBzZ6WOCU)3 zg@iwF1inj8=fjZl63eZu@Xs0H;o;kMkeD(Uw548q!KQeNb`+x-zBk^b<@gCgm4~$A z=^?n+GP!e1g&5YyV!Y6B(yq}`Q?~;wYW*y}M@vVDEJU>b`0)c~B(#tmWGK8pUnxN? zl-OSEA|Zi{CM+t7f$t;NQ;sn!u>U0whVo737;X9banl!d_BxA%K`XR}7FPT4%pMWb#Z_VLyK2gxBU` zN07wYFILZgF00TLxWC`~5~U4bL?>9lJ#hi8O_@C}DqHlu=D-u}m0x+LK;TiWMx@Ce zzZ#WvVL;PkYHBKHO&OE6LJU76eVV{ZH%{(!@!4D*i{Yz`;9%_*O8><39bydo!R>*s ze+p2)=cg(P4hyS_5C*#wmo0hZCd@~4(Nx4Ue8Vf-8xkw|tyFW|j~Gl$Q1 z2{#_g0M}kJ6&DZbIsI~P`0poR^f00wMR-Q>7<_iP!jh~EN2}S~Q-pP-%r~AV0BoW( zjo-g>LjN@O)+xMG-PILg5RMW8A+UX5U~756%Y?iwMeSsyb@)JJ{p6{7SNhTH+wM0H*THlPj@md|B;XosMeu<^m zc-Q62wUD3E+9oig!z>yE16_)Tba-gU4wEVKb+5!xuLRYCyYt4d@PWycdbr`ASVI`m zq@|^ahc>WIJpBAzD7?Ulj~*qTd)1E_0vy#U?3Dg8y{*(3yC2xU|L{IvbWpx?=UUd( zAszsC!Wb9@4_OOW;M%?%m`8CgpgAL8dYdGC@g9cY9*c{N#b~MIjABBr3&~g5)?sio z`5r#^q4e-XZ_uMh5O=juv65evCMFuAZlJHlW@)25?#OMRqNY|YS5a4&$)?GF7@33) zrmsJ^IN3q$E&89f`x$h8PeNgn=&7J!Vgds-yM6mG1w}dIr>d%?(s`W^hTyF%>%6B= z2N;B-O|*25hEFx;3stXaSbi8=PI6*p8>rD9as zDO(>HfWk5YG)|P?+tK=h$M`!f#v-8F&DxYa`9(#}a7y$^va?@edjXeFKFY6pJpVxp z`0x;Lx3XNun-fr6@&-I>Yif9Tcvd#%8@fE;F|;54N;Z=;@%qCq;@~c~5i5-Hi=v40 zC3=GTSa@7=67}Yw5g7*}Hb_qGYkXn%J=>(fqCT3W!cxYN}S@ z9Wz72w-_AaGH^MN5ux0|e>XZd1|#YRTzrap4bK%z%XHNg_=7NpgLDN*`|6e8-`#NM z*`7{75=2}PxckR&-{l+`IXR51f}72rKz9)peYIwWiH4bpN!5&8HXG4O#774ECLCt# zaCgA+1vhiKl@ls6%vte?DabHM5s}Dsjq~Trk<7TjJ3B~R!=ZX$mLB&UJ>lxZ6%-^j zRaLet;f<(IBy5At>bF5q-i2!TMI3i(@U|UB96#q=78UhPpD0Ui-s#RUTkus=u18C_Ikq9CQ893m zz(=)r?_NYVe0YKg102LS#or5cYI=GatorWiA0tc>Kc2);=WAspq<$(&N|jN6xxbXD zDGxrIXcGUIc zTsc}rXYkcr>oFgY@3OKjh+z;b20hlwNMvQ$Gr|@W5YR&Bm*chN zIg_)qyAF80rR7C5eX=yM5WFm%#ZDoIAQv`-U85%4^g3t!ot>Q>zQ^9I+YiISXm*i` zG1}C;JOyhufIu`foqy`xcu(GMqy+j_NpUgzgGN`?4$P(DnZK^4ChZXEbN_yFT7*jb zC_36B`b!HleXmBjFce!R21g!K+uVViR*VBHE`7Dj!opx>$Ig zD3qz4_YSfv2F@F(gI(f4j&;J;`B|?U-|k6J?J5^~ZNlrhv4ZI%7zzEvlIK(v%3|0 zP)91aXq;JSi@t7`WrNs4Z0{)Y@KONHn8jeBJm)HD5Q3k!q`d{(fC^esNwBYOckklY zG1JCBmwq+*h#Z0}MnOZ91cK!>1;fR+kHadAZGQ8|!Of9cIKIYw;)Kt35@dWvu<4q{ z-Ma-Eij|B*Fj+;5Iuq^GUS1qOl1JgfXA{f z2Wq6GnU%gkL3AjixNB!m4+icI7g>Qq^jf!Ki%NSa12K$!jlzZhSXpI}q3Wslj*P6V zk%@`g4&j)ste$^V|IVe3aRmvrr^z#^xa_owBk3%qYcS6{iNYjG6wDA}|kVs3!aG ziZKfAImN*dAN%yVBG-)%EGJG#AEQXej4(xA)oaf*U`yA`!T+)(ZM`PgcteD`5-k={ zc#Y`SLF_~9oOyd6CcB-xb}5GQ!~xwM5B`OX1V(+ySKZK{JZTDZ0X)}2INp@20N+MW zcQ-Dkh|<^+#j;0N7^ff55pZ}2qIR|~@hnMIFL;K%{Rhl$UOmr+jyyDCM6931?d~2P zz>*N1j!;s{Z1aI)lCpTz3|+Kb~VC_i~NO#jd&zdn=}z)h_(PY)agz{vK^o7*^!m#eJi z?BoGk;TE#IB^if1*kmtW92*_wB|S$J{{O0AaMMIL;67gmm}PcQa38IurKP=tgN3;{ zSUG${lcG|fhk-J#{sBB#%EO^=*qFre)7Wcj;?4Sc`*v=3I@Y+G$(`cRA*s8UQBHGG?*lkikJ!T= z37-^BU_iDG`fy4`mW5&uq^bOXW)&u5PfrPLwFvX~yJ7nP4D;8@z~Q<9Y&Y8Hl{7_% zBule|ntz@`zG9qeLOj9LbMRZvoZ^5(+={_~m1K z&uhMZHO2{7t&G2bvY2oh*{ov5Fj{&!*bg~Y^0u-&=gCoFT+0lU0&wm#e@|~O4wl0q z(3u(3yt38NSHO^9fz8ADS{XM>-O(NHBFa0XFl=u|=fsqD;%=kJOBla!yc6fFFyVjI z{Zzv{u{#mNPK2~p%#Q=DI`8$j^_;!T5Y0F7K^>I_>a;^Aa{b|fN~QyZShL-v&?tdU zC7^*p;DCD(te-x7<~zT6Ych@{(uK&3yP}hQWw;3N)QDqA;LY|wFJ)ZdePDmI$@C}( zjtR$J9D)JQ5dt$vv%2-ITTj0vuN4LN}0sh#AG1%k4CH)Vb zX>zU){E*+b%vtkm;^)to&@1u2B0gCI~>ob^A)6MX2_hy5V+kD6jXP6-H zJ$?F=D5k7lMdun#EUf?bO@BTfB{%wzmKfC{ZMHlO+$|^*?GiB_OA#~QlX1Kg%B8h3 zAUi1;nFrjtuon;EfR#lRGlKma@%@+0iO@P|M?X?(`$;o)I@x&ww}XUO9iBE5e78sqD%gYOs@H}q8@f<@z zVIkaRM2o?vPoK0VKR^jaD}#9+2ih~{E|Db}jQl-AcIonEQOpNWtJ&L#=J0-g0AP;fxgjI-1q5tqrth+|g@(NRUaQx*^TNW& zMA{F(0W6jPuX;DT9fTPCVLuUhsby1hmG^XZPh0Pk8*vI)o7x&#I*2wav=jQ3{kTs&62lTtvp|Xfx1h%V$3F?CjYJ3x2oQCd z)rY!d#%j!K`0W|$>)2l{j0o~Do{40*6kLsbmstJz0zNsS485`6L z6%`6DJ)9z2K}iAVfJ1|bGN2kYc63O>@{4T%;&GhGGiw>eT>ItCXQJhT*WL`lOk>D* z@7{Xt_Hymy!ooG2$bzAsw@By&*UGPni9*~K+}rJYtqGdaG4mR4p>F!+Va!lZSyqNU|=i!b1Fqfgm-2`{M>EA5t^%rMw zyrG^hP_h)}g_C5~LlAc{_Lv11K!TWwdzJ0M5!A=jV&dXBUMCFB6)E~_W~LPV31A9d zq3=k13=S}Cf^PWpfK?=h0XW|V>7?@3S+bi*#v`J^<^BDo7;)orid+{{+b!)S$*ggl ztP-+8&gTJuz>{oj=3Is9FdW2Iw;m!To8v$dnb6o0SFO`WrABp4uU^S%_l+$AeXJ;7LKf zXQmFo`59j+=DcIzmLIs)hh*%WFP8Tz{j%@a|# zrF5dua0mnpBO=V~p%B#81~>^}nc-J9oqmg$?JIF}1_qnjj8?yPEkmyi=g1#)@7f!9 z-ep2@nfPP~JZ1n#E0JJV_Y;b@V{U=YkLR!qxel|o4+ZgWY;MwDQe+NMAleR00&2&nHB%)o$|a8u*ofVi*< zscJehwmL@IRPIPZuo2dpUfIR8py%;Fy?4%D=ucX9r2jQX{=W}{F%-nPR~Q%Idj7ja zAY}T%NRpzC(K5FL%U=Uj~F@^Sxvg^7M^R#q{_ zhWh#g|FIsh9p?EpKHik6tD*uW`hlkvM*m6}{hKzP_SHWG?0EZ7!{g=O?SDXF zVQKoOaCUWeZk(RS8QK0z_%3u$JRzk!0fQXkMaCYmaU~v2wJ*RkO~OLsk=v+&<>lw$ z0y;(kivwfOvZP7MDh(8ptNfr3|2$tWs||5v07rTgRIh%W@ygNN_diYGSq{mYnVssh zCqCH)BIc`CugW5i*#8gP1LpUjc?qg1@D0?CAOJbY1eUfFyhSGL6xYRx){JJ6y%>XL zmdgH5Z~7lYNG8?)&mKJWS8{1aEIq}-;^d)W3)M!L}Vz_>)3v&khpepZF^Y>3_b#OiKHoZ%EPd9Q)7D zc=XTz=Vu1xjW;5$BmxWq5h=M?V#E(Fh}kZ~Vl~F!laM`KOG+yw_ob*uhJ=iK-j6d= zID*!>qy`f((MjenW7Xx4W-t#Y2#$a~Q%G>}x`6j?RP*i{x)|GL4jBO(?K4uKV-2Uw z;u0K7&^;8POKIiq`xstlyk3;hWO`?9Yi|UM_9ONMvRN3eGX|L?MNSS6ABLB&IU6C1 zrop`D79<-n#^2RmpXmZeQI~gKSeWc+_%th*qAs$2hL6sw+b8#TAc<3ft>8jcEnZQK zr+PennVy!m4)ixo`RMUu*YSj~WNpkFwXR<`xylJ6fhk|KkX<~Uhy-Sm;C_mxNw(k*r#pVu~Fq|6%E9ci(_0gr8VH=@V$xd z5<02`J0Pe9`gRlHr! zNa}!5f9B`mXP;@E%VA+=z9&`>VMn7DPh*nOd+5_;fl`Ye(aMDu`NJ3!H0#=6V5Pn; zZv((hxUrd;4$up5ii)m-NaDv%4h|JPM~L|nJ?hOYB;ayLMeo3j)j+*un8gbI*Mtr>XF|_vV-xv?uWxexoqYlh@T{ z2&#G`U~_n9oH|DwudcefAq-#FuI2J6c~=`^ZNMm=b1kUroDr0e=${L^g-4AbTu+oe z)o|z;Y{_r_9=wUCKaj=CgedG9V0&;Bi8E`4hjw)ZU7p@gN_vOI*4)&z(L9%$9zp`# zFUUAd@&dDedFY!P01p4*K=?|@bq8P(Ln1l zR@Q(Xt=tNwxzyUf0w#Eh#~$;7kmRy>w@9 z?R*;iuS$}Teza%+HTWqVrL>zo?#v9`?#Wo=>?0h%sHr5fG>Z{qKA*}Bd11-c!4W#N zSe$IVc~b(n$jzMzKOIO?N}IVzl!Q?YWdL82hPdm(9un4*EG(Lmq5z}N_a{OjH#~oS z=-zq#O*t@jt`VaP41Kk=`#_nmtbdO{CCk7uKn7BtqFYw(}^h*LCU7aakjUn%! zlW(o$B<={jw^Ko=!?Xr1)4*WJd)toLr+&!rxFiAn((y5 zUl^w1G$Ba;VLCsCh|(9I^uJVA-mu&lePt8tYQjTnSqg1IO(6k~=#cuX3ih+u1uH)W ze`b7<*b=;!99;-T5Il|rD-DPOQx?xV5f&Chs8H0IjyrSskSQ0e`lT?;tvmwP4uyGW zI~C3%wuWx^!!kjeEkkw1B6@co2ppgOQ|=Xakh$?Z6tzQ9N`kk(JPN&e zITxntH%;u6`@kH?$YHA0IY4`CY0y@vUT*(v0Npv`CpZ@Hb6s}*;H(kY2z1dU0pJU{iw|-IhdvSj{9pZe%j5X zX~{f4sGWL6ke`2Kbo9{9PsZ7BcSw&mzIaF^?Gvvv@Zb?d6cjPG7klG(F$M`DSk@i( z<-U!LB|JAjddiZAR-XgH=I_=b(_F0=)ptOR$~LEMAZSp~{~R5CEE5mHeFcxD^DLju zKTj?PHBZda)N~Iyc@p*e7U^cy^1(lp^5CWQ4Gnr(w`6f50Q?KQ?~2W?+w@v(*(S;+ zWxFoIpfNRN8K<%*O3Ot}n%K8nj_^G2^OI`u-hBKAs*9xrD|G-fy-bSw3@iaCj@Yi& zZJ&6&(i9Tl(@qlj-eYOz3HgTk?C7`P69Pr2jFFOfW&t|%$cWLowg;c|K`*ZokF40Q z;8|nb0hMqBnVFlf;ZY>{I@VyLc+Lx+{(wU|CvKcJ{5GUtK8pv4g+CqxJA(%X{mglm z{s@jsby?y-yf9AdEKEP}^{xE!h4@rLh;nd)__Ss&VOK}NQ66r=1N6Ff1m(UZSND_c zc5nw!;~cF{JZ<6Dc0JkzuHZ{BT@Rj{`{!DD|6Mi>*CD!#boLZKA74K8{o_QC_au7MHUdK^4PBmN1FAL<3* zA}y~o3KZ5n7C!=|{hQaX$-miMYV-b_mzNiq-On!p$Jb4u{Zjm4Q=IMPrvCyR0g;Zs zLbZJp=ASiO#mn8ZM_7qq|1EQ*(=({K@1pyYz1_^;;|6D9@#s_U+&aM%1Q>@%g|P18 z-gyhz37u?PCNHR;;5YJgu~%Ms`8EjcinWm09yj+M3%&hlhhV#rL71P?%8T{5#=xY8vo;S|Qu07qSpkCz=Uyz-GP>b=xP zk1h_LyaG2a%tu1(q65u(6Ky`a=z^Q1(v{!zXjk{Y8!>g)=a4xv!#sOwCOixfN}!7M zqT(@Sj-DNJnvdL-#iqSpM?U2Eaa=}bv8a&F{$b6Xp1MoW2eKlt{i1rP@G_1q=iz5x zzfL9j;QV%J_eX48)0g(WH}ja7=>B3md@=jpoLr`y^_mAsaYi*`7tSe|x4e-x;vZG; z^_*S&gedc%4dQ*#P-`UGbWK+t<13ri%L4B@&G^T8y%Mw8Mh=`iUX%(aA&Y^UYE!n#A#!hNroOo~H z1-1M(&=*kqSX)P|)bzW2@6*}A{&$@=SgWbe-kc^acW&&^Gb4A)+0@3;-HsX_JlkfA z|J}zgfi?pZQX56}qaN6&x$7(b*OGWdbQhHGtnV7%L9$fY0|)jJI{*wM+=~fYpo%Tj zCx)A$BR?i>x2RXg=g&@1;-g2WEFa&e<_1jlhA%fAb*w1?uoO^(nFcD%kr8|SX~l>i z97gOHeYJOKJm}Xs2~Ft6n_uWg=pR}KRH`n8>eobpPNPTp0gsU7v%RC0bp$27Z^KO)5YvDxqMeJ4vsi}L%OYxF&L z*%d@avh&!vG_>ZF{cXusjkd8#S)OQrF}~92a{Qt^mqi{Sgf+%Bfon5MtHMA z-@j*RLRMdSouXhf746@15-qdRUxqE$_=A=yG9toJr-nsTY%30JLsvx7o&zK+!cCa} zr_ImEsqNl5s<)&h&!ReZ!O;Ci$AW`JRw<~TY)13QUCa1U6KZeyB6a;dP(k3<6^dGY z*1SJ8e%GwU z+4{Y+Q$FAxub!3NU89&=Gewu~+jndBh*zI>KJnKNqsTjPLhsZE^FDGevJ2xZpe($< zMxz$6c8eAh7l$@#0L=xz(JfrJydn*p&^u3%7kYSf3Ub@idgGCL;ulg4$#$vMmYZds z`Fq-S4m_hn;a&xZVJm+g*@qh@IH_O(TgzEJ68yUFT54B)FyPbtlL=H{8< zrE4f%wr#aeE-{sv!7|ZP2*mUj7l*1qHNGaWB8OOH5dL2;^SaOOo%&!xba@j@?xjtO z;wx!k#EgZMy;q})Mr>8FA)ZUNWm-4QuqoKuD0c^~*;DrR&>{FpfIDn=Kl}V*;irB? zk6~MyiVP#%Onm$b5OPFdESD}=18ii=V}DMQB{vbgAT@kXkKsXW_orMabL7Fe>qqg) z-Q0AtGY=}-O%u2HwDC`pjeRBNXYV{21qJro71l34999VnyXPe$tOGf%r;i?=_@x!) z2(z=%{%LvBSEx|Vd`=2&8!y>!md>l#%TO&Cf<_kG_3qVc!^EK3iI#%k#5ytbVdJxv z{)4W>23~k#l&K$7$Tj`re^*v={xL{&1DB^-Q)2cbZK`V?0%OI!- zkQ;(*R7pv?ENXGwa{}q+)gADD?K;`csM;Y`s(Oi7o|Mp|3f0-Wc8}S;v%0^%xK*tB zX1D1f8;=}4>f>b#=zI0z)vGeDvs*trchN0)yy2?$bkrrK32MipqV`f;lh`EdFGO!f zj{UU#N~|sg6xq^s53UTLD~QYXcIncNXt_fZt~#U!9t?$5x8bHmJ&NFOa@VHRjJ9#) zE$wAyv)1 z{v1A&qT?4?pK|ER1>Lp#lAEi~hJWO`e=h3jozqp=XDxoZjQuyS~dcLW}JVnE&HCjf9}Ly{o&K z?y$4B&sVT~g507l`Hj?%Rg}E4lb2DE*=e);q*S{kT9#~h`@QG+GDkj&`I)J4RV~#n znRl-|#cGf3Pjx6E>H=o+{X3;k_32@ucGHIZOBWk_Z2HB;87F><-5wgY?6#?}-#5#P zbmt(Q7;O??nVDnReXtZkud=dBi4~cFG|n_;|9Y7sk6nmJ**%LyGLC&Pe{jv?)tz36 zmXiIW*%pmf%~uWiO-?ypoID%UT-jh-jStU0EGoLT_h;t9QG0&837f27zG@Zvp{k<0 zhpjZ8(5|zP=Rf#^e;k^;&_0ds%p}??=15@R_B{c$sM1wKHfYK9?%n(HK#y6u0~WaH zN14VLkF6tQFM$0K~JzC23maO$W__yG`doV_6$5~@D%0KS1&89_xqD3PkFKO@9DW)11C)jrm+``%pr&_;{g2V2$or*vn< zR|=<0_=KLHm!8?%QB8U~8w8A)@w&{&$RP<^-!?RaoI0fkBj}%!Mio%eD+&*6dnuY3c3Tvn+J4 zubsV8vx?Xj7u^+ohkABYJ8%@eYzaJibcDn8)U%{eWrA_{dTi^p5^J zZA_Fd*Ok0+_0D_Q)YQwMJ6$r-b?gubBZQX9bT~=;I`YMpO1x?5)`?Np$pjs@w9|fY zjAexLwNfFyv3kn_+6O}-3YC>}KaE!pToPvi zpf}HP={e-R~$ThZ_SdqbN{7Qq-LiP@i{9l>`vg~ zU4GRrNms6%FK;rRFL&gO>Z7oM3JR?+hbjI2RsS17S5nj8C-(P$N&J7u*9F*s_dNf< zlZpTQKLP4Jt?rw<>*zm-|fL3Jb_oXU6$0QwfT$M>eq0JJ~$A0quNC`+{`qFQy=t^m|Dm7#w~hC z7dLLszB6UA$*Pu!nU}}(kOIhsG;+~RTb=+ItrX<<-(OWfd4<$~@4*X4&vuWthWzMlrvm!q0;^G6!bVJVVeQ$&eugFNU@>%)F zHf@A)*FFzmQ8`@M)s+{I1((s{N%-=LThU&pS7cE~Rr#)azV*d+SO* zE4%#K6e2}F7VeiZQ5>VJY!qh!>&jOO8*TFb`}7$w9K?*8N<{VEqsVqj#8PNNvtiIZ z_Kjt(eU<>VP~WoR;0m4E;(i|gCRrV~jKAv`J?5U2;&oN~o?=p4@_EYN+lTusY!t~_ z-?K}#K1v}v$-VTr{`7s4uEvG?wkn1k7n?Wm)ebm~sGiS56&K9O7e45_h#p!){@LfY z3T@Ma6|jy)?k0a1csR@Q>oObN$Y2_c#J%_qDR zWtx#0uK_98b$)_I>edY#JGL!qM=g6mQmF&EC8s0Q)C~-Nhb%AzFv@!Bm~uCtCZl%m zw-@Q@>6C0l#HEGo*{iv3dqq&C@Af!w4!W%|C+F%${>GB>^jAA#n@_Y_lsqdnv#@{C zx(Yeh4V%k43}nPU32qBw50npWD8EF(|9$+<1 zeU=Zf=jyoUvG3~v!a(|efsAhy@3zxV@Nid6dg9c9V4B*mokqXfzDZ;;v6JC9g^WbbRq zN$JS9@o5*Bn{zI9;?9wmmj~}^=l^xJtm#Va(%e{AAS|`yHC+I=4&LpSYnCovoC@sz zJw%tD5VZ|>Agh#*ZIN8%$?xF68F%BOXl)VuOsIuASuCnL0&e91qeW>2Z^gwgjjtp> zN;|SN`DRB%$(vpW=yAHwki=>U#L)ivv;MZX_kpO{HnES8-8NW3;b@knPYtTfb$})a zBX=>1$eEvR%c?sw&2u$iY!CHFtJ_;(PhE5)l@CEp48>i~mv2GR080pwJwzu>4;NIG zBS&7Om|fG=xy;?Y9XW2h$8U;ACSMqkobgzNGyqxunKC}hH3R^9M~e5u#?1`J0r$Is zj9Pfs-fQu7P|_@XSvslCY~H-#66ZM&HDsT;RK%7!V&uGHqzsiY4hdO*M9egnCGxr< zy=)iYEfi!({1oJ!`-|jTX+5RTk)rOJVs{uZGsO1k(+VwXdEb0|=hY%MWllxjJqVTs zr?iX{EkE!$F#B;(Z?C-^u={E1`Vy``ddDkRTtR>{+@bMh{H#n zo^M^V#f+(+8<|Ig`nAqZyP7{L*sE`346Ar@WO&FAKEN{@Eh3l)OC3ao%iluzh1eQ! zuZb-xrPXLHVo9r?}PrWW`^SzMt4uDEZ5s-a_-3--``tTGy9p!ZZK=sew@gFRRJ!Yd|ck z`?J5bw(}DW?>uG;C~pIEZLGk68(1?nyYX431ovU=j(Pm4E?$Xt^OfdA<73$ zGJ8y;801GCVsjq!`>XV8?ilMsnJF9Z+UHPjY!`lz0Gjo8g!H6OKJJ zQXJFdB1p0FJh{a^%S3m=z}&oXA^J zdp1HeO>RENi3j<>*$S{NW{i9*zLW#)rS|R4+ay#J%@`PEUTCL1t@B+BBI@JUPYO2n zr`6$ofg!f>K=vCgw6?bX;b|P=w^CCr3tGjk-YDhE(DUTNT>o(EIosUbXHvM{Oz4ff?s^CQ1?xHQ!h)#8xH-IPPT?;N#7TsXzTb&)Vmm|`fg5?FgVye zJYIK zsa2N(EaNu1V{HE0Ula&8l9SkBcaq|+N{Wz||L$K`?x;g_5{4B(0@)wesEaowTBY54 zyFI2%qW>MX-9;ZZn4g>!ZbnZpW-O&N^=W6IJ~S#fNdC|L5RvY+*8N`5-<6(r`y*180#Oi1#PprCIZ9S6InH!Fj_DL?zp%!~}o_Or*WB=V2L zP9Un}#5ayFFs6T)F+=Q!FhYQRzx4k7*RI(BQQOg<2*Q>AHIfW|NsQk^sCB@kTEQ@% z*tjC5*2wzG872lSL%RFAfQupXdBq@ajf4kN=XWg`sI_pnzqRPnU7BH%U$$9!?e9rz z0YSCooze#-rr*5Eub%u_T`#k!Xm<9>KOAegOvQ4VC723#NRCsM6LZ~*sgU7OK&3Ab zZL?iCvSE$w9D6bu(T$m7%fBM8Bl10oW#q0n`6Eiq``GQW42dxPo797tl~VCGX-#%I0261I9kyiB`};T@md;_Ij8q z9s*MOaJ+>xBs(ZTgNp5VO+VFj{rQG_p{VW2gqC!jD!}G-1lsnh?;kGrgCoNztp}~$ zqi1tUeeQTgd*^M=x~LmXyX|;Fee77@an}qw9_<4tBIh27?aXnrs57a%K(hFq2R)z4 zn5+_t;d3{;7EL&yj75*VM~kG4u#)MWuJc5^>8bEor%qoh0D5vGt z`=i>0i_N!;l$E>0(=A?X{;5=RxZ35QeHwHZ{V}n>p1&G~qE4rI2C@bgh)YT`M6)(z z^9|dr^>iMM7AsarHW_)9+GC$O)7e<(`&lbD<)YVqdE;r>QZ-Bo0p>mjqqKznbUgv5)trbq zp<{@e=DBa<#x_WwX$)qWgoC4P7jwmm!$59kR z%rkJfX~4w2wLf_SI=_9`?67QbX_4QCQkT&5@QIkX=0_>dQa`DyqXV^*|IXoBQrw%7 z{}dnSA&C&Y-_W58bjOg?wR~gSR$Q8UzrG8ucG=fEblWa@(SuOtbcTc;0oQJ`w_5fM zn^AGU&bAc4j)KN7^~v(?hx$Uo4*nzPynn?XlxcQFGls=<>h2Dgzp@Y87O%YE&+JDC zPT;Kc-yO5Cvg*}#s3Nx;2UUimcb-rcyZf7|K0|mwsxVb_+%sFf%ZhA>K8y09x`Y9T zn4ZLo=dt%wGP<WAuA~+3e2Z1fOT3n@3cNn%5~8tp2u1(KmSDBYnQyXbia;rz~1luXRqoLJfq`M z^&VLjAN}qb)_uOEFu|-P`z?EDV^b4>07X_uPmg^FqIlrImH7C$FUrAiiN!YEg_F0| zD{t+a5a?k_SSAcuxokcOgrn0@Fq261ZhdVnQc9*vTDx|%TFD(JjfL@svt!D9OoYVl zb2phhIr&c@N(=;LPr#BdPq!_#Pcu{X9$f<<)I-$R)bt*e;CEcMSvnP0LSm-%xV`N2 z=5A(1>-!mlN?Yk@WE3jZ^sRn0GwSgvM3xhKuG;}fKZ~dzf__t`qIf)i33%_C_q7V(yGnOO z%9UpOl(~=}(ATv)8v=NB^O?3ncxagPDdob=-3MJ;cNidxEntV#AZI>9w|W&|PXr zo5{O&j{4`Y;CI)LN-A@t!ObA?LatqheUu}yz_mg*&&&SsjQq7Jn4PA;7$d$kD)B9I z6b8WpW&ktbL%MJOh5G@G)Y|v;yZdJjo){tSo#N5njF*UoOe$*&F9yz|bHu{DiwQcn zJBJFXqQ^^Jm#5uUEfN|AdVr`GFlr)VeNnP7EN|P@@_#dy<;nachi5O$<>ELu;GE3> z05H$Cy1De;Cc}bd#Ku!-x~@l5)a(b5+w%LQFGA@_Vt`S)=_JV(ZzNbrAqk7s~kGg`2}OLKC-! z7KAv|;~^m!Zm+FON>2X3d8F8{pRI0WyT{F9J8d08b^SDv`{c0U0~B*MKw?5=`ZKpD z-je8;<#86UVNh5s$NXm`0pxL_N{QcGom}2z9pNx~+_<2XeMNF#se_nQH19*e1+I=+ zf<)+$VjpX()vIfTz^27<0?0s^7sLR~1+db4{^~y>Gqj0r z%B_!@}UMstO9=)Qo$Y zpdhDr67O5Dwn4XV6=bv#*xXGq?J)hO9FX9%MDqk_cCy-rPMY zveYuZ@?-0mcZ}F*0O>lj+`ipbFcX@`r{$ z&D2lw9(AxCP;LWVy@1bhUyinidWDUCrIa*2nYBP0xDEQ{A+I<%Ww;%Te2?Kw@ zL4owKv9WOnbCJM!9y{s?)=uny;5CU^wFFP*5F5u0|4v)K7d(nh++%d{(rhCDCqaK@ ze)<}UdVqx4wy8?=4e`mBVq=-s`R}l0J-Q!!lDASeX})%kNp3A~cgY82vT_0Oso7`7 zlpRZX3B7HI(anEE1?9gdML78z)psY_sM+ zeQO=NspIH1S8ej(kLiz~Ht8{N?8^su+^l_-%le)yVvTwVXH)b*FZ0;j9W~D2OWF9$ zK;}!{IAzG^4A6M5d-a&fyjc?g?-)*G*%yUct=4TPvc@%Z2lek?V5hxi*PD|hA{w>% zo5tKEoDUTfFbtR$UVZo*?h*yD?6wv-5ek=rX3dJPvn8o#SOLFjLa@V!o;vmP-sWE^ zegAAf-(kKg{Z;WOb#+iMG^1@>$A!+lNV|ipwXmTb8{9?T@QLz$KrN)j6zjYZ`m23& zKkb}6Y;eFm47O-Hqs+l+ncMa#Y05P2aeqrgEO|m7oquH$V*TW9$pN4TB7&aygaBd0DNOmwX7YUPb}-B)J*W$9|x^nH-wjh+)_ zOw`9Af(Tdtn;BE_Oc{=+Oe%q5L5+z+f%EQfb_^ zu~YO8_k`?dwyx5EQ_ylt@e)Zb-SWeX&DH`u-Nr=gf4*wfa7QO!^N4wDSB9wgsYA2udKU$jXz`4uTRU}DgEFsl&_6_X7yx%a4|2OL*?5- z<{ghtIoRskBEr)I0&jQYClUV+zh(y(}@uRrQw@orH=B8DJquf zkLrJ$D25b@hZH@jtTgyBXBEHQiZy{s{dMVJ;ijCdN|<>cmi2JMVExH}u}w|YgHwz2 z-}=3J^X6{-maiUru?YN;7fSd!BmRNDuHV9u_Lurvv*!?5s$SjZ%rLg_D78l3%$lpM ztwk7)fl^ND=urLXKHbJhLMx%kA$B^jl$j3tSJuytEysC|X#t(w^5sJinS`hjTkGt+ zLB|?;IW4=-PPJK=omZtvWXl!1RSZe1Zbh+vK$-8L*-x3pPn^+8t6ur+sPZAcFvv;i ze}DhMCn?{)Av;M~4%%v^VaXnyHvBiAI(yI0#Q1oWnmY1hM~v_(Y!Ha3+eH)o7Y>q? zJ2z{EhHSyB;Rr6Em&qH#N1~}1VEVHwDD}txCt@xe{I_Ogqcvr_zB15a-m1hXs9yZtPMwi2UHS5I8eRD?*AZwD_Tv+#>8OsMqNQjb&zl5c2zAxq=E?Eb3lRc_KP^`|#|7GZI4RV3{Mf%aIRj^dIk} zPn7&nv^GV&uhP+FdcrDNI7nLVsA)`|&D9?RB1^&79=u<8aWMm;`iqqT1y)HnL1+$_ zcmzhoBj&>kiKzK_iv+R2c0{;3!xQd-%*WUOnQa+N5l?HmFq8*2L2#%)vK8JZLhiY)DDZ{PScdunYyqN{0LztXa@zEN9kTwTPSlxZgH8QtC7 zxkpN4SMP3{IH=i(Yf=pT{2_*CyYeN+p`c8^cy)C$iL8#BHfg%Av#_Y3vUhoM5Emx3qj>N@X5P2L%5nkD zU#fQ2=lA#?&dn517vF_>pSGn)lnDNaLh`k~X5Ids7|{6nsbtTdJ^lRrs0x6x$qD-B z!{`55d+c{%B^gP9P?jd&M2%%YoqXOt6fmrcHoyc0eK*G;L7C^zi{6tvF)?jtCbf@U zZa0$%V>z_Nmlw3RJ=+0&r&M}*Y)eJodit3ynvc5mU229IK{vAP^JvhM$4!Yr)*JqM z&;ma^vC%T>v6qi;D*lHrJui&GRzW41@6+Wa@=olktS?FBlTT%`#!9D8-K5Gd^2Ja+apbZh$yvpbu!dBqnWvX5T9iTpT1;7yjTUI?oY-=1G9nXN?PB{h zyfbmWU_Mv`c+pn<8L8*4DTw}OCMG|-u~=bR*mm`)w4TB|!1Q!x=`r5(M%i#StW^_j zX1kcaIA7_+8r_B|rm5)%YQ>gzkLI*Trb*>ZL?rfd7j=pUrHD^R7$I>$-Ur7IH#B8v z6_YCmH>c`8dy)9;HdnwDnjX9KWJSD#f{4<*9QBP7Ums5A$JI-h#FdC@G>({07y>~q zMc2Zn(&Q@M4VyTz(ou)Z8d^@mhfSjP zA)=;w;?d~qM@VV0vF>1A-d~L#MGlzV%J1W+xNBN~XvsA26T}}_58BeavL^W|K~+Y| z=qiA-BDL4|u6;+15uGHjm0P!)In=57%hs&vJO2z=U(Ud@36pSC8uvM#V=#7XpPF`o zgm7(ug}J+S>%0w50!xU{0o^zKiga_%#l<`^*H=3+2)(B>O~?X~GXCaY=7|6OYOra{ zhREQ)t6I)(wIT;hY=Ug}FvJ-oU7?L5SP(HbEN?;#!%n;Hou7EifA$DQirsGSKvuYT zsH&RU^wUq&)2dIOJULV54uX%k-zt3Mp_B(0YMAzi;BDQuD_Y@usQicsHQIh=D&!vr z3|4&ugD80|315@Tdzg?h-9Rqs0GTwgmoDi}oG3WvOl!vsIKnGylzf*B14eG8gxqO^ zK~CSJA|iU%Wq>%8da*rhsLIzmMj`p8vGG5Dn|r;N@vvadPcpThOBCdw z7-$S|d;eQ4rXttyOdYoynvdv(a-{6orvWNL1sWN3J1Vo29(BsYzO&;iO&lEzB&Ogk zwM`SKyD0sE`G<-2bDAV!*B?=ej1uEp7dbz+VEO)aM`SZ=l)SKsP6H+;mgL08jszlKrKmKOS=?bvE*b${(l7OVTii)osGFsvH*>tDG zn=TL9pz@=$6L<7c{c8xOFp8o)I=)U0T_64B>~7Az{0dSI85Nx)VyfGNLkTCQEM2Y| zlIO5C>gn`N4D#kIP;?etPS4f9$IY5C10A2lg?cTR`$zYz_D1Osdd$KHbnZU9-deB10^It{?)TZe z?r%7muvX~CPRdA*4sZL=;Q7T!xrh&du;kbt3Z;?3v)S6;6s_2j{amfTmQm;-&dbu^ z?to#^Qc}M_Y=rZdD0o=0r#J{)KCckRNG1DamK9t0^E8K`yY~b}=vNmC_-EQ<0#TGA zL_|ZiaFm^voUU_a-~d(UBw2rRqq=_Hc@!b-?d^6B5+|}WrOIW4-Pa#Fq|_j<9C-E` zYP(ZY)z$x9`#iWu;lqooB&Tm$jS|?(D!jB}^xw4>;3e`_l9!b71R9R+LZ zuP$^-+;7tvGl*|}YQA_MFDO$jyz_R}`wjv|1XQJ@Qr!5i1fy%&Ain@nyjd zy|-x^ubVnpYo~{Y^@w+jb$!>~iBx>K#tkFYU0IV(X%((LIO?6WK9UV?4_l=m?s}Ok z;*=DO1@vye(6F$q&ecedE5?^o%h;z)<~UH8V%yJ0?>(PMOH$U%XP}Z2qThF+sgc%W zr6w*D_qM&cM=8McOGgLrNJY)qUv>6gJ%`ZQmG)EK*!c1=S5fig31GY4gAJVyj4ZV;SyO=^PCYfrq(kh)GS%e81~ztu{$a z%NOTd9C>8pfrKj@GQqY|WxU4hQC?g2{E_yw7L@3Jf*+oY2Y5c~b^2Hr-Q8S|0HhlJ+G_1YE3E?})zS>-c8LE-f2)4xV^7jJP= zxZuY-jBE+da^_yeqiDs1<|iw6=RpKBi*EbE@1sc5zy1ZeREwLwcOJR880p9-Kyqk7 z8ORKRLA|GY??9nkY?u1SH}}-$)QhL753*ODoV$M8+?B2|r4|ZE(`sg{$~Y#B>ZDe= zzU7sce>{aqY54War}e`+#vJ{N3VcoPA@!)E8g5QPj+Uv|a6c-z5!l@w9M)vJt_Lg~ zdlLk6+%W(AjzJ@lm0bIMa%*CD z@mcDgNKnjFmuQBCw5v$SG3_;B!K}p86)uRj7iidc-5sA0e^)`e(Ra}5YkPitrXz)? zZm6%f-S(SkMUlP3wR#3dt(LgCdclJc^G1f1)Gwt?!d|I1Yw`i9dfGX1{07R)dr*r- zFFb`4V$h&Q7h65?v}&4Sja$wjFSkXSw|4&gNxW zgIW6Je{YG@ORuO^4GIEk5;b1PA9<}2KnG2@l#0W6ocLzU17tH|Xqw{v9CYbg7Ruwt zmp#a>;|7mgk$K-^hP%0W;F6woOcm?dol9ulncFSk5!jxQx6;AEEq-S66==ozE67IKYyy@GwZDYI3m~2tyqPzJ;&cManJ9A=|*_t}Hy4ss{slu6-4&;`;I9y?{Q(>)QH9`9?r+U9bR^`0tJp2x<`2;JZH zEV=g*$*g9?lbKdCx4&NIuvhcgC>s3ty2Iz?``kslg3j#G#Gci2&7{;1IB)wkM}vhe?MhMBOXJcQqN-c{IjR!OrPa{4y?>5h|7nX z(vY2(Tt)7%wbXo-f<^wD`@bE_WV8#H;?X#;P$Jj;+t%fx)NpuuYjjo1M)AkiiL#&X z2vwQ5RNz_e*MHtVk1L`FVd^M-VIIw+$izkl%gkbqe+rFmJy7J`vC#r=(s}p{j{qh% z#K4mk9?-6wUbQs9I@s4`^Qrk~3+i*HFOR;DAwsEUsB`=#(-)%Sc1#_tIM>p`LQYDs z@90Nu(vs7E)>p!5o$j-}d6n_Y$TsIorMEC9ZAnw2f>$0}Zb z&)@iHZJ*H&6~$r79bP(DnL042H&{OkDD;ZpVE=xQs|E?bKk7;+j1hZpvjYt7d zJ@0h){v8DedI`w@d%kPAC++B&CIp_+v9jSHJL70r@Z_=nTn5zvLKOM&NHCb|4*KFW zhfI;3JN4XVf$c-7W?d9ff|!-f+3qyn#jz}G?nUdwC;E!BhXo6Yyx97pT4H0E4c8`R zm|_}RzCovkx9R(yeH52a*@`Q#jU`A(PwyJ3g>*G^A!f5@dsXk`%wpTMaqMHYjPB5E zlm#y9l0i2<=1X$c>qlvl9V70v;(ovoI=z7d5fC3I7rcM}?%75hzsTRT)`Tu;kut39 zpLNRaXy@>_gapPM5XEz}L^#bw60&~V$&L`Br?hMw2XWLKTwg@OjdEj8r((8)2b#l= zojvQ>`gHu|(M%t&^}So6G#p?aYywi4#6Lv#AVM`+rz&Tdle)2bDQ3~>%#vuRuHf&oC+U&>bK}&mCLia@%8aM zjP-FpHs)=^6-o~TeR4sUc(=J1{|PK*7GmvBjxpn4}HfE zl=4VX8YEDo99c}-pz@^ahU=BPmT#YSmO3``;p}Ij{da`^EoE?^e4Vqs^+h+Xac`8MI+Rr{o0+!aKt>4(I()2;@!rOxc^xt)Tu|z0Fwv`T&DLvw^7rjI zC}jl6xU+u_+b{O5GYZHo3HD&f3-3|+11E974=O=3)p9#+YV+emlsv^E_(d8vaC+6R;s?x(XyeERZ5Qd(NN zZ(j=K-5{*PPx4_*c7}x>&!oa@n{6mWZ?--h;T(Gx zZZ_qtCl*p<;IKB)mCp+c)!4TGd^3!x?ytAixgo+JblZm5{9}?;Y&e5*&Iq@qVzj9E zyA_9mg0j|_##b(OZd@pG(eU+`9~76&rc&UrUg0E8pw@YG|rnhZ=-aGpgP2%zUALCAPb7WK?hIhttAkjSDZXS z4cU+sW27wW)(r=Xylg40sBaNpNukoR4_}!;WfJw>lJySRL}_%EZj+n7|H)Q``m)xP zL8wK8jvjUUr6n3^P+amTuK$iBOBz4#lyugSKcyenHbz{?bvg88vFD~XwZ}=vt zXgv}I+7~eWs7afZvQwg?jiVRp$qmn#G2$N{B<;)OTeAEA=GIWnBx*)`ow4Nmu>x>{ z3PQ(Ek)%ea>86}zhbNy-Ql?YDHFro$_;+J9Q^my7EyTyYfY5o zmmgD=`cCUpu|M5*dMQ+oD3YJSd)A^$ou#2>1}^ zvh3YkuLwzxO8y1)GA7qD7}C|+*49Im840ObS%rD~O;=l#ju?mEalK#|&KoVlH}8Cf zSuj3+%%xnvMr|9?%~(D<7B5}18FXS2y^s*gol_Y+7-QE-hGn;IE-_Y9gm7K?KH}bg zosA43&8#6j46*y=jb4qTg?UH(3e}LqB%XVC%pLL1>3{e+FE!klq&{$G{?ZZNW`m{< z6@hXerJ*sxhr*qP_q@DtK`)!ehnukhEsi@O^NJkhQzFfA#in!4j}4YkS)IW|E&iFh z6ponYmjG9p#TFKXG;B3Hw|bfRl1eSC)u<7`EjgY}iwl3*;S#8FYU*NT86fmOcULw2 zDRk6%9N1s)Mu6${55m;OE}f8ZPjm{dK$!)YqAbLCyLIc|zcY_>o;WUW?KhuIgCdDk zI5BtRFdwx;N@m`9=!6}ADbu!!8kf(~p8q*cJN&53tG2d)(AmNdKa}$;`1JLwU8-FG zRTN<>{l-ph`yQQ>V;yJlN3lEh()cn*Bu2AGNBy;c5{U49Jlkvr*{iKe#vCQx;{?FXUv+OAHBQdsOj*wUcYzr zlKbjmpdxU|&&f1r#!YR2;AF{Qa7h=2hJZPtM7A7n72Z zJF@{YaOvMaD#ITgWn;Aaf@+0N&!KmJSzfMeK6vJ~ct)4AqlfU9-;(oY@M$k8Xr7Gd z5xgTIHT9lYeBumEx%omm#lXEQs?F&)&<;=ZR8H{eA(9H zENa;G!I}Cf>Zc=hSunytWdsw|q4?MxLgrpfN=l;UXf2O@$gZ%W>c(^Ja2Nb1Y#$mL z8ai@P6bDVDiDNzo39+4cGtUM+(l<&(uE0%y6@4R$h^tuMp!=VDaq%w)$AqVdub+O_ zRAmR$59bIiY;(wR%`ml*Bds)dY}?jS5!Zh&$rxvtwenDbfp3+F-g=1UfyJ4rrTrvn z9M;M5KWkUXS3$8NP#HDPF#TY?*_=If)F{W_o$a2Vj3(Ol@qV#wt1${uhTTkKW}+1n zY;X+;GuOshr@v!}_;>#%;Bs&Qu+3s=@uW&Yu0-G{O6?7q#k7G0fGt_Is#If6vOCbi z0>d98n6IjF6GO)2ZExY4pRW0gS_Sx3827zuyzr{zN~)5%M2INS)yK)%mi8Iw8%CohJ->3S(>pPXaDe z2^Ffhwinlh2_j5zhDowovg8ZRe1zF0giBY;ntG`q?He2*tDvYz#Zim=n96_y)}CQ; zYHDQRw}3viuC4*}M^~tNQ<>Q!0!K;U&WRIlB*lX!gN~@F#R6=lOj}FsqhtN?+c!_h zv8dChasM+WgNtLMA+nFzz>?36g_Yp@jmI#{)HGu3O58w|cW|Yi+qIQQ{4RuJsb&lU zy?5i1yK4L3V_&!cM1?!t+*W2d4J`kDku+}@pQl_TEA={q{L<#jRu1z?Aa{x*pWd5A z6@iThP2G(CgnIi&-8z4ME&b=ipQCq6iyl05NFw5=;ErS=-#`5Ti4hNz7lq8MwC-L9 zFJX!J1Jo#?LRY{&A^hol373bb^c8=TOgVaEW_1_eR~5#lBsN+z-Qs$V6Ob8SMvDi{ z_61*3co4QHy&dlrR4(A;;0s+3Z;Vt8VR?yjz&2oh#|WEdt@z{Ri-Axww=rA0~12&4^vQ z@ndz=P%ox*7vdFp%`Old2I>d1FzFf2Ee{@6RfV>k6k}y=EJ?DIH+kf76qr5I>=MKr z|IyzB)$UL^xkFyjy#B)Q{m7RFP>rAq*_P9{R1BYL%Bfn zC+r621UF-orDMSoiH|7|T5NSPF5YP$vqVpU$H_+*I@yu(Xx?Buryc&Ykm;d5k!t zBqf@hkZT*tRZV7_nu?1Gd)D_zlp$ceH z_n|v_9N3$WY35LYVM9niG>zHHlfq)aoTB6wNnsi=kddH+gwbS7&a|Jc6UhBvCKx`j z7W0jD@R+DowZX8nSKeAzC@m&cIu8pF`!E0pF;MFd@B3X&=*WaYR_G1z#G=V)`UlMb zFoJMPTt+-$VU>-_ymG~fk{IdYecxx$gN&dNg54E25Krl(BX4qu+xcdYBolnb5&63H z1E19E_F=AIl3Ra{M^<@71{&Iwbgi(C_3LxyrWFQ^9W&-x>U!u^DS9RJHe^J#EdXA9 zgK{Wr+#02U1BG~N@b0T&%-Zyy zG3?SOi7&&Dv!)JsYHA=ZdQc7P#R=V>Yo&#|Wi}>KKI+V1@lzf1_Hn-Oia!VUfnXG* z8Nk7aeVF^gfk^C^&YlaEJ%I0lfLY{}0`gim-GU1J0|I_?h#&Fy2N>+)h=&R zfUc;x$ssgN1YJ&%>%k}8nSvt!skEGi!-I^pv?2O#qZB)j%V-ns382K>X8cPG!c(0( zN>h`OmcRg^BHi0u=5KRjA9v^w+_5)TPXm+e(CX~^@z7IBygS2&s*<9tcFV?;?PL~g zjrpAi58eY)uwGlmIAR=X##L@Rx=c)Jfhqi5?XE_}h?0lJ#jsLBt{A;yn1+?f&ucov z43>Cau#9gkjm%nmw|D1uqp=PSjaZ)M$5|**FP-iBr8a+oTHj^yl`If&x%H~5r^l}| zg^OU;>mqAw5AHeY`N?{EGA5_u^wCNs{8^L!?}6+Dp#;o5cMc^D?~6a3O0d?diQNe>#u9b@M=`}6 zA@+<^4!^4#D$-ZoJ$LEL zYr;$`3B}wg|2WR1HR9M-)Vyl&n{@(G2DkL(;n)U+j(*L&)dhYJ^ZkYr%B5C-dWDR?=HLw znEfz)bDF+SKa~q?4sNcKYW_LAYM@O<(+W_*Q;$LpuXuN+Y55#`@L|WXepao*t^O!F z0r7R@)2Nfx@9eHYeqYE=g)FDPviCWUr8>HS108h4$uiWry%D>BFaMOj%&PEJJA%Eyns z-goPh9vwW=BZbij_NloPw2y;qOe9Lawq`IhoNy>0jAp&rW<6w=^!t02`9egb%Yx^+ z3>dmJeAJW}cP1lA`%PC{GJ$A>o&yID{_+0$hu&fb*f^L_$w4|klKyST-oW9*h9Qt( z7k3;yKIXy&ADP9=`b;-T?CeToxo(7+V63{!vMb6qju%i!PzK4EV0WIju|_8?gOQCF z7niO65-_hWdU{Vl9PS(nDRe zOJEj~H3Z|7LUD4POkT}W)^-V-}_7A@M4AyhLPCg!6*`}OM= zT22HUr^YYcut9r*dvZA4Eql#BCXVle1MaEwURh3ReSEP5M||}>VI(}JoSa+R*RQ|m z?Om`LOshY{Lr* zqx%|YRa6x}yn}LCf6(kAr$&?GJS2h!rQZdAh4)Jm6OKgv;jgmWrdOY?oKweV>E`tb zLOSw6j1Wk{l74Kbjc{Tg#tBF-80K_^(5Rj?{9p{jf|tK4+?T_+$apnrHx7hN^fxD*;irC$!dr%=Q!gETlp+wOAJ0=-Y z9ft`u>U*vQzsRMic_aQQUa|RR<+ZOq$9P)=m(PR=UoeKDexzcS=+$eExw#NL3lr5# zh2btAZhlh=;a={eU}HcQ+zPhn&cbPb#$yDRw-PpaH`yS{CG82RWg;hdf|ks~>fiqh zANOZWkRe$vlo+@tZaa!zI%~+C$gRuc7*E_jbUiOoi7#56aU^Xo9y4OZ1)QMiyJoXT z*x9`XToi_2icF`=D6LD|alWdBQ7mcH0%T^}U~PYI}6U(4hSO>rxI3PV)DUFZx&S!;9@oE7KXVI?hbZj}mJw&nz!*w4v3Yk7+PLK{@yfhKXi%Ajh%!ac)YxJ=c%>>9(kaoZ!M6FHK zJhG8hS(_BkKFmr>qsU%odiDAB9m!UKj9cjoA~|Y+cEj5x056<51UInC7+RFxxh6<{ zV)Hm9h!2aY8|N=9$gTf1X)ah$X2INpH*fx)RJW&`*NCbSX{vVA;s1ok*-n+}Y3r&U zv1~|Rz%WXOCHV6)70;It?t}Z<=1Geerjc^g4?=eX7o=*jWy_XR>=@I!ek>^QNEUUBWrkMT!J-e^~!x$Q{MZRQjMUdtB1 z=C_lp^zTh^<)7`_&rEcdRoqTP6UrATTv1U`YTBLeQR8~&#fzKtQbNZ%;e->X5OqYm zhk;)KBUHJ9_m83lEA6tXyj?)|;lvOxA&2hoG`>U zuHXHf8pHDEKhu(Jg+bKeW~|rEk9y1{8wAkk$`$n*s~?AB!;0;oUMW$S9mw=E%jrGR zep8)d07E9ZdGiO(*;H?vc(hiydcZw6Vd=9d%eNMYvNx#ql6zcUPX6KV6(!`5Us{<_ zhWRM!Rqnl)GtIQw`#j#tLA(eetC09hV-1xe9pYQgA^d~pu{1cpa1>Uru&}D~DQj4T z3DylWrR9WuNpAUkIW=J?{Z)$7hGLOK7+z41O^ZqQ&Ttl)+I^2<9r5;a40C#=w%U*V zBYf|bj*Etk<5}<`o^s*F?o@zPBbh2TJqq{pPQoM`Xy1;iTAR5@(qsaIuo8eYVsRWwM>rT z;|8ts|7Hy9TaSHUApGVf(c$AG#>Y?FZ$#paSIjpJsvjMlq}}hki!-K|sRKIl1AF&K z68@H#!vYkz0jB$n9-UL2b7HxM>HUuyF}|wFl^Y@~9o=NA(MdQ=yDU`0xpk+D?bJt) zwgn#qL?lzA>}-9LeR=lES+fe?J`%s5G{>;AxOfg(k~$ImSgd}5P+E37MLIGmXXH^A z7sr)N=~waicTkz5PPm!eq^@zM62#DTY`zpxJg7lu>EPRcX(HYs5`)+@uFVjB!I}NS z=!3_LrTzNL$vr*PG5h0=qjnL^-Uttb3@a5pSCj&dkz#!BM+@fLJht|c;h>u#xp2Yh zOQms$BWb@witjXjVff&XngxG5%jWPV1RCW{Zhyn_2+DqWD)&o2tw)(m7@O(VETb9L z^7{3N0lj;O{$I4cd039^+xJUI$XH0EB9$qX6eUASp(qlCL^Mi8MI}Qil0>Ek8YxLg z10o@rDjKALgbYn?LkSsLpVR$&-u13`t#@17v$k#d=lo-~BsuC8eY9 z)jvNcI(PDnb=m2n;cR$KLP}f|zfOzPx0|MYSS2?=%=B`X$E$D7BGs>^uXM8TUS0-E zh;^ss+;RH&WbW}0{6glRMz{AL_**Ug-@C2oy6l-szzUeC2OjMhGbq?JwaX-CFDHvOU~x+|GNAy-~9jb z&;PyG{_p+h|J!SSTE`7b&XFaf_0XYP)(IA=P_8bNI&5gc=#*3&snEGA|K6`pTK1K@ zW7A3<(ET=l_@E1^ROMS^?eq?GsS=9D4s|zlbu9m-NW++6 z+7lZqyNawSB)9dGm4b*A2xQK{+x$(LgdhuqfYr^*Pk&SM&cqVnYYLpEsqq(+SR* z5r18@I9rQjbXUj?z&(AKINjSy6{cT;f;lX#zr22OIS(zo-ag&^QN;*FO?7aogWxK# zZQFEtvJB-phNwmWc?YN6feELud#ks%`_vOSwH}>sAojVvJ?WWOW7&Epb1fGn@opYG zn3v-~c{JfU{=~dGKwo!}t{EjD;#)uc=Lx!gvn8s%o?{E_7CbHnLOhiRZ!|in=kA02 z4Uwz-7n_~OwY9&gdwK`ne*D-KNDP%l%Si~A0yS&eG+rL)3NuKoAW$rOMX}o3pV5VN z_&c7}XX z@^84uyj@xZIDc~!KV#WJt4;fQ#q{r@>N@8zdBw|N+nXvY>;~~1t*97edAhPWa;RBW z10*-UDay+CH_V(9Bn|^NEFhqp{3%X3QrA>=kR2p{r=lVY9nHxbJb*2q5|fhNVe*!# zxGVn^h#feof})~|Ri@a`-oj5~`~S49W^W7lmbxk zpz55&9(qO?l0agvN@dT)ZJ=ra=6QGOKSx{!A7IzzBcxen5!V91qPTlM&VDIJsB8hZ z?aFMQFBN_k54_}hJG)D*znR<{d+lf_i3dpZC`th2ymIZDkpAhh6x$9=>@u)wS&Ds8 ztA*SEuJ}Ih=J)TphYu*jB;ISz*qW(-KUSBn z`5A5$gMoUtuAiLhzShV{%xYj<#?D>AOPTL3`Jl?v;T47VO@_3nSMylm!w8SZV({R`4Gy?r*sYnh zY2v#yy?7hL9vdcFW!l`{k9s2`OUt?9eIa&2<)4qEx`*o<1sO$J+UaTSRZ2s<)L=8L z1Cm2e79p3TsVZ$ZLu3$dim@6Gb+`ZVgv_O1`Gysxx+^74#MrVXY1s#7Q57MpUZHYX zdZI&C4Z8r&t`HxA;9;6kSUr38Y;sphD1ZG?Ys#X(`v3i$JOcZtYHOGMQy>};PlrtV z!sPNiJ0P9**Wce-T7W*^eqr;-7~_=X!!7sFYdFHGOD1yK3N6KAU|F|clq576 z?H9?qIREO^E03eq7tdyM;nHGE!oP2uQ66@?xHyeJ(>rdgI6K(a?lQEA48wUK(50oN zSAzb&O4m8%wBO9wvAx!9zHMu{ux>8fLI#0}u2^LfW+o@MGq^YF8Yvf|{l;g)Q(zYU zpW{X(D0xAOIkfYVX)!Jeh{B#_IS*|;Hf&h%p<~D9zMpG4?x^vBymJ=1dGoN+Z_T-W zeL9FXTtpkyZP*w7j}eEk51pgsI6iC=#L^)X07%}Ztc#UT_6|16XqUA87m$# zdcu?n%&dL809%kn*W7(OFGZ`EBoWAHV1UE%4y*(YhNvlI;T zH#A5|N(w{H6IPvCaj)DQ%x$IxHDc<3>CA-Vg^rT~Q8DIzc{pCE(qier>dqFt=)WhQ z4`!#s0D2p(vY5PHJV(tug>bLV(F4T9)8LgiE=uGR8Nver<+tO1P{P= zgPQdF&@HqMXgSwg|1DLz#C-funHDu!rQg2=+yAB%`@hvg!ix(T)c^kf|60fG%$s=4 z?yCzw==?GC%cMti-tzWW@^769Y;v#uv$OkEv1sAPH9eX=Ieug1H{~vg@21$bu;d4;N-3*3(fo76JBa(T5$9l z051JLCB}>vHTDUWrNi8=0lc`f#!4nfc`#tjp`GHQn4d_1+IWcsVuLaj^{xidt9-^2~;i3+!?p=^}W$`is@n#iig zMNZXNab>FTcKE*U!w-a=s%&<@r8`u0>tBuseHO+IPV3i?@db2wL?}20L(NzBa0FtM zhk8k4(xm>!Wkf`Ift~LIYx^8jD!hMRum$RTI8wB)G;FdfIZuW12s;h7ay(c~SOtx@ zsSxQRk=O#=J$*m=UmFhgczU16K%j;Uwd@Vcmsc@~+wJ@Wzmz;0X>bf|3coTT`+M_l zhDfMRpRFD_L0h}yLJN$wl^Qs3 zw%9P-GIiX^nIo>lc|51Y$~aB-amFBIOApWk#L9N6I17yT`l4{L^s41aM-YFuKu(2&nTmnb_+u_ zK3L|;;e!U<&h$v2)pv8OiNjw;WfjAnReEA!_Xq--Z(>4pB}XIRKb3jDyigBrU3_KI zuN_-qe%4I!hIQGu=3-`MTgapvOaS3fSYEW*wcekfTC)ESz~jlIN0(M^XEPr;eJjS> z!Wcr&2#>W4i_qq%#XK(c{nEXBgP0Hy1V$-@R*nz zNZ|C0_zJ)->(0J3GM!IXxDJ+-{Pg436z8W^&z`MF0zCo5B1m=q=}k!Ppurt;gs2Ic zASREVof%t}^#x&AlbDdedA=v)!oX9D8)+n#ELqY^e%p*rJ_>SxseWqArK8@F@!Sz| z^5x%^y5^fmr|YJxzwq=uoj;&g;O!1qM0cPwtI<@e9KVJf07$sH6VUUUV;}Qfi3V0&~fKl3zZ+Lmw40fl*Q_fJpJn}Ud;-5e5;H~)zRke`&OnB zT8QR4JGHYjR$TK+J9)Ae+QYnOJF_;{3W0BT2MW8zteZ9`OC46``eap4?`4(N4vVCJ z-@Yf+*YB%HgLBD8XE_vTY+3U#t$C2Nv|v-jdb3!%R4`OwK}75NYKGk#y&H~1Cqqz= zWgoA%E?l!Feqr+H-GYf=dHLb$d}>}d`KO1C6-V#pIwM5A0hZOWl>FF?$1@<}(w&_4 z95{8QaJR&y(4Kn;+A!)AF#(*VjP>{d?`6c&@iS+3;?4DDQ}K#*GE?1l&h103#)tCe z#A|MKXLkIHn?o^eX=RlIL$)Q}Lz-EwIL5|qQaA1zo=i@f$PFS)Me++R}Yr_&6Nn=yEo1i zR>ln!LfF1cQ472G6TE(nt1AuMEn0J?0^ecQXgNpgi#bxewrZ2p>Yy=55AKES(>gTD z1N0_n*%O85LJP9{AS4-h8ff%LiYtQ@&LX_>N1D+?8_gxqL56mZk)CfK4n8`6iqjM2 z!WrX)_w#9sxD@aGt02R>awWpc-8y?iHB5WiYZXXcfUt-)M?oWy)4;n+&*d$JWjtm# z;<5;XKD!5GS(%8%PZ2*xrQ%rG1KJWTfG~8#&|eRlRsJb&hQjXhPs`a!kbZYCdfxV} zb_)Z6bmLEGAIl$H&9a)PJz01wayH*D&;*t^;3U$OndRl8@)f9+Az+L>UdWP*IeK)= z(fMF<=aLYf@C+*LMuGc$lM55cRf4&O;D(1_Epv0Au_9{{YdXwN?@&>?f1dKrC+p|O z!KvoshSHd!O3Zlh9ezAXm}@#}E=`dZe*Q0$Zb2;4Ul_IDBZx-HIHIKF`FjW=*q(=6 ze&LgP-eK2(OYFUWNs+5Df+)oql=kmfND5RK{%WjS%PV1DmF#Smt;%a$w0|qr%gVNU#i$ zxM+E%!@vUq;irp8P-m)p>1|sswI4ea;T8o2>pB09^%4N=kQ@!t*u|+{{}k@ z0|dckMA2raC?&TL{>{^b7#a@*I1g;YKCSOea)w!M#biSsV3Vc_pGV-!q zp0#IHS~qjN(pkfZJ6qY@OCHRR-l!#Qkc5QeolBg=TtTp~SEnM}H*I2r5U6d;`4^-{ z%)qA_0^O_o!gaeY*R>n1N2GD_r@e3fRaQ@&7`pJ+b;e)}8_HUKvPFY5e`smhKi3xF z|A*XJWY~CbTIGuEGIam9x|{a$LC3*e3#rv7b|Y-C#1tt%iD8 z96NId_0OVDukXAP07l_-oF%8sI^K-|^LGyK^`cY0eEnMd_;IplKXG5*pHv#p=Kf58 zGSpL4R9jp7(opTGQz2emimAirQ}c>(^C-#Qg0Z`X%EA#VgnQLF)A@<{RWGt!l2v_c z)Jn=Sdwll0|be0{<=B8@q|lhz(2ZUo4@rQ1~_==l@jf z?l&=20!3fgMMFzu*G^cuf9pgI_nWiC28I+!?q1PH_}k(!HgUx>Q9CZ|rh&7wSn(U-Z;LcS8jn!}>cu<6NX*Qydu@O7m65_A z{eQnj!$xj5@G)&*se{}6m&1T=*QQHNJS2Q)l;_QxyZh!?Vb+T~+Mk~9d&LyJ{qtXa zl)Sm{HCs3S?HFixEKIZi#jF0G`!eCf3cvn);QaqL?EZh#F#h*`w4BY~_xrzl-vflm z#;9KlU>k9E@gP3t{2n$k5g-X~+e1bSQet0j1jGI&1VGr^@0#_g>JIi#m;-|^ZaQkL zxM0zup&^}Pmtn|r~m&gq;QV17yS#D}N>w;Rm zsYCWzfExhT$M091S6@N~vV{e1RCnIaNIG%bMin0r%#}dbc*m(*_G5%7yzl;gn(TUQ zKDo;$WOqm~nLKW!(D(OQB3lS40Et2-@HMZM0l=lO{Wvf^ST}uSSapE0A|Miolto@z zUm&S_^}455|1;UN^6_+BEch-^DEi2v+i*C@(R%ad$(1>WpoK+8H@|z=erjVjyL8(y zVA+@#@)$;8)Q!R^qhl;{PwL}zd_@w|f3FszgYE3Fy$Z74iW63fiQ%TlR*A=KB5g0wlM4bi&bA ziM9r_6lG;)EXYN5@9(qH)O6pnrE|R6ViS{M4n)8vPJqZj08Vhr;b?}~ajJviMlW8n zB<-JM&IV82tHt2kkVpy$m!l~E`nWe73%9n0(v#Yrmsa||ew%0a3JOjm@G=Q+Mwd%n_O#LCMV55t2bu-WICzJ` z@`~z|sTMJ$KBW9MNhm-^w_m>=TO7==ww0Zl#~J6_Za9^)G_^w0K?0xw@zy)arMEDk zsQoJi;Oz+BT1bdCySdrSA4bXs=Qrua9MWsEcG>|`z$u{|IG=j%JwP--gR1Jq8G*CE zrqi4T>aF=Il9+cS=+gBb)WSjq%_M^(Cd=m=$#!w`Pp@6Qz#?E5*lWl4@5U#lrk@u% z2Y`Xvmp72t(UiLA%}d&@Sc)4u7Mg6^Nvsd}=|sL27N#<~xc{N+b+NAbLhMTOg*@U9 zKEdQfCnmpp#LVr#IG;5&g$k3Ru&Vk7K5!Zhb1&W6quS+&P?RfqV;#dw{{Fj)`FwqguQ1V&4c#!;?bjvq1d!+b|CgzFmkQ+Q^w~#6_ zethbmo>${Rw;>F|BE*sB-h}d#){;^!9Kv{8@z zhq3^|PA^AO>r=2fAXS1M%1(8YtL?8lR`GBnefaK!BXxZ^Oj4Decs-ptY0{z;^RmiO zhxQh}WrM!nVD+#f?4~i~r zB)SZxLC#a0FsaJW{_tPKX;ry?bnDqW42iRw|GV{hUx9lTa7*A&-#uxVVs2HL8*=Ok zD`AR~(mf}Cn)#WZPncqyWMq(fSgbp2u(j#mDUmI-Ah!!zg3akNx;~ku zb@9|;v|8(5ShE7XN`uDmlf4A9{jrB107@rTIH5zHB}Swk_%YZidyaA3+rQ)12+A8h zqg9u0kiQYAXSQ_dS9%}j70*gbKXZi`DA^_Bxv#hzmT$nS$ak+_-~P3Pzr~}&&UYla z#L3C_0e?&&1C#wS<+WJYu*peGS6as4J?x;dPk&VE?1iAaC}xB8voBo6KJ@BJ^1v;v zt!FSqy<5=Arpdl<*GG5ybZei+F{zDdFHST{c;Qve?FF9N##@fr(5)-Sno0h%XTJ2s zY%mz!HC3f29zMJTu1NFQTf$kEl9HZtmfDnFNO3pTf-y7va9nuNHbk%m<3R_^w-Pb4 zu*jx|&beWXttr@ItKiw(_F&brKX$Z#c9#oa=5!3WbZ6sQv(BBId#|WTiB5jcv%`~o zPbGShkr5c@zeJYoEw4X*oXH^ej1?`h2L{leJ`v+=Au)9DU=;Crn-&i4T|jrzOP)${ z{iImnBG^z=--iz#kZcjTr?eH%CA21r(V8ovDvw`ijn}e`wj61Jj3m6T*+^Z*v5~;96S#ZPr z&%0Y*MwO5Qj$z>2P`W*e1wQf?fnb4Pp$t?TycO zhkxBr^Z=0SC?;%?^UjR7xwva&8UM<)wz5#^db3qhmEsGUbH8Egr+8Mueh`=q_-T6=q~HMhIdf?>>o`V708 z7|qbQF`wb}v>clV#mk}_rMKy_$nk9Gbtn98V7Ugbu3+tFpluo!#`8!)9WTz`+}|r} z!^ev>&%e7Qxrdl4i}<+JSYwSXr{gX-JwybVNi0mRU@mK@yezWF)veZW&|5K4*JOT|*-izC~N?>7Vg?j8u-7576QPp%lcc1rh|B zdT!XORv}a4^b{$Y%zdGuggun9smlKBgaxZUX_6~N0Sli6wf;g4Dgly%M{k<=m4qr^ z@Mr14le6YxLi8o!bmbtOnJ&j}g1fR=eeG&mOcf(pW$hfmFs%n6Ur1<;-87D0!nN+aIX-rDaQL)fPNJM#d!8lFh}5 z3DXU#N_3{^bVZba=a|JPRs+pBpMW*9BrG{<--3Q#&{wetC(Fc}g zdKMY>K^YmXlzI)}v>d=quiQZ5sLF3j?!>F`(#%6oBbmIzJi#9j&%TThCn$^5g@`mu zfEARs+Bt4aI&VA&AFn%W-ObGsd)@CCE4=nKNJdY z)I%iUScZQL`!dO88NhS4YuzL0)#Sn58}ieo?#9WKqnMMBF(^~}9#D-Ih39tMpkM)M zNjl%jZp&3-3B?ur{q`i8vn><3=L`GF2 z!iD;J$7;=tHJp3=eS@=4CX$pz(JF1tm0|79fTDJJ%>=x6tdIFVTSZy93ij>7WM=?c z7o&N=fqPH3fOul5E(D)d=S?aUPe&pyE(4B%34RrFB&znR1N%5b0iz=>zjwBrcxcMc z24*-6Fub;FU9?zLcX;fC%fFY9M$@+`X2D~tIhUQz2uM7`A7IrV29)N)bfHB9tsu=N zMs=h_YDlM9j2|F2AuJ#|`Wbw6>I}Udw>h_LFON_BA!s}!b6+8>+3<86Gx>urK15c1 zFSo&DyzOuEaN&Y6>>@C zi4!L(E885e>2h=P5Y>xWXVzPuTPzDQ1w-lL%0Ij#yk6)VR=oSMVT&QxHMc_M(yANV zuAaYZrU}vLlCx@6smMf&H5;AA9UX`5hkEo{3q70)u~mF@J&PcsK2k;dc32_R{jpP+ zBuI!$Ma-47(~WlACNO$vgBE5r=$&31Nw~$bC0h%EwC0 zDy9Yd%%3^NY@*ll^NUlqPJcl_LUY~Oh-^t7cffr<{mB`A+F|#Y9>${Yf(zzYV({!d zHfW*mDwmF{V0YkT0opD)F&}+g|Gn5(L>jj(4=z|cbm(!=_1ZK+YDQ(P)^!d_X>5{{ zla-3qOesyz9lLOLNU;ihe^ekd{U1nGJlW*twsmoR`o+z=DKJW%vN!`Yw02OeQ52w~ zT3&pty5XPO^`BYUt4wB7lvlixRTvZuQ?L9GSV3tt8y+q@tVAz2H#jrLJY|YZmZq3n zljT7Tf+1H$#aG8C9#iJPVx&q0HG5YGbu}`3O=k5P9C9Z%Mrb&eaSXG42#Uzm4>w>M zMZDhJvuDqY8Jf^S6ETMTTl>ysi}vADQ24fJ%)KM8Avp%z z68Kk%rBwoLN0U`Nl2e{oA?iLJEtjwJnp#>`#^&4-*?L*xy6SQ&0gg9Q|HdL z(4A%4JezRsV?)F8#fwoi4U>KYmr-remTV5<(w;Fe?XE4nyPvS24}WeLUkgF_%LER{ zv;^<1g`VP8{q58vpPpY;_{wd@_m|z;YiKSvFkoSmX9mM^6L6+;=h|9ZeJ?H5_GH72 z&o$4ze!WS0&%UP8#653sDuQy1S5}6U|EaYVRTIcg<~kt{jPdNN{5>9Xq!Y{R22%yM zxToi!mWK67{0hqW)e3`BDw^1pZr;2J{&e^Ou1H0%+)#m|PhSCyHN3_Xj2iLKJ3q(P z2FC4WvQs8H$xLxF2ZV9>XLsRSVl?<<%q=EcUQS+?JL_2*L%xkLDp#s#si^$Jhu}(P z>h{+e^Sd8smR72Sn7H_%0} zj213r3p(yN^0=KpoJhwxL*Lz}J9=@$FWR~aar=5LeM_dimh<{vTk(N`rL;$!K>Vrv zG#CYv#Yb1qX&wy&uDQ#(>|JbO(av&%O z2ENr+qT&<+YishCA4t0e3vS&IA=fQJ*MRW^Wt&S|1yRHuS2MfrU#VihB_<`+JObD% zoei;l@IvRJNcH`jh$#iGoofD)o)2>2)SSPQ`FqV_&J+^ zqRfw_YDk;>Hte?Gyn$G+e*Kc-Phy(mHkEyuDpE7Ga&Sn2@uI;#eb(>G{IPBOoQzYN zIptL`T6Y&?ty`lW=p9lo&3pgjVefngYV$LRBT`hQ-J`JQuCiC+} zQ|mu`eyFtY4LDaeC?BGl*F~|#ab@u{{_T^slfa-Nr@Fr`pE?2h%XQ{_wm&!02@Vt- z?h1DeB>3HTTNzdR3Q=*+*JBR>q%zX=0Y8CZ;Kcu~alR1gvfi`zIL&AE$EvogS4^3% zym^IWNWt91LoaqjcC55}`QzU9?tUk<+T0h6S93UYG4$DG$kVI)OF6`!T)(}hwia+@ zI=o?^H7Fs9hg0a0rjJ}S>X32F^y*8xi?O4HF+^%k`n>x-K%dWQS0-W9qvS{^T&qczly>3k`9x^%7F7L;( z`t%Vpmv}6yq51YqK67U8u!Y*t($DE%_{%yiLiW`X02 z`0a@kL?qXk!}%hR&%0m<0IRKZ!*26&pi5KzuBZE&RF7=ZPqSdSQ@zRC%nUv-m2Ae( zu~toWd3hhc*hZOMJog-TlH?wppoo;zXw&VAH#oS<$h1)fO&Mhq=Y8$o!f$pdFm>!g z-C?CU#9ZMF&x~%7h&*v%#>8_YXJNp`jtMUb^<`<1@{;sf&0{8%+I{mdH*EjH#!NXq zJan#=Go*~w%g(eik4o(taP68eG~Tqz1c{9$zf@#)A6k`Z$tdX6t6M6m*=nt`fFA%& zaV>%76%n2XkVT`$!96qO>WK}B<*KDt>QGnk!{eCFd3cHw*?E|%zM-K&m#(hHpZw^w zFHEZt5%O-C+}H-$n=D$C>@v~8ZSBv8MUNkcg@hz7Ga`y=gLq&4JznYiM^zboXF!cj zv}W-hj@>Ume$jW(n?M+569$=pFx;?l;@5%0hcECwSEh3`bd47o0J1Z-RbhTQ+!1H2 zs@w|4_?=WYzH9sxlgMqvi+aN5{Fa)m@#V(?M2B;EvwbHH551eZ>_S;3-5t_QjRQn6 z?>O;c-n8b|4Gs5WejTvhfU<4F-06y`51*3X7^sK+X5>Ew9#XQ3hjU3p=*VwDH$gv- zFAy~VDASfL_J7=Q6|&n@#I97*WEiZkjwxQit(zX*&NO$mx74ti)~+T~xd1CDg>W{l z>KSqzT68=aD;LJb9Q&tY?F)DWk&VW&Cr=h@*q`n^o{_Pcjf9d08aYDF4x87VJ6cZm zG?#qee$(DgCwJ)Vg9rB66aDN72TgO zN;>`JJ~5FpeILuF+bSDQMs^;0Ofu$j(?P}8@-|QJX>V_5|8d*oy4-Kq0`D;q7$9v& zjKF?3+PK^LGt~{w2x`IdvNB43W1W>4(|hEsh|^k%J8)LkS7>Uke?pF=hd|XRK9}0H z%gsb*Rk@|Zf8RRwX}&@@4viz1&Z&2s+Tp4!lYAg}-wAO9i?to0yyVxuL0wnbNCo+) z5EHXTwZ(dMR+*aM2OMf}Vsv2ehn1DL2rGKIF7dE<+TxT5{{_^F{nO)gzO0q@og&da zoj`0%aT1O+@PydjlGx>^Xu9T~RgiHQ49Kyeuj2clwz&(EER^B-y0IAcqvYs;%> zkN!n-zCRV?h$VTu)t>c;%TvQSC&_W02xeCrIyygT*D$?&`FZPzeoDAmO`beiSJw~H zm4mlDSY*+|f?T=LqXSYF2Kg^%*Ga#4kT_ug98maE@yrGM#u%qoT&mPG3*TaIujHGU zo=~>IblCg=*O8Nn4P4WEN5zvTg8qv6UH`R{rH1$4A+9_C5K~>WThrscKKoXzSdsXs z*Zq+kTs3eqOwWWb^jmBjcj=;{mzbE?tiiU`u#`rabY=RwzkpQ~6BXq{nl80N^wW(H z7k*kMI!gDIVp4K4K5$4gB!p}4x?UR~7PZ8*QN(wSgLEVo)z6=AW71bX_8l#-a{0-t z&avCRa1H5PpB|dH$r~h5>fC1TmRaTKb=&3YyB7SC8u3Qh1Ad-y+RKS>_JGy0W%s1S zMRv*IDaV~yo4ysJpxR?ID&6<~Qu_mYF5p#ITyCzen%Y2QO8JWrnWt zahmPvDE@9+v+H$~_+3#|#C*}wT z8XXvnJDsry6V5OWYZ&^;EX7>XfG!7M9k%x%Kk^yWht!olf4*UR)i;3^X7y7(R+tTV z1UyV$v1~hf*@_18l#|yk4PIgdL=EFQ$%BfrF;At7U&lXl;TwE7NPvd2?g9N9tiO=j~ zyhW=YusN{foau5J*@w=Mg%I4#$AKHR_obD+|0NO+xrYV%V_v~mHSMnHGfGcSk4l+> zc$V1_B6(!jPq&o{dO8F+|L)T>Y=j=8)>UcsDDWShRW2(w-Mij0HqAmH-4;{>W6+(b+jQEe%0t+%5Gfx$S2oGNLU~ z4eBkGYQ;*cs`gqB%$@2zXHK_y;mi(lzrC>CSckQSzwz32s%^^pw6+C-DN1+&zkWH`q zTMVL!GFQ3(%E{GrChwfJL?j&S zWJXO}oF}88qPU2tl1FV*D_ zVN6^S?%tg%qjTrpy?e|1b<-K8SN9!{01kgasS-5caa*7;lV9qPsUqY zSy2c$J3AM?h@cyHRRtHpJ%9s}e&H8ogyQs+TBkBr0rS=~k5w)mL=whiM<_XY^BEFRQug|=y?tf9RJ#3VYEZ@eoV2O5I?Z_^=p6YcshfkU$-@G zGQPk5V_s|0vZA7UP!N}nSh!%p3X-}a4dV;O*e>iU!7y9y8gV2B6NXGK>?6)Y+EE(8 zaOY#l)x;HUBX+zFRsuRbj>4OqwFzCq`}$n9T)w=`am6fQ@9VFpco~!4_mL!zAVC+>I}nQE>E-$c293T!ZCNU(7dxIiceYo# zK`i0{OZ!4bPVA3R`tNU)d)O}a=Y#8xa#^bbt5)W1&&|jvC&mycaQ_YevU!l4i^R7! zjD57KAv)^r7j+Y*cwCEMc?(pg`)0|qMvQGDVB}z|ameV@g;k*+MFN`}@H;y-kL?*p z1zft&m;=9^F_SEd^bprPHNN4*Y^4UVd+z>n%KMs{vv1MS+KbdxLy%}86-Hs+(fJkS zFSbbgjYi8QS_m{A6KbDGow1QJ0&7ZU6;g zdxP0p)hkxdMhD!guJ*<;NZWcREgoHS;|AQ^sx#~tT~=~+a?-mHf_D_d>@HKxX3zY= zt_9DVLT07P&?&iVlukD9e7HX&aSIP{O&nuu{Vg-zurD9)@cY@fRY3 z>yD?MJ3Jy}Q0;}$FcT;(IH(YO`yWpy%NY~ohYuGAkH`Fo>w<)f?9LBn6T1fL34}F2mlZqe^Aj-i z;E;z6%Hz3CZxrm8q)GM)sV{~Jsf%{UDy51hDDM{+Eg$p6r?*Kt?YzP~!IE;=2Zya8 z`U(F2BIfIr)zt^x`%GQT7?L$OY~^!{aYqqJ*kY>m<@)!I4r%du>UIJtG~QvnU%_RD z#K=8S;l-K$@feo>p}=v(A@ak;nT1di}AAzUWls* zT3(#uCmZ&#a`)Nmy|zmi(fnA^voDaVA&hWz3oI=xbOx#BswSr&nQiR5zC-)n;?#;! z_l{;|c|xc#FzBJPL6^ews`=Ldt%D!dY#3BrR5acDi-JixWg3scocE~Sy^W2HS(htU zKBqqq?XhU`%n>G{oMJJWF4BqrL@eLb=o#6ElGyxS(#4CWGYel+@hHs0Vy-D-9ZfHw zz=6=vw2vaiYdS`*mpJ>L1t7ltNlA%KPVzJ6w51pEJntC4Aom#NR}`Kx%O{ZOt;dFI)H}&#&aCT-iR0R#+S0No^8bo-QlFBw%Bzca1m59P@z{&X7oBu$ zQ**Of;|ut+k;X$HthbdfYW|La^8LM#nHWf}#s`hPjLWC4k4i#iqKb-RUjmQ$p?ik+8V^`U!#8tuaWTj}=sPfc zopx-MO>#fm_C>rGlX4)@B>S!saY=g`K04&f#XL&vot@#w2#XMt)F3;Hc|0q%kNicKa!k1< zRxa@#+8_j|2^mOHQC60gI22e%8sB}psXA}(*ndvBs%B((QVn9p0|)v|o?P*L+YL3>jX>zZW>8)VkLdqGCwOeq>hlskpF2-` zIdx=}0is1vmD#hqMulVRo^GRh$VdZ15yvA59NAe}!_GOC=@4%i`rtji$X)Ruz)u`y zyZ=}_bi#60(2dSNzFd&w$F;n_ta}n79C42xZDchG^K`-}5YF-(7frI`LZp<7T?K~4 zJIwG$5-~kg%XF34e4&DY#SJ&BmOMt_A?7=!3)Z8PT!9jpA9&J zbjOL?wDjEpkM7jYagzJM{b$g_QhMMH#RNAY!9V}i)~#D{Ruzn2m|iJAi;>&QM$ESR z+tu(-AXPS}A*7UqWw{uuZ0|kW(6DDmuMVDt3xz>T1 zlxV)}zQ{jHQAvmFY$u59xmTatUgNCz$i}X0GaRf773#R(11_M>#digs(p@bfxQgNB zso^G(>VYz0M-CsJ6Ml+Sx8=b^3Tk}G%*+NZUe1TbFThi>c<0WY(3i$2DuS8OORc6y zo<4mWJSfp+evgTsyQ<<}_dw$lLCme_D{KX)hkk3T39idG+Son7`3$=w0645Q4&(o$>3P z{zxRGWQP)Jv0y>rm<7k;=FkbTtqL>BzYO(VumCc;9qh2WKlOm13aI@syx{Zjj6@tI z1lrH$bLXIxOZYZ*pO?^bgh!uQJ#q9ue*R3HbtNcB6z7$;O07J}{zxJ%F4;Dc;dKmy?>wQ zF-TO<4VY;{Q0TVHado82Ikp`<07ZD{u*VKXcc|S@FXj@kFlwr+;qmj{!K5`DCT&^s zu9~tcvgQV0{0Gf_RZ?)um0w*;NpXayqiFp{(ZX=-KD~~q8Fa*KJru+oW+s3U16cKs?Oy_n<}?Fo#IfU^ycNu zi>S*2E^KE(yg4SQ(11mV2`3X{^UIxX!3KdZDYX@?cIwajX9 zh-Hv&GVZ8gY7dtXI-0t!cXw*K=AmNU0gxTub1ATQhW(Y${i(I#z&N=*%vE?M1UD(; zo+a(=UYYBJOv1Jm=RIy2l~q^QNIfz^eAH#0{%mt^$k)oD>{gOJT90_#df(a;^pRn9 z>w@~X1Q8rRP9C_%u0~m+$w5`-nla@b@G$vf<%K$~Y}=eZrX$mCsP9%kC1mlKneE!% z*R5NRSWL*mxC*tW54h2#$2z=p@Ku8!>Kh zM~SR55aX9O^G1dxTcnyLojYJC1XUUd&=JCJTVqqK<0#}=T#2J5|LdEqukwaiGD#V0 z=+_K=xMutG6Cl%~rwpAtC!ElP8X9{C+{ z|7pY-!`Ul*`(^9&G>a9>mLWyJp47?vap{4bvNeBdm#riIxfYgrA=-QXUMGavsq+IcHhjeG1gt z(Vv4=qbjk4)9zk9M2LolhK;RV`o4bi26M53sWt2{*&AygzJSM#%i|oQsbsV1T8iRD zsO6gARePo<9np^20kHV4Yrf}{C7nBr;0V^iu+S4pj&n=Z439o3-M2qbcfyM7 zbI*>~B2Hg(@%nx>!-4a{?;Gm4zL-AZp24U?T=4V^j$bN$u(&sJE{#mYW(_ zU}b*2{mKp0)igZ{YQ%C&OOms66Z-rfum8i_=zjmIvzysyX(Fj7#!i}K*j0Yq(TDl@ zbK*@^A4VD}G&MBLD%Ce0KKkw{bRHX=ov&3JP#rUv3e*0`Q|WasWP6IlzJ%R+@gUnd z0eE=|+Q+4d;e~H|2l`tsvhfg`J7NFfrOJ|{PCk43bVx<1k{CY4VkxsZwa=tYIlOB! z5#W@+)*tjzE2KwU=9xxi^oDy&gh0hm!2;W``bR?^t(>;|XzZS7=6H0=w^7GH1@GwD=PJdh;`q; z3N|cgLzUraE4LA@j*heI7zG8zj9zz*c@R;+qTRbwWQ?x+!EJ<>a>&O8q>jqBwObu~ zJMtq$WN%$dx?V%VpZ4?n0nu$cfPj|Nkj3gVSZK}AGEf(5vUIE1v&0o?}<84_g9 zm*59c3kKXlqg0x&1M&c*4iO609Z86Rdb@IZOZCYpb-w{;p7mf4mn5ljI^l2; z(?VQa<7V_vdTZpq*$+Z;mRRKndr+N=Qovt2$7P>h;+ zX=dIGa6s&cFww7_@fc)p)724;J^ea99Y1yqiy(|hH_kajZ;U~+h=@o|n&}-)UuLEe z{_>bRCYD}w8JS&Z3LVnYNZ-(uZ*Nh^Ks|%5AGeH+t0KOr98B(v7rV+Kose+5wsuwW z&Iy}0?MvYCh&X%TZk%HdPVj|qrOjmse4=oPeOx)#Cy`CyN}oOX?f{l&2IH~G2(f3& z?zjr43a2S1g2lF+Pa%4?rmKdtVKK|G~uoE3(sfl$ZH{>tkz_paNpPF-8Aw`+50Bz9tE+Iyz`h=P;JGRjpoD$iV;(vtNe z$X{1^AMKjYth!z4edfyV)i7!Ov5omnz!&iM+^v0^@@BC>eBOW3?1|E8)v6D8TWlZ2 zUQa09@j_3m>Svzb6FC;XQq)QJ5n4m44a|<1kNe;?HbUV6{RkYY4F@ZqK9$~f49pBJ z4rug^o@Z~|upV^?OeZe6*Eo)R6sq(GTe_Nyp^e_M%UCiXEE_FnQIWoLZCq2=o3^h1 z@zun4L3z$jv43T<{5L?5`v3i9ur0eQl&NW8oG zz7hqXL@4hY`McyAiIQ6y^lMG#>A=(u1>V15(?5?`YvZCIDoRi&Fxw!L!Maz4X z?)vxTcHa7=gB;Y^dAxyH_u16XNXLcs-~B+no9zG%lO>X;h3D3j2QK_5y~2-2XKzb4 zg&elJ8vbtcMYXOYR%<=47QH;+<;vGLti*qfYw}Gxa_qMDQa+g9<(Nmx@)ZhpWA3bu zdeFCB&c^)P*X4mjMeYyyN0BQgC7ws3uBMjO63H==y^#>w%$RK70jz-kpqvqXxYxsYDjxM4BD!76z4c$4sq|d?U2gOa? zmg$viylWP%$q#t_eqVW;uJ`RT|0JgOPUtr5c5QdwZourJ;R%y4b^McUKY}Fa7*E||0(-P;>`K6!CQ^ndPdz{ z_~J?S`0de#r)ApCo4fezO3CsKzx^kD_3u~ip;zvF+L*l2Y4yIPdB;D^8klbs^knqR z0=%?@%nZ(1zrF8^9zMjbqZ0YqAH$K`4!)X$mTMCbHGWUN%ax`>;0KtaC|>8Im1X7k z{nIP_JLYvJa>9|>i`k5yVm}mtOnf=nwQNMWtR-DVtowp!#$XBZx_}z#U8KFL_+cXj zbhW5BA(wh=*`nq3M1Z|dOnueRFcmdTfDTx{;H4@IK0`x`W#jy}Ov@bEprGDk;<7d8 zHLo-p_3Rrw?^NbW1DzH1{VZ}nZ%SI{oVTd_?rOzOwdkSRFJBzb_0wNft7k7+KYCj) z+g(cyvdq0lFMY8$@aM1_H@tdSR2WZrpekPf)k>`4{q&9*w;26k(&Ym?8sKJ1?t9=u z&xA8<4y#tKZ2NZZ>{;#YzpflUT;A4LF8evQuBOJx#pU0CUiL?NMFEo+g@~C}iEBQ9(9+ zc+m{Od%fL|D)yg-2GvhGSD*9aCO=+nZr(;6Ya^vev6ESVAJ8rT9tdT)uRnjaJ`R=H z%4}XdAM@LKll^=5Uc7Y4r$yoUxa4oEN`^dL9I7szrP{hlF)3)kk~y9|_b(2R$vvy< zxg@nCDpL1VX}A7vJmWk%=wJ+pae^QeDgjb;y-9f2!#3O>ym zTz6Hr_qMEvhbnpBE+>z^vF`b57xS4O0-9E?>x6$heriwal`k{=K~_St2k-_g4<@7Z z|4h15FXVl@AfFFVOBbwr<(4V-E@fr@e-!6o*%TlZ1dvsG-Fr#rCweQd)OudVKGx4- z$7SZaG*)d|HF?iUIx)*jTY2>h@b17y1 zH=fx(baxQ&ZFT14VYzYBX6vbW1YOeRU@soDMtkIh(7CP9z@?@?{AKZr)*8pXN(T*Q z@3M>sGJXrm29(S6npxX^Y-(?>JJRy>DO3&de8|8B8-T#y*xIW;Pf4DkecrM0dvW6V zvbAG8&F9H1HD56Er$U&ei>Y&Z|Lx}QmvwF&a>4QRb&lWaHHH@AAd z>xPKin}1}TD?c&t`Q{(%T>AKpTQPj_!_OX1R;`P3+#jr;W4XPv|LUP@Z_moH^y+*) zyvDI@@YSQ=CWYTC@c%h5tn|!3qq~dT5~|iF%gcvGhD~6=Lp!3s?^-~>8~}+d73w~S zMcvg~j^WTUe8soDMA*Qq+Pd{SIF09wvPEfs-bK5%%~2DQaiphjwzE_GnMP{*@8_Ez zH+~chDtxLOC$Fw&leo$_diLyFh=71DLNvE?B^fp|Rc`zIS#9eP{ZWoiPG8#Fw`0&m zK0V_TAD<39amY)vaqEPixvTx}`4^_l+7!5kn_jRSnl32F4PC~bL3480dbl_sJQfaO zy?gt7E*M(-%15d zTz+xq)fgcM(dhkFkMEiWA?JGN^x5`$)`8Ol3dbgItbD%YO8J)uXG|BqywLkwSY_t^ ztN{%RyXQzW_E@)K*~r^58ZLW>Cdc}HyEQMkGPB1jCE20(BS+j`Q>(tAR`MU;VCnGN zUZUH@97WdiI%?*h-hr z_tu-wlv9`|J>nNL69IM&TEn(&@bDi(I!=G=Klg_wBYLCFM4-enNgq8*dtZX4>kB3o zhN045adaalXWr>D!69KLp$jYya@p4#>vSKcUbQ7Yj|$~CyPH%{E&0UUx1vhi&D?q*kDgRZjW+C_X*BO)T$Vi!gHAGE!9IM@CEH(bfch$1^ANs2y3 zQMT+TtCGw_R-|kpgsc?F%9a&LMj=Ud5z1;0O&js;i+M5I^H4zMbRswuS6Ex29FwUj?4Qq%_sqWMRe_;3qm)Fcr*OOPSOyZQJ z_2HY`QcEhK_;Z^uOZo8OqK!>C@*(f3-AY%&rSJf*2lv!4)~P(gDj(F~j@1tnq+o~( z5IQ^?iF}P#+}4^CFi!QFYk;RR1S&MM0|1bUdx1C&e@^3d zLYB+A`oYqev;nhX0ujZ)@r&6_e^?5k@)-p#98Amh2c{;l2!(y``1DPFT3~}F58=c6 z64*O~4gY z1!o!}jLhVvJE6l9e-WU>3$Ip$iNWh4^w>=IfbT}tdIL(PF~UXx3dakMUP{Q?od7h6 z<$JI6CIlTo?m-O0kesKse+LUoa1RT8Q8cJRgCF6#tzu79lMa^TlV%9 z#Dr^I<(QKm6&DA2@9pQ$h9enr{J-gOQql&=`N4TQFgQ3d$KRip0;;Oe^k@GfVDJ_2 znm$|^x{rz7NV3L>+GjGTwnN%)N z|K7eU$yBQ-TA*9=)rPmxc87g+OU4H|CH>BCbJ~&O!>L*-f}5U1iwo;v(e5o|WLVs; z0A4ZDz$#yzH!%sTXdf^!HjXflJ2s=nbHW>%Cg;!%SinFP>VrxC#E~-=4=8r#iU4AF zDZ9%@?4N?}-+6;@(bpD!i(?8;912uPxRKJ4COZ7AA<0D#3E)?WJeXTSMH5 z4Us7DdfDLW%+cI^MV<$|3-0GTyvn{pKhNK=Zn&QFt0#A$dD-nCSvRjyQ~iCz@XV)% z2Yy&K?R@Q&Ul6Tw>@C;d#pXlQwVFbzy%)@DZ%9hKQ#%skk~ejQZK`(3R>)~j%IdK& zB{r4^TZ~@UDpfbguRS@kbDlNQHUQSa`a(WXWAVFQD7sh=Od7~0p>9o@8R+l7!~BA8 z=eA-INdM6r;Kq98Bi%pz2K5j+xpJc^%ncNRWcC3chVuqY6aN$PHF|6rR4<%GFynlN zcY%o&kcq}Xc>^D%MaU`1IruQf}B8nJ*KyYcu z_;UC&m@7y)n1@1FMOj&dgVJSaWaK&S5F#(pAn+)&oU@x?(TCi~uoBVNUutoUj;@fRsrRe5xIkZ;l|1@f;W|<9G8M?NwfluYj z`ERpt%0C7>oxAaWeHVLS6LP#-eQ~uY0nM!^3W%-{Ze@;yWcz8j(4_~3N0Kpq7^63-VK{4d=!CjV>&U&AriZiiw9XyTxw3n-`|Aov(rV#mL30?S*mz3Frhr`e z4c9Q2oR5*}C#VCyRC!6{X)dGc=eTkMhFHWB20I6Xu(-eb8n|`^2q#cQt@wfA7m(gcsFV-c( zzPAWX#$SlL8?3zjXF7lT;mOLBZ~595Ed#!raq2^z9QkmdZ|WtqCwOU?QxatL887HR z9@gY^9_9sK8B=%>5#st@#iW~iZ#+UI0A;|#2GaxLT(}@XYPy>SjW$-W((*ElGcj<> ztKMm6X*rMZNHpsw!9Dzfw*ia1c&--uFucE1sw!k21N?9Tt%GPYqHkI%=?l%$Wx?vVUBWadC(P&PjocHsVw zp%&Yy)Xr5w^QtWcM%#nB8O4pyk_Eq}qP_lfb-d>|5#1|73ma?K=QpWSsADIp6b%={*ySCaPA_R z{8>@a67sAq)A!TDml!|=ia=DV_fPCoJM6u;N=8swIQlCyVT7&b?Chh(dC=J}3 z7jO7LSP#YxrrRR4C*JLzs8Atv{goRkSKZv&U~M=m2WG`{B&)ysf$u1jM}JbM6YO6i z02`Mo#-C&PhxVlA!=ZRXZ}pLXB~UTgOsAQSaFl2Cmasvmz`@Y1$|ynVOPp4zm422#m^iz;5jZ-!n>i?Oj-~9o59zrs-E!e^FSb@ zht$SVDPEei>fyDT>y-(*PmNqOW%gaRd+7K#vQk&`tjoMFEB9(8kMMnth;Clz?MrRC z>qD`DMZT5XsjDse{rJ6UVRd0)_}uWsSAn>`U5k9*&7~x$%ia&Kky9*T)C2(rmU?SQ zg@W{arygrinqqt(W}zk5erV9v&SlJUYn2#I;uRfY4#OnJ!omW^e3YW%j9@H6FNc{9 z#(==I9Hi8s>H|rOo?RSQ51W0qd{kyPU&9;syJj8ageSR4m0?B)Y3x!C{}CyPq$?y= zKHMU5as%(*Z?}Bpi(~Gmlr_pMo$TFEcLSOVh?vB^u->zHvVeq9Rt6I5BP9CULo}7O z478X|cBMf^hqccdG^YBZyQe4PZNX2|E|`&9UtNJ!3DV%N*xPdn&4<<1?Yq>&PP5h^ zEo<@KsA+!(_k%58KdvX|4*s}xohm$&RPMiiK(EqSnq~f?)QulLXZ;Evm;bcR4pmXz zA$j!r=rk<_)AXeSuLG^@R>B&ctRlZtdBhcvJ9Jpe4od#C5BPHaTAAYuH}yMbBa7^Q z!#1ggWRC%5&aTvBgnJEug_fo!aC6M)jhU$K@JjUJ$Tq?k$Q>Fcv4FwFa5FPifnv;6w@XCP;DrNQtwBht#?I@3ZJ+Npe2w(5Pg_S zqCVE&1|r$Tj~?9)uN831fOtf%>k_jdR$3VgP+R~8etG5X1&u96@E!Vd&HGbeYlYSw zu_M<{rFU4HpaZ~d0%`u5XP9-FSYueTS-$(R>M&KUAV$iaa;`4)@1CTZMCe7*@E#&J zFsJj*9et%Ceq&S3WWx0VWp{l6iG3@{=^Gga2k(7QSo?k5gX!0kn-;yR9aj5pJQnYz zY!r7fJ`>YG>GaUvC;Nr|kq+ykH!b6b?Nak^y?9*Ux8}jwGWfSK>>MO$SS9YbXIkaz zIy#&nH5S(@ZoB{`4{G-Ch+h25;i9_@2(562^~Z$^U$E3b)46MYnyp_sa=X*Sw>>7c z*cT|JU<@am#~HeG4NL*eX$k@(`9(d@3AbZH`Wd_Dd9q0v}32GVLk*L<&udB z;XDgLEL0W{pXxAlpy6U?X6~M3Q;UK}wVkJD1u_NzaXi*5D@11o1socjhr5D+Bm*9X zpQ3)%ic?xOW05oGLem)`Ws6-}`pO@t$)Y(!EE#<`#7;Ik{dt^|XBC?HG%WCYy<&G2 z)yQ&u(Hox0)N0Ax13BdjLMC_W#B`*0Pj0x<*&O#UEU4oCezh{FLSN~pzP8=|>z5-3 z*UzN%BF7t4jeaxfppa)m+&+tGcl_&rTtlBDLOVV>+U~Y2%lr_z1xJrE*FMGIl^D$5 z_>8z;3#~f&phzYGNzkr;LsqU#(F|UXYB*~VI#Cdg_tHcdkL5gir2I&COv3SOu0Cjt zSbQICOTpU24RNf35O|}eA?hMb1)zM7fO|)y*{LlWCkcC`lNuVRjL10~VcQ=24z@t@ z2RM%pZ_VSw4M|aJu}Sxb3zH|@0r8oKOgENUZ2R>M3~oQ8K^Ac}5+WShkONulpmj`~j#fm|>u$SvWjZjaRlP_i=Fls{AZ3@ZzuZ z&*umC-UxBIC+%u|x0K4)O~mnB-e1FQ&6>$)d2b9^zvmRw|2yk(X@b1K$Yoml!j4xi zvW00$f(6+gM&YVvTGy5rU39y44Sb(=&>xgDsjQxJTJK5C4LUkeD4sWOJ}xX66UwI! zW`n+9hekq;(e5=TYxFI5@80xuk(q4~Yv6sO^K3mMe&AEL)vr^D-6Qfr-ZepV9GV-N z@YSsrk(7LaEPHDfJZw16lJpKAId*IbcN^A^6$fn&m$1|-v}%6=n*%Y-nfr>@14}Jq z*Et<|`PZ=X!u8t)2phV04`}R&VASyN&PZ)UneZn(}@*$SQgq?9XeAm{b9U+rsk z0r~n{y_Z3*4rlg0`f$^-kQw&);A+84Pi4#u@*O z^@VDj6&Rv@5Z2~p`zSt(t`|7CLNgx(KA@~8lg$0sKjAc3nEb-R$XJY`Z`>Hh*X;_ zu^jk$VXS78z)uB*DJ&7JA?9lMyh+5i4rd({dRC{(8)V5nmaW;xOD{*a)vxxoXc)N` z)fn4*W@XV&oz~p_Mkb}uSo%RF&%-eN!Zg`B`myR_m6u7sEq5$jsAs$MlXNQS{@?5M zs!L7}uPoPvgc)^3W(5%SDhk&Of_aL-|vXE3u6&m+5j(Jyx~0LKp5#M8WAW9RaosA2gD; zBR@ELV`Il`J9FS8`t)QWd&%abs0%MOM*({#q|%7*$ns6~dG13)6NZ5cXCwB4!_x~O zcD**;wR(D6UH;?8CxlZ}HJG7>uo70COF(oXK#7r&g_~pVe^OnYbd6Dr@P6^I%|qXA z#8yp{_mRsVMt%11bdfEMR9l8+e(Ne&aP+mGV%&PPJ!3(a=fFfnfb9<)uC$QTtSuZ1MvbSZXF~kISDfUZK8*n~Kd!?%3AYAwtD6s$c%58br;e%>vVgPY zz%p8`rKJV$;l92;B@OX+0rGNcH`&5nA*WVdf4GaHWNzbTVPEhm(+f1LLGh*y9dpi> zr_{tF0}hH9o-~iluX#Pp+GNEn-D$P$eOa{~S&vi+Q;=KptP^LKudvmfGYowh{3qZ& zcKyM5R?Z4{gG!Onk{XZOq<2kJ*}^R;)yvEOs1mlT$13>#u%_kcrDpS#yNtUq&e+g4 z9zUb~c37c&|B06;lSz3iR{8#;@S3nssq;MdnUDD??@eQp1&u>s4 z2@-+gbYimNN9W6zvwdiv$Y!ikZD|zMn0hX{$un5P>vYi8JAo_L|1Tl|O*IX6ZOZP~ zH$eJP)=|5ewLp7yKZqT+J5M(8C^%H{?+MV4?&UfCW`HjE|NTKX!fS>fdRMPPtIo!)IEl`M$SYz#hN9hH3}Rt__|NDFsfwdH?T%9(;xdEN`v&X zLEmpLfsf-090=v5BAC%_BiGA~{CQHpb9yDD31~d-%Io^|{{1PwgBb45?$!@H(#f*F z^xD4Gk&70q$6h(SD5i7R^SXR1_%3P*`)siqg#umjMjKo!N|GziD(0%U7~ZOu4B)VL zd|D>C_P@7qH-B2ob&pA%>$qe!8~iKa}d`WmRzSay#OQ*D;haZk&$gDHeA7|)zbst4mgD7 z#93qGKFo8VQ~kDuEBz|$nNX*~I|9iWX1`X;~SHMOlA~ zQgFUuC0jcL!x!1AG5Xu^iJEb5kOkFIwa3iHX33!XIL4~@ddE2LV2+pKLWlV%7^XOu zN{WlUZf6S}I+Xw937qwYua(Qll%=KBV4V)q?13ftBi-{CE+qQIgGGzn!v3nwm?l90 z10ovS&&|rf=2~PNlBH&G0+FJu?5LO?EHS~nJ7HT;dF0g%7fcgN&FPJyv zW+#j0IQ;##+^Sz#YB&je5@T7C*-ebIYGVldC0*SQ(5ir;Zg0KYjv6Qhr8 zvKQFFMMWKRvhcM9@pD2541V}|b73qD2#0G~E8E6UFy`;vEdVOVFJK6L6%HKGac(6i zADccMbqV?r2-(&6JmIyVc|lfOE9KaAmB(EP*Y_b<7I60RFAIc{9NxN*feJ|lTBa93 z!hkc&KpH zfW=?ZF{i~uwY5dES!8XQiZ3=0c832arf7wdfEBSkG>E*Ln*O98WpC$VaN1Rt22 z+w|PI{X0XzP;~z4uJPzkMx^YodYj8FaXYxU`X?Rm@R09RiFbVz!JP`JOENkRjyn@dYgeQ|DErp(;(Er5rFT;@YM;Sqsv2_@z3 z-L2i0;1?@@EV;9*qX#((`+y+K$)Z*&d-lxM-ky)@O-Dyjp<{(g#uAD)&*c;S1hOJo zYyB975hCoFjn^LGP0NX#7j}PdTb%5PknGi=+Cy;1wKu>A~FFwVhevHNxxY!#Rkr&VwBza1W~sir20fNR+Fg~SNsJq;E*l6cU?IBMQg zME1Z-Fo}Cc4hsqraNCb-OIQuSl|?P7FN96@v2XXU9ZHqE z$_a7|LAr+;6*x3(;Lt#HBv7#L!P0;fQ#777(1VBm;G3SFg)~(GC`!{(c@TOY8yjqH zU~Qcv&to<{JUH0i+xr60KEMzb6Ze`pg_Wlc$L|bdEgk1LBNziy-fQI)wZYITyfFS$H*9H6%IzktYL#!RFwf*k6WAr?uVfT zg&ZNCe9`Ww6ujCE{lYTMZhIXVDQ5Vk%|23->-I&`D7|;-5%_29Cd2AG3#S?zo800O z*gSXqZeNH)m7QJ`+RX+6fxo$dl2RQWi$JKN1+s)NPzg#)r<3s?O zfM1XpweujhA4=#TwkB$e+^N_?$;)pO7s)M$co=w@-`>JSWZQ;I z6dAO1f4Do!0Fxm4J~P&CFsjfw)RI~t^2b^g*9xn@xIGxg!D=NJaLyjP>?I(P1pOXR z_TwvrUI^$iPFZl@MF-R{1$hz}SPuggM6sZH#=$E>3ql9TT^TmVMMXcfwjv$V28$P; z4Uhr{W@!~?c(s&f;uo7BIKXAG`~{E%#;NzNd*Yw6PHcsT!F;R}12l;s`H6VX;5~Jl zR)^lcZFblTw7y+TOaSyo50%4fl2x1)5*})5>bMPr1kXX_s-e?~SJ&RWbYmR~&URUt zfxRKM^lAhe7O4Cb53W65;cNr7Q3rbuzNMw;Crk{^}L zW5T**4U&9-vw&Op`*)#5!1lu31|%JL`bkYqxZ+_gT?3i2Oi))_`{tp2Np`Ggx6uLO zho~{bszIBW99lavt2Oa@`vX!mt~6{eU}vBb!=5?;}w0r*e&iiLglA zXTiagy1W=2p2ekXVDJKFmN-b`Pm%S)wf_Xu3brKU&Yeuu!1kcgE`+0e{{8+*d4%;V~Vq8Hp3Artn4r`EB97*A_Z@eai zl&TE3d^(v$y&yB|{`^^kp$@O;o?q}zF0kSjfC)qUJk?hz!OMFQ(XkXM`S408inxHf z9%Ag?-Z)6NnDq;dD}%bP5SLTK(@TZ>c*jQp#z4u57Yi{boQHsv*caPkouG2$`~umV z_>m)}X=!O$Sq+?0P`7ScJjg+d>OKTh`udmFx1nrE!ZtH{k1qsF4Qs~tcO;&r zs49(!X~fSNcZ!e9&_QZE`gT=PKs^0R)Ddy5>CdG!@zmJb_z&=%=^sn#+OY`um!GbO zqy?WzJ?i_6JA6JEm35##)I46P#M_K__Usw3p;fXe7hT;b!vcWHDo&OVY2b=evEjgW z@nKM&HScr2L>jHrh~GAR$kEV6P}k?T738IZ2sr}7Ix>3mGih9 zYo&1eVMXFnC%3etWfyO1ZKW&V5lOwp#?8&0GLxceM9CwE(#jBpokC)cv5aZ8NLy}J{NTVbe1SAQe%J^BW3S#`~4iR%cw!wVJyF6vN0J;6(_~bH+1K&OUuPIvGF%5TeA5 zT54~j?{j^9{Zxj-7AF08EO_s1t4&av7z7@)I7()Cn^n$-P?Eq!|N8KHlav5+7``!Z zHXMNQyvn%LaU1|*Q}bQ>=y*KTPV{a8zf;54=3jv#d{K(GANP0dJFM{LU3242MvsSwc%Ba5Vn{ZkIPE&y|ACTUhL+=KOH4dOI#C zYu`&Y8GRUDfS$2+ivkqe*m|d^EP<{4sVtWG`Qt|tJpHPwcK3x51d+fu|K#E~V0r_O zajat$koNWynCw9>*L#c=e?r0Xjo3G(hBBB?c+ZxyygMtC4rvgSKNP;(u`_;GUnBv} zHIk$2VEw7INV?7{rBj$4cYdQo9JV?Vmj#cARjj3jc|(a@^&oN^-loXJ#wRKIrvgvr zH`?qi#!eRU?#}gBsWZ_I5bB7tJ6XiRSlGk2FkMw$m-y8yI?mRiMQeh;3=@Hn-8!V3 zss23FAG{pj3DejoCN0TLiCo`b{BFvh@8Tby zMgbDQ8%ZT>2MSsMy}lEsC9;8hNPa<*o2X0~NYlO`(XvN0eEPHm=6&ax089{|;*N}r zguP6~jiqNu`s%-!1u#<8J!2(l2*L#;I(p`&TFjMs+a9L9}{D! z_}U7vz))z2{a6HNA7ruA4WL}J^3 zQ~UipF^@y>P*+z6#^c&i78z_b$7@2N_UflkUp^qfkK!0twNmbv(X9}NvHyWF&F#=o zNDz!)x;sHtX@qj>#xc7tnm?4QK@K}P8{ zSJ$j}0Uutyn%X_}>z76wxC`eYqc*{{_OY0`MK*n>E>>#`j|3*X0QRxK;qL~)B$9q2 za?j2Cl=gl73fGu;oZnGVkVjs0o|FqsUlu>13|^h*J5kk(995*3+7zDh0!-BRBPdQg z0Pm5zYxcrrVc(+SVmn7iNKMSD&g9qM54aT^EVuCWx`4|ciN32E+HyQ3@1Id=a&>1&Y)BytoO>hu?@i($YOE#m_PLToGFI40WUr0^N`D_t_~M< zu^U_Ao#06umoD(#B>2{?_M|9{M=mZd_?DhxvMVeJ;VQf<3q}%_X%xr5z0A%IW~N2y z<9u-nW+`~3@U#^{&L1`;PAlk1s%$oqDFQ8-ZKD-J>u};#5@5LT!sb9I;O7~6+eSc zo)obYg;?{uNn4^sHQ_oK?rRDnq ze@0pQjKZFr41IZml9G}y2vEV^1o-7b@c@sA)OIOs7>u_`b_{#qUC_0+ie#DXcOLjv zV!!_x|58#T6G0edpJ;pgR*~0ln;3VHYxjBo&8n~=tEBnYPFdPcG{rNolKJ?)t za!E(L)KjF_b`Wjb@^~Rou#EKd(SyCv5LEt3IRKo7bR=Y`>jeM~KRUt;h~EeL2$L6A z6$F_6jxG2li+I(U5{bNn&5X2~Xhqlo&mA^-nNwK=DF@Jul}t@IRQ#Ep-GAz#b^3S^ zC(rfkv+GNR*p&ykF~kP5dR32sv;PVRex` zyTl>0lp(RHRv_{jllbIF+C!aMlle^`c--NZJ4HF0`py{r@Q633xB^wnN12o@ zFJI1h)JpMm7}^Z^s-t3J98#|KnwsHL_w~)p2GL7**!lCIAADGn`T#f`iUlzh+yvfZphgPQsZbbE-sm?gEtk^AT)zVVVd3}kOLGV6;f}ez`GI-oLL{x zHtsS}JI#mMbi9flP=n3lcDUgTRQt-Ufth|-O!Wt_A5WTtpFV%at6Bx(fWxn&qhroE zSXXp86n{mJGfM4H~j=X33$W1z?8T643T{|lAZ;PX1wAN>GAr0)K5{J7D za{HQ^)W{xhog?$-alUTFXUOH#N?~2_+Q)Pb&!Wg6d|1+Maib$9DmL~U=s55ccRW#j zLpFtroS+V&>4I#Bn32+aeus)_uKW%J_Gt7zp1uZ?!xFQnB_&MO=gaIr0im_2xyk&? z%62CoEA4)=_Ter0+|=bp{r_CS&eQb567(!NIWBETdY(AI!&aW?I~5`T5H@Re+X^jWxggq8`OZ<)1rl@E|+(x)soufcJbnJgFrm`f1vu zeJ!N;`1o^AjP|HsL;q8?>*6mu{ZUL5E}GHE6HotioY_^>6c(dn>YM&ib$ao{QI5f( zYgqCQ*Y6f{x#;7~!?9LiIX8)Xo{KFaoH5Mca_Qgz4VYjzd`6l}#f zoc~~20oQ^2zc6k^)=AOSRi;n3`6*Ei#%-3P@L|-x1M=xEWu4KRcMM1A0572cG^9&P zreg@JN5Ki8`rz4olFa&DKJ}9J7YMpQ?Ss}3@tiEItkxHoH|uHx?y`Ud`ki5v?VT%q z;>sk}s&9DkucwVjMjh#2aHHdiBisTEN1WP3U`tDj^X}~#D60k#QwE3;69#k+5);Az zAJXn-`mhWrF*0eILQB;xe@oNRDoseR zb>Cy6_xsNu#ZN;!L+V~P&49oM6xkpmzus=;J2M`C#{JgYx2d{IPkdw}9^P-|1T^&8G98WsZ4{oES3PO+d?3ten3|Xa5l2VI8{Fb{E{moN5 zc@m^M3T(1iG8@2U?@!qtsOSWW9c?Yb8spq5<#`}L00IZf3}i}2l^;IV&qMzUe#AR=%c^YElL&`c>*lQ=Z z6@b7HIqP#;o0L-O8CJzhK~fn2aEjbR>`LIlup@?7X5_QfM0{#UIZ>fQ_F()=p9R>2 zPp7@5{}w-e!59E&-pk^Km2ZK8f(Cf#ATj}uz@5C+=BZHwS{OW8d?G8*P!4gsnc*ry z6R1*rl=5#njJDECi;_Km9pL*;i&WsM2M?If3FSWr5gh=J6X*2Q)KSjo7`YM3ntH5?`Osy;%u=DVciHl!;fw>pg zYCP&`&~MJF0UGIw+INyjbwc%mQYPaEG5I8@JNI{pqnDYhN5D+F!J+r>-mO56g%*QI zC@^sE?CC-DBz|RdhD6v|)e2V>sC z)$J=PO}bX_7;At3-KvmU$Ys~RDIz19FJySppPYs^vR#iUP@nBx1h{%CmPEyTFFLvy z-vOWa!}^nq3=7lC78IEY-5Kp)zlQVjX{G$`Osr|CYi*5KT4`tz%Tm^dLh4T$TzBG* zv|B@yhVB~ODdLBmFNbR9)dIi(@oVhIkFGDx(R}BTX#)_D$(RlE!H4b-fk0{UKhDXK zL~Q_o7dzcfzEKwJW(>38m{Ww8B%r|`y=|*MLA-D1j|hR==r%hhOJJZql+trUL!-E$1%(c`Y*P3%wncKhI18d@f>d>o;P|z zJVatN1zU0@-eZ{2p;ka@oyfJ~eoDX`6Z!nDCt+y1MGaT|&ac?QLy&)j!l-JnLzErMV48$Ei2dFBrys zdHVO4&@LZ&VNakPh$Ua9!bthS^lcNw5oAo0S1bY1OgsBnsAROl4h%QUYvvO6H+3C^ zhPqifrwGb7z~Iz@Z(3TyJwos%L$X*1w3CAa`93I?pub*QUDXy1GA!U%e|9?B5YVE4 zNbOTAu^-wfTR5Oau?Z#x*XEwdxp!^O4=K+V(AQYgxy68W>R5P9cLfBE(O z?DI(Yy>t8a3s?f6wL?)FM9cOJ{&Hunx2i{3m+n2jz4y%1;8#SKp7U%x_c9C)M~B7PI5CHH@4##?zXvva}?>l)>3r&esQ6F;3a|{e#29ddQ&1afhW&wwb<(@z)h`rWnNptRlNIZ%n@^ zzRe?i`25~>B*tRaO_6`u(Xq`r4wC&2aqaKF(SGAulP9j;&t~fcFD>NMdnvL5PlrF$U(4^v$2Vj7c zcJ9WOKPho6_e-;mC@^5*!v%Y9eDYDuF$zFLN7~0)A;i#A-*3jpvnenLB(gRB%W+D7 zCvWU5Csz&d114-(300-#I83eHKlFfZ7nAj3?agGrQ~T*dAY}>OJIJNnt_a9gE@z#<-VOEacQ3TEv{Esn1da@E;Rq=4`4`; zH*mG@RS73)_tN2aMX-Ow-ol&!yqBuS^$Vs>#6BDAui=YXBwwPc&a1(~pJp$5Br=uJKN>Ml=qaKCI-J1Q0O2!x} zI|+$tp|hE3X@2K@Wk3xRjtveD=1|+!`u6PyYjJeq-l1>hJIF_=sRI==K9ztWFgLgQ z;2<{?ff${_iz42{)%Xx|h8k^X`qnLefMNR|e}bRO@C%*b2ByDLeP7z!Nyy;I&{?OL z;{15n=-fFL>KK$V73psB!pH^@aPzo(BjX2Qoi?dz&tWWfU;X;^V%$WSfqTBjdXM76 z0-Env#E}W)4-0?nc^VV7a&?$z5sbR+;4||3x7qd)uyc2A-ND3kYuFvop*&A}f#6>O zRP_}A9vzJ5hPxvZC~>R6x^r%xuw1l|$jThU9jM1->EQ7GtzA^}B`_eYD|RM#V{7uT z!hn?+^r5X6c#S7a{PO>ALgTBN&5Zx~v;X~%H!=JVwbAUq|Mk}YW+CE>{;yyE!+fLy z+wMQV-xJj<07rS1W@julTia z?>$AH1GE_=ZR+afy+$i?l)gFKiqgjpX8ks@S2&6(uR+D>#?4&h99&jL?nH2spoOrswiZkca$B5uide zHS!EfUS3k_QHp8Wd^?AJt1T@xqaVW)f<>XTGl)w6^%Kd)RSq0_w7wKz$e;b@<%_n) ztF7+8Cq1MEwjCM@;;&Y*u<+YhIep`D+-2CJ4Z7P0FzDto$(Z6+do8z;a&Z%gzj4>5iDVSx`uoP+A&%u7fA%Y_J+FDNcW3++9tGA8 z-B#j#K~aJK-yR&0zxBaZ4u7_^;efIgOD%o#-3JEE@o|P$L|F|;2?qx+E{r#QP}!M} zsJCb#R{SJE<|t-K36EJg8^QauKH;~oCdf=>ba8NEy+D*s-CSgy^qgeC@TVwlld!t^ z`5(kua(_b}01iv3tCHmBZ+!EEA8sDNw|GWQrY^gzbSJR%?2(`L0tqa~1i2 zF9Yw=pEbFB!8Ep3NJpSlmqhRbEONNvro&8@~n-tS$dP3YH zbIbPU`Br^=V!Lm;YxUxm5tWdi(cE2idl$%zx9^<8i9jZ~b7pIj9eAzKVJug~!Zr*_ zF~_;%M~=+HrD(%|BOm1+$}bFZJl!HOhD6P{b{Q7;mJfWY)nHJ2_fnV>_HOfC=OE#M)lvA6&_O{#1HTTmurTJSxB&Pj zS=ReAtjUmzL=Rk3j2-NraiBfkpMjxy!9KV;G4VTSpO~I_f3^hq73F4iLvt$I?MA6; zU4xC+vknu3(%cr-#ix$N+=xtyGPm$MP4`icp)4y&FlTS&_lCyKPWJrsiU^tBZ}+wT zZD%fjIrYl-l8Q&so^K;px~1V_#8#is)+W=w|FXkyTZB)hsfF`)CgOBkkMmE1Dar4v zuXJi)=v#NO2z3D*WP{9ihGbS&Ci1}IlK-9>Oh4lNnoxKHaO95`iF8E^2OS?m8ls!E zYZOWiwHz&QQV-9p!}gs51p`_OOG|RA2}XP@f<_8vFJ@=Z(b}86 zL#cxi#=_VjF696XlCz5on`{b5i>DKh7Cd(YwBHN%2h?p)uN3mJQfz(1zS2W4Xw!Cr z-t8il+sq3;-=i+hdchxiGZs$lKITata6q85cSiHuMd7s7r5rBTMH)u;46<XM{paY1PZYE(VxkgP0M43{dnl0;EddN_1kvXH!#^Mk($n!Xum z`dXWt*;X4~g0TZN0lxrhqcCF(Eb8=VZ1$^Hu+EqV z_gi3)qtWS7EpRfxT8Ov3$)?4(XOB5PA`ED2p8^@L<-kJ{;^R|#z6NtBRde$p-;EVh zdV2cq3jtTukHl!i0Kqj2Kn?TxbtNX}9}8SP0Y3SzjhkXN=QZ0Z;o>G@+tv7PVN6M# zvHACeZ(k(i`N11p-TSh?8y-BWF0ikLD`Hwl)>`MDz6(e0nJt|ChtJ#$eJv}UE10vQ ztf}KoIX}iWfAC`tTP>Z;g=zh$5D$8#plq4-Z*{>JsL6XzGP;}Y%llzFp)EMGd`MPO z;NN4WcQthWf|DE^W)a$zcc$y2aExJ$>;|p|QU!8!0kCu`GHjg{(HvEZLLWkq%h2cX z^HbD5#fAn5i&h0Wx@p9SD23`|6yMU@gGc~~LMugJsVGBthI|JBUe0%YmGCA5%1M8} z_;H8z3nQ6;E5M+@<)|SceUj0m0?vY`92}lZ#VGfGhhYqfRti`}KtS!F$S~aR2%eao z-3laE;T#g%8)q<^BdkAm?b<~M){y5$(&nC%Itp`-wGp|E5N8ZG;WF-4?MtbB^DK}p zi0pYbwtyJ!0|U2;NfgA8z_KeaR3rqeV_xiFfk?LHZRx)4$xLq(nrO=FZgQ8YE0%}O z(SO+R=8|iVD3%I&abuxo#K*&=_5MLkcBvc*`n(sM_Ft}vxmB8SPJY+&KTG51@K9dj zlwq2Rpf8Wu-+hecCPv+V#lH#LHvXWbXXj$^@;++%+MVh&^$-63uKVIqHh~EtH4k^l zK6OX!z{5&$hhBCuwYXReiGhU7z`GDzKUY5wgoF+uRH#92OBk->UCpL!y!@wy2XrIh z@Ky54XK``U8G;T2y8&qY7bZU81i2Gr2K@3P$_%_aOg}RG!LcF$KH%z?-ZwwxtiiXF z=V9Q9>=pnW1pTDvK$Nw@j9frt5F%yp7uAl|H8jZH=s%q>2ge)2+3Vmz0%~lMAZ2U@ ziM;@4I{eLuR|~*ELrraTAx(Qa{PPXc>mS!JBTM_T4j_n;s8+=hQ8D1O5YNDFugdH9 z;d;uSVXIiX@TsWt={66v_1?TFV_ufIWufmB#cbWnnF-9mb427$V=suqBP~dl5S%s$^v05Q5S>9Ny-jL|E$It=7tRVAz zb)mUzv?(yb{8i=0c1G|Fyb6iOivAiR>v0`nRWL@OvyQI(_Do+;xmcI@mn%A%r8u{_ zI7BMpt$IE)>vTfd%rdx@1ZXCBfC7K@dehlU2-2X_v`1P%cq0)~_ z#?-EAAKY@46n2jZzLBs!5%5*1`uD`+FKU5j568_sm8+M&VM|5c>(4s%`~ZEwfJ3L4 z@-q2=gt`>3P=?>{MH8(Gf zW<_a7*X^mxHyuu+R#U4N@N8HaC}F z9eRUPe$-XJ=^*gLFJCxXtncGxBGzyrSFs1^t8*;(6HppREzQkin6-H>U_@73R>swm z)e9^fg$rnVw3$*FYHCd0nRd)fYPmgIaNq@yBGL+?k0&p^u44XEbVkpE{7Az&euroo zO+hNx>8=p2v3EPJio{S zZA?muET)-RKhWOlCo(<0I9@lCLR0;Ice9rVZ{hRO^>69!u4flxSvobgR5}OeutYny zu~3<1p)q5iT_f1w&^zy^0_OHKGjnT!$Q)dT(5MpkBk(?u@vA1i)>l0MB*z>CW*onF zDu1W==wgdyc)KlaiwacNy1B{PUci|^F+i>ogcKb8y8O`u>8h4g>&J*vLJ_4Vgh&{L zHfzXCBXbn^EW1KB2L^74lXwBP@_x&^?vtNO9bs;Vagm9ho|yTYt=og6VZQUdX$N@R zdbWRVveAV->c{xd!!dU|>OPD~x>vdhhY5JJ(Hcq-`0eLy2qPv*S6u}t3nfhEb2quw z-zTaF&j$g22kn_F)P4%YmzOA1<@_R#Aw#0Ax{^JT^kZ^#;E zx&J;K8=$rANAsE9se>vXjyBK@_Y3cTbSQ^i1Lh(hmgM>3pyV^8U#DN@2acH&H3-3Iyzt(-AU`O3&&|&tdFh1wXaxoct34mDe+0f)3oGbMy$5}p#QsLY7jL`Pl*kg|y6)OOD=X`+ z6n<+aEEr174LAdmt&faxRXB}Ht_~@lwLo-qLctr-A+T!Q@-Jzhp-J_gOSGha>1%rV z&e*->@-y^RtM`0@q*rWq&~GJ!d*`%`Gx-VCg~MC!Qf*mT4L4LUThYBe)NhowO|kOK z-``ZHju)TZ-tF$)7~nSk`M}}EjnZn#Xep;_LU$L*5bkAL5TL#w^LQXxFQbiV7NHme=lXE(n8 zk@ikPP=FVR_{*G}90+CD`_{ou24Ozwc-L>MEq-QbTTmMw$FT9;$6X;xz_OH`nBYjs zW&0IkJIsAxiF*XG>tw|z0)jDk1p6?z3VdK>YG-5S2+07Lp@a`b$ICM$iw*f`!Tf<+ zIMy<(D}d$UKuXw2f7G4GV7vC6>a7W>V#YuyzX1YbGGtK#lI7D?OWR#d-HrM=048hQ-B{q}iyFT^6ptpp!=!tEIoDt0Q(JrT zMA%9yrH#JlO-n4R>Cy+V2vpOwZv_RhCz*^!Ks;y8`nQ3@5d?5pyoRu)AC){7 zdqUhccqsdp(>(vS(I3_n3f8_M7F)t6{D*rp+bJU{%Guu)m|cF^!usA=G@0e~;@8Wn zGY?B?a*W^ZGn9%bygTu?*ms~iH^cT4eV~7KfRFlYi$MSW!_=}KI=|O1ZvM>6e>cpq z-FM2Be!K9k^W>X0$&=>Dpe2QgS4*PA;r;s?G2jL;486jXP;YG8h%e3;6o|l}!Dh<3 zyeSUmMykrnV3rqkYbx6vN`3Pi!(f9d&v`I^&JR`VWobgqGj?kmBZ-z~+cx6&kQb!X zy(`ogH1(P+#dNo_qGIaH^S1lPrBl5BvIUtFk`4B9nAd{Xqoj08Hy0*9qCal@OSHN^ zi_}p}yXjpcN4_45*91Af6d8EGL^ZIc^--k|9)G~^S%31&BxQ&(0)SHE%(-p=Uy z%s)j!wf&Ci(>VpNHxdVmO7yHnBDFqL>U}-^B8BzLQy&{@rN8mR5}n+WJxMQzx;W47 z-|&|sE;Ej_QtP7gaoI4uTymT8Jm0pgMSz>6-tUtPNFU>l}#&hWC#|B#)q>)wUe zSP@_?CabcC)h^n4b@-c5QbxlQ1H~B}zVzIu1fD*h#r6yDt&oyN$jAszB@}WZ$XRs8 zKcXJ?{Fx&vanSDFTs1<&pitX??A*Zgw5?+#A+qe(FGLkxWr{pVAYytOq%CHv96Nse z1`L!+N2l~jR(|3!XGt0#tC0z!3kVIWcv8L%y-;IQlk=@xG2q-HH-_N49?Aj}yiYL! zH2ITV1)vdNMzLfxwUdI{*DxP!=Gu`3sF111$wQ%4fiJ#<0a4DJfyz)@rd|*7ztPB>?B)Gcylq|ltIt|CzsjYce)8G83FNMqb}qGwR%m> zL@Q@mJg%&?TVEGa{UV!I%i&)9Dont(IOmX@VGS=G+u?0Tjt>9!??0G+Ho5;J*&1+V zEbHT-fD^p-y$*;Wg`8gWg_UC@DzxeT^7sO#XR7I(P>X_%03_lJ86*`(@2%h%48zV6 zoj4@kk&~l{KQxrN{^bSRIHCE5eo|G2wfYWWj0ab2ltTn>`n%0oYVgXyF0a9N{v}oK zY7`JAtwQVQvAD&-?TuukTn4_hOQ&o0njX`D$vWzpqwx8KqtuHGWkMz|pV|IfNluNt z-{6^b!K!`9&MhG`(+Y4C?Cx-Er@3pOdqj91OWlLsOh_Y84lrTw_i zZF}mISrCtahS}unUGzx|uis_d=-FKoZanUxXtZnPa(YnNx%+|wPyVjdSGSV9J7)jX zx#dLa-8I*pf&nD{O)h`BI;&(49A0=VG)KIR|I9-(n+^XHKT5-&7H*LLISJofrnr|p zwTHA;^ZmW3)QuDs8zEh5o`5 z$btQUe?)ig<_DzreJX={`eFxcx?xW3QMv;wKAFu=b2zV{fKqX06dM1(_>cQG-kv#o z_BM8AbdH3rz2ALC6r;ubwFR)+gN_Lh&yDI=Z~FoH)8=YtIS-lpNUU>|>j(H}i(}5E zd?=4#?d?_aZW4MlY}qa@#VuOZrRMxGctv19*j7_B0&MDKXD%rj8N^6~xUQV90XbWmZCtM4nkWi&2$YM~5xP zk29blu~7gg`M~p}Wd8WR`bMdGmLypKNw$zUUU@a4a3rT{PD1D_;iEx-0L)5>ql=P~ zaS&BNj>emh=7Ia7RE|8|_wfu>wyKsEoa#)~)~zAA1<=>;R73;aD)#mw++m!^aI0AvMh}^!(&333m!g9#NfRM-o~T84~1}lyTnF;Vm1%Noo zKB4+|`R#6z3NF1TG11K=<$UF>aO!TUnLLNgkaNCcs}@Ge+Rx9;QD}2grAUR&nB2-DzkyPmsXf^ z|K@Vd#|16A^>YL#<8th?#yeQ}l+WL(MD^@@dykQ!p@sz!Tma=U+r*4qE)*&rb576Z zK9M(Cqz_Q3zhJ`{yh!lXaWwV6^Qrq-#l-Gnom&=kLHCM(AffVGo}E3188)&_o;`oQ z29xAC_hrjGf?Khn*(q``TCR{+UGKxHG)Bdo7>&lid}@{ zRwbo=xC~tmaYsvL2+=Bj_gLzN9_5$li>?;U%*28F*5=+6&VHv8i@f7qS8_X3 zilAnF_nZtBgA=T+J`VQH&@tT8|0B?>8=N4haatG71$<2+Fq#lWd#x_y1hO7j>{v$c zVcyV|dvWiCIf_A}!s3z==xrIA>~Q9xTyrJA?!fnmkW^Xb7EVZ21?ma+0fMiTBX=dE z-X)*?fW;yCp^$QQaZx~YY=PEy{WYpNm!QPm6;DzQQ&Y>Tw4t6R*i{g}=Y@-fJ^EZ^ z(0igk!vK6&xYj5=WWE^XR8;{E;7UoW1Dg&Jp})$0_gz+0M3(ldz?I!A1r(3gtM}U$ zAGuq;{6j|Q+rXJ^&wVST>C6g${do|zX_F)zbfzKJp-j?iKgW;}^PS>6g|z;0YcJvM zsKrHB6QNDJes*1{=Ypoj4Vq^a_eK=K;p)WF%!!k1`UbU=K3O~I?x!j_Eg#pQ@C$!}56Yk+9MBSUT6lOb#^z~gt_{i86A0(!2^UZ`K z2(O7Gl?~0ogFMP*&=Y`VwHdDP@Zocnzhqe_Jk9Ry^Nci|%+wm~Kkc==amajZLT_Dp zFYE32rYcHmsbFeSlB>b*Bkld2YZ{3em*CCdHUYJhOb7G?_cc=9Mq6H zOzJHm>B{$L@IMEsFD5HNMW_kACHeI9tQJPR(tdDX6|+(p5TF?xw#b8bhs_chJrVSV}JYo zdo_dh=bnpeIbF^-JR)%rWB=6DT{O_qeOdhJ`=4L)hMJP?+Y65DY}*d_&yB2>{=9Ow z_z}&QLH%RL)DQj*&!Lr8rIs)hl?P#g!;Z-=B9vpFsZF5W^V*}ow$U^}&!o45nBx;; zxIAP3Q?NY_`bzeQMf@W9k8$z3Df^Pm9u*Cl(6&oAsFHZ1vj4Wz|LEEb;TRmyczn`q zm?AEZOBSf?-5U?KfqHth-QqO2`; zbj*NuNJP1KbA)r8JUIfdn+C77vr&da7$PSoGX2pTyLeC%-4u*1S_mU{xcMx-Z%62* zhK37leeOQLrjtUL$HyF2RaQ6eflkNu43g4&j{vx*@t;h>#qe z8=9Jw$%5a0zj?j~+h!aDaa6zA3%bk3utrhXvdWT*7EEMT8E?g`)a%YlpQG zs?t#)>*b!Cz+YMdVca5U*T=u=i(N#a;wEYqd?o zFIgpm*}rl8zP)G1_7GWqNJHa$7Rh=jAQlgU-*TiTt^woLdbBqB^U2LeI7zZj7)*WKraJ#q2r=%C|wih zoL*i6#ol+YSb_D@AqjRZ0B3vm9)-P=w*mM!7?McrQe&f__QpJ9Z;gH11L;LbiE4g` zkda(sZUtB)m3I&YS1gbOE`3y(ZWB(|uSfQ!6O&cK-AHaP$wOr}*jMm>J&9QuwKuM$ z<>S3LB8k!1ctq)F=Nij_cYEzxJ0|XWcUMdjl%qmJnSemaACEY9Mui6kckt5&pO$3T zt~}#w-c-6?fByVIMtk%*@z$eo3`ODAI#rJ~0!D?>4Y5jOA~EE_;OqLeYp}@U>&F6c za&WM+w&px_${o{Z1@R(a>nQIhw4yAGAwNYD#J0!O!&85|w0 zsiX5mFDXO~GCX7)w?VTG|CNQ6e0P?Eq!Fie>qH)apNee)!E)j8@t)&t?9i^_S`zOC zK$!pzYqBa@?24QbTGp7UGT*zFxvs;qpgOU+moOm zm>0NOTW4uyo7y^nhlL@VgvsIUlSdRUu<=2Hg6DxbuXGYF*Vf!z0~@LDgKe>uXfA!+)`7b7 z2wu2#2CMx%@gRI(5mWKPn#y$h0o9C)3C&ei$#35t?X|#;k?#hVOWT)ryOThL2U@VS zoD&vym^?!E7jDBaoH1Zwclz}HyQeUIAtKsQX_WNlO$g-|#*UBHDw*x2jP#s0z}Q#; zMF~vC^WUry(+&U^=mBv15$t*&csLmt^sy0SZF6Bg%&O3A&W{C)(+X@W1^OH~(*SQ1 zp@S)&lR^-cFV&(UsQjKQ^*5R)keh(-1chd+#3oJ{NDaVoNcOP?3XEVpf=xCS*U25ZCzSvMu;LX=^A=_Ir%G? z$E#Vvq!vg6u%)M>k`DU2C%>8A&mc;cCDG{aD3um91DAo3QR_2r`07##F=RZys;Mbw zMLqQWGD|2DjFR4q-6EVwExTI-7L5aaUEJK>&s86lorOg?aDp=elpMboL4DwJcEtcg zGmP3z;@7_2yA4>cA*dHgF~{X{F$u=j_0_*9XX{7nL;h8S#Kc#S4jh4pMa=q(^sFolg;6~y6bXxnJa?MM){YM*nQT~m z2WolX;9|3w{PK$tZDU@VfV%45e zDt9iNak2tui04Xlav(zoLLOYH3pWV};b>{)<9*dQ%5cVDr;H6^B=;q26Ooep%IRqj zKridZCJKUyJ>Jl`o0fhIX1rw1WoBcuj=A8APRuK}c^fRo6A-PXUuvVOdU}Bmx9J`| zBGELysLt$P`Gb&Rf(;|hoBX&9yc*$c)zEO#q5~TFBG9;m9(ipP6NWgk!ja+qB5M9) zMfRwNbai6`0`@HkCHDN5X*wDRj1zDMC#U3n5NMY@S6k!V4*L*4di&NLCyA@;d5MEr zLoQoe#08$U6n+Z>f!of`&E6itYKwWEnx0JNB zpJXCVB{W5tz$Wk(BODdMXuI|w3zkndPuNWnH#9MEl#Xut*RPIL|3Gq;J$v_J3M8Ex z%3RTma}G3;j%5scV#Pd4`!2z-g|Iufj~Skh1ViNv5LLv0fKRMOHvrO9nsbxbU(Pb9 z4s|^|L>KOj&Zp!3apuJgBa>+C)YsnLegE{j7kEUjU{8%Y)%o>2nRH~{Qpba1v=RC| ze0)Z$MXnpMN|sZTE~@*&CGlTT~KNxo+&ps zu`*154>(P>c71`vhOVIBIj`ua-({>rne@C$+G2`ZzqckdJ?t6&f41a>c|rci4_ zVE;mzBHq-t9M7G9igX+ezWn}&dS^zW*eiP z{VpP1{&2>^W}es?3_UMrg?`k)fPPtli5RFc#QrBR4(@o%_D6=3iqC{3a1f&?9;m7N zEcd}RWkUBtz#}ASDl04F5I`*g@!vh#&TMUX{wgQzSeQMdY2uXwc+fAdonMGeX3kbqDAwvIx1vMB5 z(Wr*BnoHqWl$dxisU^RlzyrQ8xKb0=eCmkP*z3E>+?~-bm#H(zE7P36H3Xvn7#G@G zI8Kc|JY1lqi{=-N$9Nx8$x)!=SfMb;T3A^_oI<>ilO_5+M{^x0-#|5lud$haG$~lw zN$05vz)8bVpGwFpq4@a+m%69#($HpQAW&z_+wpRnZgd+3tU(Dhw3Jj-^0fqVJXMO_ zJsf>*KX@YYlDkI-2eEO&^9Tievh&Jg=n2*92?0h}pL`P^#(ClLH>8xBoQz?TQVhTE z7vj_G>}RBSUVKj6Qj=P0@idP-A-@=`e_;#~PiKe~NIsDT4nn=07GVy^8N5h{2<&?r z8aM?6+EM4B7D}N|OXd!q9;agKcpTlCa~a)G>5E0JZL<2KiU%$PsHUq4`X8y8W7Hb8 z2!rihfmSS>EE4rEv|MFlPkjHLPEnDe;zLZzg_8=ui$E3lGdI}4=Q(pjoi{^pyQ7EG9Gppf3mXj}0f8*-290@vmuUh^k_|nlJ zEm~w~39=ac5p;9tSKq;D*Ui5=_re>q((?!4Hwz(L)79qaCwm6d65 zrgTaeJ)lM5w69+lOt00&F<@u#8$yA=A{V0-lyLS&$_53TOr|P9<$QtZm(8_k~i}_84e;p}zxhCO=r1H=g7FCqrCl3R%0xd`S zm5OFNT+sUJGH6*5*h0@J_ZUHo%}MoaK0h||oJR~4pHK9EIO$IMmxCcKjo~qA@elQa zj?&KL>Gm9T?MS-rtJyV$blqK+neRor)U~^{ekWV@`XA+(X87ry%SM{}>VEK!P&wWO zym*UQulJ+;!UQIG-t*p!fZ(f$kUO{!fDxWz@R+$1jE+j!9{Z zaA9W7Ku3% z$;AAS;>eM|7-C=AuYe6PaL9$kt77BfeYNVarGd}#uITkl*KXH!v7SsGGHdoN@T@ zyv@U@{fq~^E+#NI4WZmJq5cKZ$!mxG&FI>bRb8RNi7T zi+v^9>Aj(5L{>;A?zg+Q0aiV_KI|u9E$0y1)i$wYy!}+G35~*GlD|jH7`#pwi(L;Q zbCwP!)Yc3J<~uMIy}cw-pL_N;&%~V4o(Dp)h;jUuM%Gtgbwn_Sfq~(}tzEZ{c^kA@ z3S5`v;ImxJOYWSgWt+tdSfT?yuTfWe>}Mp!b!0^kKLKSr9c_a#DX(DC=#A4m69}n> zAUXm!amwCEQO}eMx&s&|4IXNkZr=ccHNM{Z`3NiD@#vHb z!1xH^uKlQc-#yr&MbH@0jO_>QihDsiS-T@xg_(cfvt`yPV@K)fl~U%_GTQ+i#DW3_w+D+&DCdKyxU}F%2)Ga}OLWa( zfq4s|EHkZvKR$zpE*VKBdK_^GBH-14$lms4`gx+vsSHS{wG>L%bjz<$bHf8pJzyZR7&qo4-f;z_>ag7mE6+~z(p~DFjwPENX zn#QCcufH2hHC&z&(F#CHVLaRKx!L>uyJk|$O&W-8V&M@mwgk~hszUU|_XH=$+Vf1c z;Ru)*OO7noyNNOhSPX#qYnkm}aWP&S)5?y>Cki(BY3h*IaROp;%b~%+RzMuds&cFH zPPk*aCifn;EVHQTbSdOa;Zb?#6rlajUasdgDW!`)@iq6*!Grou7YJy`g^#lb@>&|b zD4u+N8n{Gv^2CWpPt)8$)zi|7iH$>>KIm{-LGzX422 zGKUo}UuOP(5yc=sZ6gXP>{;}9zqTr5>A=eHkD3uDWb~=QL5*k{>FzIk$jMlfZ3}~- ztkd%s@MKWrQNWEJZheSwC|Q^5=gP5C2XUc7|0bl}$J!5Ce_BV`sIYn!Ek)p|tFT}X zpgxlb)0C4Z&Crj*H*l=Gh+EDFO9EgKMssNA@NK@tiC(T=x($?+ho`xvMTIG3*5#dq z7fFaIO@xWuO_SWO~$3k>wI?{>|l~^u1 zZ-o6C8Vc6g`CEQ#iw-*V=;9n$VPPhFNXV!^V7B#)3o(&lfEfoQJ25tk^YdTF9My$A0TzaB%o#tj zsGncQj0Q=2Xc*u+R@^lW?i=Bj&FA>|$bb)rCbRhB$x5D=#J-};RVX5BZ>VT#jYCg~ zHv{5#-t;zaRmP7(9w)3DiA=Ez5F5%^p4tUt-Cs3G_RkMgfVvXiwK1{ zf=Q+<5|cUW;V*-JmbZRiP>uU^$p{k@6N0+s<}lc~d962vp2ft`HtlqMF1pQ^H6q`? z0*MFX9n2nxP;b^S`tS-r9_IY}393`&&d%lEzfp2$1e9mOehrhQp#pRfNJ)fUk^gbC2Q&W#JXJM*UJX#=39u54_~?xXbN0-zDIti#R8x%T&wMfc|itw0dYs&m^u z;N|1PuNbpvpIE}iUocsFsWrbs|Fsa^g;$-e{EfL;7WL9jP6fa!yE@=|gyAYKvbff` zk^Bo7gLson8)Mp^^#z|+N)hdl9ZADn!aHRQ3+-ke5uv>#C%ISsvU36er0%tAOAvNy zaP6vOcEA|`8)*2hWS$DfpW6Ck3Ce6hC6V8kbi;v20b^c^0xcLRdtYfJ4C`e7v2z%( zsE{Eg`~(rv?tj`>27`b8mE|8diF*(KX)(5{7yOs4@($Aacl^F5qSZ9DR>EnW3e~j} z1lw|-1e(x9xY2g_45)~R1#$n}eawYiDZwcCQ&Lz%dce^AAeq*D>7KC)9HWQwi0g=CdTJj1a?<&Ti`_@FtW9EY3RP2hDo3WKdo5&%b2gOt|E7NbeKcBt0Hv7;&w`QX4yOy6xtdPziQw{<6*AD_evz1z#FYmaEXs-cp?`RgZrBOja0;Fs89IVG|w^mQt; z7_zu+J@iY=aa$MVB$8&S>6iSFH;YgAcbIf_s)o@EYeVW^8=6DRq5IxV2OMH<`R7t- z=Wt6I4AKTAlHbPj%<^>V^iJ>c5g@5!{sUB6d-~ZT(kU%Bvc-D?v7N>@HZ~Vy^*D3u|oI7mnoY3Z$=t<0O z#5VSJkJ*V@JgH#3zcs*cDJ3WIqwqQ!#ciCE$tIj>J^JeBUYFSGJ4s`AP)JeIsZku~ z6Mx{Ie`)D>*Ncq2XBG`gTs!vvF3-GTP`o1LD`BJD*Z#1qU*RVse;e<7rf2kL*{d%E z&7(84Xk45Bd&@{(Pc~cHxA9b>iPn*GMOZUsI@h;a z(U`ZM4xj+lH?knWW`IRqN=`5K@%O9ar~DELie|GoS8r<_lp#2XHg2u&euN{+rvLpq zqN8dl9-4vy^Uko!4^4}h-hp{&wXDDAR*h?8YDkX}(Z|2PfuV707lLO3RmUv)o;PGI zI1RzpNbH=bGPFmG8m#}iL9_62bakNT2ZTb2Fl8LAuoBIzalJEWx7j;*DE@KktT>() zxp(>O*u*65Fa45OlW#q};aPD%cc(`f^|JfNU3pL*m=oc$=i`ypv1{H(>5r&T40m18 z@_3fQ#xW};xOqgUq_?h#J+Gs7lbn;LeEm*;1O2Hw?zH^jRqY!TMe+R#lc)6;Jz1ID zPF$u^9q`?>J|67GUve(>j{o?<7+HTf0OeGQQoQY;7aBc;&84tq;E2aC zIxCZS5mnV^TinRAT*koxDUeRE`4L(y0B+4$ntXZAwHxSOJl<{GK+c24MzSQd&jrpnz#Ru9kRugehn0R1m{{te^HUt8tB&JT3=fA=i5Dy#Xi*Hx9<;QN#~ zRqNd3bd>Y!n8dWMi=|(U6Zo$Mei=9O>R*0Irr>HAV6|(P1)sr)-F7nm`laLYaaZ+~ zk8ZCiURm69AiJbXOh>!7l84X)f}Ml16t`e{VnX}cwE~y9pJ<2HLBzegu`=TI;K8`4 zEHtz5#lmFUhET2zqh%Xk9e^=c@yDyu($aVCtib~T@Fk|Tc^Gg!^Jv0hS~Dl1r>-uo z(k49ft~E*KKweRdpq*{gp@V&;n3YTUQ-zRXJPJ4>?>PFDa(J(x!Nw9qsgE9W1p&R_ z-a_h(=|vy>7wIh52x@%O{_E*#AnOLf`W<5IpZ?sXx2J%zt>R_dcq=m)_c-;37&x;J zEA(P`b(ae{2JcWj75%2R{wY z`2}7#vwQk%DlAViE^jI*K!mQ{$RU%JG9PdV3SSu+LZEU>MFqA?Wa@$&to!~>$;+2R zn6)gkkWonCmFgY$T0?Aj-W&B0%SXEB(;`6WWJ_7$c1E-})NR_)*@Ux^cedcGK)Hd-1qqTRe=c(=eoKOWu+U}ZaKDl*I5<(rswe3ur4@Q zGMn5e)g%7KJ+}4z{7#X0u`e&fdz2UcC>lRS$u~2z2?Li__z&9i~cHDq%v0l!iP2w(Y*Ou0ibXY$K&O zeZw+JzKM;yso_*$X5sqxuMU&5HEW1J?z2Wxa(gx7{O?y)=L8p2^&beWd!Fbi z|Cr>tLFHrm@yaP;p=`2)=lYcRw%3$8Y0)(QQVdF=DMh;u!|YpCew3!&pcAnB<)*q; z)Ye*jxVH^m5axK3*`TuEp|1S-<2cdL_+^IR`0ba7jbRv-P$@!4eA`;X=ur$4=CV*> zc&AvvQx6I|OqT=Ecf(pQT`G!#8|b$D<;$>k$8N5mN-8WM?*cRgVn~7p1B?dvhQ_3z zLmX**X672pp96u05q2Xaw>eD($HppJ{%$M`;~MIfq4JDLfxR=LaV;tj-*hD`7uAzL zecyq$iv!+Aum0sLPOkFB$mx2aM~n+2d#W$=_A)f}=@=Lt^77k(dmL)Y)Y_hsnbSEm z8SJoGcewGd^r@=?^FvzG@#Cl0&6YnVxojV_w5sOdcz@4qZO&fn&=~9)(KWz}9>cli zNpXv>Eb}+pCpLMV+woZ0{bGPaUC=M{MXIMdEy_r=Yw*e;NUKpn(t9kn+#tUgaf10! z$@U5ygH1dQ*uCPSqFgZI033@sJ={{-1n5q1JbjLYJW0BkLvKjTyuv53j7&0(q&`!**QI-& z+`uNvvH=(oT2DCnU}qZZD#-l4C>*pjY%|iEWUut8^=AAwA{S%2`o8E=OOMsfQ`by; zxnJ##-I+_I;uM1_FC>$}CB?bpx5<wUO$RV{yyGF|OW7T8(p_mZ|L z$8%9W<9&Aa`|N^iz3u9g$xfx^BiUM||-E`^#IIr1-}tH?YgkvWed1BJ+FF^;F4E zu8`sO5ywB@I?pJ7Dx2u-Ju@l(-Z-|PF0+6pQ=XL)>rB!O58&_K%8-*AgCW0KYt9>cU;j+T?Q>7ullix8EF+cR62o;hHSAEj z3CfZ(GELEZH5&&)>%>*tW!4ZiK~_md&GVtACN)P11Qe2Wdcv@tT^Qs}DCH|01y!dy zlP@2c|F%3gXOE}_HcM~_UKU}(0>K>yJZr+l{`B7S^WqV|TrezzKsO%;ffEwZz@6mb zQBF|41Dh2^o_9S%FTvK`n0`A`+;;>x8_l_!4ClWX-PfUJ`EkbG-x|FkS)~Yk9W2}Z zc9cWR^m6_$P?IoLMQ|+c@Se64o}ml4%M|zLFPc+wk_obchTeUYMO2aI@=Fv_a_=4< zr&_Ix@o$JfZ18pe-gU{-zc=%71{9TZne6*@p7_Rxy)HjCu1Z{e`HE{TDY-kf$l+U$ z=@mxuK?xQEhi3)P2928YXijCD9rqlfBaVHWvwL!}{1gypnUBYY29U?oqIf_iGKVivi9s`2xFqFx~y`Nm~Qm9mc zOA)eY2{jE&w@Nn1;WGRe&yC$rUQw~&`R@Fd%F8Nk5IF)!mMPQQ#KIRfTZB?p2bld_ zX%Z}Sf#l@ge)V1Z+O9C*!8vygZIy>~@HKp{2t?Twe? z1MX9&tnd_&BC@^?tGe+w)I26O;<8!YNRLhXvd2Vr|AAw9(#ZhYQ~r9SuN0TMwa&#QZ1 z0Vl+thAB$a)2I0;8o;d&Q>9IRHyZCujb`12yF zbNaa5yl7@Czvje{B3B$|{atKGD8N9a?tg7?DO3GGaXye>7@Dae78ueD*smc>6@+8D zfpe(UlGrlfmoOxQjWGS{N!v7YfWAPraVu(r0FVQvV~wtc(e&5R-Icgyu$i(c%xJ?= z0`prnj^U0lOQ9bp>aQoid>K5gy8S)_E2}Af3wBRMo{xngOD%=Ay&RF7E1RdWaIk~) zyba>rz~P5uS*c;zX0tabJ@)a*$$uIHp-vv3<%K)Rdi$cj*P_EpFK|u0qu%sXS1mKQ zpt^$Wsk>S9*jtk06W^~%yHWW*-znzt+;y$okwdjV$!hQPksV{aWoWMGg2+o}E5(-= zrdJ|wlhMU@{@QmSD2Mkxag*H(hpT&kVFp$Jxd(iguy!p#8 z`m0XldJrmkj0BkYOhcz4L?>~go(F9OAbPyGXWUULT*JwQA8o+R=N1N)o?Biak|esy6m5 z{r)ZPI{$KA<|wc6XK?G~j&qEi*Y5`1wRmj5Ma-|&njoYe!k%ELz@+9UW^+Xt7Q#jc zeKrBqz@!aKJ4`-hSz>ridhe*v8NU`9FD*m6j%}sAxh>fa?>EAEi@t zseNER^Zu_b_#X-i3XYEX>X`)2p^Da-Viu1=)QiK#U z-(@@b-wa+QeUx+Ye()_a3Kfz=x)z_sm8-_t01EG;NH!yuF80;gsmQXu&}{9s=*Msc zF>|3a(sA%!rq;wUhgj%0EUI|mgVtwE9}q4M&Rif7$kt}(wyK` zt2u~{)&sW`^X6!2rVut>-g#u07nb`pF)yI?hTAx&R({%x7lf=oW0wmA9O1O?_|#PI z4#If~bV(4SB;(ppj5)9ihOo2VaQX3wAS$ojxKT*9eGd5h?8@4;O!)uQJ$$%BHF+JB zYA8&K5_aYDZS?HTQS^P%u}{Da=BaWcIVT6^ZJT=sTYw{t6RN+_Jxu|;o3+Vfzo}!U ziob2rpVwMW@k=z4zyI(^UQY6q=!|U|Ti{h8{=?FnqNqyhxH36KYAbCyLZJ< zuZZ4eT?Mr*g%qM*MdgkRW1j{ZL669J`$6eU;isrzJ32^q?D(cP*Ll|c;_u&;5CFik z2VVPM0d9D!r=L}Kv55HsYZF1spFau|lU32o09?Ri0rcyd6B|J-!vTlqf`BUDOL-Nd zMg92&(ekF=8nfhqb99wS&lEy(>;rDjK6bphKV<&V=I_`YY7?Czv0abz1Z%Ye%WvG8 zKRT*vU!u-77?)q9z3ZUl0Ki?5h}~ZH)Mx5>IhAG)Jbk=Q zQd}%k|LOMA&+9%VE=#v4)||#nI+cCWPBcz%&Wa9Be(#lI;0?Tgn^Ka~+Vq8{Ep`4U z-EWhck)}->3yg*|%bVMm+8B@fKhxh${A1@Q`Yn9AlKJD2IWk&50p)j|iPy{9Zm=vB zS*g8g(`H$+o&94J%C&Zg`(#DZZW^l>Y<=q&+QZ!DT(S-Y{eJk83ZxKyo_vVMU^B_+ z-TCeCtG*YE??}0S1|6RJXN=%20)j`JjPY;;Oak=47?{Drh-=3D|L$h+T$ocLf) z8)8jO{>JTy@;@Lt-Lmf%?iVX_k|szg{A4*L;Y&X>Djv7G2HY^1Pheb z#I2`>qCOYkrOx6%Q;nW~LGZ7?qz8ODp;kAZ_O9&Oxm^+S%j$20>Q1PQx242Uk-Rxn z$z!}t?X?Ufn3X&%j$3d)^F{z+Vie5N#y)DI6v9_7l)c>dD%{*`fI7dS?8d3gR!gZX zYwA};CRZMB4KO;*`O$@^vF8Vvd`CiXfHa2Wpv)fnXT0+4BQC@Ir%S+};QtsJ-8nP- zz3M-QM)&R4@248D3Pl*wLa%Vx3|d?XPu7Xk8`c+O;v9>p6F{WBr_-$U6GwcjVJXA;~8G2HN`<6&k_Ldg2EEqJ3S=!%&L_v(e*p|jJk5EAvR z&_+96%me2(XFn#!;Do28r=!DuQ|grtqB2l=OwB-dgPU6@#l_6_uGPUu7ei!?3&HR8 z2fY^)4rfs0-Ti9@tB`T%SPD0uB8%4Q>JTWmpbEtY!vq*9igA&Vzvt_@fk1av%b*G@U01PlCaqm>ULPDJj2D#h?j57{o!+9Vs*5u5TkIId<;m09r8=5LA0? zJi38t`8;}reV+h{K(h-j0SJWq`sG`?5D9aZ|xaXIBmg0CA4GU;DEye#qZt$vVzGZh85#+m;$C)bWa`l1n?G9)MENt86+GL61`e`SMiPCd$`Xd zjX@)+1*on9GpJ3p7eGt-ydQi<(Dp=b4avH>tpaZZpVFRjYbXbV!R`0-6nxXbB||(G z!qxg48@c%SS{;2rg!4;;N78NdSFKa{-^rGwT~aCtk}8433vBd{m6a%rOTpYnmd98A zUQCzZ?E7Jy8?-|xsWQi?K$nzX=2yH*k*vl67y$}fTrF^_?=>{upw$WV8VX4=BFJor zMJDjrkF%^NPS_K2O5{@63HJ;;^U~gZ`#^E~2>UqjxLl!M1XHNqgP%6w`)$Cb^NFut z&tlGXM+`dKcUVloQ7n5)3#K+MN8r|=2drOrfxN&k@qw3DZ4fy65UHz+Q`6IfKQ1+0 z1B@0(<5dc@G2Br8sHh=|U!b|(x*MKfCzf1Y zT~mggz8XTiS8c=MwF{R(t9Ig5>lj#E?M24YPRTSZt>4g~X=!x3IOg z#gc!6(G(K5LJ}w>(OX3vDw4`p57WG==q?v6W+uu5B>0(5PzOpXY8eJ{Ck7}#YZNNYYFZnbW z`AFsNdH9-NQCoMhak6M)$xY`D;hHdcQvb+90I=OqI2&`Y@V$J*SoL`_8(m1Z-uoBu z7$9`Jzm1Slg#T-5(~Tp19NQu2F&GsAQQ}twe7f(rP@7{s*gWX+P*Z~N<9GB8EL9E8 zDvo21g1{CC?6*Xzy|zh^(S3iZMEKQUY0!F;NilfsC=M{D$o;N7=y|X{mqH4`fvOY$ zU|1sSorHAJBtib5e|8~Mf%Panp1@*K=yW(p8$B)kK0|}k*1Vr%>%&;c3NdI7_PfKo z5%mYd9gPS9?Zc}xr?|Px!J30c0n{rg708;w`u?Xmg_l8JUmpo`o>GBL_igNJcor!~ zF-kx|)$lbA0DwI+KkNbs>I;7Y4|Qt+U?bqY9BQFNm$P$#UWpnF;a!lHr)#iJVYaAB zQQ*0`f$gLH?;IKj_!T6yTPhy$VO7|5mftbpAL#E(q4*G}~<-L_S$DnSKVmefx3+GFH%?|kITKlPn z@_dU^7GPt;oKPx=p>pLJUTpZ-<4C#G{K)xUP)<0OSY@XE@d-Ud*|%5+>B=*vz^`}WqEJE(>^j}M2d3WXC4 zyugXCzl0iN1|Fb}dxL5Q$w@+FhbAYj3l*OI6YUGR1l-L(Kgl+%3slC_OLS(_{D|QA>3Y!J6S?64E^g@Nr67VMPXZ$no@I`^#u3q!DG!@f+*tOoQ z!LSMlwA;NeSGIohfdjA773p8Lj`{ifD+*8XkX_Z*&TJh+X{^ASxAs`)G(>#xX|(Kn zS2E=V{cy;%62hWjerPS~laayUZE)<#MnySccn!7}<_i(oyX2EYwMDyNv+{jwrTmM% zcCUtno^k6};+Wj}-~SgL+y7oM_+QJ^e|`4s!QIc=iZHyu&WlsLKr1GN#`_GRB^wZ_ zF!Dpe9)NHvL@-bTG?pX*dv4RmT>)7;V)Wr9&5JqLB21or{QbfL%3qjI<@(;CzvuJY zCAiiYh}p%2gDtoKKHLX{0a_3<81P(IQ3;8R^oiKvlJS)U+9@a&AL8OU;}2oOLY8*| zuGy0f^3T(!tE2Cw24^1niBE_ymVQjkzcZj`;2LzM*4yH=kg1ie&b%LKLg^_f7)>(m zpUpo>#;=GQ|Kr$)R)y1%I2AsjVC95}(D56hD-7_dpFD|O>fUf7yYApFBBIx;PcB^I z7ir(^btN@3E9=v4B2=)r^v9?SG`?CEr0G6N6*N%h2#=DWyr;&H5Q)vXO)9mOk#zPc zD^i*EwCrNos?W(uE_}R4PEJHeLbP0J`0yN&GQ}g?%;r&An{3UPltUgwB4k9tQpDf9 z&yY2b{!!{{zk!74h1CO?h{Aq&W!C{0==%T~3Z^N=Xu8InapU*A3)%-f4d|EG%3Y|V z3^faji>bqyi14uF;z_@GvRnG!15#jOtPbACui2~qrm@GY|mVu+jGQ-`WJv+ygQ~=pX1Nj|HM=R#8H^=pWP43 zQt=Jw)wbVfICt*b_$zHpjX+TGA){d;_ubgo4aP_p{2oxJiQgQ!fTy45j1uWBa4Hld zqod}nQ~$^BnyNO4CFH#o1yN-! zdRFl~xxnD^WFrT9TfanPYsba?+<-ykGL$BC*kV{&tFcc@&~E~MgFu4t(8^cJL2<>l zo}*p#rMp|0le1y67Z_SojKC?hTFAI4@_3FS0%|P+&AS`ZR#+ohO@gp~sqDL0%Ip7! zw)YO}xqtuv5lNCHsf?1YB%wl9l9o`ZBw496NRos~G&Bh%BweLaGRi0+BuR0emGj2`ZV^OZ)P87yKD|92M!b93T9^I_dXaxwdbf`k?R<526JRm+wX*gz*^ znwI)_&4Z(}SA7|LGuh{J{Hh&HO);mZz}RA&_VVi1eKI46Lol&AV1IUr`a#wa-u@v^ zYprc*6!_M4Z{ApbNv89F-}47*KBp~!d7`fwhszoJg1hg&Bi$`|w|qnHO60o0dLyUB z2_dvDjzXhE7DUyavL8H3ZK7wu^{Vhs=2~)9WD!1OED+{qUx@=VeOcg-_ltL>p=*VE zeVvR6Q_;468(1SKE*4_J1jB4gNR+4JQR&a>8 zfEe!OWiBbk5K?2XXt~=K`sZqsD5JNy%hLwGdw09w>(8IE;ve>%S}}n*+f4;m(E`7k zESyT|!ynO?wYIkYeYa3e=yEBH`QU72xHp7R&$2#seMjdEV=HthW0tG!@_3MdW z@jFP;IbIMkFS~&r5HEt&S88Y-DMufrIwEzQk3lhi>(l-;Zy|3Z_8*mZU;;c}Wj>6E)Trtl( z|K&$NQi2RUUkzCAiJ0tw^+{e*%F^S#1xEL{2@_N^oGU(!nLN3Tm4rr!`_i^1Z<4ll zn}5NqMj;ayw#y`tZ5JoU*KHX<)0j?*h~f)c-F=d&!LGDqzb5(C zV@NZIQl;`oyW%{>(F@n?^@ZAU66u|{a%{7>q0d$=h`zVip?x)v?|*D5!oJ&KRlPYQ z_yBNT>zvSauKt0?>qb%;F3$F?D0{yg0rrWh!o{ufqaA6VZoH<~ux#nwB>*!XmYI?j z4bnq~EdG*=Ez>>t1)klp0xJeX^yQxHUQ9^+`~>AZw;Jfr#bu4(9?w<$fgZ=_+zQ%@ zGd0J@PMY)`V^R7liajpNFNkya95B5&7cfZqdN#0g9bBEw+XmFEb&Jk89R;3AKMk367`m z(N^ImPD9HMrUhHgXHTCvAPrkvewb#8tVj=6C_(AZc~aGh3m?b@*|Hw?q=VkTIl4*UCN=fE{b^fom`&(BcMatduZTZ1Br zN(g)nio^J;m!2(eA2lmbquh_w2jx}a7mhkRI}5OjN*>PB`2A<7y=MRpUb*6@fz=aW zxcoClU}T&mqt4DdJEpSG2cQYE=<{<$AAboPTWr<@vt=Q&u0HX*?=>>o5Gzl@0{HHM zvCS(!eEG6rsorbuZVs0kZgDP(!v)3)W|*n5KCL}B+5oSnU+)}i;dw@^*PIp%)^gq^#YIkhDgi&TClR$h%YNjpY zPXy!h@=qG&>Idgn)F=4(cg;0XEGm{7I`kK%2(;ayL*sE0++RML(}SEGA%cw7gKFqt zV&cqo&os&ht%9E_ubqCTdbC{ls1d>VY?NgUp+S7v2+657Rwm@bMjx;$!DZdG@AP#> z_6rlVUErpq7nENZc~=-`0|2(qtu|2W;H9WY-{Gpj+^7J7E*NKmYJqYreWW4F*Ox;D z&hpkhCY3~_^yx3l75ex=v(UyvGzJeHJ)l1zE8q_mZZ|;grJ`??90TxrdDrDAU7DqFRwJpx0V#e~|^X=UxGREVV=BUh= z(az3C^C%p)1~|7fSIMQfU$Iwn#@g#~vgFBOKyHS3}2j~Ibhlq?F$ci#oGz#&^;Bo}L%t*n1xJ_|NCrG?E&8^THG zLT~OVcAtK*tzhk=Ou`-oQL^ZEXZCxy=}k@e1C`x#VYJp326A*R%l^r|_UXyVxV0fG zhk6=C%<8wZaeOmR^WYt4*I93=rxRjhwF0{WyaU&q$jZ_PGnjKKbmLN;rCdVX4WkQM zQ5On<1(l~xBY8XueTh(&D+qr%vasizB=|-eMjTN+Bx8IZ_A_TFn`0A^>$A4$TuM6L z!f8b?P$7;x#3g7Bo0w^-X1YjsZIChscz2G%DzV7in<9%gJ3=SNHbzR!&-v z;bL{ldpF8l>#Ove=83&b|AsHU$%f5*yoT!zZn=}+i8Z5JXAoy|wu&1z+3_$pJW+=U zu5$$c7t>ePJ9b>RKH2u|+o)CHMq{?Q>ORS!ucdxws18vYX z=#2pD@KOauwdYk%>M;}V&1hX_p(@PA3Xm|yWH$n|i|I~v`0 zr_Q2;qFqA|VETP;0-vzvaPWJ|)k|akOir90+BR5?qBl(UIlQ5#sm0FH%PYs@G`4xO z!y9+;`=_3-_kAAcasBJf{tY!SOiPkOgU!~l$k#p$6dGXqx2u;gXRW+yt09X8PVB8W z2towo1Rw$?CDiKF&88~uw8Bf@yBseo^Vw~XdKp7M7L3`9(_VfGYmLldsLtAUF)?vD zHT%j*(M5(RBiM$|&a7Nu@vogmGA9?E(EBUCp$2v7^WuckntPU%Qgs|D=&A8sNWx<3 zWbLT&?}b<}KfgbmiTQ(U0Y{Ybe%rd`D{XBhVbLzhwaUB4FmxvKCcMDDqVf}-UN2>~ zY-#=Zv+0yCW_3#s{rLX9zP-=$!e(*gEYLI7{)C7?dY51n(iDlW-HVG;P0w#vVXT&5-zH?xTbN#L% z#Sjw2;x%A+cet~50@iBQCogDyzS*`=wY%iwmwoBhC&Au{?wEo>&jiQckg)l6Ay#A= z3*z_hp^!PfRXd#CRNA7B4`2#%d};!gGDDfANEn^8QFdG-GkyB>6=N1x zjA$Nn%zw72>Lt7LPR88!_ykko=RYnce+QQ*Dm^_i)aJ>tu886^Uv6nmGZee~;+b_p zDiVh-VKp>OJE+JbQ&}|41OAI9@Q=SUI-k*iSI9rXwf&4p0C)FCbB&BF&=G zryx$=>!~}Rb5M)jIN9B6j~p^p;Tox-egKGJR=elJ092xWN%yH>nc|^P%D$M-0nrH* zkL(^|!#J^#dI1a?!SE)pNn4j1yJtjMyTqYQ{)|^+_bkia0!0p@YoDz%Rr?jQ|MIom z`G)|z%CU#HtQ{aJX@A+v5%3Etn%O=)t+#%9;j%1TX;vW3t`NIbanX`pF6zFJi00Ry zCsX_%THt)x({Yc&jLoCtpFXc0KNCsJzk1pWtf{+}j5U6LL4afi{QmGFZ`{-Y52!IZ z3CHlh%>=lU66@GgcaF<;-qy3f+Zgmc4G7X5wDeH+sZ;Kjn_moW88EtXJj8=e{sJ}l zIXt&>ld@&6*C;SCU^HERC=I+1FIAL`xoa0v_$*hLm0pMs*{&zHN6c5aJ_Woi>+ZAd zxT*3^aeHi9Dek^h=iVli!DiCd=0|lDLfavo(`Vs;Ij5`pNM69Qr}XN%+KT3tkO{L+ zomz%{X^Y&_^LE#0sVOst%F60AcPn+|QZk1RRJ6CT5ikS5ZK2?P2k*p%bkRSQ6-Ci_dCz7F zQ;?Ih-zQM{l9RxOFnbTtGJn2u#h+(B?m3jmoA#(TY}`UarTyg5`{?JkBxwKvGJTq0 zcg}$;mxZSCcSc~BZdFGwkc2KD+7GU4@!lcAjPAqw4YvQFTRUNUnqf`2guKDX)6RMs zGzr&V=gSCg3Ip{M*S(ps%eH; z!rUC757$|Rcec}7c5zvNDPb~F$%$8{8O`5o@ev$xvh0{`az?fJ&zf2yUaZ-W_o<|n zb54N#7+`Yw{#)ZqvR1IZ6pjbgNl%hn)=Y2c&q{tiz3AeK37i$$2_AHxDvr-{-S)Yd z%-JtqVU;}2XjgREx+IHVoM7wnmeKbB2@;m@!gDh|S~)X}Zu!{SW>`ms)+s)@U*=Jd zkyx3^%HvDwN8k97b}{pDkWC&=tl^=d&;2^|wzr!d)~q87YUL%*5%OEUtQQigNCXt< z%<1uwE&3XNqe|Y=w4gG6?=!=*eZk(V97?lc9vC^x^$`5Mb9K^yCOiK(=oi{mjSYIv z-u*pSTUba|DVQCWy^BMKUzNv*sr%=l?tJ>xdcJ!|>z>Pdu>PepQ5oO_^Mw~S`i}a^ zH@|-V)cLR&C!V>g-5G0NcvlQ6pV4Pq(_fwXH*bW^0QPg<&TRj1J~f>PNW+)9#cHr! ze6M}*NVjg`Som;ikjjF@Py7)eI^O#6rYgvZ*zihHF^viy({MTgybLp_s~xL^D;`x` zT&fI%78Lq)ZqovOYu>TP?%&J|9NA5fXV@3`kEQ1vn0cmT`0oI{t?QbG?NOMrEA0gF zP;sG-G>9wKZDwjf`WI!bY3-22Os>14`Xy6p1vtv%;3z=czge-nmQKsMYmg%68ddL(P#Ux{urk2!i`p8|E{@N zPF{ZLm$_wuPib6rPCRVmE8lsfR5>;rV!K4m`7Xkv- z)bE@-oBZ(U>rr2)XumQj{lXf0QQ073uz4*VSGxXnFsU8RblY@a_4T>BRVV zR*lQ#juS>{>$V)=hU9TO`_tcH2Q=q1Y-V`$)U6#d7rTB7KT>3Lak#s@w1(!S&9rK!j0$|Mg0Qo&8^(`%Huc#+j zWc~$ySKGynvjoD6rP{v$Ox#A#&aR^5o~ga(4qug)ZxeSTdG-7EOBdMJ(j=7k6-`i2 z_SvawC|GhE9}k<7{c6y#ghLxS*)xVuznd{6_J-#L&x?pftZ!4Q~Ju3#KZe|BII3;e;qe-2%(^_oN#M{IPMzh8`p`Om`)yzV&Xl$Dvr&3hQc z17UC1h4h!z=rQaftcHz2KxlpD>?v_d7~8{GSLb;|u;t>#eO8J!FACZbYJcW#bh@PD zOYrH!jGJF!r6t|Jkv+SzP3T zDn3SFTSirQ|M~%r`>1lrj!$rz-U?H}tUKpYQyqCSZC~CZYX)MKP}J)nmBZzN zm#4dXJDcY3^5aF~KlJrC_f(AhcK_P1*V}v^-$uvA7)+#Jz0T;DfdE`8Zb$5P-~Ksg zcJ74>!u>cS>A~H*@44c1Mt8*Snk*81s=fXk9>n2>W~r8sIwhKV?w%H3K1Js}m7?6- z>)2pPXu93dRehJkyXmVKpc!*Klu9gYcxuFD`DVXfv2XEL5G@Y2(+E!~0veBwj_xZv z5jKy`u?-gpb^=TwheK?44XM-%D-=5g^YEysjhi=*NQoc#r@*VN*~)3L7BP@orA3<` z&ieI|K?+k?A>$STUieQ**AW$=y-QUR?{E3QvvJ~K7czw4kB_CLG0E}vR>*oV9M|%+ zc}1xtC}=$&eed>tW#L5*c4Pd>CBU)65g#;sY5h+}ONEd$HA>0_VE=~>-MFD2Q&R1r zb7AUh6n7*WbCI;9KBb-XT51x1Av|0(Qh6m3@L6jdDXb|s+Ja6{X1lt$%z1vE6~eOH z^Tk~KU`S_PMuzc!F$=+i4veze&H(yWa_=Jx7cClm;kitdk>%df*RMx9Zw2wnTZU=X za9LSV>)lvAPqT+cjq#z8a%$C-QzuS5YViS1wLW>E#A(0^pYZ$oOz(YWln#jVnuxd6 z!TF09E&5J2ul&0H%=c8(#8yagyga%i>6y3!Z;1w;u9jznn{W^lVz2lgC6LS3LvQh3 zqqh}_vZKD%Yb!syXR2AMe>MXNSN)re@7pycaVu9Cb3ymz5&f-eBu32e;WQOdtVr2Q zqrxm|&h|6QvcvyIR7?;6uvS z#0}lt#yqKpK0C_x-vE=}tkzNEf+Vv%fMSF=wQINPyiyb<*8c`!zi&1*)pCvYFgI!s zpiy8PPjX7Oy(l_@ec3!$UDK~^y|RD?+;JXsbR6|tn$v5#-KE7&PHErFZjTC9I-#jM zIMPVi(R0r5G=?0r(G?#6QH`rBw9!I=lP(Z2mf}!=tlr7_E$M{K|6{0!G%{ zs$3Per>n=-Nyb)C=Oq^JDQ~>a_GO$%L>k2nZjf4jVUP~wzRYNt`r@3U$O$iK$2|Ug z`?GGj)q+F$nHBlHLiCKSN{ugIJfXIW{mE!+((V#vRX0LuR_BX{hoqL8C>uhU#&E82%<iz08)j$B(MW+ zSipq7(6@~E0j;Kz?B$p4$(h3oOF84f%wwfv(BcP`m2u5I&TV~EWeCE94hPAioO12G zTVX#jG5An6;Vaxrv^fCjK?N{eDr&y`cT#WIW05)fW(IttvNFwt#UEcrBz#~?zGLiz zl>uypYQfKgZ7t;96CgI@qoxJ-9R%h8AgyR)aT6&k7ngq?t8w6PbTuy?)VHLNfM02A z%HE%JZIvY@ef+H+58eK~FGAqrL*vUS{ed+~uaBr_ zhAhxjourB!iU?!vP^wD0;6F2YwDT(ll5^GRq2+vCL;0( zGw^=HxTW!kT@F4DPFxgYwS0NG)A`qo^ZBKa*DI8DTegCIJ$PVYnn}`uF3{S4ro2;r zi;U{`l+0^-eZWlS2|Ktp0O|(h3O$x;jqj+1VQ>fTPcxdtXJk}gSvlBjlF#pe>j~y{ z3j^B+k4`%adVDSZ>5CUv$TWF;cGm3KM<37Zb9~I`li>l+@X#}Fe}8`xnHXuOg`Z`9 z2DD}A==t+Aq=$(1o)cEL)*Je=+5#uejJP|vu7H#(-kf~XHMiF9T@vf%u5*rnv#Cf2 z&uan_)p<4<`}eC1D*FBmUv$z23_RN+bLaf|kgIfajGzUP)}Y;MMD)+cG!ixb$Q5Gp9P*Ic;0y+_&F+ch0|$+aFj* z$m@`p03gCbL=Ftoc>Ars*XV~wWJv>QcL^YYQ;B$moLtJ7mCs+iKuU+m9HAj}d7*)y zuzH@#etw|XLw*1brSI)caUX&fGhcf!0iwD|cXiBWv;@beNI* z1du#5G*mcC<+Xd?bdg89tjKZKRrc^0Ve@ z5Gs!A5U;@-)&~bq&sHx}=>t^Wd~VuiZLcqnBZz6SUP_fdt;#c~mC7VpKwdc8fa zq;TrmwT{5M7T5qjAkGiMGNwA7qw#T?nCk6^0$*z6-Hn_XLU=+fK*2Z^(NzcIavXey) zk$d;5u1tIF_iluA%{h`}QY|lYfD`P&V;0=n+LWwzrQOKh2U?vEDmhpp`jH$>@2-g-S)~Lj2=H zKL#!!7^WcSuc5A+>H6N;!_r?fIQ>5l&t87Gjo8S2&W2&YHC zQQ+LLNS4DmVGLLP;6YdOv3+IN&+*$tv*{h}zC`jOHJ7m0K+zCXFsd;qQwfdwx-YOp z9%@|b6o!cedm9>=TJ@@#@ zp~nP{E^7J8m4draC;mGF`}JGv>DfhTJ8ih+llMIzcZ0WLUEDviC1~Hihg4ch(;cB| z&@$2F9=PMIwVmjd?F<`T)$gyJd_>43nK*Hv-dhkzw`MsmQcQ7$*$)jZuj5AXQ33voHfxxAQci&k1 z=;g}*8iAWP4b+a#PyZJfdp4{z+6EpTaGaOo3o znSps4f(>EvxbODv$Vi4>w;|(EcmJi+zXu_Y@$~SlnKFJFYbGD*EB*^I&7-v2D&0U{ z(W4zwKg?b|c=Dg0T{GT&thu!C*kh0_`chaI-|4sA^AxgH)0OK%t{i(u(6YzHZdkik zxY%)9K@y!y9mjz_8+MV6I$egww98$@(^ERTadR@~5+*U(dd-yy<&8OZ8qbsEF17K_ z=NcKkIs9kV=RsoX68i>AMtpCO5%u24lw6R~7n%hTxPXH!}z*&>lV=sESQ)WsqdSHNn|K_U4t>9 zD$-7i|2v=y*phR!rNo*c#7L4X8XA~GuoBNQn&Ri(1m5u`OweFDIlW~UFcd*1c4lC^ zOOzKJMANzUblsLaD469El-5kq(D0zrg}BkP+R0gwst|e?WOtf-c@LYm|G6^^8#;6= zKJW~FbBb|N3emganhTN4Y|G7dfYJLir9_+U9nRZ5-5xW#>HA^6Awi&{X8*V|zPj-2 z``_sE6b^iTLh)t2IhgF7Z@$;~WG2DFK4F2t)_3CwZEDh?0Q^aSq2w6@{}cQFgt#u0 zGS}v+0LrJfh+>KcSF@B z#9HM<>ne8*nV_LDS>E~2BM2-fmRv>#Pof7!AAG`xiBlh5UZf$S`8>|Rn*kz0dK$8Z zqbDgbP9_jUHFs?brtdIQrNZSVf&1?%@{ocO;K2b|B=*<0gW`K_&O@~Vl-s0A(? zPtcY6Z?ZdQtJ9A;;@|Hywi36uD~-0Sxm`#voi=l>-Qhk#$~ z($U&;JB*6Wp*bb1WLZ<}XOD(|zCPGl<#JAOE8`cc9>&1IBlSt8AeFD*pSO$)xQR7K z&&B|TesY_yug3C=AMcoB!s2Ev>H91)DvG4P!|W)1|524g!nxQ9%%P@E(0$J*Q&c<} zJaxWEbx5>(O!m?F%3l}~VpNR}+654`p4b0@?tbCIWYQm*uQxqJWQ!eU_?PnfZ!CPz zkB({>g`7OuPeLO7tX0Y#NH`jH=TZvW6BYI}!B>FTC-1T0cV@54k@DHqgG4#SXC!%& zZ7Wf{h#ws0xW0Z64?;nF#(Vy(AH zg48>wEZeG)QuVd_<^^=D?C@K2>n$i2u#PHko172PWQCb+1NhUKP zNRIkaIr47|f3IY2pJLluJVj-WsN^YeF$2x|nmIAG;h9a2$Z4edhbl$x+*v&MlX);W zK*x@vBUWXLB06Q}&Q|@VBxdyCtwj*O-`3YZHFoxyn>XseY3}ShC&g*VmBc~4=SamN z9IjpR&#c}SVa#kLg1^n@iiIde&NEUTHqiNHgf;>AM_gkKm4ZfM*r`d z3a$SC{`>#)HmYsKyYi&R3D1K67SqEVTy*C#{@9 z;350707hN}xp_@1Rm`sXfRzts{qNqrtE&A(o%8&;9hz>vGpA3()W>kGJy+nY+n(kQ zp5hnFD_xoI9aiEbADF}pIC=V}QcjBB|Ad&SUiGRAF*)X_tK6D``w!Vk{{hVl;G;5m zKymsfK(BLhlEqdm1!&@#1MlxXVbHguhAOX}c^+H*H%( zeg)M5gd(UP3GaSBf4pWg$~}-p-H{JF5`<8*v19v*i8%~sa13t|f@$f7*z!jDK(mDl z2M!o8Wws%S-K(9P{!L0EC@}f+{+z8}?02Ox5pRu*r|Pq{w%!j)`DfH*wKo6l+qV6s z!$2>|LL^M~{Aa^F~QVyv`IweRlTv)!97kEt@ud_@brv*2^Gfw(85w z9et_78LrBgC2*-RL-_a4CjKq12rcj5&yZRV)kjg+_grr7CguUhO!kC44FGLvs+|Jc z9^t^CqBZ=oprD{Z-1XKYYVz}T$Ts;cQ+Cn(9X$(+3Pdq^=GF;@+ETkq zxThF-^P>9o?>}kcsVzP}RDJ^AUh@=U9sSi)Iq!^&jR!bC8+eFIoPrQj7XTa(mLt=@ z69+Y^`!dKOpFHJ4829GE`59ViIENJgT3WQ4F;L@8nW_ABbJjeZ&L<|tK6t)ZDm%ZR zU^^VG(nW{wyTUrJs;WY$Fgt&#JY%C(Hi~83!|Shw-#GM`GW5lZcIGQWY`4x?4)E8n z?Q;qbKS_f@LV$hK!=nqY8&i5gu6X`2V&6~@0HPFibacQp(RWXXCw6z@vI~(r?z=gk zW@(W5JsijF4sy^BGJs~ap*16-%~5(A_%s)R({O&_^f{VA5occ*2ZKD~RRrkYx0)=kLa-Q8>6cmpD!PYstG zp&%s{6CW?c?4i7>E!Y;HrskW@4b?@J45iHVVh7Uzh_K2FZ)64lFE{ii$%*koV!&DO zKE%J}jl(4)${W#6!+PdMtcqZ>?=B(UJ}~75LY``PpS7p?Ql;XCL}I=iR^P&EoIY*Z z;Y)3_`=rJ(qkz9FJbbkXXdmp=rAr4zohm3;dA2Gs-^N7IVK)cu;X9jjJf7b;w+M2< z(+-!v#T6C%zdenV1Nb;q^%y%-?FFuFsWa&ZmqDNaehw+S?aB^$`{ zSTO;+;HLPQm^H$(j0t3l_KYm9+B+UPHJok?3Y)?T3TAcs>Gj{)^ImV&Mpq)@3Cy88 ztZC3)c6Cd(d}9L@Y-WuUPoJjMVo9=KoQ_qloLdIdxE3F}&%xqhqC4woSXsr49L_C5 zEkii&aM?YG+AwuF>WZvxFcvH%=MaZ#_w`PENU)aY%W2_N2P|-DVNslKoISx|6!!pI zkpbL$W(oWZ<6=!2*M2iwkI?nh`SVsP(nadyNfz6qfbMnUe?FBP!VDf)RHWIc&zw1v zV-l5ll!AjvyW&SL11TH1WNkrz@NW<>9pXZ_;doNQn^JvPSUERv$)+t^b}%ET`vTFk z=EaLr(&GO4=e%7OhuuwUs9bRAXC_&2R}Ynz-v95vFDojPrNmI++>+A5b+GS}9;+8) z0J(16>2DDsCxARTAI2k^lJ3`gAkC>TJ^_PcQ?X}Lydz8A0_=svZe}pgd z{ZS1^_a}tlvNd4@Vvd`|zhwHJ@ud;e+RMu;Wx+cTsq0E1H)E>dbC-Y;(WHR3B%wNM zX_*)J8{n+r3tu8(;84f&b~46*)p|!4UMoGPOidxB-Coa^yN|T)(xri7Vtk)zFjr`h zT_610Z&=OL+5q^MoM#@dPfUkz%j+Mbs>;-%a{EknDr+iQst@nF>cfHs3;2Ls=F0Kq zjtk#<=bu}+&CjoB&J3?!ey1P}=3Tl}NRy49{S6(_Wrz4tp{zv>dymfNs7ebgVUe-qsOrxrB|gb<`0IPQhf0z~{J;NtwEkoFY}xYV zNKWrwb9U^|d)yi6 zizScK>y?@(>OzHKjf+qN8lNjDc$GfHoe6E*h-Q#dI34NH#u1}b+yDN>4N~Yht<(?t zR22b55%|O%Fk#hoGbx9h=f1Y8onB94qQ;?jCOhqCU2?+1A- z^Vyi1kx{}qrlb3)ckfBEz1SV;}V<9&_bKI*W1{;8H? zP5M`i-ZnHCb#F%0VB8iAs#2r~zJyhF&r$o-Y<$3~N+K@{F`tR|uY1+?GPP1NlpA=h z%cmZ3%G0WDAAk$%Z^? zFMj&;DK6dU7?4qA#M`GO#?;CGbQ_SDo4Xv13yLD%KkI4Z$G+eCO4B&ZaWu8C09y$_ zfq)_j#XSj&1=p_GY1jt(ja4leF3bVx9z=ijT6s~<;iE7$Z(j5f(HA%)rAO13LxYYR zxULI){M^-7R@Bf&u{3@L9L}XntKqw~Xc?3e<-D^=B6bP%`JEgQiKYT`}>x}h+P z_81Ok$a?AgGhWffR=O;w$ITBQ_6xeqKOZZc>gwzq^iPOJ6-qb`mj05mc% z`N5>1*&>%=gI%qVyeDZ;)<}!6r(hufWM;PsT2ZF;uGd#G`|a$lc?C}TpskgQYEMx` zzRB#peaOfMNIq#dsQQp0;6%VoHuI@F2A}hr#%g8hmj1UfI+D*_xR9RMj(BDB45Hod zQzG>pr;k^%Ko(Ncv%lsWd#gu~?tH5QxW0V;EE?A@zMMAhpW;JJ@810asONIHc;Uif zpM&%w@dpo9*VGjI-!iRGfHT3!%%EY($bEfhUa~(M(MQs08zAc#8F3V+ZXM{`ySK;dYfIG+V##vjh#r*#Co22C zbgPY;%(86RtZ)X%nUzIXHO7x8$A&%=o=aH>1r9n+j=?rlPb7tvl_I~GjF0kMt|kK{ z`jh8|YbyQBuEZH;n8>c>oO? z#EvU)1<0=~oIBD*6OH-q>rGFdJ`LX7BOo!9(xAey+i{B0$bP?v(bj{MvON5uc<4_K zjWEj^xo@3qFKWYxA<+*2*)c0(IJREbM?P5?$(BwfKl9u*&5wP)szeQmKBFmBE7SXS zg_a)t1M_fW=DgtAnvzIC7%5TmRIK;9<=YnRv6#+^E5IwxCnM>;tALq0ou|KG?VNo2 z9=tcqz-r~nS+tH<41W7Y{8#8-O{bw|D&-(DX>hcRv~OWfWa&wZJkAVujDr*jPmL68~-92|7$uG4vk1d(IgsFMv1i{V#r6ew*W z9r)%@fFZBY!`8Q)w2ZAF6$>6;S{mC?_tH!XQ^U@|w2F!MZBN>8cX4o2KznGaNGl{8 z6644`xU;hpx&#o)xN}A2Ie0dFzjiG#2c6MD9@q_?c1Yv_fr{W zVs^yjSZd#PUDNssQQKc+t;tViux)(`f*+`>%$3(-0W%7F0)Q9Ufg1*C^4vGkedq# z(5tkEnj!!f#6b_+SImOqc`JLO{!7Z*MW`jS1DXy23V-+EM?14iQx$3dNXeBO?hulA z=8S7@_411zsk74r3JiQsVx2Wdj#71tuvD9D8#F3DsKhBYzQNlsaCQCK^@|y&$QbXD zpCqchvgNPLxANc$ZHV`1=;)J#aHb*Qa}_NFZswO^drSt87%@QEc%!1LZa<%})ck?1 zXCor|R)6hkjW4{BAV^ZOvtQ-7^v^P<;_gu+M_6l5tAn@XR=c_Ny(pVuJ)NJq@9O|h z&k2JnaiJVOe7L@>nW<^er=?0#K|$IscV(21#0)sbFdxH!26rqoAW2bVOZnEwtDX>U z=C;w6?#HfQw?F+9$;iUlod>Q7&b|BZ>-e=gpKAscluoviM|fO66+wg29p-G$Q}H%;ZM zS4gDg4lXpI&pLeAuD0(WbN%pRHN}K9-%1O5R9yd!YGBi*T%e5vAIAhU(bx^8F}~4r zaFNkuR10;5Lz+ogjEci&P3K!!iqqA^1agM=SUbk&@vY}w?#cYlVTt(xuuP)28|_;+ zZ~FH33-hk(uT&H%l#%fd@dKj==4crwx|1qCuIQQT>sI}v_ZAJ8DAoBwkk7HgCDfYj zR~N2!>+^g>(4_5BuRhjxcTH6rx!{n7--_G{XR)jHXRF-v$b22E+gm z;z&V;_5Ihvhc(GlHzWg8XqeGJjvG66DM4I3e~ZkkpsN1QGzV=g$w$ ziD(&}>3dNUFs0Mjwb*;Z`t|ou*cuh?@bjB)m=4WQ=^i>&2J92r62Xd(tE#3>nUZ(m zf{aW!a)Ui4ll1!ouPyzAi z^c^-V5i$l#0-2blWlCj>oQvbpcH19t7ASnQ#*I4-ke8-LsfQMTMni78rS-tOFSi45 zd^IVXj^4^VFg0lBi2shn%1q`NGIJ&!pIvu@aNXH~*9qNy_-^L(>2p3g$C=Evu8l)> zFfl8NmO1*$cE`fe5{ns-DM^X7C+ZE<`d5n4Xy(AleTF?*j*~6|aXc<*m#zo+ z@%q{L=%em@^^EKD4#G_@t5dhu%96VcDuh&u--hf`R%QK{wo82>6s2S^A2FX zPm^pufBp)cjg5l7oKXt%{4R~VJ`7t@ zf*b;)hflA#_qw>w3n$t3 zPnB#REn{w&dU|;1Qp0p!-nmm`o;4l=ld3)U>CJ;c zkZpYut5r-?JT#uc_}`WG<}xXdl~$p@Ws@zVpRJacz~se#`mQ3NIy1cqyV8_;Mx~vA zO01K3|K0bxKa|cO^i;(>ylWQ^udUGjx^(S5`uV>LLNnCdg`Vs-tmBrbac}xO{qUo0 z&G5)Y1jV=QG)R5K_4xX=p1S&7u9UlXcRg=vSs>fdJNm~ z--n#+dzzv5F-x`3NR9BtUDYp7F*g4LJ!)N!R?_T1d(}8|ic_m??eiqY2o%_e|E~fK@%DpP-M@W1f}<3mR7?4$FbH0>NaXJ$AUHGu zJkI8Rer@Ax)3xyj&tRWihTC7vR187rtg*d9qT~;aKXGN6%iROamVqU2L{g$PM<6B-evlG;#|`W&ojP@>_vz*s z>6++ohOJlMWOg&}pP$nUNon&zyB4`jm&&ViDkB(A4W75SZ+5@q$pFFZQbR)#i7I$h z3BO!Bel8#KQB1|;8@>V;&z-{>x!{h@7S#=1{RaHsQhD$|vf~BY7e{DDRTF{*W1TUK zXLYNe2V=GP95)*j#E(VX@Z?(@r*pBWRP$Cz$>Z)Rp2L3WL!3kz)Zjh6;L2NligDUj zhwh-!j4PPTK~;B9?)5l8>3R#*Z~f&F^>&VA*zYl6CG!zfq@yU_45z|e`*P!LuW_4k z^zR+T?eMI+I-$ggsCmq)XH1)h0%;;zZzZK3?k@VG!_t)oi@XPKL5T?X|J*~T!%jQF zEZbJdfY8zL_wx&GsB3A-hdu)i+C)I-pFgo4Fcn z$~DKCXclOAXvZwihS#mnOpJ|e$L4bJm76yjy#=E+Hb#273V&@?^px3JU`r z92`*VnyHR%OoeW~SbfM^*>%xCGxLr>AjG&|QbI!I7yIU?{w{B9;kEN9V-_920sSjCdw|m&S+Nj|3Z?ha zZ$GZPY``CB!*B_>sqT4KQd5J=8>N?|8l-YqU^4+bV&NKF z1Komze@470)WoSLV@xiriLo-`RB7$n>on!S5Fu(56spua^2QW~RY6XL0nV6e=ElQQ6b3{T2Tv8W03}X{N#6hPk2N*=GOHC}h``xHzbIZffj6{|zKaRR*f7m} zCWp6Ob2$JcTVxlmnKlacPa)i&`Lrv{(M{-h0#97yo=e+HE$qSr3{nkXYMKLk-#f z6)zwvz>5Sd8h3C$MgVFXqW4T1GbZA`D~=j_b_l5&UJAd$n|t5#E|_|%&tvFXi~qs%vt-pcyX?#9Ft<~-`clL`RAXK%N@A(KVblZO96#v z)NiqcN_u+NQ&UH&tM6*)xe7QnKYu!5LBV<775!~P2H$Yr`o8O56{X#A$vaWTz_;Gv za^>Th%9j7!#$)f)4wVuQb69aKE-8r%pGHmb@G+;XK%DTDy)XesR%Ca>4K;1d4A;VM zwvBJz^l;HpiU>aNGAKpkw|GO1yo4y;)-En3jox>pJ464+K&Zi!ke?2H8+CBm*FLyP zT}|Cb%|_+h8oW+9^qB4p7RjGJ)uB*b!+lHv4h@15 zEBbc?HH%kRGVm?Lm|?lp7yT`8;UlP zwS^-w$3`j;FA@gg8c3}Vf31@U(V*wNl|lVq=WmLT5!H+vZ7Mh2JN^8n^-8aM$Zcly zh|?Pz+EPs-r^md4$AE88MI9mXfQC{F!Fu`p#a%mr`HnxMcs7LpD6L*Y95`Udtd85< ze@DHGx{eO?Xf0NOu3&`)6SLXXR1v=0?%1i*oo+=UU`TS*+ZPojkGAJntn5;ICFhcW z?24YP(GsGQ)+?G_Ic#Q<7*u-r;K357^B(Khr#>=YvSg^(+s?ebJ2Y~oJ*+#!`b#?7 z9*U1&H(7y=Q+xbdn*2aRm{#*Mlow*1bK{WPx^?{rCCV71w~AJna<{?cyM*Urm7)>u zGa8$k(3kG_%-t4U+%F)U6MvtJzcNSG&T}WBh160LPupdsBy|ngoA-%c>?*{yjf(R{ zp&F=eEn*MXZ&}d$d7qYNYw8CJri3JI&xb{%qoZzk;-7l)M*+!cYLXEmijP;#S2kLV zZ6FoUt~6EiBexp8VFRUfUBR#Z&K)M_UT!2Cm5RFGz{T~*B)%^_K@E3n zW}_>XFQ@v%M;AkOf%wh+vrkUz=5I6Q0f+A`ft0I~H?eNXhlQed0SC;?RK&kB`2^|( zZ5UPj5I#|d19ywjTZG))C8)P;QiDe~9bGQ4Y_Ax0_AH5SZC6?v4c}U*t1Ob$GL6~PvwZ+Gd3IkMPQXQ?+`g8JS74e9Gw zuSu;RZs1h^Kla~7AD`hAjaHuMyRfSbWS?Qp!hm*{+9a6SUM4TMa1=ui`u96M?f zF@>9#dM$TgT={(NFPqriyLV$^0Jk4HO53tsd_zbaQn`5an1&hMq@u19hxEK+LcH8` zJB>q0Ndj;+c9(RN5xQ#Cq+D)>H_sNDnv#4&khg)2&4FdvOht|hkrRH*^YIT^iq=2! z6!d8AglNa(eOC6_f2sNLpwb8bue~#m>p9=|_zx*dk|s%+O0pfPB(k(Iw=@uI{8)Rz+prR+g4% zJNLY{RQN>+)C&$LE2M9y9d$?}AVYQoAL!hDdPH6v1KPqzlL6qs{dLs0;YhrLW1e8u>c|q@#L>a$?1oTsI1MrzCy?XZS@~4H1Z1*2H zAoJ)Z?YCDXv`#_!W3M-3>eOAq!JDg78)T1kR?yQ8ckFk{;?=3)R9qI#gAL~%bz5&R z#A1zrs& z&qrbykzW%{LNo*0E()O`gB&r6n0S9&1vCpbncxzf{iw`!h`xSxPKmLqwzJEGQ{L_}Sg{^=$mj;U$ji;e3PAeXM38b8N#;L&ByNWcRwzV{itS|2BrEY5 z!ue?jCqV8k4Fq>SDJtr-{}CibbE2}zFCOry>#ms?8Y|VZRi4~TZU_5QS?F(bR}hF zPnMAH&0Z<#KsNlO7GL~^)HTumWXit#&hfmea>Ux}DsBT6D}SuL;q8q~^p{2bEg_p0xLW0 z6_Xygi&`B+HpQACLSdZZ{Vs@Di@~-Lks*x-^YhoUnz+=#>i``-|v6paH-~v+a12TDZ57im>xTvVoL9`A=BCp`8n;#Y1=MI=%uc2w zd}BW&_jJ~hCDRYzp*BUu16{`ULaHUHr$~yYsO8~0hT~!=JT@3G`Qv1a_8T{jK75Br zWg5Z#`Ok;q2Srmg0P|9ZZLQb4#8HIv;bOwzC3*{?k`uyCq|tEKQIdWUnfwh+D8#M`3Yao>@7V+V2*a)sNUSNp z5!0(zB%wMClJd&RL&uJJ*HwPAz!$^lv>f@(2Np_>9_{vxtkY1U2NqFLY`$acxePh_ zz8|&2v(eBI8p`iUyYG8RNw0G*Ihj2SF16aD5Rn6AN8T^x40Pp%%rKShyqlSFH*eiq zj*npGrWL52Ir|14oyajn$5o1Bp{lCt#^nlu>y}DrKY@E4{U_ZyNcc5^-=USG$ zp}Tt}Zb~%3q07f~4Yb4+h=!h+Teg0Q?Ih!|0yHo~1_JAu$EVg-o2Dssy7Y}EUEsOL z7_~j;(j6rIjS%MTcfTs{Jv!Qcb`%Sna)^t7YL8xhfr%X*jieS)^;P8%@8>tpGG18W ztgU6DFTn6232_CPhS{W6T(d_1TE}uTDhRZT6KAn602-DcT!V~W;OOYccrPx7NBwcp z@axB|UG|T6vK|eu@dz=J?bfNVUUTQV7^p6tV{GQcF#;hG8%4)$6A0^C*z02`j{_bC zI+k^(==hXli-WC6GoZN%8jAiQDLmg(r!2L@s2E|&InQLws3h)>AYM$_IP3s(9_Ue~ zEj6HFfMvm*w&!&~n+k?hy~CI$1}X&uFnV~z)t2fj1=B9)8Cm@0wHT4q#X_`r*PXlzb~?113@8{9&&|$$HC`s# zmMD%0DCs-?Fw#bn1vO%{RUG6Ke*BRzg7Emg_qv??e*C7GwH23ZQ$P!C+z{*z>J{P% z6@o)GmLd&3zeHWLnB?9dUhS3Te^kQ z`VA|Eo;@{3tpr?0+m@udH*&J%Aj7(+oz^z{zR4rhmTfy3<~#FZA;`zBQ`;?1WM~!2=2v>$=Wjzx;B`*diVg#scwu zj9=%6tkjyJ9&H_(H*MO*LZodH=~kI-rmaup3$r>!T*%fgV+U{EGSb744;Lb z>U}J|LqNuZ{Cq2YiSzrUkxeZGS8SVWZq)WmPdn-BS^Mt1s7#zCozSWRlsdB3Re2&7 zzH%u}Jp`HWP#Cdx2F+KMmj$0sWUR)Ilgn|`Q8IlH5jpoyETqiE;6^w@s1>I{M0vRr7E`l`3b&l{?0grQgyYc^X9*X?OKOfwAXYtp`hBh>c5 zZkV3j->y7S>N&1__r=00Ih7&ahmtPHwfz~eah5Wm+J zF3Xpb=UmcmXxBQ%&TY^ziEZ;S8Ih_Mkvh66cS=%Alb#ITJLxo=N@bNv&Ov^ZsyxAt zs3{`L?y_93Fj^UN|FQk?)ya)_WJEK&znsHx*Hsy5_tGs!rjzK#QpM1$pxYWAE6vAf zgdV%NN&NY{TDjF_+HMa99UGRxO+&{Z^a5vF|^!w{_T1a*_1B#TM zKsoRZJicW~CUV&7tL1yA=p?Xz^&ROdV-d$cDa-Ri|0{oZQ*n;(M?}hRmdz7F z|7r7tq)qO9khOtGB=3;B;xalIR?N6K;uLeAJ>_%4YzLw2ibKXuNLy6H#nQSH4T7}Z z$As0DD6wV|)g0oTZ_!UdMR$P#p+rJ=HzJ%c09dhvhZYHOH%KXjAeG_*%l78NSl`0D zymiIP4-;qF4?kt-(iN*#*|xhO99^@u<#Bx&;G3)kiuyRn0<+TEE05h%h_D~IR(O{a zTpyFv$)&`8ZbtrsOg1n8LK4wdDJ3qskBOY6N@J&*4+)EiNaxW}ZqS>`{bAfmQlzIj zHs@)!)dX>tA~)rpWaQx1K-`5i*lXlGQ2O!4Ex&`dgCe}12Wxe~q^G%8Sw*F-(l}ij z{}7l~)9dLrjR3)393ifXDt%qDX}0E?=BOE4rtKd}0>qK*@`&!zUeQkx7D2$g z1k)~BmQBvcW;%hf#ewbODZ}AO0kQQ>e3n=yGb!x@8p#-d5V~P#TfM9xvZY)=xsqR< z3iYi&9hCvktg-v}`^N0SX0^f7^iz#K1(*u1#m80LskR_CV)FH;FP ziByz!4KtpMf+l^1U?861hTv=kzuMD(DPC36kB;TFjR1wQSD)`9w8OVCQ`5I7rL=e3 z^r%y(oQXOzEj@evx(|(wo<%80e&F;+OCcw%;~97K#|-tcx3k+s54#mc;;gSXp{rOI z=lkn)tNmmXwe{Rar_8TQh%N}qP@Hs&TWKrU&w+(Ju$@=?gf9Ic|T561&lxM^jwDh!Z~xo*VffN z`Ysmq4!;FGocZ9hKNJ76299&P5DhkW&KyEC8*C+p1N%t;DXZt1HdTZp_=0j z*a7II*X8~Wkc4zDYptxTyrY-0iUcf4%QYo>qz069?qlx(zwxdty`7i0iSvc7O3TA6 zGklM68u9UDmZ!W+etkSGVuHCCntuGaaffsl3K?1`Z3rkjILcs*xwSt#0jzx^@QaS5{QdGmNiKNL&>`DPx9^|8nt3a(p^ zMSu>1LLAMr9$)Rxc43SG%p6I(i?YpM%Zp5_)43~}8_BWt%^rAoyPIG1f_Uu>^_2(6 zYfi_xLcSygH^K?m=9j`Omsg5CaiG~vY;fSvA$O9VvIj@l>L{^a**R<|99krFH+xN= zylc;PsFN+Iej-WHH=q=+^lEmCpYP=`6sQlv%-##5<3Rc)G506VxjXQ%eO^JqW!lI9 zdJBJr!eGo3^{-9EMqT`?eO``_nlttD5UM`98- zqHoz2{py^A-J)~Y&ByybG#1}I&usFTyb)yYyiXHWPqL3jfyeL`b_`%nvBZ~&^(80G zZK^KSoYCrnEg?`a0W64nN}IW!u?H3r2p1mlNwCIA?TpnZCcqd8)Xk5LY$k}g4Vw5( z>U$02hbIi2{5c^koiK*r1By`ewCthb*%e?00a}eus(t&Ir4WTsFwie=^^@dL5?h=@ z<2RUjLeX4GDjoOg{KYF*K5moKP#xj?Q=hb&z?%9Uyl;KdZpuDY8e_*Vy0rLkcwKwT zT|&2>Jt><#pr>j5Otc!!-845>gi)3fWb6SP6=iXFUT0C{Rw5(y8BtC38(R1704j2=;tvH=hixvi&<)|P>&1QCsUD#}DO-F2HC0NQijq+czx zyC$u;E891IH#vwc5qnnEmtoi&GEYQ+%eFS{PJR!IbFH|!84jixe>@_tQj@dZq5WRw z_0S2#g?nkq4fR!CViU!Z$jyZ2tBbv8w3<26Z=|@2Q47+SUs$*ScaGk|gfk5t*=b^F za(;QmtPLAJ&|OPhY z!emGMM8etNnGoFxQWkUl{Vz2Q)6Of0W)WisG4ce|`oROiuwCCtS+asb&t7&vC&w|t zC0qL34I%@<9fHGDo=WqQ#U>iC^2?`BzfXd41P3S%zBPH5g$a|`JJ^~A&SM={ldlYf zC!~ELotis*`(asZ*>90yLcRCe3%HNU;VoO2v*vdU$MIP0yb`PdF9@BZ$5-(hFZ25> zoQ$U8q3u1Ttp;dig%gLV%ImLHS(G@6bgRBG6C*Q{A;{qME&ZjjId1ctN1YUj#NM%UU?MThLyZ*2^~LFUpy$ICCr%ITIv=hM&oKY~NK@T1E?FElvv`TSmCeR|fhRWY)a zgSzum+t862pK;f*XXX33$kFigL4C-sNvEw`%&*ehQ#akv*zRTcoeLdB@>)o(Rd%O- z)v#8*3uTFsnyFpc;a`ga>ka==sYp_0^uw~9kZ^PTMytvTnx9vF(aU5P+YTa;7UNk& z4I%16*X{{y2O?glNRh$yx#|&?=-)2+?Ti1zYlV;gqxbtIul@X}{=jqi?ULWV_}`!J zZ@Bjb+ literal 142164 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
  • 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 Bool { // 分步拼接:一长串字符串相加会让旧版编译器类型推断超时 - let tunnelSig: String = tunnels.map { "\($0.id):\($0.name):\($0.listen_port):\($0.enabled)" }.joined(separator: ",") + let tunnelSig: String = tunnels.map { "\($0.id):\($0.name):\($0.listen_port):\($0.enabled):\($0.group_id ?? "")" }.joined(separator: ",") let groupSig: String = groups.map { "\($0.id):\($0.name)" }.joined(separator: ",") let pendingSig: String = pendingRequests.map { $0.request.id }.joined(separator: ",") let sig = [String(isConnected), tunnelSig, groupSig, pendingSig].joined(separator: "|") @@ -1225,51 +1232,38 @@ class PortRelayViewModel: ObservableObject { return (true, try? JSONDecoder().decode(BatchResp.self, from: data), nil) } - /// 同时测试多个目标的连通性,全部连通才算成功 - func probeTargets(_ targets: [String]) async -> (Bool, String) { - if targets.count == 1 { return await probeTarget(target: targets[0]) } - var failed: [String: String] = [:] - await withTaskGroup(of: (String, Bool, String).self) { group in - for t in targets { - group.addTask { - let (ok, msg) = await self.probeTarget(target: t) - return (t, ok, msg) - } - } - for await (t, ok, msg) in group where !ok { - failed[t] = msg - } - } - guard let first = targets.first(where: { failed[$0] != nil }) else { - return (true, "全部 \(targets.count) 个目标连接成功") - } - let more = failed.count > 1 ? "(共 \(failed.count) 个失败)" : "" - return (false, "\(targets.count - failed.count)/\(targets.count) 连接成功;\(first) \(failed[first] ?? "")\(more)") - } - - func probeTarget(target: String) async -> (Bool, String) { - guard let url = URL(string: "http://127.0.0.1:33080/api/probe") else { return (false, "无效地址") } + /// 测试一个目标的连通性;detail 为延迟或失败原因 + func probe(_ target: String) async -> ProbeOutcome { + guard let url = URL(string: "http://127.0.0.1:33080/api/probe") else { return ProbeOutcome(ok: false, detail: "无效地址") } var req = URLRequest(url: url) req.httpMethod = "POST" req.setValue("application/json", forHTTPHeaderField: "Content-Type") - let body = ["target": target] - req.httpBody = try? JSONSerialization.data(withJSONObject: body) - + req.httpBody = try? JSONSerialization.data(withJSONObject: ["target": target]) do { let (data, _) = try await URLSession.shared.data(for: req) - if let res = try? JSONDecoder().decode(ProbeResp.self, from: data) { - if res.reachable { - return (true, "连接成功 (\(res.rtt))") - } else { - return (false, "连接失败: \(res.error ?? "超时")") - } + guard let res = try? JSONDecoder().decode(ProbeResp.self, from: data) else { + return ProbeOutcome(ok: false, detail: "解析失败") } - return (false, "解析失败") + return res.reachable ? ProbeOutcome(ok: true, detail: res.rtt) : ProbeOutcome(ok: false, detail: res.error ?? "超时") } catch { - return (false, error.localizedDescription) + return ProbeOutcome(ok: false, detail: error.localizedDescription) } } + /// 同时测试多个目标 + func probeAll(_ targets: [String]) async -> [String: ProbeOutcome] { + var out: [String: ProbeOutcome] = [:] + await withTaskGroup(of: (String, ProbeOutcome).self) { group in + for t in targets { + group.addTask { (t, await self.probe(t)) } + } + for await (t, r) in group { + out[t] = r + } + } + return out + } + func recommendPort() async -> Int { if isPreview { return 33662 } guard let url = URL(string: "http://127.0.0.1:33080/api/recommend-port") else { return 33660 } @@ -2808,12 +2802,17 @@ struct ClientDetailsSheet: View { @State private var expandedIPs: Set = [] @State private var expandedHistoryIPs: Set = [] @State private var isRevoking: Bool = false + /// 通道组:在线连接与接入记录按设备(来源 IP)或按组内地址查看 + @State private var byAddress: Bool = false + @State private var collapsedOnlineAddrs: Set = [] + @State private var expandedHistoryAddrs: Set = [] - init(vm: PortRelayViewModel, scope: AccessScope, initialTab: Int = 0, isPresented: Binding) { + init(vm: PortRelayViewModel, scope: AccessScope, initialTab: Int = 0, byAddress: Bool = false, isPresented: Binding) { _vm = ObservedObject(wrappedValue: vm) self.scope = scope _isPresented = isPresented _selectedTab = State(initialValue: initialTab) + _byAddress = State(initialValue: byAddress) } init(vm: PortRelayViewModel, tunnel: TunnelItem, initialTab: Int = 0, isPresented: Binding) { @@ -2837,12 +2836,45 @@ struct ClientDetailsSheet: View { return "\(vm.publicHost):\(t.listen_port) → \(t.target)" } - /// 通道组:这台设备连到了组内哪些地址 - func groupTargetsSummary(_ conns: [ActiveClientInfo]) -> String { + /// 通道组:设备访问了组内哪些地址(" · 访问 10.0.1.11、10.0.1.12");组内端口都相同时只写主机 + func addressesSummary(_ tunnelIDs: Set) -> String { guard scope.isGroup else { return "" } - let targets = Set(conns.compactMap { targetLabel($0.tunnel_id) }) - if targets.count == 1, let only = targets.first { return " · \(only)" } - return " · 连到 \(targets.count) 个地址" + let used = members.filter { tunnelIDs.contains($0.id) } + guard !used.isEmpty else { return "" } + let samePort = Set(members.map { portOf($0.target) }).count == 1 + let labels: [String] = used.map { samePort ? hostOf($0.target) : $0.target } + if labels.count > 3 { return " · 访问 \(labels.count) 个地址" } + return " · 访问 " + labels.joined(separator: "、") + } + + /// 有在线连接 / 接入记录的组内地址数 + var addressesOnline: Int { Set(activeClientsForTunnel.map { $0.tunnel_id }).intersection(memberIDs).count } + var addressesWithHistory: Int { Set(historyRecords.map { $0.tunnel_id }).intersection(memberIDs).count } + + var dimensionSummary: String { + if selectedTab == 0 { + return byAddress ? "\(addressesOnline)/\(members.count) 个地址正在使用" + : "\(clientGroups.count) 台设备 · \(activeClientsForTunnel.count) 个连接" + } + return byAddress ? "\(addressesWithHistory)/\(members.count) 个地址有接入记录" + : "\(historyGroups.count) 台设备 · \(historyRecords.count) 次连接" + } + + /// 通道组的在线 / 接入记录可以按设备或按地址看 + var dimensionBar: some View { + HStack(spacing: 8) { + Text(verbatim: dimensionSummary) + .font(.system(size: 11)) + .foregroundColor(.secondary) + Spacer() + Picker("", selection: $byAddress) { + Text("按设备").tag(false) + Text("按地址").tag(true) + } + .pickerStyle(.segmented) + .labelsHidden() + .fixedSize() + } } /// 通道组里每个连接经过的目标("→ 10.0.1.11:22") @@ -2902,6 +2934,10 @@ struct ClientDetailsSheet: View { .pickerStyle(.segmented) .padding(.vertical, 4) + if scope.isGroup && selectedTab != 2 { + dimensionBar + } + Divider() // Tab Content @@ -2920,8 +2956,14 @@ struct ClientDetailsSheet: View { } else { ScrollView { VStack(spacing: 8) { - ForEach(clientGroups) { g in - clientGroupRow(g) + if scope.isGroup && byAddress { + ForEach(members) { t in + onlineAddressRow(t) + } + } else { + ForEach(clientGroups) { g in + clientGroupRow(g) + } } } .padding(.bottom, 8) @@ -2944,8 +2986,14 @@ struct ClientDetailsSheet: View { } else { ScrollView { VStack(spacing: 8) { - ForEach(historyGroups) { g in - historyGroupRow(g) + if scope.isGroup && byAddress { + ForEach(members) { t in + historyAddressRow(t) + } + } else { + ForEach(historyGroups) { g in + historyGroupRow(g) + } } } .padding(.bottom, 8) @@ -2996,8 +3044,12 @@ struct ClientDetailsSheet: View { .lineLimit(1) .truncationMode(.middle) TagView("\(g.records.count) 次连接") + if let n = leaseName(g.ip) { + TagView("已授权 · \(n)", color: .green) + } } - Text(verbatim: "最近 \(formatDateTimeShort(g.lastSeen)) · 首次 \(formatDateTimeShort(g.firstSeen)) · 累计 \(formatSecondsToDuration(g.totalDuration))") + Text(verbatim: "最近 \(formatDateTimeShort(g.lastSeen)) · 首次 \(formatDateTimeShort(g.firstSeen)) · 累计 \(formatSecondsToDuration(g.totalDuration))" + + addressesSummary(Set(g.records.map { $0.tunnel_id }))) .font(.system(size: 11)) .foregroundColor(.secondary) .lineLimit(1) @@ -3059,6 +3111,182 @@ struct ClientDetailsSheet: View { .rowCard() } + // MARK: 按地址(通道组) + + func addressLabel(_ t: TunnelItem) -> some View { + HStack(spacing: 6) { + Text(verbatim: "\(vm.publicHost):\(t.listen_port)") + .font(.system(size: 13, weight: .semibold, design: .monospaced)) + .foregroundColor(.accentColor) + Image(systemName: "arrow.right") + .font(.system(size: 9)) + .foregroundColor(.secondary) + Text(verbatim: t.target) + .font(.system(size: 12, design: .monospaced)) + .foregroundColor(.secondary) + } + .lineLimit(1) + } + + /// 设备 IP + 授权时填写的姓名 + func deviceLabel(_ ip: String) -> some View { + HStack(spacing: 6) { + Text(verbatim: ip) + .font(.system(size: 11, weight: .medium, design: .monospaced)) + .lineLimit(1) + .truncationMode(.middle) + if let n = leaseName(ip) { + TagView(n, color: .green) + } + } + } + + /// 组内一个地址:此刻哪些设备连着它 + @ViewBuilder + func onlineAddressRow(_ t: TunnelItem) -> some View { + let conns: [ActiveClientInfo] = activeClientsForTunnel.filter { $0.tunnel_id == t.id } + let devices: [ClientIPGroup] = Dictionary(grouping: conns) { hostOf($0.client_ip) } + .map { ClientIPGroup(ip: $0.key, conns: $0.value) } + .sorted { $0.ip < $1.ip } + let all = ClientIPGroup(ip: t.id, conns: conns) + let expanded = !conns.isEmpty && !collapsedOnlineAddrs.contains(t.id) + VStack(alignment: .leading, spacing: 0) { + HStack(spacing: 8) { + chevron(expanded, visible: !conns.isEmpty) + VStack(alignment: .leading, spacing: 3) { + HStack(spacing: 6) { + addressLabel(t) + TagView(conns.isEmpty ? "无连接" : "\(devices.count) 台设备 · \(conns.count) 个连接") + } + Text(verbatim: conns.isEmpty ? (t.enabled ? "暂无设备连接" : "已关闭") + : "最早接入 \(formatDateTimeShort(all.firstConnectedAt)) · ↑ \(formatBytes(all.bytesIn)) ↓ \(formatBytes(all.bytesOut))") + .font(.system(size: 11)) + .foregroundColor(.secondary) + .lineLimit(1) + } + .layoutPriority(1) + Spacer(minLength: 8) + if !conns.isEmpty { + RateText(up: all.rateIn, down: all.rateOut) + Button("全部断开", role: .destructive) { + Task { await vm.killClients(connIds: conns.map { $0.conn_id }) } + } + .controlSize(.small) + .frame(width: 76, alignment: .trailing) + } + } + .padding(.horizontal, 12) + .padding(.vertical, 10) + .contentShape(Rectangle()) + .onTapGesture { if !conns.isEmpty { toggle(t.id, in: &collapsedOnlineAddrs) } } + + if expanded { + Divider().padding(.leading, 32).padding(.trailing, 12) + VStack(spacing: 0) { + ForEach(devices) { d in + HStack(spacing: 8) { + Color.clear.frame(width: 12) + deviceLabel(d.ip) + .frame(width: 200, alignment: .leading) + Text(verbatim: "\(d.conns.count) 个连接 · 接入 \(formatTimeHHmm(d.firstConnectedAt))") + .font(.system(size: 11)) + .foregroundColor(.secondary) + Spacer(minLength: 8) + RateText(up: d.rateIn, down: d.rateOut, size: 10) + Button("断开") { + Task { await vm.killClients(connIds: d.conns.map { $0.conn_id }) } + } + .buttonStyle(.borderless) + .foregroundColor(.red) + .font(.system(size: 11)) + .frame(width: 76, alignment: .trailing) + } + .lineLimit(1) + .padding(.horizontal, 12) + .padding(.vertical, 5) + } + } + .padding(.vertical, 4) + } + } + .rowCard() + .opacity(conns.isEmpty ? 0.6 : 1) + } + + /// 组内一个地址:谁、什么时候访问过它 + @ViewBuilder + func historyAddressRow(_ t: TunnelItem) -> some View { + let records: [ClientHistoryRecord] = historyRecords.filter { $0.tunnel_id == t.id }.sorted { $0.connected_at > $1.connected_at } + let summary = HistoryIPGroup(ip: t.id, records: records) + let devices = Set(records.map { hostOf($0.client_ip) }).count + let expanded = !records.isEmpty && isExpanded(t.id, in: expandedHistoryAddrs, groupCount: addressesWithHistory) + VStack(alignment: .leading, spacing: 0) { + HStack(spacing: 8) { + chevron(expanded, visible: !records.isEmpty) + VStack(alignment: .leading, spacing: 3) { + HStack(spacing: 6) { + addressLabel(t) + TagView(records.isEmpty ? "暂无记录" : "\(devices) 台设备 · \(records.count) 次连接") + } + if !records.isEmpty { + Text(verbatim: "最近 \(formatDateTimeShort(summary.lastSeen)) · 首次 \(formatDateTimeShort(summary.firstSeen)) · 累计 \(formatSecondsToDuration(summary.totalDuration))") + .font(.system(size: 11)) + .foregroundColor(.secondary) + .lineLimit(1) + } + } + .layoutPriority(1) + Spacer(minLength: 8) + if !records.isEmpty { + VStack(alignment: .trailing, spacing: 3) { + Text(verbatim: formatBytes(summary.bytesIn + summary.bytesOut)) + .font(.system(size: 13, weight: .semibold, design: .monospaced)) + Text(verbatim: "↑ \(formatBytes(summary.bytesIn)) ↓ \(formatBytes(summary.bytesOut))") + .font(.system(size: 10, design: .monospaced)) + .foregroundColor(.secondary) + } + .lineLimit(1) + .frame(width: 190, alignment: .trailing) + } + } + .padding(.horizontal, 12) + .padding(.vertical, 10) + .contentShape(Rectangle()) + .onTapGesture { if !records.isEmpty { toggle(t.id, in: &expandedHistoryAddrs) } } + + if expanded { + Divider().padding(.leading, 32).padding(.trailing, 12) + VStack(spacing: 0) { + ForEach(records) { rec in + HStack(spacing: 8) { + Color.clear.frame(width: 12) + deviceLabel(hostOf(rec.client_ip)) + .frame(width: 200, alignment: .leading) + Text(verbatim: "\(formatDateTimeShort(rec.connected_at)) – \(formatTimeHHmm(rec.disconnected_at))") + .font(.system(size: 11, design: .monospaced)) + .foregroundColor(.secondary) + .frame(width: 180, alignment: .leading) + Text(verbatim: formatSecondsToDuration(rec.duration_sec)) + .font(.system(size: 11)) + .foregroundColor(.secondary) + Spacer(minLength: 8) + Text(verbatim: "↑ \(formatBytes(rec.bytes_in)) ↓ \(formatBytes(rec.bytes_out))") + .font(.system(size: 10, design: .monospaced)) + .foregroundColor(.secondary) + .frame(width: 190, alignment: .trailing) + } + .lineLimit(1) + .padding(.horizontal, 12) + .padding(.vertical, 5) + } + } + .padding(.vertical, 4) + } + } + .rowCard() + .opacity(records.isEmpty ? 0.6 : 1) + } + func isLeased(_ ip: String) -> Bool { leases.contains { $0.ip == ip } } @@ -3088,7 +3316,7 @@ struct ClientDetailsSheet: View { } } Text(verbatim: "最早接入 \(formatDateTimeShort(g.firstConnectedAt)) · ↑ \(formatBytes(g.bytesIn)) ↓ \(formatBytes(g.bytesOut))" - + groupTargetsSummary(g.conns)) + + addressesSummary(Set(g.conns.map { $0.tunnel_id }))) .font(.system(size: 11)) .foregroundColor(.secondary) .lineLimit(1) @@ -3480,6 +3708,68 @@ struct DiagnosticsSheet: View { // MARK: - Edit / Create Sheet (With Owner & Duration TTL) +/// 添加通道表单里的一行目标:一台主机 + 一个或多个端口("22, 3306"、"8080-8082")。 +/// 主机格也接受逗号分隔的几台、末段范围(10.0.1.11-13)或自带端口的 主机:端口。 +struct TargetRow: Identifiable, Equatable { + let id = UUID() + var host: String = "" + var ports: String = "" + + static let separators: Set = [" ", ",", ",", "、", ";", ";", "\n", "\r", "\t"] + + static func items(_ s: String) -> [String] { + s.split(whereSeparator: { separators.contains($0) }).map(String.init) + } + + /// "10.0.1.11:22" / "[fd00::1]:22" → (主机, 端口);不带端口(含裸 IPv6)返回 nil + static func splitHostPort(_ item: String) -> (String, String)? { + if item.hasPrefix("["), let close = item.firstIndex(of: "]") { + let rest = item[item.index(after: close)...] + guard rest.hasPrefix(":"), rest.count > 1 else { return nil } + return (String(item[item.index(after: item.startIndex).. [TargetRow] { + var out: [TargetRow] = [] + for item in items(text) { + let (host, port) = splitHostPort(item) ?? (item, "") + if let i = out.firstIndex(where: { $0.host == host }) { + if !port.isEmpty && !items(out[i].ports).contains(port) { + out[i].ports = out[i].ports.isEmpty ? port : out[i].ports + ", " + port + } + } else { + out.append(TargetRow(host: host, ports: port.isEmpty ? defaultPorts : port)) + } + } + return out + } + + /// 拼成 "主机:端口, …" 交给服务端展开;还没填完整的行先跳过 + static func compose(_ rows: [TargetRow]) -> String { + var out: [String] = [] + for r in rows { + let ports = items(r.ports) + for h in items(r.host) { + if splitHostPort(h) != nil { + out.append(h) + continue + } + guard !ports.isEmpty else { continue } + let host = h.contains(":") && !h.hasPrefix("[") ? "[\(h)]" : h + for p in ports { + out.append("\(host):\(p)") + } + } + } + return out.joined(separator: ", ") + } +} + struct TunnelEditSheet: View { @ObservedObject var vm: PortRelayViewModel let tunnel: TunnelItem? @@ -3487,7 +3777,7 @@ struct TunnelEditSheet: View { @State private var name: String @State private var owner: String - @State private var target: String + @State private var rows: [TargetRow] @State private var portString: String @State private var durationMinutes: Int @State private var idleCloseMinutes: Int @@ -3496,14 +3786,15 @@ struct TunnelEditSheet: View { @State private var accessMode: AccessMode @State private var groupChoice: GroupChoice @State private var newGroupName: String = "" - /// 填了多个目标时将创建的通道(服务端预览) + /// 将创建的通道(服务端预览,含自动分配的访问端口) @State private var plan: [PlannedTunnel] = [] @State private var planError: String? = nil - @State private var probeMessage: String = "" - @State private var probeOK: Bool = false + /// 连通性测试结果,按目标 + @State private var probes: [String: ProbeOutcome] = [:] @State private var isProbing: Bool = false @State private var isSaving: Bool = false @State private var errorMessage: String? = nil + @FocusState private var focusedRow: UUID? /// 新建完成后打开邀请:独立通道,或新建的通道组。加入已有组时不需要——组的授权自动覆盖新地址 var onCreated: ((AccessScope) -> Void)? = nil @@ -3512,7 +3803,7 @@ struct TunnelEditSheet: View { case linkOnly, specific, all } - /// 通道组选项:不分组、新建、或加入已有组 + /// 通道组选项。新建时多个地址自动新建组(以名称为组名);编辑时可以新建组并移入 enum GroupChoice: Hashable { case none case new @@ -3524,7 +3815,7 @@ struct TunnelEditSheet: View { /// 表单字段在创建时就用通道数据填好,不依赖 onAppear(避免第一帧显示空表单)。 /// groupId:新建时默认加入的通道组(通道组卡片上的「添加地址」) init(vm: PortRelayViewModel, tunnel: TunnelItem?, isPresented: Binding, groupId: String? = nil, - draftName: String = "", draftTarget: String = "", onCreated: ((AccessScope) -> Void)? = nil) { + draftName: String = "", draftRows: [(String, String)] = [], onCreated: ((AccessScope) -> Void)? = nil) { _vm = ObservedObject(wrappedValue: vm) self.tunnel = tunnel self.onCreated = onCreated @@ -3534,7 +3825,12 @@ struct TunnelEditSheet: View { _accessMode = State(initialValue: mode) _name = State(initialValue: tunnel?.name ?? draftName) _owner = State(initialValue: tunnel.map { $0.owner ?? "" } ?? NSUserName()) - _target = State(initialValue: tunnel?.target ?? draftTarget) + var initialRows = draftRows.map { TargetRow(host: $0.0, ports: $0.1) } + if let t = tunnel { + let (h, p) = TargetRow.splitHostPort(t.target) ?? (t.target, "") + initialRows = [TargetRow(host: h, ports: p)] + } + _rows = State(initialValue: initialRows.isEmpty ? [TargetRow()] : initialRows) _portString = State(initialValue: tunnel.map { "\($0.listen_port)" } ?? "") // 最长开启时长:新建默认不限制(主要依靠闲置自动关闭);duration_minutes 为 0 时 JSON 中会省略 _durationMinutes = State(initialValue: tunnel.map { $0.duration_minutes ?? 0 } ?? 0) @@ -3547,47 +3843,42 @@ struct TunnelEditSheet: View { // MARK: Derived state - /// 可能填了多个目标(逗号 / 空格分隔,或含范围 "10.0.1.11-13:22"),需要服务端展开 - var mayBeMulti: Bool { - guard !isEdit else { return false } - let items = target.split(whereSeparator: { " ,,、;;\n\t".contains($0) }) - return items.count > 1 || target.contains("-") - } + var composedTarget: String { TargetRow.compose(rows) } - /// 确实会创建多个通道 - var isBatch: Bool { mayBeMulti && plan.count > 1 } + /// 会创建多个通道(自动放进通道组) + var isBatch: Bool { !isEdit && plan.count > 1 } - /// 新建通道组的名称:没填时与通道名称相同 + var trimmedName: String { name.trimmingCharacters(in: .whitespaces) } + + /// 新建通道组的名称:新建时就是名称;编辑时可另填,没填时与通道名称相同 var resolvedGroupName: String { let n = newGroupName.trimmingCharacters(in: .whitespaces) - return n.isEmpty ? name.trimmingCharacters(in: .whitespaces) : n + return isEdit && !n.isEmpty ? n : trimmedName } - /// 选中的通道组名称(不分组为 nil) - var chosenGroupName: String? { - switch groupChoice { - case .none: return nil - case .new: return newGroupName.trimmingCharacters(in: .whitespaces) - case .existing(let id): return vm.group(id)?.name - } + var existingGroupName: String? { + if case .existing(let id) = groupChoice { return vm.group(id)?.name } + return nil + } + + var nameTitle: String { + isBatch && groupChoice == .new ? "通道组名称" : "通道名称" } var namePlaceholder: String { - if !isEdit, let g = chosenGroupName, !g.isEmpty { + if !isEdit, let g = existingGroupName { return "可不填,默认「\(g) (主机)」" } return isBatch ? "例如:订单服务" : "例如:MySQL 实习库" } var canSave: Bool { - if isSaving || target.trimmingCharacters(in: .whitespaces).isEmpty { return false } - if mayBeMulti && planError != nil { return false } - let hasName = !name.trimmingCharacters(in: .whitespaces).isEmpty - switch groupChoice { - case .none: return hasName - case .new: return !resolvedGroupName.isEmpty && (hasName || !isEdit) - case .existing: return hasName || !isEdit + if isSaving { return false } + if isEdit { + return !trimmedName.isEmpty && !composedTarget.isEmpty && (groupChoice != .new || !resolvedGroupName.isEmpty) } + if plan.isEmpty || planError != nil { return false } + return !trimmedName.isEmpty || existingGroupName != nil } func makeForm(port: Int, whitelist: [String]) -> TunnelForm { @@ -3598,8 +3889,8 @@ struct TunnelEditSheet: View { case .existing(let id): groupId = id } return TunnelForm( - name: name.trimmingCharacters(in: .whitespaces), owner: owner.trimmingCharacters(in: .whitespaces), - target: target.trimmingCharacters(in: .whitespacesAndNewlines), port: port, whitelist: whitelist, + name: trimmedName, owner: owner.trimmingCharacters(in: .whitespaces), + target: composedTarget, port: port, whitelist: whitelist, durationMinutes: durationMinutes, idleCloseMinutes: idleCloseMinutes, maxBandwidthMB: maxBandwidthMB, groupId: groupId, newGroup: newGroup) } @@ -3612,7 +3903,7 @@ struct TunnelEditSheet: View { .font(.system(size: 15, weight: .bold)) HStack(spacing: 12) { - field("通道名称") { + field(nameTitle) { TextField(namePlaceholder, text: $name) .textFieldStyle(.roundedBorder) } @@ -3624,7 +3915,7 @@ struct TunnelEditSheet: View { targetSection - if !isBatch { + if isEdit { field("对外监听端口 (范围 33001-34000)") { HStack { TextField("33660", text: $portString) @@ -3660,54 +3951,147 @@ struct TunnelEditSheet: View { .padding(.top, 4) } .padding(20) - .frame(width: 490) - .onAppear { - if tunnel == nil { - Task { - let p = await vm.recommendPort() - if portString.isEmpty { portString = "\(p)" } - } - } - } - .task(id: "\(target)|\(name)|\(newGroupName)|\(groupChoice)") { await refreshPlan() } + .frame(width: 520) + .task(id: "\(composedTarget)|\(trimmedName)|\(groupChoice)") { await refreshPlan() } + .onChange(of: composedTarget) { _ in probes = [:] } .onChange(of: isBatch) { batch in - // 多个目标必须放进同一个通道组 + // 多个地址放进同一个通道组;只剩一个地址时回到不分组 if batch && groupChoice == .none { groupChoice = .new } + if !batch && !isEdit && groupChoice == .new { groupChoice = .none } } } - // MARK: Sections + // MARK: Target list var targetSection: some View { - VStack(alignment: .leading, spacing: 4) { - Text(isEdit ? "目标服务 (内网主机 IP:端口)" : "目标服务 (内网主机 IP:端口,可填多个)") + VStack(alignment: .leading, spacing: 6) { + Text(isEdit ? "目标服务 (内网主机与端口)" : "目标服务(每行一台主机,多个端口用逗号隔开)") .font(.system(size: 12)) .foregroundColor(.secondary) - HStack { - TextField(isEdit ? "例如 10.0.0.10:3306" : "例如 10.0.0.10:3306;多台主机写 10.0.1.11-13:22", text: $target) - .textFieldStyle(.roundedBorder) - Button(isProbing ? "测试中" : "连通性测试") { probe() } - .disabled(target.trimmingCharacters(in: .whitespaces).isEmpty || isProbing || (mayBeMulti && planError != nil)) - .controlSize(.small) + if rows.count > 1 || !isEdit { + HStack(spacing: 8) { + Text("主机").frame(maxWidth: .infinity, alignment: .leading) + Text("端口").frame(width: 150, alignment: .leading) + Color.clear.frame(width: 18, height: 1) + } + .font(.system(size: 11)) + .foregroundColor(.secondary) } - if !probeMessage.isEmpty { - Text(verbatim: probeMessage) - .font(.system(size: 11)) - .foregroundColor(probeOK ? .green : .red) + if isEdit, let row = rows.first { + HStack(spacing: 8) { + targetRow(row) + probeButton + } + } else { + ForEach(rows) { row in + targetRow(row) + } + HStack(spacing: 10) { + Button { + addRow() + } label: { + Label("添加主机", systemImage: "plus") + .font(.system(size: 12)) + } + .buttonStyle(.borderless) + .help("可以一次粘贴多个 IP(每行一个,或用逗号分隔),会自动拆成多行") + Spacer() + probeButton + } } - if mayBeMulti, let err = planError { + if isEdit { + if let r = probes[composedTarget] { + Text(verbatim: r.ok ? "连接成功 (\(r.detail))" : "连接失败: \(r.detail)") + .font(.system(size: 11)) + .foregroundColor(r.ok ? .green : .red) + } + } else if let err = planError { Text(verbatim: err) .font(.system(size: 11)) .foregroundColor(.red) - } else if isBatch { + } else if !plan.isEmpty { planList } } } - /// 多个目标时:每个地址分到的访问端口 + var probeButton: some View { + Button(isProbing ? "测试中" : "连通性测试") { probe() } + .disabled(composedTarget.isEmpty || isProbing || (!isEdit && (plan.isEmpty || planError != nil))) + .controlSize(.small) + } + + func targetRow(_ row: TargetRow) -> some View { + HStack(spacing: 8) { + TextField(isEdit ? "例如 10.0.0.10" : "例如 10.0.1.11,可粘贴多个", text: hostBinding(row.id)) + .textFieldStyle(.roundedBorder) + .focused($focusedRow, equals: row.id) + TextField(isEdit ? "3306" : "22, 3306", text: portsBinding(row.id)) + .textFieldStyle(.roundedBorder) + .frame(width: 150) + if !isEdit { + Button { + removeRow(row.id) + } label: { + Image(systemName: "minus.circle") + .foregroundColor(.secondary) + } + .buttonStyle(.borderless) + .frame(width: 18) + .disabled(rows.count == 1) + .opacity(rows.count == 1 ? 0.3 : 1) + .help("删除这一行") + } + } + } + + func hostBinding(_ id: UUID) -> Binding { + Binding( + get: { rows.first(where: { $0.id == id })?.host ?? "" }, + set: { setHost(id, $0) } + ) + } + + func portsBinding(_ id: UUID) -> Binding { + Binding( + get: { rows.first(where: { $0.id == id })?.ports ?? "" }, + set: { v in + if let i = rows.firstIndex(where: { $0.id == id }) { rows[i].ports = v } + } + ) + } + + /// 一次粘贴进多个主机(或 主机:端口)时拆成多行,其余情况照常输入 + func setHost(_ id: UUID, _ value: String) { + guard let i = rows.firstIndex(where: { $0.id == id }) else { return } + let pasted = value.count - rows[i].host.count > 1 + if !isEdit && pasted && (TargetRow.items(value).count > 1 || TargetRow.splitHostPort(value) != nil) { + let parsed = TargetRow.parse(value, defaultPorts: rows[i].ports) + if !parsed.isEmpty { + rows.replaceSubrange(i...i, with: parsed) + return + } + } + rows[i].host = value + } + + /// 新的一行沿用上一行的端口(同一组机器通常开同样的端口) + func addRow() { + let row = TargetRow(host: "", ports: rows.last?.ports ?? "") + rows.append(row) + focusedRow = row.id + } + + func removeRow(_ id: UUID) { + guard rows.count > 1 else { return } + rows.removeAll { $0.id == id } + } + + /// 每个地址分到的访问端口,以及连通性测试结果 var planList: some View { - let shown = plan.prefix(6) + let shown = plan.prefix(8) + let failed = plan.filter { probes[$0.target]?.ok == false }.count + let tested = plan.filter { probes[$0.target] != nil }.count return VStack(alignment: .leading, spacing: 3) { ForEach(Array(shown)) { m in HStack(spacing: 6) { @@ -3720,17 +4104,39 @@ struct TunnelEditSheet: View { Text(verbatim: m.target) .font(.system(size: 11, design: .monospaced)) .foregroundColor(.secondary) + Spacer(minLength: 6) + if let r = probes[m.target] { + Label(r.ok ? r.detail : "不通", systemImage: r.ok ? "checkmark.circle.fill" : "xmark.circle.fill") + .font(.system(size: 10)) + .foregroundColor(r.ok ? .green : .red) + .help(r.ok ? "连接成功" : "连接失败:\(r.detail)") + } } } - Text(verbatim: (plan.count > shown.count ? "… " : "") + "共 \(plan.count) 个地址,每个地址一个通道,访问端口自动连续分配") + Text(verbatim: planCaption(failed: failed, tested: tested, hidden: plan.count - shown.count)) .font(.system(size: 11)) - .foregroundColor(.secondary) + .foregroundColor(failed > 0 ? .red : .secondary) } .padding(8) .frame(maxWidth: .infinity, alignment: .leading) .background(RoundedRectangle(cornerRadius: 6).fill(Color.primary.opacity(0.04))) } + func planCaption(failed: Int, tested: Int, hidden: Int) -> String { + var parts: [String] = [] + if hidden > 0 { parts.append("… 共 \(plan.count) 个地址") } + if tested == plan.count && failed == 0 { + parts.append(plan.count == 1 ? "目标连接成功" : "全部 \(plan.count) 个目标连接成功") + } else if failed > 0 { + parts.append("\(failed) 个目标连不上,鼠标停在 ✗ 上可查看原因") + } else { + parts.append(plan.count == 1 ? "访问端口自动分配" : "每个地址一个通道,访问端口自动连续分配") + } + return parts.joined(separator: ",") + } + + // MARK: Sections + var groupSection: some View { VStack(alignment: .leading, spacing: 4) { Text("通道组") @@ -3741,7 +4147,9 @@ struct TunnelEditSheet: View { if !isBatch { Text("不分组").tag(GroupChoice.none) } - Text("新建通道组").tag(GroupChoice.new) + if isBatch || isEdit { + Text("新建通道组").tag(GroupChoice.new) + } if !vm.groups.isEmpty { Divider() ForEach(vm.groups) { g in @@ -3751,23 +4159,31 @@ struct TunnelEditSheet: View { } .labelsHidden() .fixedSize() - if groupChoice == .new { - TextField(name.trimmingCharacters(in: .whitespaces).isEmpty ? "通道组名称" : "组名,默认「\(name.trimmingCharacters(in: .whitespaces))」", text: $newGroupName) + if isEdit && groupChoice == .new { + TextField(trimmedName.isEmpty ? "通道组名称" : "组名,默认「\(trimmedName)」", text: $newGroupName) .textFieldStyle(.roundedBorder) } } - if isBatch { - Text("多个地址会放进同一个通道组:共用邀请和授权,同事授权一次即可访问全部地址") - .font(.system(size: 11)) - .foregroundColor(.secondary) - } else if groupChoice != .none { - Text("组内通道共用邀请和授权,同事授权一次即可访问组内全部地址") + if let hint = groupHint { + Text(verbatim: hint) .font(.system(size: 11)) .foregroundColor(.secondary) } } } + var groupHint: String? { + switch groupChoice { + case .none: + return nil + case .new where isBatch: + let n = trimmedName.isEmpty ? "(填写上面的名称)" : "「\(trimmedName)」" + return "\(plan.count) 个地址会放进通道组\(n):共用邀请和授权,同事授权一次即可访问全部地址" + default: + return "组内通道共用邀请和授权,同事授权一次即可访问组内全部地址" + } + } + /// 自动关闭:闲置关闭(主要)+ 可选的最长开启时长 var closeSection: some View { VStack(alignment: .leading, spacing: 6) { @@ -3853,7 +4269,7 @@ struct TunnelEditSheet: View { // MARK: Actions func refreshPlan() async { - guard mayBeMulti else { + guard !isEdit, !composedTarget.isEmpty else { plan = [] planError = nil return @@ -3868,12 +4284,10 @@ struct TunnelEditSheet: View { } func probe() { - let targets = isBatch ? plan.map { $0.target } : [target.trimmingCharacters(in: .whitespaces)] + let targets = isEdit ? [composedTarget] : plan.map { $0.target } isProbing = true Task { - let (ok, msg) = await vm.probeTargets(targets) - probeOK = ok - probeMessage = msg + probes = await vm.probeAll(targets) isProbing = false } } @@ -3901,17 +4315,20 @@ struct TunnelEditSheet: View { func save() { var port = 0 - if !isBatch { + if isEdit { guard let p = Int(portString), p > 33000 && p <= 34000 else { errorMessage = "端口须在 33001-34000 范围内" return } + guard !composedTarget.contains(",") else { + errorMessage = "一个通道只对应一个目标端口;要开放更多端口,请用「添加通道」" + return + } port = p } guard let wl = whitelist() else { return } let form = makeForm(port: port, whitelist: wl) - var joinsExisting = false - if case .existing = groupChoice { joinsExisting = true } + let joinsExisting = existingGroupName != nil isSaving = true errorMessage = nil Task { @@ -4496,13 +4913,16 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate { tunnelSection.isEnabled = false menu.addItem(tunnelSection) + // 通道组占一行(出现在它第一个成员的位置),子菜单里整组开关、逐个地址开关 + var seenGroups = Set() for t in vm.tunnels { - let check = t.enabled ? "✓ " : " " - let title = "\(check)\(t.name) (:\(t.listen_port))" - let item = NSMenuItem(title: title, action: #selector(toggleTunnelAction(_:)), keyEquivalent: "") - item.representedObject = t.id - item.target = self - menu.addItem(item) + if let g = vm.group(t.group_id) { + if seenGroups.insert(g.id).inserted { + menu.addItem(groupMenuItem(g, members: vm.members(of: g))) + } + } else { + menu.addItem(tunnelMenuItem(t, title: "\(t.name) (:\(t.listen_port))")) + } } } @@ -4526,6 +4946,37 @@ class AppDelegate: NSObject, NSApplicationDelegate, NSWindowDelegate { self.statusItem?.menu = menu } + func tunnelMenuItem(_ t: TunnelItem, title: String) -> NSMenuItem { + let item = NSMenuItem(title: (t.enabled ? "✓ " : " ") + title, action: #selector(toggleTunnelAction(_:)), keyEquivalent: "") + item.representedObject = t.id + item.target = self + return item + } + + func groupMenuItem(_ g: GroupItem, members: [TunnelItem]) -> NSMenuItem { + let on = members.filter { $0.enabled }.count + let state = on > 0 && on < members.count ? ",\(on) 个开启" : "" + let item = NSMenuItem(title: (on > 0 ? "✓ " : " ") + "\(g.name)(\(members.count) 个地址\(state))", action: nil, keyEquivalent: "") + let sub = NSMenu() + let toggle = NSMenuItem(title: on > 0 ? "关闭整组" : "开启整组", action: #selector(toggleGroupAction(_:)), keyEquivalent: "") + toggle.representedObject = [g.id, on > 0 ? "off" : "on"] + toggle.target = self + sub.addItem(toggle) + sub.addItem(NSMenuItem.separator()) + for t in members { + sub.addItem(tunnelMenuItem(t, title: ":\(t.listen_port) → \(t.target)")) + } + item.submenu = sub + return item + } + + @objc func toggleGroupAction(_ sender: NSMenuItem) { + guard let v = sender.representedObject as? [String], v.count == 2 else { return } + Task { + await PortRelayViewModel.shared.toggleGroup(id: v[0], enabled: v[1] == "on") + } + } + @objc func toggleTunnelAction(_ sender: NSMenuItem) { guard let id = sender.representedObject as? String else { return } Task { diff --git a/tools/ui-snapshots/main.swift b/tools/ui-snapshots/main.swift index 8303c24..b23efb3 100644 --- a/tools/ui-snapshots/main.swift +++ b/tools/ui-snapshots/main.swift @@ -189,7 +189,10 @@ func makeDemoVM(tick: Int = 0) -> PortRelayViewModel { [ {"id":"h1","tunnel_id":"t1","tunnel_name":"MySQL 数据库","port":33660,"client_ip":"192.168.1.21:51000","connected_at":"\(t(-5000))","disconnected_at":"\(t(-4000))","duration_sec":1000,"bytes_in":1288490188,"bytes_out":5368709}, {"id":"h2","tunnel_id":"t1","tunnel_name":"MySQL 数据库","port":33660,"client_ip":"192.168.1.21:51001","connected_at":"\(t(-3000))","disconnected_at":"\(t(-2990))","duration_sec":10,"bytes_in":2048,"bytes_out":4096}, - {"id":"h3","tunnel_id":"t1","tunnel_name":"MySQL 数据库","port":33660,"client_ip":"192.168.1.35:40000","connected_at":"\(t(-90000))","disconnected_at":"\(t(-86000))","duration_sec":4000,"bytes_in":99999999,"bytes_out":1} + {"id":"h3","tunnel_id":"t1","tunnel_name":"MySQL 数据库","port":33660,"client_ip":"192.168.1.35:40000","connected_at":"\(t(-90000))","disconnected_at":"\(t(-86000))","duration_sec":4000,"bytes_in":99999999,"bytes_out":1}, + {"id":"h4","tunnel_id":"g1a","tunnel_name":"订单服务 (10.0.3.11)","port":33670,"client_ip":"192.168.1.42:50100","connected_at":"\(t(-7000))","disconnected_at":"\(t(-6400))","duration_sec":600,"bytes_in":820000,"bytes_out":5200000}, + {"id":"h5","tunnel_id":"g1b","tunnel_name":"订单服务 (10.0.3.12)","port":33671,"client_ip":"192.168.1.42:50120","connected_at":"\(t(-6800))","disconnected_at":"\(t(-6000))","duration_sec":800,"bytes_in":420000,"bytes_out":3100000}, + {"id":"h6","tunnel_id":"g1a","tunnel_name":"订单服务 (10.0.3.11)","port":33670,"client_ip":"192.168.1.66:41022","connected_at":"\(t(-90000))","disconnected_at":"\(t(-88200))","duration_sec":1800,"bytes_in":1200000,"bytes_out":9400000} ] """) vm.totalActiveConns = 8; vm.totalHistoricalConns = 1656; vm.totalRateIn = totalIn; vm.totalRateOut = totalOut @@ -241,8 +244,8 @@ MainActor.assumeIsolated { render("01b-main-min", CGSize(width: 920, height: 640), ContentView(vm: vm)) render("04-clients-history", CGSize(width: 760, height: 600), ClientDetailsSheet(vm: vm, tunnel: t1, initialTab: 1, isPresented: yes)) render("05-clients-auth", CGSize(width: 760, height: 600), ClientDetailsSheet(vm: vm, tunnel: t1, initialTab: 2, isPresented: yes)) - render("06-edit-new", CGSize(width: 490, height: 760), TunnelEditSheet(vm: vm, tunnel: nil, isPresented: yes)) - render("07-edit-existing", CGSize(width: 490, height: 760), TunnelEditSheet(vm: vm, tunnel: vm.tunnels[1], isPresented: yes)) + render("06-edit-new", CGSize(width: 520, height: 760), TunnelEditSheet(vm: vm, tunnel: nil, isPresented: yes)) + render("07-edit-existing", CGSize(width: 520, height: 760), TunnelEditSheet(vm: vm, tunnel: vm.tunnels[1], isPresented: yes)) render("08-invite-form", CGSize(width: 560, height: 400), InviteSheet(vm: vm, tunnel: t1, autoGenerate: false, isPresented: yes)) render("09-invite-result", CGSize(width: 560, height: 400), InviteSheet(vm: vm, tunnel: t1, autoGenerate: true, isPresented: yes)) render("10-settings", CGSize(width: 400, height: 320), SettingsSheet(vm: vm, isPresented: yes)) @@ -256,7 +259,7 @@ MainActor.assumeIsolated { render("readme-invite", CGSize(width: 560, height: 250), InviteSheet(vm: demo, tunnel: demo.tunnels[0], autoGenerate: true, isPresented: yes)) render("readme-clients", CGSize(width: 760, height: 560), ClientDetailsSheet(vm: demo, tunnel: demo.tunnels[0], initialTab: 0, isPresented: yes)) render("readme-access", CGSize(width: 760, height: 490), ClientDetailsSheet(vm: demo, tunnel: demo.tunnels[0], initialTab: 2, isPresented: yes)) - render("readme-edit", CGSize(width: 490, height: 760), TunnelEditSheet(vm: demo, tunnel: demo.tunnels[0], isPresented: yes)) + render("readme-edit", CGSize(width: 520, height: 760), TunnelEditSheet(vm: demo, tunnel: demo.tunnels[0], isPresented: yes)) let g = demo.groups[0] render("group-card", CGSize(width: 980, height: 330), GroupCardView(group: g, members: demo.members(of: g), visible: demo.members(of: g), vm: demo, onEdit: {}, onAddMember: {}, onInvite: {}, onViewClients: { _ in }, onEditMember: { _ in }, onInviteMember: { _ in }, onMemberClients: { _ in }).padding(20)) @@ -264,14 +267,19 @@ MainActor.assumeIsolated { onEdit: {}, onAddMember: {}, onInvite: {}, onViewClients: { _ in }, onEditMember: { _ in }, onInviteMember: { _ in }, onMemberClients: { _ in }).padding(20)) render("group-card-narrow", CGSize(width: 720, height: 360), GroupCardView(group: g, members: demo.members(of: g), visible: demo.members(of: g), vm: demo, onEdit: {}, onAddMember: {}, onInvite: {}, onViewClients: { _ in }, onEditMember: { _ in }, onInviteMember: { _ in }, onMemberClients: { _ in }).padding(20)) - render("group-add-batch", CGSize(width: 490, height: 860), TunnelEditSheet(vm: demo, tunnel: nil, isPresented: yes, - draftName: "订单服务", draftTarget: "10.0.3.11-13:22, 10.0.3.11-13:8080")) - render("group-add-member", CGSize(width: 490, height: 780), TunnelEditSheet(vm: demo, tunnel: nil, isPresented: yes, groupId: g.id)) + render("group-add-batch", CGSize(width: 520, height: 900), TunnelEditSheet(vm: demo, tunnel: nil, isPresented: yes, + draftName: "订单服务", draftRows: [("10.0.3.11", "22, 8080"), ("10.0.3.12", "22, 8080"), ("10.0.3.13", "22")])) + render("group-add-single", CGSize(width: 520, height: 780), TunnelEditSheet(vm: demo, tunnel: nil, isPresented: yes, + draftName: "MySQL 实习库", draftRows: [("10.0.1.16", "3306")])) + render("group-add-member", CGSize(width: 520, height: 780), TunnelEditSheet(vm: demo, tunnel: nil, isPresented: yes, groupId: g.id)) render("group-sheet-edit", CGSize(width: 520, height: 420), GroupEditSheet(vm: demo, group: g, isPresented: yes)) render("group-invite", CGSize(width: 560, height: 300), InviteSheet(vm: demo, scope: .group(g.id), autoGenerate: true, isPresented: yes)) render("group-access", CGSize(width: 760, height: 560), ClientDetailsSheet(vm: demo, scope: .group(g.id), initialTab: 2, isPresented: yes)) render("group-online", CGSize(width: 760, height: 400), ClientDetailsSheet(vm: demo, scope: .group(g.id), initialTab: 0, isPresented: yes)) - render("group-edit-member", CGSize(width: 490, height: 800), TunnelEditSheet(vm: demo, tunnel: demo.tunnels[3], isPresented: yes)) + render("group-online-addr", CGSize(width: 760, height: 460), ClientDetailsSheet(vm: demo, scope: .group(g.id), initialTab: 0, byAddress: true, isPresented: yes)) + render("group-history", CGSize(width: 760, height: 400), ClientDetailsSheet(vm: demo, scope: .group(g.id), initialTab: 1, isPresented: yes)) + render("group-history-addr", CGSize(width: 760, height: 520), ClientDetailsSheet(vm: demo, scope: .group(g.id), initialTab: 1, byAddress: true, isPresented: yes)) + render("group-edit-member", CGSize(width: 520, height: 800), TunnelEditSheet(vm: demo, tunnel: demo.tunnels[3], isPresented: yes)) // README 动图逐帧:卡片随时间推移(每帧 = 5 秒) if only.hasPrefix("gif") {