From 0a8025b28192ac7484120349a6b62891622ff67c Mon Sep 17 00:00:00 2001
From: abrichr
Verified execution
- {timeline ? 'exact frame link' : 'artifact-bound'} +What is happening
+ + {activeStageIndex >= 0 + ? `Stage ${activeStageIndex + 1} of 4` + : 'Exact media'} +{phaseContent.detail}
-- Retained frame - - {entry.source_frame.presentation_phase} · {entry.source_frame.file} - -
- )} - {Object.hasOwn(entry.facts ?? {}, 'model_calls') && ( -- Model calls - {entry.facts.model_calls} + {entry.facts.outcome}
)} -{MISSING_TIMELINE}
> )} -{manifest?.video_sha256?.slice(0, 20) ?? 'loading'}…
- Graph
- {manifest?.program_graph_sha256?.slice(0, 20) ?? 'loading'}…
- {MISSING_TIMELINE}
} + {!timeline && ( +{MISSING_TIMELINE}
+ )}Compiled workflow
+Compiled workflow
+ + {parameterNames.length + ? `Inputs: ${parameterNames + .map((name) => `$${name}`) + .join(' · ')}` + : 'Only exact exported graph nodes appear here.'} + +
+ {manifest?.video_sha256 ?? 'loading'}
+
+
+ {manifest?.program_graph_sha256 ?? 'loading'}
+
+
+ {entry.source_frame.presentation_phase} ·{' '}
+ {entry.source_frame.file}
+
+ Evidence load error: {loadError}
} + {loadError && ( +Evidence load error: {loadError}
+ )} ) } diff --git a/components/RdpHybridPresentation.module.css b/components/RdpHybridPresentation.module.css index c465c41..f04ef10 100644 --- a/components/RdpHybridPresentation.module.css +++ b/components/RdpHybridPresentation.module.css @@ -13,7 +13,6 @@ .consoleHeader, .graphHeader, .clock, -.provenance, .chapter, .playButton { display: flex; @@ -32,139 +31,441 @@ text-transform: uppercase; } -.digest { margin-left: auto; color: #6f9088; } .boundLabel { padding: 4px 7px; - border: 1px solid rgba(140, 211, 198, .18); + border: 1px solid rgba(140, 211, 198, 0.18); border-radius: 999px; color: #7fb4a8; } -.mediaLink { - color: #a8c4be; - text-underline-offset: 3px; -} -.mediaLink:hover { color: #edf8f5; } -.grid { display: grid; gap: 1px; background: rgba(140, 211, 198, 0.14); } -.stage { position: relative; min-height: 300px; overflow: hidden; background: #071011; } -.video { display: block; width: 100%; height: 100%; min-height: 300px; object-fit: contain; background: #050a0b; } -.phaseBadge { position: absolute; top: 16px; left: 16px; display: grid; gap: 3px; padding: 8px 10px; border: 1px solid rgba(127, 247, 220, 0.32); border-radius: 10px; background: rgba(4, 19, 19, 0.74); backdrop-filter: blur(12px); font-size: 11px; } -.phaseBadge span { color: #95cac0; } -.phaseBadge strong { color: #e7fffa; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10px; letter-spacing: .07em; text-transform: uppercase; } -.phaseBadge[data-known='false'] strong { color: #b8cfca; } -.expandButton { + +.grid { + display: grid; + gap: 1px; + background: rgba(140, 211, 198, 0.14); +} + +.stage { + position: relative; + display: flex; + flex-direction: column; + min-height: 300px; + overflow: hidden; + background: #071011; +} + +.video { + display: block; + flex: 1 1 auto; + width: 100%; + height: 100%; + min-height: 300px; + object-fit: contain; + background: #050a0b; +} + +.expandButton, +.playButton { position: absolute; + border: 1px solid rgba(159, 245, 223, 0.25); + border-radius: 999px; + background: rgba(4, 18, 18, 0.8); + color: #e5faf5; + font-size: 11px; + font-weight: 700; + backdrop-filter: blur(12px); +} + +.expandButton { top: 16px; right: 16px; padding: 7px 10px; - border: 1px solid rgba(159, 245, 223, .25); +} + +.playButton { + right: 16px; + bottom: 48px; + gap: 8px; + padding: 9px 12px; +} + +.expandButton:hover, +.playButton:hover { + border-color: #79e4c5; + background: #102728; +} + +.scrubWrap { + position: static; + flex: 0 0 auto; + padding: 3px 16px 10px; + background: #050a0b; +} + +.scrubWrap input { + width: 100%; + accent-color: #68e3bd; +} + +.scrubWrap input:disabled { + cursor: not-allowed; + opacity: 0.45; +} + +.clock { + justify-content: space-between; + color: #b2d0c9; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 10px; +} + +.console { + min-height: 300px; + padding: 24px; + background: linear-gradient(180deg, #0b1e20, #081516); +} + +.consoleHeader { + justify-content: space-between; + padding-bottom: 14px; + border-bottom: 1px solid rgba(149, 222, 205, 0.15); + color: #80b6aa; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 10px; + letter-spacing: 0.08em; + text-transform: uppercase; +} + +.consoleHeader p { + margin: 0; +} + +.consoleHeader span { + color: #68e3bd; +} + +.console h3 { + max-width: 18ch; + margin: 42px 0 12px; + color: #f0fffb; + font-family: var(--font-display, ui-sans-serif); + font-size: clamp(25px, 3vw, 34px); + line-height: 1.04; +} + +.console > p { + max-width: 36ch; + margin: 0; + color: #abc4bf; + font-size: 15px; + line-height: 1.6; +} + +.console .outcome { + display: inline-flex; + width: auto; + margin-top: 26px; + padding: 8px 12px; + border: 1px solid rgba(104, 224, 198, 0.35); border-radius: 999px; - background: rgba(4, 18, 18, .8); - color: #d8f4ee; + background: rgba(77, 215, 171, 0.12); + color: #8af2d2; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 11px; font-weight: 700; - backdrop-filter: blur(12px); + letter-spacing: 0.08em; +} + +.console .outcome[data-outcome='halted'] { + border-color: rgba(255, 143, 129, 0.36); + background: rgba(166, 54, 43, 0.16); + color: #ffb0a7; } -.expandButton:hover { border-color: #79e4c5; background: #102728; } -.playButton { position: absolute; right: 16px; bottom: 48px; gap: 8px; padding: 9px 12px; border: 1px solid rgba(159, 245, 223, .25); border-radius: 999px; background: rgba(4, 18, 18, .8); color: #e5faf5; font-size: 12px; font-weight: 700; backdrop-filter: blur(12px); } -.playButton:hover { border-color: #79e4c5; background: #102728; } -.scrubWrap { position: absolute; right: 16px; bottom: 12px; left: 16px; } -.scrubWrap input { width: 100%; accent-color: #68e3bd; } -.scrubWrap input:disabled { opacity: .45; cursor: not-allowed; } -.clock { justify-content: space-between; color: #b2d0c9; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10px; } -.console { min-height: 300px; padding: 20px; background: linear-gradient(180deg, #0b1e20, #081516); } -.consoleHeader { justify-content: space-between; padding-bottom: 14px; border-bottom: 1px solid rgba(149, 222, 205, .15); color: #80b6aa; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10px; letter-spacing: .08em; text-transform: uppercase; } -.consoleHeader p { margin: 0; } -.consoleHeader span { color: #68e3bd; } -.console h3 { margin: 22px 0 8px; color: #f0fffb; font-family: var(--font-display, ui-sans-serif); font-size: 26px; line-height: 1.05; } -.console > p { margin: 0; color: #abc4bf; font-size: 14px; line-height: 1.55; } -.evidencePath { + +.rail { display: grid; - gap: 0; - padding: 0; - margin: 20px 0 0; - list-style: none; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 1px; + border-top: 1px solid rgba(140, 211, 198, 0.14); + background: rgba(140, 211, 198, 0.14); } -.evidencePath li { - position: relative; + +.chapter { + min-height: 76px; + flex-direction: column; + align-items: flex-start; + justify-content: center; + gap: 4px; + padding: 12px 16px; + border: 0; + background: #0a1719; + color: #d7f0ea; + text-align: left; +} + +.chapter:hover, +.chapter[data-active='true'] { + background: #103034; +} + +.chapter[data-active='true'] { + box-shadow: inset 0 2px 0 #69e2bd; +} + +.chapter > span { + color: #67dfbc; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 10px; +} + +.chapter strong { + font-size: 12px; +} + +.chapter small { + color: #87aaa2; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; + font-size: 9px; +} + +.contractNote { + grid-column: 1 / -1; + margin: 0; + padding: 14px 18px; + background: #0a1719; + color: #8eaaa4; + font-size: 12px; + line-height: 1.45; +} + +.detailsStack { display: grid; - grid-template-columns: 30px minmax(0, 1fr); - gap: 9px; - min-height: 48px; - color: #6f8d86; + gap: 1px; + border-top: 1px solid rgba(140, 211, 198, 0.14); + background: rgba(140, 211, 198, 0.14); +} + +.details { + background: #071213; } -.evidencePath li:not(:last-child)::after { + +.details summary { + position: relative; + display: flex; + align-items: center; + min-height: 76px; + padding: 14px 54px 14px 18px; + cursor: pointer; + list-style: none; +} + +.details summary::-webkit-details-marker { + display: none; +} + +.details summary::after { position: absolute; - top: 25px; - bottom: 3px; - left: 10px; - width: 1px; - background: rgba(130, 196, 182, .18); - content: ''; + top: 50%; + right: 20px; + color: #68e3bd; + content: '+'; + font-size: 24px; + line-height: 1; + transform: translateY(-50%); +} + +.details[open] summary::after { + content: '−'; +} + +.details summary:hover { + background: #0d2426; } -.evidencePath li > span { + +.details summary span { display: grid; - place-items: center; - width: 21px; - height: 21px; - border: 1px solid rgba(130, 196, 182, .22); + gap: 4px; +} + +.details summary strong { + color: #e8fbf6; + font-size: 13px; +} + +.details summary small { + color: #88a8a1; + font-size: 11px; +} + +.graph, +.evidencePanel { + padding: 0 18px 20px; +} + +.graphHeader { + justify-content: space-between; + gap: 18px; + padding-top: 16px; + margin-bottom: 14px; + border-top: 1px solid rgba(149, 222, 205, 0.14); +} + +.graphHeader p { + margin: 0; + color: #daf8f1; + font-size: 13px; + font-weight: 700; +} + +.graphHeader span { + display: block; + margin-top: 3px; + color: #829e98; + font-size: 11px; +} + +.motion { + padding: 5px 7px; + border: 1px solid rgba(128, 220, 196, 0.2); border-radius: 999px; + color: #89bbb0 !important; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; - font-size: 8px; + font-size: 9px !important; + letter-spacing: 0.06em; + text-transform: uppercase; + white-space: nowrap; } -.evidencePath li div { min-width: 0; display: grid; gap: 2px; } -.evidencePath strong { color: #91aaa4; font-size: 11px; } -.evidencePath small { - overflow: hidden; + +.graph ol { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 8px; + padding: 0; + margin: 0; + list-style: none; +} + +.graph > ol > li { + min-height: 126px; + padding: 12px; + border: 1px solid rgba(142, 207, 193, 0.14); + border-radius: 12px; + background: #0b1c1d; + opacity: 0.72; + transition: + border-color 0.25s ease, + background 0.25s ease, + opacity 0.25s ease, + transform 0.25s ease; +} + +.graph > ol > li[data-active='true'] { + border-color: rgba(99, 230, 191, 0.72); + background: linear-gradient(145deg, #10443e, #0d2728); + box-shadow: 0 0 28px -13px #60e6bf; + opacity: 1; + transform: translateY(-2px); +} + +.graph > ol > li > span { + display: block; + margin-bottom: 8px; + color: #5de0b9; + font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10px; - text-overflow: ellipsis; - white-space: nowrap; } -.evidencePath li[data-supported='true'] { color: #83eccb; } -.evidencePath li[data-supported='true'] > span { - border-color: rgba(101, 230, 189, .7); - background: rgba(75, 210, 171, .14); - box-shadow: 0 0 18px -8px #65e6bd; + +.graph > ol > li > strong { + display: block; + color: #ebfff9; + font-size: 12px; + line-height: 1.3; +} + +.nodeFacts { + display: grid !important; + gap: 4px !important; + padding: 0 !important; + margin: 9px 0 0 !important; + color: #8caea6; + font-size: 10px; + line-height: 1.35; + list-style: none !important; +} + +.nodeFacts li { + min-height: 0; + padding: 0; + border: 0; + background: transparent; + opacity: 1; + transform: none; } -.evidencePath li[data-supported='true'] strong { color: #e7fff9; } -.exactDetails { + +.evidencePanel { display: grid; - gap: 7px; - margin-top: 4px; - padding-top: 13px; - border-top: 1px solid rgba(149, 222, 205, .15); + gap: 20px; + padding-top: 16px; + border-top: 1px solid rgba(149, 222, 205, 0.14); } -.exactDetails p { + +.evidenceLinks { display: grid; - grid-template-columns: auto minmax(0, 1fr); - gap: 10px; + grid-template-columns: repeat(2, minmax(0, 1fr)); + gap: 8px; +} + +.evidenceLinks a { + padding: 10px 12px; + border: 1px solid rgba(137, 213, 197, 0.16); + border-radius: 10px; + background: #0b1c1d; + color: #b7ddd5; + font-size: 12px; + text-decoration: none; +} + +.evidenceLinks a:hover { + border-color: rgba(104, 227, 189, 0.5); + color: #effffb; +} + +.provenance { + display: grid; + gap: 8px; margin: 0; - color: #75978f; +} + +.provenance div { + display: grid; + grid-template-columns: 150px minmax(0, 1fr); + gap: 12px; + color: #78958e; font-size: 10px; } -.exactDetails strong { color: #a5c3bc; } -.exactDetails span { overflow: hidden; text-align: right; text-overflow: ellipsis; white-space: nowrap; } -.provenance { display: grid; grid-template-columns: auto 1fr; gap: 5px 10px; margin-top: 20px; padding-top: 14px; border-top: 1px solid rgba(149, 222, 205, .15); color: #78958e; font-size: 10px; } -.provenance code { overflow: hidden; color: #a9c9c1; text-overflow: ellipsis; white-space: nowrap; } -.rail { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1px; border-top: 1px solid rgba(140, 211, 198, .14); background: rgba(140, 211, 198, .14); } -.chapter { min-height: 84px; flex-direction: column; align-items: flex-start; justify-content: center; gap: 4px; padding: 12px 14px; border: 0; background: #0a1719; color: #d7f0ea; text-align: left; } -.chapter:hover, .chapter[data-active='true'] { background: #103034; } -.chapter[data-active='true'] { box-shadow: inset 0 2px 0 #69e2bd; } -.chapter > span { color: #67dfbc; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10px; } -.chapter strong { font-size: 12px; } -.chapter small { color: #87aaa2; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 9px; letter-spacing: .06em; text-transform: uppercase; } -.contractNote { grid-column: 1 / -1; margin: 0; padding: 14px 18px; background: #0a1719; color: #8eaaa4; font-size: 12px; line-height: 1.45; } -.graph { padding: 18px; border-top: 1px solid rgba(140, 211, 198, .14); background: #071213; } -.graphHeader { justify-content: space-between; gap: 18px; margin-bottom: 14px; } -.graphHeader p { margin: 0; color: #daf8f1; font-size: 13px; font-weight: 700; } -.graphHeader span { display: block; margin-top: 3px; color: #829e98; font-size: 11px; } -.motion { padding: 5px 7px; border: 1px solid rgba(128, 220, 196, .2); border-radius: 999px; color: #89bbb0 !important; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 9px !important; letter-spacing: .06em; text-transform: uppercase; white-space: nowrap; } -.graph ol { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; padding: 0; margin: 0; list-style: none; } -.graph li { position: relative; min-height: 88px; padding: 12px; border: 1px solid rgba(142, 207, 193, .14); border-radius: 12px; background: #0b1c1d; opacity: .58; transition: border-color .25s ease, background .25s ease, opacity .25s ease, transform .25s ease; } -.graph li[data-active='true'] { border-color: rgba(99, 230, 191, .72); background: linear-gradient(145deg, #10443e, #0d2728); box-shadow: 0 0 28px -13px #60e6bf; opacity: 1; transform: translateY(-2px); } -.graph li > span { display: block; margin-bottom: 8px; color: #5de0b9; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 10px; } -.graph li strong { display: block; color: #ebfff9; font-size: 12px; line-height: 1.3; } -.graph li small { display: block; margin-top: 7px; color: #8caea6; font-size: 10px; line-height: 1.3; } -.error { margin: 0; padding: 12px 18px; border-top: 1px solid rgba(245, 148, 131, .24); background: rgba(107, 31, 24, .28); color: #ffb3a4; font-size: 12px; } + +.provenance dt { + color: #a5c3bc; +} + +.provenance dd { + min-width: 0; + margin: 0; + overflow: hidden; + color: #a9c9c1; + text-align: right; + text-overflow: ellipsis; + white-space: nowrap; +} + +.error { + margin: 0; + padding: 12px 18px; + border-top: 1px solid rgba(245, 148, 131, 0.24); + background: rgba(107, 31, 24, 0.28); + color: #ffb3a4; + font-size: 12px; +} + .srOnly { position: absolute; width: 1px; @@ -176,36 +477,111 @@ white-space: nowrap; border: 0; } -@media (min-width: 900px) { .grid { grid-template-columns: minmax(0, 1.45fr) minmax(300px, .55fr); } .stage, .console { min-height: 470px; } .video { min-height: 470px; } } + +@media (min-width: 900px) { + .grid { + grid-template-columns: minmax(0, 1.5fr) minmax(300px, 0.5fr); + } + + .stage, + .console, + .video { + min-height: 470px; + } +} + @media (max-width: 699px) { - .topline { padding: 0 12px; } - .boundLabel, - .digest { display: none; } - .mediaLink { margin-left: auto; } - .stage { min-height: 0; aspect-ratio: 16 / 9; } - .video { min-height: 0; aspect-ratio: 16 / 9; } - .expandButton { top: 12px; right: 12px; } - .phaseBadge { top: 12px; left: 12px; } + .topline { + padding: 0 12px; + } + + .boundLabel { + margin-left: auto; + } + + .stage, + .video { + min-height: 0; + } + + .video { + aspect-ratio: 16 / 9; + } + + .expandButton { + top: 12px; + right: 12px; + } + + .playButton { + right: 12px; + bottom: 45px; + } + + .scrubWrap { + padding-right: 12px; + padding-left: 12px; + } + + .console { + min-height: 230px; + padding: 20px; + } + + .console h3 { + margin-top: 28px; + } + .rail { - display: flex; - overflow-x: auto; - scroll-snap-type: x mandatory; - scrollbar-width: thin; + grid-template-columns: repeat(4, minmax(0, 1fr)); } + .chapter { - flex: 0 0 min(74vw, 250px); - scroll-snap-align: start; + min-width: 0; + min-height: 72px; + padding: 10px 8px; + } + + .chapter strong { + font-size: 10px; + } + + .chapter small { + display: none; } - .contractNote { min-width: 100%; } + + .details summary { + min-height: 70px; + padding-left: 14px; + } + .graph ol { display: flex; overflow-x: auto; scroll-snap-type: x mandatory; } - .graph li { + + .graph > ol > li { flex: 0 0 min(70vw, 240px); scroll-snap-align: start; } - .playButton { bottom: 52px; } + + .evidenceLinks { + grid-template-columns: 1fr; + } + + .provenance div { + grid-template-columns: 1fr; + gap: 3px; + } + + .provenance dd { + text-align: left; + } +} + +@media (prefers-reduced-motion: reduce) { + .graph > ol > li { + transition: none; + } } -@media (prefers-reduced-motion: reduce) { .graph li { transition: none; } } diff --git a/lib/publicJsonArtifacts.mjs b/lib/publicJsonArtifacts.mjs index c95fb34..376ce76 100644 --- a/lib/publicJsonArtifacts.mjs +++ b/lib/publicJsonArtifacts.mjs @@ -49,7 +49,7 @@ export const PUBLIC_JSON_ARTIFACTS = Object.freeze({ title: 'RDP presentation manifest', description: 'Content hashes and exact retained-frame provenance for the paced RDP presentation video.', - sha256: '4ab70f350be7894c1a3d4556afafd7b20558f9b3e807713518fc3b359d6095c3', + sha256: 'bb38218d7cb4cbcb31b6e188737071380f373fd8449f6ed42521f930bb32ec95', }), '/demos/rdp/presentation.timeline.json': Object.freeze({ source: '/demos/rdp/presentation.timeline.json', @@ -58,7 +58,7 @@ export const PUBLIC_JSON_ARTIFACTS = Object.freeze({ title: 'RDP hybrid presentation timeline', description: 'Exact decoded-frame intervals, retained source-frame bindings, compiled graph nodes, and public runtime facts for the RDP presentation.', - sha256: 'bb90f660da908d2ae857b5949b77088fae3f977efcb9dcddb1570d68b1d85567', + sha256: 'b668275ad7308f359380aa1bcb89ce98b7ae49673b36c4491330c399b2472403', }), '/desktop-preview/MANIFEST.json': Object.freeze({ source: '/desktop-preview/MANIFEST.json', diff --git a/pages/execute.js b/pages/execute.js index c37ec94..55d4435 100644 --- a/pages/execute.js +++ b/pages/execute.js @@ -5,7 +5,6 @@ import ExecuteApiExchange from '@components/ExecuteApiExchange' import ExecuteBoundaryFlow from '@components/ExecuteBoundaryFlow' import ExecuteOutcomeCards from '@components/ExecuteOutcomeCards' import Footer from '@components/Footer' -import JsonArtifactLink from '@components/JsonArtifactLink' import RdpHybridPresentation from '@components/RdpHybridPresentation' const description = @@ -131,30 +130,9 @@ export default function ExecutePage() {Model calls, wrong-record writes, and silent incorrect successes.
- Reference qualification with synthetic data. The presentation uses exact retained RDP frames and the exported compiled graph. The slower timing affects the video only. -
-
-
+ Reference qualification with synthetic data. The presentation uses exact retained RDP frames and the exported compiled graph. The workflow is shown above. Open Technical evidence for the reports, hashes, and raw artifacts. +
**+ zpC_~fffWog>%G++y?uuZw{Etc_Jk3N<*TzZnz+K*Zej5F#xCnqo^(Gxgf(gt|IgL8 z>FVc53EhjY_wl)X2{=-}7<2=l>^%FD;|53Iyc*9t z_-)~Pjfli642~c&`a!5sy0z<(!53#PXVVgxJzCngG$wh@!(xM#R_b$I8#Ky2O%6If zuZ9n8k kY6cX)E2xv9Q5;unBY>FI=dO;^1{8# zat@f FYYHY^pO$*m`)6^ZqQF)m9`O9(%4Dj9h^^yzn=3Je%m<`2n(<>MEM4CkVB z1==bNzC8jq-XFZ&U?aZjn;tw#+U)AwnaW&XyQ6i2;&t%Jxx4IkM!n7TB91?zs*o#r z4O4nYrUKUuKZpw5mPq2;oE4aE7(rBweLH(?wGc_V&Zf9x`h?@eU6r&zEAbxt$3%~a zVQi;~{+@0-bWUq-pKb3@&*oy?PCf2zM(q>DhJfz9pk6M1+4$$eBuxCuN1x)$)}ZlD z*p8y#p=Q|Q*Y^7g7e`D9sA*1aQRwH*zOzShKrov>YY*?9RC~$zm5yRgr`khJs($XU zvGofNuI)}(2J8)tkM(Bkcz>z8OGtS%)yLuGg(?z8iLl_F?0Bo1BJ5acS@yYVukm2b zsP6)(5(^STW?LOY??a6!-VGbPIR4a_&itBK1;<`X|MIRScyL9l$KGYkBSma*TfIbu z>`ha$$RPpltN{|wP_U$Fp&PqtV8^~WPpqhQBH!2&1#-Q=Cf3`ZO1EhT@xIeaUw~)i z)0y`&NcRScze-e{pjkRo4v>lQ-kBgd>l}vPu=JgX#%i0ro rsE(GCCmc7TA+TGv@ar%e67+^+%C0< #_~U+yr@%@$;7GWNr{Oe;k?qtPwaO OwSwYiq7qv7%+WE_;{~Bvp$A(ATpX=yuj$u!#ulx zDH~{s`c0V@R>c=F>+`kd;+v-1-c8X{nD9Iz-=AzD;VPQ1D41*WRwwGeMDp%%!litU zef~?agbz*l4NYG8DSrJ|ie%@OM|hzri5Iv>jn0T}(9~`h5m=nzt(1#|SgFMuQEXE$ zZ>}e PuiQ%(weXEg=t0NLB XXKLbkX|d6_H>1 za=+6-Tc{~F^tfiFmnAZyK&_i)J$YgwMvd|1@G~*9#+4~FW*cj`NkyoO+qIE(1Z`+U zb~mi->YxtP5*Gf>6VW6W8c)Z`=2Su2k(nWzl<%3r4}BMmuJ5reb(=0Y^8(@gdx;(| z^A2|7P+2qw6Vc*E(GVQDP0vLy62ejBY>PP}a7V)yKgnYhp-oh`dPA(8{DP2i0w*$D z-eOp-?2OvxBi*}5$1b#BKf)uu3G-Uh3993&t8ABlmiYzZrc{Hd1^-fYKfp#h`z&bX z@|efpBk36=dy67oP5Y^3KGY{}1oy9}HIP%T1IGSDqGOg%bo*gY(*&PsOS` v1{-=@~-|m);AC(Da3{at>Mu!r%yfi=Z>y_I#x|89NOX_4I4r z8{1$z%rb^g$LFa{)gnZ#h#fxR+ii`7KVnuKS{pQCFStbBLwr4Adx%a?+tStNI%`#+ zTQ~@xn`t-c4=t+M#@O4V=Y3X z%iCSs4-V!OtH;8&03#)NG_aQy?`}|U=)G*jqDWW$%N?= iz|WJ0e!_5?Rj)w$q;h`(QR&vAW0Fgbum{5 zZ_+Gp+$;&wTW>8trI3I~b=0d0dGOr*$oJnZ97=Wyw|~A$%|!Jp<`tHw5 rCVjn1jFH|ECkVj5cjcsFkcv4dI=2TU< ziVfdw)_l-|u)UqHO>j@rx?aKH2xC#Ms>?)uz0gLugy6Dq7~vy?-Et%VEi~OY>uC#L zjwCR1Lb1Uxap)0Vv1_{jYxMYMv5XW;-b?m$zHf7Zk5hC*ZH9)}q(fco3^c~q>Y|;} zp6izg-+ZTZ7*@@(p`<&L3Ma|<^Au%ua461ZUOvz8Q$(mnP}d(oebGyvD%nY1y*Eam z)D&NgQ)q~YC>_6bqgu%yf<-*tvLPjuZ-2CqN`ZrA()BTp%j< zML7J0SX<2@!N)hE#gMN<`x>5=7bX)v{;4J#t0hqoO|1#d?Q3x_QsWQb@-QnuqK1@X zk>sKAch6tR{_3ou{6@pv>w90ov(LE(XI*|tvHKK5aa2a4;;q6T&L3=`i@(!Zj*bf?JOyszOieK-8AA{;tFs{^q e<=(*u7 z(~*gU2C|V+PY26(zaRQ>+t=jC#nfs{L@SYK+B@%()5Sp~ns&eS%SfDoL3a$RB8iw( z)M2e$#tjPYS@Lsflr-hphsFVZ%`OI(uL+}lA;#g_%|FfU*hIrgTr|=iA8XGfBB~iS zu;U_D#L;y{?a{fXVLo)x)M0j8rxWz?!$^+Ru8Z<=YI@xyxMErr$lm!d_WBEZ>j`tg z$CmQn5QO}K8j9adNc&KHFE#%<{6o)%*ihL)lA%!R`o(7&&oY*Y1wr{;gShpwN$iZz z%QHg4p5MP29URzgdA`p$xlBV+CT>W_oauVss4qUppdiUfs?9r(-IOlnlC;3?7N#7}FNX@!O)10{k z_2%WiO_tm&?LklPCIUbFK786%<{c}-ngs*BNT4TFc4upD$6&L0Ogl!lPMeFKQ^B-h z29LZbU;g%awgiu&GKGbRI{DVgy>9s)Eb?Wv28F&Q9{Zj!?Iww=3{`ML@A#Cu^v0uq zm{q;EwifjjH @7=jCJ&8jI?{|Z1H8$|b cosb91b-0W9sO zy^8f6eHPWap?-!(OOHzuOxf~vrP|~M_?2-PL$+0+UT{0utHnsAQnoKpQNA5YEIfOg zGYPpLLXm5kQ<-Zl8CNvc^@aZ=_GuSd1B1)hK1`L)&HlS^`1vW>?CW;bx@aNJFy^wv zS+92<99wQbC8FkEckl7Gs|s$*eEJd(n^Re)Px>n<0q6a9Bl!R+B4VH8Adfl$3%U^f zww9)|o6fpl16{X>G9hKlK3^qh;Y4i_%XY*uV(vb@-rK~Wv!HU*v7XMBO!b$H^?x-p zv6wycN~DsJq{R7@ETsB0fU7&Gutf)1ZffGeCWc3oCA3^njIy>frc-<(|DI$yAiy7Y zM3wCce7#OfSJMLC%XZ(=l~|nEhjH}tJ-D(m509Bm)U}BHuatAG@b2`fXP!t|ge6j+ zb0hZcJ~&WF3@TvJ9sRuj0N2QEG`Xd_wMcP*)gC!0AjwC@J&ph2MLaD@$(YY{Trh67 zUe~kRA ^Q{sFYcUrt}ah$l(Na}1Lzmc>!mGAV#r;-QYPI~c)V@R%7_|UAFQQhem_gT7%4%{ zmOGN-liwVlm=gSL;N>auZQ$763x+6*4^M{}X2#{bR!AN~g-4Pp`S* lUvi#0^LK?^c|GzRg+V=VV30wy z+<)14K1j71ZSM5_Ct>PLb)t6zB{Y#ga&2k-<|&@ad=ZDC4%$Fq^?Ih1!^|sarmW*U zMcVU#Ir0jMprZl5LOo*np8oLF#Sww{&;z4q@AgW%9rv3Go|Q^(E?80z$2YvgT8r(X zPpmp6>uIE|8ZmJQFSZ9#US>@7UEN>yA{p@a`M^-qmorlp$cQ)PMfMW(7PgpM;UzuD znD$LcZExH(A(jn$ARSVWMyQW}ey(caXqvZGXG&w**;*6ZNr@kY8c@^}>{ $+B=d0WyMoPd{$;=e02#y4lbGk1 gzOS2O3qsC?Rj#}eRl%{g&q^m0OG5ko>Bc<9?8 zK(&pAAVJFus_D3EQijy?Aua3P%HiJ5didq }o^f4$xC7Pt|*w$J!ZeM80c!mVS z6MDB)@?V~A>--oqXGE`ho$_4*LJa#>)aZDrLJp rEW=yV0wO*x5f~FC1c9ax2{W8Uk+GrutvRnWVy@{Ei{RV9UmLwGD_JqV`N1~ql{`n2GAwf&4 z$;DpKVwp#fiaxTO2)R*xzq{oO@DI)0(Rs&Pbu 1x~}U zw@=2Z&2@SLZy#lU@}$|R-hC^R9WnS=cgNoMf!eXS`gPEKsGtM~242714C(oEjf;te zh(;OUA0*dy38M4Da37CIySZw~7@)(bP@&FhqkewMaNIWM|M)tz;aGVEKJH9D?;3M= zYzN<0tQ`)oC6l+;$dv%ra7WE*!S7Sls@<=|{KNw8F##uqH;G>z=pl1(6nSfE@K_up zwJp*-OHgZc^h=KnXo$;~Y$N?m*r^?ClUkBr2M#B`X(*jl{nQo2`u6eRq-jUTRjX(Q z4lkGZe5+~FyVBF}JUm6yzn{jcwRL#fWB8=CntwI^t8?ajLBfrkibQ#e_?LFlcvYLu zC2sQ-pEAtt@+P?Mmys`w!bgS0;;Pp>`&eOln{Oig?7!tObACxFJX(UYm5>~n&3deC z5&N$Etasze5%Q6H+D(HBeHX6u4yMiRBIkTLdsVoFi27)aQ6K+g8v*CxF+l*YdHOkh zCTEI!YUqdg(=N5|6&vByXOB?Lu0@$X7V<2F83^(Hdqx2RP;i@!_P9ESVKXHpk8`r^ zv<7IqIlg&Vd3JO7yFWitU@VMMYNHezRE6G{hke~WDSqL59ZXvkpS2x{CIc4=|EgOT zHL>C6T9nIGOKF&z$<0Woq`yKo%p2GGFUcJ^lN&H9H!nOVd6001D_+>XHB3Ht`+~34 zxAA-|);wI79Mz{YTHl&`J-fksPkC8+b$VLd-CmZ5A8YDSjFr4=nXmTc?0l4r(QEop zx`1W_MsWvh@zh7YX*G_GLQy*oyvaAwOjDw%=@>_qeH?SoP06f(?6mr=&ns>>vIJK! zEpIQXX`1O@*L`!RGpKr}gWeLl?z=!R9z~{m6HevuUDGx_uCT_OlJC(M4skL *WSM2uM?=R{q@XejMZY0vg1OMDrm(hR>9 z;QXW%t)`4ao=Rpg68oX$yN~u{l8ywV+9I>WpEI>=fO4sU%APn2BLD9A(!@-mnNc|> zTuRxwCK92Mh7L9#y-cHj0y~KMetvrz%Eloi%s}>ek+bLIwsO86gF*c%Z*ERiW&Bs) znFw>e@rr^GO5Tozyh@Zgn2sR(5UXl9JC{`txyUYaZ{3CO?4?;snml!$f-UR*$I jrg} z-yMs;6ssE-@tMhyfu(r;wKw1VAtCy*;Ny+v)Cd~tq&R{f)KwDMM)4MPK#-Dn%6!oO z1xP@*ztwQ?Eu)D~r{Z^f>}@b6jB;WEihvxxie%_OP_H)0pbBM{3W3wDXU}A!u^LBK zGKyX3Yn#;>#7q3qk70_@j1|{hu47UNJ|8^L=v-wSPo{5mh3fLIyTW`S3GJ9ab^wA> z!pWZLj%{kw2FV;J 1Yf;`(+ zl71!DS*cCt|BuL?lv3y^iNGyf3FP06cDtfdeE);yeWB~eC5tMZxOW;J@+~&gF4+J= zJhH%WG;>!yZBph_$`-BSBxdX_vcCh4R`cUeuj$t&yfaMD=*=HkKoFWEy(<%I(}<+( ztBDdGDIMH*dcilemWUeQ>m)kqoxnO&(;+=rR4rI2Kl>0m^a(Xja+@3IvjaNK1mvO< zt@|m%1wChm7dHgiG>Qf`M}$K|uOH*8e5)qRrt;!X`F4!*7hrX!)0HG0{aORxfAi** z-z+DAFm?4b`X N4oD*!>I_fkRAG(>q>&XI;#HDUdn*9`eGe%`zY%tht)(q$aZ%iN*&mYj3O@o! z;2mU>s^=PScG#b_sNJg718)hhE0Cf3OwpVvt2tl3d|%51j{M@W;b+K`x&T0p`gf5$ zqsbe{`h{aDS5cS6>P)|O6%ir&1#7a&GD;Q5A}> q21+xRGMcD{OMd(He2 zlE{dp>RCmI7Jv#iK|(A&kc&9s%J_!d@DJ}m{8f3C!Fn6$0GeBYdB7RIT;cdTpijP1 zDH=vya<+^Yv*@7QIF1Pamc 7zchI74JN$ r2^n_%@kp^xl-`NchhzE8B>{Ov0WH7OB3o85?uKEK $6&&kd3z4oCw}r4#-4;xnPi3f51bU{B8}a4-s7@|Sf3tWN!IQZ(i+2o zvsPZPQ3fN)_d&dK&M9>^nblg=Ej< LcE zUhq0_tJTxqxCM8>mI?vbsFY%8 j}LbPtFsUuj1Qm{pY;n;Y|yhHp558Th9jxcOZj^b{Hs%)wxO4 zc^X>wX`H*Y$NWPiN$$O8fB=|VF$No@l80 0H6JJQ?slETG{vb|A7wd(Mb@=B=fh!SpbstgV{IusPb&b(Aa}mmiMna(hB!HlE zN#-0GHMZus_S3#&=+N#IPcPq!K6blwb8a~YhisrMYr=v>V<2mk3fowM9XSoBIk$AM zrWvVuH Hr(a+sWC9->AvSQfZBV_3>c{K>Zj`d zKZqjF7cFL1I*)jIO$}vD{W&ZQXwgNfn+yjSY~S<6-=wusnJNE4l$epKa7|vts8eOU zDlL=am(#OE#vg#^$^h@u`V_`oe9HB>X$cYxYZAhI5`6J8nmNOGb9=~)H6iD|o_WW4 z&E2Cve1A4(`yV>s#*~2?ewm)c))%y4S%?oCSrk6Pr3&|7m52*L&%=d0U@(B!JG|80 z!Dbwgm^CX?zX^WtJIn+7h)S|~<);_VJ~5U}dkL8ZUHSQs*M3_poVSgm{_CjGKb|N+ zPdSV|e6E2^)zJVJLrL=+zf#slejj!5V6!Pk;W0G!9;4c|z268iG7boP^qoEcUOh{M zO$}r+6>@fpAKZtbH5rWR190w-NzQ>^{0(*+m@y{oYhN~rZ3AJ8_=aOjA}=jzr(~_G z8};${nNUpkJ)4CSA||L2APD${+%imMLp@Td!agr)&nl;@B%YyJ(+>IcsKf8-ZnN60 z=}huU>C%-lshH(w&TCq+##aQEjG@LH(z%vrr!rUTH#mfaIc8Qe^$~yk!CuZEfA5ET z_V7ts7{9kmq6_}lT4)5r?iHpmen)hF@{$Dn#i!Dzz@Xisa7`9o)};g-NxcG#=uInV zx*7CPo|b#o4XPU+(=7j`c--7qbAR;;G6?vNC#8>h7jo+oE(?nI5F@NP66^xvO@}0r zkKpsQtKTrqHT^IYj)PA^Y`oDOA)@u#&W|h_X J`)0w;ZhX4Cs0lFA1u2@^6`u 7(8h1FW_G)%K!KD@!VBW zWIiR4Luu0V*#xf)oFm{tTLV(s{#)7i2-C!}4Zrk@^@|WZUe}DqYGJzC(iTlDDXjdh z#fd=0*c{T3=#O( 3yAmoBV zZQ1I@-lBcv%7imYXmyZ>bwxpPj0`W$m}a-1>Pq#5!5)ioF7eEQJL1_B5d1dk%ffKJ z9WwrDn`hHoowhLL#F6wlU>2}1PgUY5=8nj2nI!fyO>Ex6y<_0ReIJ9r6w|I(3pOhn z$oLiVWoUS}QJ(EqkNXnvB0n92tXW+`_c4Fv_ 1%$vBI>lM{H(AVfjELd5OpuCftW(9 z)YpszkSA<&Pp&TMVS*D{p)JuNHL4m=T}^m^rBkTSj(6R~)8Fxc$L+|0l*qm`9!v~j zbLub8Rn{5*$RgoPvw+pAk+sRlvThW%U=wT#9vC+mcG&4lcfX7|i%GHi^vdLRT2Q7w zn?RpvX;Vf%Zw3AeI%#|4CqO)@HBtPQRUiHuv?7hQyft2fpmyZj@?6bd%yN4b;;9_k zGO@lcF&X2w4ppn(won-a2U{n_&MS|qk6cea ziUeOTv&2Qz;e^;a!^K+Ojc8=2l8YzZEz861OZS<)?VbhwBxkK#2r}sE_J(tIU8fuT zYFgQY^Cb0u?n&0*Uw) U-fLtz4G5fPjI?w$R&>D?TfyHUNd|+=as&87J&aA8bz?8a>28q6IE_Z&Yg%@<^7M&$ZY75uq z0NjAyfC@G)xlAzC31p@sbp)JC8j6XCa}s`ott{<;FR^$9Q&JW!XMS3XF+emYN;m*` z+a~R{VuAzSX2s|yu7;+P!`Gpp;r4@K!pDK#OZOFwu31MTapHh6TD~j6WK0LjV; mrAOZWVE_0vFvVqbu zCPnUxeUSALaJl;1AX*Y@z0t*M+(v6hC%?C-nvxo~Qu;ekz@7CI&myaJNjJ10B@v=E z-`cgT>axWA=~SWB85t!9CannBAnrldMN5TU_goc)F3k60TrcN4u02}M#k#TNkbhvh z3lb5Fm$LsJJsA>R-xLEl6e10dI77!C^W0ZsOowpVn<;7^z%S{q4*)N|>!(+zKzj<{ zHA26NWI?r^(joJT_f8*zGj#Z(UaIf_1U (}hu>p35K0fBvuWbfb#cR+zTDEv7|0L6ju`jv-K}IYq8vSzzF+r^`px za`x-=xR$2me7qsStu4qAt}-n}^>7|BPzTxPf5g8_BkmF=$ObC{(CpLy&4F5Fpbpqk z-9fPtVAGf*w)d~o)sYmDqA3f=`%~o;P{pJ=YcZ2^c$`RBc-JKTlos<&0t2ir!cdmL zS%VGAeRSaIAolJcehUaki020x=(xSDGC@~{xWs!TcplF-N81qG-Y|OJBA0y1q5YH! z`heZavbqMuTYUa==gn7pFvQ! *h~w+qJp{Xg&jH^=ROnC(4O{%zcCdV~M~ zArtEfU2UPV$%8L?Gs-$&xM;bKK8OhxVsVgYIerfBk-THO4N}PwJ>284BbsMjj5&%- zw}qh7t~eVDi0A{0SY*ClzBO!vlsA`E000ObH;1d8tk;-R-8h#o_BM3J3~I@b0+@v- zZDADZH0(n5R4M~fA{D=%3fld%YgQJgl;4uK~YQg+0j~ zPDMI JC@=E>n`QNT|lOAo_GWKhCwY!pMn(J1xp>Ynh__rR(7d( zEzpG+DD`xsw7I?DmMaA_9?9Q0Ja)(wmFVkUyld4zyM86M>%SOG(HN;3R4ho!Ighun zS3%;<^T~ZP68{-_SkqDw0LI; mG4|F5K;EMN7 zshNWaBY!!_Zv-b2M z_ta2m894VGptl n6*Qt4G97{0nhO7#=N}5KwJtV&=FbC zBLJX|bCaFWptcOA8b9t5)=qhe%b$hO(&TL^OCW)weziKjm~QfU9Y(uCJ?F=$JHWZx z)#Z7!C2&)9NlJXuP>!0~zjR#p#$Y1C;x#^7R&spPz?mTF{b=DWY$T5s%;W7kiH-zV zv^%J!^tqCNcib40ttT%lTR&1{Dd5F-4Udh?bv3Wi$LD2s_ZqH=5_rI?4)@(2V^w(B z!#)Ow=-VbTpt&9v<2)iIH+Q4$UOpiK_e3dxxKZ>#&+$o{>@=|z8HbBHd=Mnv%q}vx zDh}>hlyy^ G2Z$%>L`!KpFmK}99p@&^?ds&PjE)qY0+ zsNbj)_zIx5O$I?*O4%PLUc)UU2aLT=4v%qXjB`P6N+qMa*!5R~`6*c(HNi!|j%STQ z{O4q9H37g3^yC^d?x+}g6E}#mWX~(r>SkmucIt)z8uB$oT&pMBm)Uf_QLp3HmOnM2 zf_H$jsD+DaX5?)n(CKJDnzhgWyKn%4Q1gY>p}k=3D?8E%%Q-t~2<}LznubF$;5vcW zjsomuSqg?TLdCiN*8%w_ZI=qR**?ICjk_6$f0m?(1eGKFzVUnUz27Z9B)l)tI&`sJ z8soygmUlr!ALu>kCQGMr+kx z3;WyDSev8l{?vx;rk%btAX87TEl|oj^OuNzybl3~ryi+rb9t5#3f&sM*esgv?ggvt zm5)Gwy7Gw9s7JvD!JxBBS7Eq4S4!xWT0wZMsZ2rUjYO0OSDlP?ZCB{lWoSFG!9pSh z^Gh&G9D-FtSKh22YKv{v|GsjEr ) z$$AAlN^{N*h8Yz~GTakNs$(87<82xag7$l24wfMN3DeH^k#e^6PB4cw>+cJysi>Wr z+|2L;U)ARnF9FWNIXQ@{U+-cM;?w>pkSpKS@Os|-O!ibB`z-cu0!hB1Oe4k nW z*BC^ia9Yif!x=+0*gW?tgBARc=R%Dy{+2|@$j6R@o@KNznp78I#W;F4Q-b2R_@Eer zvTuAm{`xAO*eTlkrU@H+7<7sG~nxzFZDfXeT1U@i=83)<>*yygI9{fs|!gcH(_B zTNuI#%J97(hW!bRVe)-|knA?du9$`H+tKs;Di?5He1h>?xG#85*Q#ErlkGPmQeB`$ z2=)1X9Xz;Ym-MlhSs|rfVs$on4vsk38bOayoKuA=`{f@ p5B{aI6n-! $RYR8Wm<9Y|9_sa$aL)mlA3-a@I^)qDLe40gAk9uE(hmsCW#k5Sew z3vN`QSRaY}>-yhFD;1>SJ{%it`BOx!?qOM<2-cquSpgLKQ1pzZ@Ph DvwJl0Qmk>q-Q~{c0>XmgYtQBuD zvEb6SEveE76dl-LqcC`O{;= OG=D}_E7Cw&C8`pxCC;km7|&P_~ac+y9I|e+$BIh+&N48#C~0}p}ZK` ziLcM`Eqq?YEhaq8k*83`i`rZH4yRG&n}djXDC7` ${|3_f9MIQqV@4z^_i8RRY)FP#rUpa&Z&Kt;=~3>uxDm64bw zk`A0qzwlI?(n}4Q2;`|ZjE!RJ5W+s;M{oMVA0qx)t(F(}U>^>}KV8Us7UG3_*9oK_ z1xTTC;Zh-Kncm_;)BL6EWz{&P{Z)Y}d0rIstb4%9TYV>^ExO6nSvs@3nrLK%R}&ND zD})%y8feCqc>3($;rqWmqD7rj)jXyOZWw@--5I61>6xd>o`4B73);*9R%Y1!fqUI{ z95rd&&g_ycb|WAiVS}Wdo-N-7zg+AZ+Xa1c|JLKSQy vRINgPOY|DPyOfoGz5^ zw^hvwJbR2>g}|cRJB{>R5FNRA*B4Rc -I_<6B)trTvTm;9Tw4; ztkYGSDrH*Eevc0`p2P$z! 1Tr%>s;+zAFXwf@B4D4 zWpGZm>jDF!zd6YOx}L?pDQfUVr^e(o@_n|WD$71LLH9XI8`rLLz5+%oML*eeBgAhU zJLY X-Ax37`9#R1pL{3D~>o$W=@$i3|oAQd? CA*{2 zr+n| u?NfNVdd`bNP9*L`$Bse;(0@$OOpf(yq_{&PE6x!a23 z$#~-x? +YfMXt+|IC4CKu?*Cy)mx;yyl~tHjQ3EjIc@)& zojn7hnr3}I>>CbpgOdJ8gTM-Ao(h>qrd?)f0kdtz!I371mk}L{vZ4Hy?1D5VM11=_ zwMbUQiRs4v9{@)V70;C03^cT2u4hP~kmwdB3un~(-vrE&f;wHV1Mtof-OtFtA+I3w zh~$3K+K%33qahKM$y5AJNjfXnhl{OKt$7g^X>w0xaYCVscNuH5vM3a)fT2y*t}m e5u1LX D+guzK*<0-UtrTf{ny|p-t5gr~q%0#d1 zp6YvtB0Kf!nc)@uDW>_3=V9w0I^U%;Xz}M*aHUW@sze@h=xDZ=$cI?%2j|?=df5lu z36w8~3i;8DV7Jg2$6nJg+t&JyC$A1=Gy&eoP+nSi{4*Gj=qclR3OpK-ZR{-##pQ+% z2UF!mU8UB!>a&7zUI_Ly8p<$yQqtaMoKl6IjzhA-t3~kx6lXe}gABPxF{TZqUgOTx z9Csrgz@aTh)dv4Qp7#Om-rx0c8e@We%}T3aH68P3QNY<6b3t9XYRLdLnPxdf!eUGV z-#^bJP)G6zH9}OeQh|Zg8w8{S(p}aQg%dzdRN&&w(R@-pM3ei!4_PpI4t+}1t1!J@ z{?3bD`{fhjFMrj_c~|?$F$OPHs@Cf4=C3rEeu&|>;W_ 1Dg8#z0O{aZ0#wu~C9 z`*%jL0#7Bs?)xBiF*uhrp^hV@rK5|BJ7IdIGXX9lc6M&&o}4(h;+|?z;E!hj81S_d zFq6(mQKinr9Ek4zIQ;Lqec1$|TC&?5ZHnZ<3=teQ9EgG4YNZ!#aP(EP=u!(}D?zn@ zrqvzng_C9GL9a5
- >Z+f8@|SZ|lspXdwNyYF!$kF&&! zRUv>M%$|uRZggDu&kQZ+@*XWgR*3u3D>GzFSB-ROQ^iaP>2Cp-_V;ZQf7sSo8&MFp z-a@K(1X2QT$`OV(f~{{F
vCu1@u7YsWsw7r@kR5<^^)UI2Mr<-DN=c!RiT;q#*dsZgxANe0Zb!kMI4 zF3M%rbq<`vQ*Y;w>uyC9KaCkpE3h$jKJ3PT8{?Cx^AaK|V%*cVPoOW9t2nBkXh!E6 zeHn8NJV0jp-&@$i*RPIa1wuSc)3(jZb!`1rVJ+2D-)zUbMT5e~`N3m<*mN!JaU0~B zK_B#Oy<>twxW`G!%zlh$!^R0DL*T&qf2wWIYHl3@7R^m=U#YzRXG-^T*#M2Tlia#r zr$)|h^(V<#<@ejkbr>6t?E;ZTo=8V!^Rx@_^KeRSdi|0EACiE!0MYP%l$IFd-)5@` zPs4~1pIG)M3oA*Z4H;l#E|^uT%hqBTJU@9+z^|kz)}s6|uAC%&y%;Gg|I2Z;Psmzo zO=Y0*_*! Ro GBcsQ950~pttK~3)e_HfMQuXa50-ddJ%`?D)Hh*$&V>e>?mZ2j3TO^LGI zU#^BGA}dMM?aQKoSYc`|+_AdBTR*%up*8}mFfQoZh)Dg1&@xRO)X5_z!5%5sz(vpR zF;TXD^&FEDNlGX}5x3YeY4Sdu(85y9A7A^5cq8(u0F(R#k1#Anb3WD4TZ_|dPDhC1 z^4ETwaKkj^tEB}@8brVVzQz)R8|PhZ<{rZnZ>9FCt{@u}`&S5a`6754cojjYvI5*Z z=E5nUIWHFiu}PX_5}J$rs^TE`=dnSq9ct^tU;EXqybZ51?X}5?C2ae}BAiqt_(N>I zb5CgUjS9LKOjQf>j!?fK(0oympJS5F-~malt5CpGSzPIakAdt7MG>w|X<0o@y@C&_ z;9ZJkKJ1n5SaLv~#{8hJxKPvN0fiJ-kQQW_3KdTx%i*58La5G7ZJUe4uv$u6%WG{1 zbpEvt?05gUU%vJoshEQW%^7@;!y%zw;V2wmo=ptOh#- D z2yS90<>oB8dKnq+Y5xZj{Xg=8aU9j$$?Yl}~=5$$F@+EVK)j`l2p?ga2eE*-?f3 zNnR6cadW~hN+?OuPvVg&!m_D)9FZ)a=U#Z<-RaY0eAtK_mD3e>%*&3qvIxE0cKo!6 z!%9o?+@@QkIjjb(*S!g+Zon5~ao{K?il&he{AoWVmAr9i0R>Mx>vo2vvQtX0=gwJe z>cs#8wlZC94g?^1jCXq)U%R7v+|Z>jdV8D7)B7zUM^20hFqoS2&m-gL!*4EbOr(Kl zt`-xb%?_g)k5;&*KcvTx5AY8o>75&h)If9t{-mh2_ZqnRnWpH~BL`M-YG!qhb4)KT zzLMJ-s!q|&P&AX?s6-xb0Q3QPN8m&RGcaCKxyVof-aJLG@rWMIjI0(8RY0p0W2F*; zUx|(XJ@W kT#8vU$LbxGK8~t}&lX>MWcU_{IFw_qJ8?{!X-#jBe z9nsb_L5&N$Mbb|g7dHp{3}TYMB7-cfFn|Ng@e<$aGc%foj~4oDe#$5`bRN?JtYZ1y&1X`b9x2yFW ztW0m?|NSS_042H&G7|Br=uT<8)5?j9dd@Lu|LEg-kdbM{{8?NTn_(Kqa1nc!mdG82 zW8$hCTfo5YT%)X$Kea~ZJ+xE6nVMu(<{e)9R#>g5DYD$a{dp%ZyhAmB0B>V5L3v&Q z`dL!2F}U{CyEUr7)C+At^Grd-63QeRa0eK+T0j02P~q1w4(gtw=*awE|8BD1Jn6B? z4ab>{v8*oogRowH{@2p~M$48(@D6%s$M=cM$iI}c$t@Q4c6n2gopffk|MNrMNv?y6 zYx95ecG+iV7oj%#h=4gSRegSN`BFVDnv;jLzLZ12*?M%@wNcBu4JVarO9T+!Bg~}k zXBR6rU$G)JOv{Qf*0hh(@l~Ss4x8^0$}|diFw^!sR$KFtb*!I{2PhKd@A#&*9%Kqc zzyJURSUF0}=Ti)T00O0Xnt|6*fB*mk0009300RI30{{Xu(9IGCF=J5ltsOP@J2A2V z1G;N;hgvP!{oVsmi%$GQy}e 6VT>L*e^o-j3?1|Zqt2+x!x`VN%)Y>g{&qGRx-_H8MKdsgM#^{jw+X$%x z>2Q&4nLd@89JT<#hA!e1Et@bIwNHv}^}cjloAYW}7GMPAjV>Lvy$bg;F||VpaF {Z+`)|XkP$guBWAA$skz1818~7vutH-fL76R-$-TJ8CgW9@x#QXPgmCFg zBqW%ZZW`WIKMvbiE-?t)KASots$?MqA) Qm77`ws z2J!UP6YxoxI*cRa^+(zWgxIVFGJIa(oxfrviR0!7tGq_O>t$?rW!!CL=j-^*stKYG zp-0B`ou ygG#h|GbUw(Z^wMrN~hF_A|pgXE5Eu*n8g(U*Oj5x(vQZ6YLU!Mz1lv6 zn-G{b&2xf5*U?D(su&!dtL{nAnDp-K`iVasF)^s5ZI#rV^*9_MwmdBhQ=x47ICX6T z2+H2gY*Ba93mDb%<2oDlsUx83#)IRSJ>FyzDLh&`jSx}Y(ACtkD!Tw^{$>sg8UQG1 zSHFW-20#>Jq oSdV#6xU`Eh~f30L3YoHS4;@h62ZX`fWK z^0S$LOv4n^Hc0F@A|=@2&%z5FAxT% bWvo-H0Et$cky<*a*8{7LQ=dd_KP1(UNM|y?2w$Zr7Do8x0xBE}` zdWB4W-U;T~ab$A#6U#+V(~a!{po9SHe?( qd10#u>W!B7 zHAJtaHT?(y(aU#J@Wmbwl*5N{Y$aQmOmR1tuxZa@>c4CuMDJB^ ^U6W z7I=8NNlQ|1C}iXoooy7)euV^5^{@Z~znB7@$ckCH{dEe+$BQq~)0IKz?zo$%@~3I! z1*y4PAR^#K5ZE#7LHC`!1x&A&cZyASz7%WRVS_@RF1hg%a?hcQtSX6X`(l?CEcPyB z&Q2&GmQ6YPW10emR2=2@O==GCV)e1&Dpx_k#@A_S-mPbRIzBov@R9d{5i($tRA8JX z!vT`-18I=@K-u6Ld}4Hv_!mCd$(rNFqm{iysuo79FMbn>oEHtojSZH1_CuorIZKT( zvkJ9~r|m`bAZQb>cmw`}Kf5ABX41nOiFaHrpshjy7BBlC6t{=tiFvET+uSw^pfkMr zkzWdkwtVxd@A<28q{FW5i{#KQ19XUZ(<##e#GfcwK&Sj>_fq7n_jBg}&MQ ^@zZ;6X3z(sd$mx$ybCiUV$TM^>QW+s4s76rsLLj>AE@mY)5vV44#zz z;5rbJgVKOT0X@1 VjtgynmPN(Z<_aQILw8e)3E5$3^{hFDV8(fNT zlOf*xuD9MY_2!`G*kQ}K>UnwL;Gs4q_NYf!{cL(YfN|DPbk {4@h$ < zJLjY<4o=1mqdTB6KNNboJ@77?Z+fE;&2p9u*4$}&uk@BvJ}I7wACvoN8JtkZ z>6};J!CkdS=IpLvsHZUqOuKx*Ml}1J@F2ah;NwYCDfgulP1W5d9ie_={E|HR{J;2d zT45{b1G&RorCOM02f~J89BD*u ybDluJey$D5Jw=X7= (fksSS(fgR~GN9@P zxRd=`+DOXdnSyd>ySIMA2;PVxUVStko!ga40Ph(lq{3ty)36YJS&n7B z$QAu#Xo@L(auDAmk_qW8)yJB*&z@Rf((g;)MnyRj?xzz*4eMXtfIQ(zl=D3X@(M44 zLl v*)yAcXvnMgN+wt&$i)`Bn^0IGwzJ0ogmd1xGa<9%Wh2 z+r+m)z25+0WOo}L^$Y=9bNJrFyY m`fI)n_Gl4?jS)jhj_S=PS5A-OZ)C%H8jWYm*tcJYN3xh{BAIvuu- z6WpQ@>7c!#`sV!u!nM9!wr^$y|HFbHck7<=gbf`)^$kO(E(wHIQ*Exq{@jwGSamJ7 ziHiroC7%!a?Y+OHI25WxL#T@K9{m&>wX{e)l()(#Gdb$d8UANtNr#b12q99 zpx12fvq=2^B~P%;+z>vZ+H(O%qF#z*Hh_q%3H>*4m&;04jEBB0v1JD^&H;$ p_=x6XD(?*v#jKQHaWSyl)iy~Df1HAEU`+txYFXRG| zz}Pp<0G!FG7giEkx*Qe)_BKM<=hnd)6I|L|^Mi7cL1Nu^ivVqRr+Bj~<^k48<>i(r zjG^-Lq~c_xEotf16(k0Ty8ZJ(YwJ`yh`c%LGe>{^WwUSq0qWU#$OHdHMe;u+XaCPKszK37J6U3q$8JNI!&2^Zxzd!+B(b^6cT6hyM{L&b1*rLH>#;C)H{) zsG(vRu%!k3J5vl2JZb&Xs{kuOvw2vd-cpj?7b6n$9~j79L_=D?zLfw!a;2xFx{&Xm zMXqq(AIYlp;8C0x8D-?YRDb{gDdAae;5+}5$jU$ C#aFbNFEjlPqVWbCF$!jQ_a m(2HDhU+!{5T@V#;}5op_PA zQGkHw`9m}{rfz3CU$vFuH<$m=(-m1snC3?-Z`PmXLRkkdx;k?;?td5LdJ6N0sJXcz za^TVLSdab29@KP(pd7mbezlTHT0DDn+rlJ7Qz4!P=v--R%u+zZ{Fobw0aZ3`&?+C# zIJqCN&sRNfgm8NRxJ!uKPvH*zML;#Ykk)Zox$NZPEyV
3r75!* zcHHeG^5*-lZg^nd2kQqBM$BR#^EYKYwwM8IYZ-rJNS-q-M?Y%~4n|orm=OrL9H0hS z_fSGb5-b>sLfVqgkk2c|6d7S>Q_NPbzu;R1l0eWWNMrN=kxZB 3-&sjR 0y;(dXyfrlW`X&1itldekh!^89mTMw_4Kg(OAq6 _1HOQBYWPpMcyCfIzpORFD32X= zW;0#B65!|?8#`NOuymt}O-XgCTl0gsQp%z^b@e)Div{mOb8`vlDTGc49`~ifkI>eU zu-Df^F?o7WsIyonN$w42g$V!tjDw!5KMWeJaghKX5RI-6{8g75cpN+Wy(tFR&Ifa0 zP_@wb8fCLv`%J63VIig$6r%a8)LYa_Ue~D3Fx;H}i;7+x|KIUF{SaI&HjHYX1lFM# zVRzh2+dv9mN8E@TL6 e8TbJA{u znn`S%y;><1n{`sXc`t75766`lPqmxk*QN6)L
>3nD=(I`Np&f$36?X z8Za bJz 2d3~FQCmMUMs)5ew_oUyj zFl4^4dn!5t4FOQ6RjdyT6_rNbD>H~f;E7S!W`jZiBAm|*wcBwaG8T#-fcUnYiLk#L z;!37YSOk4uwuu1E&vXp)pt!I{S`$DD>I4-Ll`@r+(ETnZDX$P|pdH(c;T2QkWMGIc z@7L?}&v*7YJsIB$%lM!~pBPVu>}kaJuwMiiw{4>o_M68E3nrVcZ{IM>D$_-Q?$0FQ z+YuVvBV(K;>0iu1v7T+5V4klM=9w1E;lM6PGLf9^a~YDqCE=~}=)wrvhm9p2y t5|EKAU~*>(8esfQ96}S6rq2 {z1wu4)4}Bgnsh`{Lo4G zMn&=#?9I0skvvrzu6y=cqb$QejEN(fSvOc9nWv_RGtr9PzawQQD4DEMO+53pwCC## zFjLfWT!fmDHW%0z>#@g4=3kA>AAQ$jz?r+Gad$s-)P>{^PJSXCK3eI6++&MF-ox(a z#&G;jy!Xbvjm>!aXHMD%b05#{SRK&Mq_~Phr^uVC{9_z0_ N2BP*iP 7T+@bMX*)dvpuqDSALZ)Nql0lU!py1$U4RJclj>GhZPT5@b7PaZH zaN?144*bkOCxfV*44a*=d((9H^wn=u=M#1@M5f#71i<+??`bKR<)CD-e}ci?-4kn2 zW8ImAVX}R~N2?&V@f0?|S{@SNHq86Z#TsUl{-b8{VC^r?al*2T&ijGSQ~Omd;8GDy zi3+6upuC0a9sxFz9&($Y(Mui71rOExnodUu!}Z{ &Jj!JOH40<+1C8xd8$1H$fF}2_JB#)q*0dm9A*EF@u5x!1& zYSCfqkO&=G#h9(hhTbfJY)Qr)m4p5PkpQJ P61NA-bHmPGJKlU((xY{d5S5x z @GuiHs8T_f;wf$nuUv)lTe@z>%7Kon|=T=`7QQfGE&W$|Q zP);xHU2hF`uK2&CUdofo_G#prX=L7Qq~1NQ?iCJ^P|w=h8%lipm n@QCsFt-C4 z@5}ql$X||HA_05fyj-$C@35pJC@kP$YXBGdu>4O8#XSQ)y@pm9zG1D!M0c}jG2aCU z@z(q)3azM?4Mc3;$}*312$LNv#k2a`j%8f+8SN^kUVD$HzR32iYw _C1io>F>PN;fKvpaie%)f^pkKnx3ZU9I!U4<+IJdr_em$0&5rz z22%z{kpv#MJB9w>1;$!z#^}wY4wziCC2;TZ0-$-*{X!X#q11pV3b85~mNgA&2_u 0qvq-?Ud9-DDz4HzRAIQsTDmg>4Ore?)3_ebuiiPi{r&4 zoYB{s3)lS`D*69Buk4Hqd}s0>sD=zH1ASEoK|@W4>ueS`@^8(Ri!gcyWM2a%Z0J<{ zdstAsn;fJYv;^R198a1 BJgwsMMr~cvJ6;$b3#RCk`ielTPT(p zZSYV3G*P{^jx9QkEe>X;{_^diG5Pn^FznWJ8_d09kR{!=@4d?Cvh6P0w$;Th+qP|W z*|u%FtIM`+v&;2X?`QAx?0fFLZ|w8!Mr35HTx-mk<2NS$8L?)LSr@c*(E8TpG!|x| z_^zbpz{V~_yswiMI0*(#kB2b8`J Bx#!_$KI_b}BMUhgdvyM|Ot{i?eju~<4hQ?vs*%1o zviMkE8P0ll7DN1*n|IH=X!Cx*@*fpEu85XTlHVygilKAPRI_PXH`n9c!{HO2QNWtG zI^ebIzaAf?U nAyWTbLFI_&+_JM? k!+h rTkci|^ zgOxOF2>@@IXtEfjQbucqTLNi7>QT&Oy5CTRPxjrDgMo?DJL2+E22&3sG_m(z^bHt8 zlo_HAc<1~o#@6kNUSF7t0W$&J%Pdd~LBA2h6nGi;9VK3L50urRq6Zn;!xsRQ##}J8 zsumf@ZXWG!5;u0%vU@{;4fvt5Hi}gF8{YhYq-`+Nc=qi|wPh|zlUNPIgs6d_yg3#} zdS|8q6zg&$vX`1nEY|E1Qp|=aORPoT$=51P4z*GX-VrV!PhSo6f*K?#dBHg|oBxPc z=~90qhQSegH%cTU_+yY-OxsB>{WAv^;cWpsJ6U5$=8c_NwGhT@&bf>UrcDG(11A;w zM@s