From 4aae330b315a35f74e6ae7c8c9b9b7d0b9f8fa9b Mon Sep 17 00:00:00 2001 From: Julian Noble Date: Wed, 29 Jul 2026 17:03:43 +1000 Subject: [PATCH] G-134 achieved: flip, archive record - archive-relative output is a checked contract; punkshell 0.30.7 Implemented and achieved same day. punkboot::utils 0.6.0 gains kit_offsetstyle_report (argdoc'd thin classifier over punk::zip::archive_info), synced via modules + bootsupport (one stale dead-pid .punkcheck.lock removed per the recorded recovery) and promoted into _vfscommon. make.tcl: guarded getter, post-assembly probe beside the smoke-require block (recapped BUILD-WARNING only on a FILE-relative attached payload; plain/none/unreadable silent; NOTE on stale bootsupport), and the 'check' row (ACTIVE (advisory) + contract lines). Characterization: offsetstyle.test 7/7 (mkzip -runtime/-offsettype hermetic fixtures for plain/archive/file, none on text + metakit-magic binary, unreadable detail, src/_build baseline sweep - no kit image probes file); maketcl_check_offsetstyle_pin added (payload-check suite 4/4). Full utils suite 69/69, punkexe suite 81/0, live punkluck86 bake silent as the acceptance's baseline clause requires. Docs: src/AGENTS.md pin bullet with does/does-not-guarantee, bin/AGENTS.md deployed-kit section, ARCHITECTURE.md check-family bullet (architecture_lint clean). Reference sweep: no live-tier references beyond the index entry; goals_xref shows no pairs bridged solely by G-134. Archive move follows as a pure-rename commit. Assisted-by: harness=claude; primary-model=claude-fable-5; api-location=anthropic.com --- ARCHITECTURE.md | 2 +- CHANGELOG.md | 14 + GOALS-archive.md | 4 + GOALS.md | 4 - bin/AGENTS.md | 8 +- ...-134-baked-kits-pinned-archive-relative.md | 33 +- punkproject.toml | 2 +- src/AGENTS.md | 1 + .../modules/punk/mix/templates-0.2.0.tm | Bin 329538 -> 338241 bytes .../{utils-0.5.0.tm => utils-0.6.0.tm} | 67 ++- src/make.tcl | 43 ++ .../vendor/punk/project-0.1/src/make.tcl | 560 +++++++++++++++++- src/modules/punkboot/utils-999999.0a1.0.tm | 61 +- src/modules/punkboot/utils-buildversion.txt | 3 +- .../vendor/punk/basic/src/make.tcl | 560 +++++++++++++++++- .../vendor/punk/project-0.1/src/make.tcl | 560 +++++++++++++++++- .../utils/testsuites/utils/offsetstyle.test | 119 ++++ .../punkexe/maketclpayloadcheck.test | 21 + .../modules/punk/mix/templates-0.2.0.tm | Bin 329538 -> 338241 bytes .../{utils-0.5.0.tm => utils-0.6.0.tm} | 67 ++- 20 files changed, 2080 insertions(+), 49 deletions(-) rename src/bootsupport/modules/punkboot/{utils-0.5.0.tm => utils-0.6.0.tm} (91%) create mode 100644 src/tests/modules/punkboot/utils/testsuites/utils/offsetstyle.test rename src/vfs/_vfscommon.vfs/modules/punkboot/{utils-0.5.0.tm => utils-0.6.0.tm} (91%) diff --git a/ARCHITECTURE.md b/ARCHITECTURE.md index 95a13bd1..8619619f 100644 --- a/ARCHITECTURE.md +++ b/ARCHITECTURE.md @@ -86,7 +86,7 @@ Two layers with a deliberate dependency direction (the class never depends on th - **punkcheck** records every install/delete as events in per-folder `.punkcheck` directories - the basis for skip/copy change detection, superseded-module pruning and provenance. Single OO record lifecycle (G-094, achieved) with atomic saves and advisory event-scoped locking for concurrent writers (G-095, achieved). - **Provenance gates.** Build/promotion commands warn on uncommitted `src/` changes (column-0 `PROVENANCE-WARNING:` token, `-dirty-abort` for strict mode); `vendorupdate` warns for dirty source-project checkouts. - **Boot-precondition gate (G-125).** A bake refuses a kit whose merged `.vfs` supplies no tcl library rather than deploying an artifact that cannot initialise: the kit lands in `FAILED KITS` and nothing is written, so the previously deployed `bin/` survives. Structural and non-executing (so cross-target kits are covered), reading the merged tree rather than the extraction outcome. The predicate is `punkboot::utils::vfs_boot_library_report`, called through the same guarded require as the provenance check so a stale bootsupport snapshot degrades it to a notice; `make.tcl check` reports ACTIVE/UNAVAILABLE. Sources: `src/AGENTS.md`, `src/modules/punkboot/utils-999999.0a1.0.tm`. -- **Payload/target consistency checks (G-133), both advisory.** At the same post-merge seam, a bake classifies each binary library in the merged tree by header (`punkboot::utils::binary_arch_classify` - PE/ELF/Mach-O, honest unknowns) against the kit's target platform; wrong-arch libraries outside platform-discriminated subdirs (canonical `-` names, vendor spellings like `win-x64`) earn recapped `BUILD-WARNING`s. After assembly, a kit declaring smoke-require packages (`mapvfs.config` 5th entry element) has each one plain-`package require`d inside the freshly built artifact via its tclsh subcommand - the only check that sees resolution-order defects (wrong-arch version shadowing); cross-target kits skip with a stated reason. Same guarded-require degradation; `make.tcl check` reports both. Neither guarantees statics, pure-tcl packages with binary deps, or version preference beyond the declared smoke set. Sources: `src/AGENTS.md`, `src/runtime/AGENTS.md`, `src/modules/punkboot/utils-999999.0a1.0.tm`. +- **Payload/target consistency checks (G-133 + G-134), all advisory.** At the same post-merge seam, a bake classifies each binary library in the merged tree by header (`punkboot::utils::binary_arch_classify` - PE/ELF/Mach-O, honest unknowns) against the kit's target platform; wrong-arch libraries outside platform-discriminated subdirs (canonical `-` names, vendor spellings like `win-x64`) earn recapped `BUILD-WARNING`s. After assembly, a kit declaring smoke-require packages (`mapvfs.config` 5th entry element) has each one plain-`package require`d inside the freshly built artifact via its tclsh subcommand - the only check that sees resolution-order defects (wrong-arch version shadowing); cross-target kits skip with a stated reason. The assembled image is also probed for its zip offset convention (G-134, `punkboot::utils::kit_offsetstyle_report` over `punk::zip::archive_info`): a FILE-relative attached payload warns (the pipeline emits archive-relative; the G-128 stamper refuses file-relative by default), no-zip/plain results stay silent. Same guarded-require degradation; `make.tcl check` reports all three. None guarantees statics, pure-tcl packages with binary deps, or version preference beyond the declared smoke set. Sources: `src/AGENTS.md`, `src/runtime/AGENTS.md`, `src/modules/punkboot/utils-999999.0a1.0.tm`. - **Kit icon step (G-057 + G-128).** Every kit a bake builds gets a `.resources.toml` sidecar (deployed beside `bin/`) recording the build-time icon choice - default `src/runtime/punkshell.ico`, overridable by a root `punkshell.ico` in the kit's own custom `.vfs` folder (pre-merge) - with sha256 identity and provenance lifted from the icon's G-135 assetorigin record. win32-target kits get the icon embedded as PE `RT_ICON`/`RT_GROUP_ICON` behind a single seam (`::punkboot::kit_icon_process`): the vendored punkres portable stamper (`src/tools/punkres`, built to `bin/punkres(.exe)` by the make.tcl tool step) is selected when present and works from any build host; otherwise the twapi arm (tcl-sfe mechanism) serves windows hosts with nothing built. Both arms share one semantic (delete all icon/group entries, write ids 1..N; the group is NAMED from the icon file's uppercased rootname - `PUNKSHELL` - with language adopted from the replaced group) and stamp a per-kit copy of the payload-free raw runtime prefix BEFORE payload attach; punkres can also stamp a FINISHED kit post-hoc, preserving an appended zip payload (archive-relative moved verbatim; file-relative refused by default, shifted with a consent flag). Non-PE targets skip as not applicable; a host where neither mechanism serves skips with a combined notice naming the punkres build remedy; the sidecar is written in every case. Sources: `src/AGENTS.md`, `bin/AGENTS.md`, `src/vfs/AGENTS.md`, `src/tools/AGENTS.md`. - **Buildsuites and the kit family.** `src/buildsuites/suite_tcl90/` builds Tcl/Tk/tcllib from source with a pinned zig toolchain and produces the runtime kit family (plain / punk / bi) plus artifact metadata (G-096-G-117 era: see archived goals G-096, G-098, G-102, G-103, G-107); artifacts publish to the punkbin repo that `bin/punk-runtime.cmd` fetches from. `src/buildsuites/suite_tcl86/` is the 8.6 sibling (G-099 + G-100, both achieved): a Tcl 8.6 windows runtime (static + dynamic shells, `tcl86t.dll`, on-disk lib tree - no zipfs, so no self-contained kit) with thread 2.8 + tclvfs + Tk 8.6 + tklib + tcllib(+tcllibc critcl accelerators) companions, gated against the 8.6 core/thread/tclvfs testsuites with tcllib/tklib on a record tier and an opt-in `test-tk`; punkshell's own runtests is censused on that runtime at parity with a same-day native-8.6 baseline. Suite child shells scrub `TCL__TM_PATH` as well as TCLLIBPATH/TCL_LIBRARY/TK_LIBRARY - without it a census measures the machine's module trees. The 8.6 kit container strategy remains in-flux - see "In-flux areas". - **Project generation.** `dev project.new` composes thin layouts from `src/project_layouts/` (overlay chain with `.anti` deletion markers and `name@base` derivation - G-087, achieved) and injects bootsupport modules from the generating shell at generation time. diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f93b6d9..680919da 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,20 @@ The latest `## [X.Y.Z]` header must match the `version` field in `punkproject.to Entries are newest-first; one bullet per notable change. See the root `AGENTS.md` "Project Versioning" section for the bump policy. +## [0.30.7] - 2026-07-29 + +- Baked kits pinned archive-relative (G-134): every assembled kit image is + probed post-assembly with `punk::zip::archive_info` + (`punkboot::utils::kit_offsetstyle_report`, punkboot::utils 0.6.0) and a + FILE-relative attached zip payload earns a recapped BUILD-WARNING - + advisory, the kit still builds and deploys. No-zip results (the metakit + kit shape) and bare zips stay silent; today's bakes warn on nothing + (measured baseline). `make.tcl check` reports the pin + ACTIVE/UNAVAILABLE with the same guarded-require degradation as the + G-125/G-133 checks. `punk::zip::mkzip -offsettype file` remains available + for deliberate manual file-relative artifacts - the pin asserts only what + the pipeline emits. + ## [0.30.6] - 2026-07-29 - punkres is publishable as a punkbin artifact (G-128 distribution route): diff --git a/GOALS-archive.md b/GOALS-archive.md index e08e26b4..bf2ba3be 100644 --- a/GOALS-archive.md +++ b/GOALS-archive.md @@ -234,3 +234,7 @@ Acceptance: the `.assetorigin.toml` sidecar format is documented ### G-128 [achieved 2026-07-29] Portable PE resource stamping: a vendored zig tool that icons a finished kit from any host → detail: goals/archive/G-128-portable-pe-resource-stamping.md Scope: src/tools/punkres/ (vendored zig source - tool name settled in the work - with provenance and licence records); src/make.tcl (mechanism selection at the G-057 seam, sharing G-126's tool build step); bin/tools/zig* (pinned toolchain as consumed); bin/punkres.exe (untracked build output); src/tests/ (characterization - icon replaced, payload intact, idempotent, overlay-unsafe refusal); TEMP_REFERENCE/tcl-sfe (read-only reference for the resource structures) Acceptance: the vendored tool, built by the same make.tcl tool step G-126 establishes, replaces RT_ICON/RT_GROUP_ICON in a pre-built PE that already carries an appended zip overlay, for the kit shapes we build (kit, zip, zipcat per mapvfs.config): the new icon is confirmed by reading the resources back with the tool ITSELF (so verification does not require a windows host or twapi) and cross-checked once on windows with twapi::extract_resources; the stamped kit still boots to a working punk shell reading its payload; re-stamping converges with no resource accumulation; it works where .rsrc is NOT the last section - the shape our own runtimes have (tclsfe-x64/punk91: .text .rdata .data .pdata .rsrc .reloc; suite-built tclsh9.0.5-punk: .text .rdata .buildid .data .pdata .tls .rsrc .reloc) - by appending a section and repointing the resource data directory rather than growing .rsrc in place; the appended payload survives the file-offset shift this causes, which is safe for an ARCHIVE-relative zip and not for a file-relative one; a file-relative payload is REFUSED BY DEFAULT with an error naming the reason and the rewrap remedy, but an explicit consent flag (tool CLI and the G-057 seam, never an interactive prompt in non-interactive runs) stamps it by shifting the overlay AND rewriting every central-directory local-header offset plus the EOCD directory offset by the shift delta - deliberately PRESERVING the file-relative convention, with a notification that the format is non-standard - verified by re-reading the stamped artifact (offsetstyle still file, members crc-verified); zip64 and multi-disk archives are refused even with consent; one end-to-end run from a NON-WINDOWS host produces a stamped win32 kit whose icon a windows machine confirms (recorded here: which host); G-057's seam selects the tool when present and falls back to its twapi path otherwise, with a parity check showing both mechanisms yield equivalent resource content from the same input, and zig stays optional - with no tool built, G-057 behaves exactly as it does without this goal; the tool's distribution is settled and recorded - buildable from the vendored source with the pinned toolchain AND publishable as a punkbin artifact through the G-123/G-006 channels, so a no-toolchain user has a route that does not depend on the committed twapi; the tool's structure handling is written so the parked RT_VERSION stamping needs no second tool; licensing and upstream provenance of the vendored tree are recorded per G-063 and G-026. + +### G-134 [achieved 2026-07-29] Baked kits pinned archive-relative: advisory offset-style probe on assembled kit images → detail: goals/archive/G-134-baked-kits-pinned-archive-relative.md +Scope: src/make.tcl (post-assembly offset-style probe at the G-133 advisory-check seam, recapped reporting); src/modules/punkboot/utils-999999.0a1.0.tm (probe predicate beside the G-133 scan helpers, guarded require; bootsupport copies via established sync channels); src/tests/modules/punkboot/utils/ + src/tests/shell/testsuites/punkexe/ (characterization); src/AGENTS.md (what the pin does and does not guarantee) +Acceptance: each assembled kit image is probed with punk::zip::archive_info and a recapped BUILD-WARNING naming the kit is emitted when offsetstyle is file (advisory per the G-133 posture - the kit still builds and deploys, unlike the G-125 hard gate); plain and none results (no zip attached - the metakit kit shape G-131 targets) are silence, not warnings: the pin covers zip offset convention, not the presence of a zip; today's bakes produce no warning (G-124's measured baseline: every built kit archive-relative); the probe predicate lives in punkboot::utils beside the G-133 scan helpers, called through the same guarded require so a stale bootsupport snapshot degrades it to a NOTE, and tclsh src/make.tcl check reports its ACTIVE/UNAVAILABLE state; characterization pins the warning on a file-relative kit fixture and silence on the archive-relative kit set; scope is make.tcl's own assembly paths only - punk::zip::mkzip -offsettype file and modpod's equivalent REMAIN available for deliberate manual creation of file-relative artifacts (user decision 2026-07-27: the format works and serves naive zip-tooling/SFX-repair interop, it is simply not what our pipeline emits), and external zip-repair tools' file-relative output remains tolerated on input by the G-124 reader and normalized away by any re-bake. diff --git a/GOALS.md b/GOALS.md index bc5aaa08..63d9a90e 100644 --- a/GOALS.md +++ b/GOALS.md @@ -399,10 +399,6 @@ Detail: goals/G-131-boot-payload-autodetection.md Scope: TEMP_REFERENCE/tcl-windows-errno-catchall-TICKET-DRAFT.md (submission-ready ticket text - STAGING ONLY, unversioned, and the agent does not submit it); this detail file (the tracked record: finding, verbatim reproducer, the submitted URL once the user files it, and the upstream disposition); src/bootsupport/AGENTS.md and src/make.tcl (the existing workaround and its warning - dated, not removed, if upstream fixes it) Detail: goals/G-132-tcl-windows-errno-catchall-report.md -### G-134 [active] Baked kits pinned archive-relative: advisory offset-style probe on assembled kit images -Scope: src/make.tcl (post-assembly offset-style probe at the G-133 advisory-check seam, recapped reporting); src/modules/punkboot/utils-999999.0a1.0.tm (probe predicate beside the G-133 scan helpers, guarded require; bootsupport copies via established sync channels); src/tests/modules/punkboot/utils/ + src/tests/shell/testsuites/punkexe/ (characterization); src/AGENTS.md (what the pin does and does not guarantee) -Detail: goals/G-134-baked-kits-pinned-archive-relative.md - ### G-136 [proposed] Generated projects are seeded with a default icon from a single punkshell-held master Scope: src/assets/logo/project-default/ (the single held seed artwork); src/modules/punk/mix/commandset/project-999999.0a1.0.tm (generation-time asset injection beside bootsupport_inject); src/project_layouts/ (per-layout icon-slot declaration with no artwork stored in layout trees); src/modules/punkcheck-999999.0a1.0.tm (install records for injected assets) Detail: goals/G-136-generated-project-icon-seeding.md diff --git a/bin/AGENTS.md b/bin/AGENTS.md index 9c52600f..f6de5aa9 100644 --- a/bin/AGENTS.md +++ b/bin/AGENTS.md @@ -149,7 +149,7 @@ and `tclsh9.1b0-tclsfe.exe` (modern `//zipfs:/app`; apnadkarni/tcl-sfe releases) wrapped as `punkluck86` / `punk91ix86` in `src/runtime/mapvfs.config`. Characterization: `src/tests/shell/testsuites/punkexe/kitmountpoint.test`. -### What a bake verifies about a deployed kit (G-125, G-133) +### What a bake verifies about a deployed kit (G-125, G-133, G-134) A `bin/` that a bake deployed has passed the G-125 boot-precondition gate (its merged vfs supplies a tcl library - a kit failing that is never deployed) and the @@ -158,7 +158,11 @@ wrong-arch `.dll`/`.so`/`.dylib` outside a platform-discriminated subdir earned recapped `BUILD-WARNING` - advisory, so heed the bake recap before trusting a warned kit) and, when its `src/runtime/mapvfs.config` entry declares smoke-require packages and the kit is host-runnable, a plain `package require` of each inside the built -artifact via its tclsh subcommand. What that does NOT guarantee: statically linked +artifact via its tclsh subcommand. The assembled image was also probed for its zip +offset convention (G-134, advisory): a FILE-relative attached payload earned a +recapped `BUILD-WARNING` (the pipeline emits archive-relative; the G-128 stamper +refuses file-relative by default), while kits with no attached zip (metakit shapes) +probe as `none` and stay silent. What that does NOT guarantee: statically linked packages and pure-tcl packages with binary dependencies are invisible to the arch scan; package-resolution outcomes (a wrong-arch higher-versioned copy shadowing a working one) are visible only to the smoke probe and only for the declared package diff --git a/goals/G-134-baked-kits-pinned-archive-relative.md b/goals/G-134-baked-kits-pinned-archive-relative.md index 1f93372f..9d4cda03 100644 --- a/goals/G-134-baked-kits-pinned-archive-relative.md +++ b/goals/G-134-baked-kits-pinned-archive-relative.md @@ -1,6 +1,6 @@ # G-134 Baked kits pinned archive-relative: advisory offset-style probe on assembled kit images -Status: active +Status: achieved 2026-07-29 Scope: src/make.tcl (post-assembly offset-style probe at the G-133 advisory-check seam, recapped reporting); src/modules/punkboot/utils-999999.0a1.0.tm (probe predicate beside the G-133 scan helpers, guarded require; bootsupport copies via established sync channels); src/tests/modules/punkboot/utils/ + src/tests/shell/testsuites/punkexe/ (characterization); src/AGENTS.md (what the pin does and does not guarantee) Goal: every kit image make.tcl assembles is verified to carry an ARCHIVE-relative zip payload - probed with punk::zip::archive_info post-assembly - so the bake pipeline's archive-relative output property becomes a checked contract rather than a by-construction accident, and any future assembly path (new kit type, modpod or accelerator change) that emits file-relative offsets surfaces at bake time instead of when G-128's stamper refuses punkshell's own kits. Acceptance: each assembled kit image is probed with punk::zip::archive_info and a recapped BUILD-WARNING naming the kit is emitted when offsetstyle is file (advisory per the G-133 posture - the kit still builds and deploys, unlike the G-125 hard gate); plain and none results (no zip attached - the metakit kit shape G-131 targets) are silence, not warnings: the pin covers zip offset convention, not the presence of a zip; today's bakes produce no warning (G-124's measured baseline: every built kit archive-relative); the probe predicate lives in punkboot::utils beside the G-133 scan helpers, called through the same guarded require so a stale bootsupport snapshot degrades it to a NOTE, and tclsh src/make.tcl check reports its ACTIVE/UNAVAILABLE state; characterization pins the warning on a file-relative kit fixture and silence on the archive-relative kit set; scope is make.tcl's own assembly paths only - punk::zip::mkzip -offsettype file and modpod's equivalent REMAIN available for deliberate manual creation of file-relative artifacts (user decision 2026-07-27: the format works and serves naive zip-tooling/SFX-repair interop, it is simply not what our pipeline emits), and external zip-repair tools' file-relative output remains tolerated on input by the G-124 reader and normalized away by any re-bake. @@ -71,3 +71,34 @@ asserts only what OUR pipeline emits by default. semantic overlap with an offset-style probe). `goals_xref report` reviewed: no unlinked pair concerns an output offset-convention check. The G-124/G-133 anchors are archived; the relations above are from reading. + +## Progress + +- 2026-07-29 implemented and ACHIEVED same day (flip evidence): predicate + punkboot::utils::kit_offsetstyle_report landed (punkboot::utils 0.6.0, full + PUNKARGS argdoc; thin classification wrapper over punk::zip::archive_info - + offsetstyle archive|file|plain|none|unreadable + dataoffset + detail), + synced through make.tcl modules + bootsupport (a stale + src/bootsupport/.punkcheck.lock from a dead pid was removed per the + recorded recovery procedure en route) and promoted into _vfscommon via + vfscommonupdate (kits carry 0.6.0 from their next bake). make.tcl gained + get_kit_offsetstyle_report (same guarded-require shape as the G-125/G-133 + getters), the post-assembly probe beside the smoke-require block (recapped + BUILD-WARNING only when offsetstyle is file; plain/none/unreadable silent; + NOTE when bootsupport is stale) and the 'check' report row ("kit + offset-style pin (G-134): ACTIVE (advisory)" with the contract lines). + Characterization: offsetstyle.test 7/7 (plain/archive/file fixtures built + hermetically with punk::zip::mkzip -runtime/-offsettype - the deliberately + available manual file-relative path exercised as the fixture generator - + plus none on text and metakit-magic binary, unreadable-with-detail on a + missing path, and the src/_build baseline sweep asserting no kit image + probes file); maketclpayloadcheck.test gains maketcl_check_offsetstyle_pin + (4/4 - status line + contract lines, ESC-free harness). Full utils suite + 69/69; full punkexe suite 81 passed 0 failed. Live bake (punkluck86 + rebuilt): probe silent - no NOTE (available), no BUILD-WARNING + (archive-relative), matching the acceptance's today's-bakes-produce-no- + warning clause. Docs per the acceptance: src/AGENTS.md gains the pin + bullet with the does/does-not-guarantee statement, bin/AGENTS.md's + deployed-kit section and ARCHITECTURE.md's check-family bullet extended. + punkshell 0.30.7. Every acceptance clause satisfied; remaining manual + items: none. diff --git a/punkproject.toml b/punkproject.toml index 602217e3..b07bd4f1 100644 --- a/punkproject.toml +++ b/punkproject.toml @@ -1,4 +1,4 @@ [project] name = "punkshell" -version = "0.30.6" +version = "0.30.7" license = "BSD-2-Clause" diff --git a/src/AGENTS.md b/src/AGENTS.md index f46b13bb..f3abea2d 100644 --- a/src/AGENTS.md +++ b/src/AGENTS.md @@ -73,6 +73,7 @@ Recovery after a wrong path guess: - Uncommitted `make.tcl`-generated outputs may be batched into one commit, regardless of how many `make.tcl` invocations produced them. This covers punkcheck-managed build outputs that are VCS-tracked: `src/bootsupport/`, `_vfscommon.vfs/modules` + `/lib`, declared per-kit `*.vfs/lib_tcl/` subfolders, the thin-layout sync copies (`src/project_layouts/vendor/punk//src/{make.tcl,build.tcl}` + bootsupport manifest copies), and the module-shipped layout payload under `src/modules/punk/mix/#modpod-templates-*/templates/project_layouts/` (G-087: synced from `src/project_layouts` - never hand-edit the modpod copy). (Root `modules/`, `lib/`, `modules_tcl/`, `lib_tcl/` are gitignored and never committed.) Each module's old→new version rename is atomic; a regeneration reflects one build-output refresh, not independent hand-edits. This is a carve-out from generic "split aggressively" commit guidance for punkcheck-managed build outputs only — it does not cover user-curated VFS content (`_config/`, per-kit `*.vfs/` outside declared `lib_tcl` subfolders, `_aside/`, `mkzipfix.vfs`, `_vfscommon.vfs/doc`), which commits separately per its own concerns. - **Boot-precondition gate (G-125).** A bake refuses any kit whose merged `.vfs` supplies no tcl library: the kit is listed under `FAILED KITS` with a reason naming the cause, and NOTHING is written - no `src/_build/`, no deploy, and the previously deployed `bin/` is left byte-identical. This is deliberately a failure rather than a warning: the deploy step deletes the old kit before copying the new one, so the pre-gate behaviour replaced a working shell with an artifact that died at startup with `application-specific initialization failed: Cannot find a usable init.tcl`. The check is structural and non-executing (so it covers cross-target kits too): `init.tcl` in `tcl_library/`, `lib/tcl./` or `tcl./` - the third for runtimes whose archive mounts at the executable's own path rather than `//zipfs:/app`, so `[info library]` is `/tcl8.6` (the androwish/undroidwish zipfs backport for 8.6 does this) - plus one companion file a real Tcl library carries beside it (`tm.tcl`, `package.tcl`, `auto.tcl`, `clock.tcl`, `history.tcl`, `word.tcl`) or an `encoding/` directory - without that second test the `lib/BWidget1.10.1/init.tcl` every punkshell kit carries would answer for a tcl library it cannot provide. It reads the MERGED tree rather than asking whether extraction ran, so a `.vfs` that legitimately supplies its own tcl library (`src/vfs/punk8_statictwapi.vfs`, `src/vfs/punk9test.vfs`) builds and deploys unchanged. **Remedy when a kit is refused:** the usual cause is that the runtime's own payload could not be extracted - read the recapped `BUILD-WARNING` naming what was tried, then either fix extraction (a driving tclsh with no zipfs needs punk::zip >= 0.2.0 in bootsupport - see the extraction bullet above), point the kit at a runtime that carries a payload, or have the kit's `.vfs` supply a tcl library itself. The predicate is `punkboot::utils::vfs_boot_library_report` called through a guarded require, exactly as the dirty-src provenance check is: a stale or missing bootsupport snapshot degrades the gate to a `NOTE` rather than failing every kit. `tclsh src/make.tcl check` reports whether the gate is `ACTIVE` or `UNAVAILABLE`. - **Payload/target consistency checks (G-133), both ADVISORY** - warnings are recapped `BUILD-WARNING`s and the kit still builds and deploys (unlike the G-125 gate). (a) **Binary-arch scan**, at the same post-merge seam as the gate: every binary library (`*.dll`/`*.so`/`*.dylib`) in the merged tree is classified by header bytes (`punkboot::utils::binary_arch_classify` - PE Machine field, ELF e_machine, Mach-O incl. universal; unclassifiable content is honestly `unknown` and never warned about) against the kit's target platform. Structural and non-executing, so it runs for cross-target kits too (measured ~30-140ms per kit, avg ~93ms across the 12 assembled trees). Libraries under a platform-discriminated subdir - canonical `-` platform-dir names, the universal `macosx` folder, or a recognised vendor spelling (`win-x64` etc; the lists are namespace variables in `punkboot::utils`) - are exempt: multi-arch payloads are legitimate there. First real sweep (2026-07-27) found a true latent instance: `zint.dll` 2.13.0 in `src/vfs/punk8win.vfs/lib_tcl8/` is 32-bit (i386) and can never load in the x64 tcl8 kits (punk86/punkbi/punksys) that carry it - those bakes warn until the payload is fixed. (b) **Smoke-require probe**: a kit declaring packages in `src/runtime/mapvfs.config` (5th entry element - see `src/runtime/AGENTS.md`) has each one plain-`package require`d INSIDE the freshly built artifact via its tclsh subcommand, which exits cleanly even on runtimes whose full repl teardown is fragile. This is the only check that observes actual package RESOLUTION - the punkluck86 2026-07-27 incident class (a higher-versioned wrong-arch Thread shadowing the runtime's working copy on plain require) is invisible to structural checks because the working file exists too. Failures are recapped naming kit, package and the actual error; cross-target kits skip with a stated reason; undeclared kits run nothing new; the probe only runs when the kit actually rebuilds. **What the checks do NOT guarantee:** statically linked packages, pure-tcl packages whose binary dependency lives elsewhere, and version-preference outcomes are visible only to the smoke probe - and only for the declared package set; the arch scan proves nothing about loadability beyond architecture, and an `unknown` classification is silence, not a pass. Both degrade to a NOTE when the bootsupport `punkboot::utils` snapshot is stale (same guarded require as the G-125 gate); `tclsh src/make.tcl check` reports the scan's ACTIVE/UNAVAILABLE state and the currently declared smoke-require kits. +- **Kit offset-style pin (G-134), ADVISORY** - at the same seam family, every ASSEMBLED kit image is probed with `punk::zip::archive_info` (via `punkboot::utils::kit_offsetstyle_report`, same guarded-require degradation to a NOTE; `make.tcl check` reports ACTIVE/UNAVAILABLE): a FILE-relative attached zip payload earns a recapped `BUILD-WARNING` naming the kit, because the pipeline emits ARCHIVE-relative by construction and the G-128 stamper refuses file-relative by default - a warning here means an assembly path regressed the output convention. **What the pin does NOT cover:** `plain` and `none` results (a bare zip, or no attached zip at all - the metakit kit shape, and any unreadable input) are silence, never warnings - the pin asserts the offset CONVENTION of an attached zip, not the presence of one; and it asserts only what make.tcl's own assembly paths EMIT - `punk::zip::mkzip -offsettype file` (and modpod's equivalent) remain available for deliberate manual creation of file-relative artifacts, and file-relative INPUT artifacts remain tolerated by the G-124 reader and normalized by any re-bake. - Kit bakes consume the punk-runtime WORKING COPIES under `bin/runtime//`: `make.tcl bake`/`bakehouse` emit a `BUILD-WARNING:` (recapped at end of run) when a wrapped runtime's beside-toml revision is older than an `-r` artifact present in the same folder - the forgot-to-switch-back guard for deliberate `punk-runtime use ` testing excursions. Heed it before trusting freshly baked family kits; `bin/punk-runtime.cmd use >` (`.exe` suffix optional) re-materializes the working copy. - `tclsh src/make.tcl bakelist ?kitname ...?` (G-121) reports the kit outputs configured in `src/runtime/mapvfs.config`: kit name, kit type, runtime (with presence in the runtime store), vfs folder, and the deployed state of `bin/` vs the `src/_build` build product (`current|stale|absent|nobuild`), with anomalies (`runtime=missing`, `vfs=missing`, `rtrev=r` materialization staleness) and the cross-target marker `target=` in a trailing notes column. A nonexistent store tier is flagged loudly per tier actually referenced (header `(FOLDER MISSING)` for the default tier + stderr derivation; bake's no-runtimes exit self-diagnoses the same way). Name arguments filter the report and add a per-kit detail block (resolved store tier, target and provenance of the target, paths/sizes/mtimes). `make.tcl bake ?kitname ...?` bakes and deploys only the named kits - other kits' `_build`/`bin` artifacts and punkcheck records are untouched and the vfslibs phase narrows to the named kits' vfs folders; an unknown name errors before any build, listing the configured names; flags go before kit names (`make.tcl bake -confirm 0 punk91`). Bare `bake` processes all configured kits as before. Both surfaces consume the shared parsed-mapping helpers (`::punkboot::lib::mapvfs_*`) rather than the file format, so the G-024 config-format work swaps the reader underneath. Piped characterization: `src/tests/shell/testsuites/punkexe/maketclbakelist.test`. - **Host vs target platform (G-122).** Everything a bake EMITS is keyed by the artifact's TARGET platform, never by the driving tclsh's personality: the `bin/runtime/` store the runtime is read from, `.exe` suffixing of runtime files and kit outputs, the presence checks behind `runtime=missing`, and whether the pre-deploy process sweep uses `tasklist`/`taskkill` or `ps`/`kill`. Host semantics - copy commands, path handling, filesystem case rules, prompts - stay keyed to the host. The default target is the host's own platform canon, EXCEPT a cygwin-family host (an msys2/cygwin-runtime tclsh, which reports `tcl_platform(platform)` `unix` on windows and canonizes as `msys-x86_64`/`cygwin-x86_64`), which targets `win32-x86_64`: such a host now drives the identical kit set, names and store addressing as a native tclsh. `tclsh src/make.tcl check` prints the derivation on one `platform (G-122): host=... target=... store=... exe-suffix=... process-tooling=...` line. A mapvfs entry may declare its own target platform (4th element - see `src/runtime/AGENTS.md`), which is then read from that platform's tier, named with that platform's executable convention, and skipped by the process sweep (its processes are not visible to this host). Traps this closes, all field-verified 2026-07-26: msys `ps` cannot see a natively-launched kit (only `tasklist` can), and msys2 rewrites arguments that look like absolute posix paths when spawning a native windows program - so `taskkill /PID ` arrived as `taskkill C://PID `; native-windows command lines therefore go through `::punkboot::exec_nativeargs` (sets `MSYS2_ARG_CONV_EXCL=*`, inert elsewhere). Also note a cygwin-family tclsh is a POSIX Tcl: name the script the way that shell spells paths (`tclsh /c/repo/.../src/make.tcl`, not `C:/repo/...`, which it resolves relative to the cwd) - make.tcl diagnoses the windows-spelling case. Piped characterization: `src/tests/shell/testsuites/punkexe/maketclplatform.test` (the cygwin-host tests self-gate on finding and probing a real msys/cygwin tclsh; `PUNK_MSYS_TCLSH` names one explicitly). diff --git a/src/bootsupport/modules/punk/mix/templates-0.2.0.tm b/src/bootsupport/modules/punk/mix/templates-0.2.0.tm index 664ca6879af9f46f27dbef528e42944231862b57..132f49d43dcce722ac60c3ce9252a0ff78b6fd57 100644 GIT binary patch delta 111092 zcmY(pV|1oX(>0t-lF7sq+qUhAJ+W=uIAYs2C$=@QamEwdHoxn=pI=|E)vI>zs_y>R zy>?aojYaF9N2^1}fxrs=XvD(#@%{gSBvK;&|5;uk_i8gX%#XDule>r^q=qV|H9KQaUrzRdV3+E zTd{1wv;L2R!}&iBp_RZ6eC+?v!L|N&03ZK9?*HA8X3!7$z17bN92p$>G2}xheOzXE zCm$S4IPN=`T3P}$gd$*TXl=^iVr+B%ap8q4kw^jmb)=}0bPP_^2&UxL*;!DVLcUhr zO!tzo|9C%+#|M=!sRk!x_#2G6W%6k)XoYm0)N?O3d~&>M{F{)}Wk!y z|Hh5uh;S2*!V}^nV&Rb2r(N<?6GO-7PEe`Qb+n^lUKT+$R(tVii};R$%YydPASOR6hE#}!31;id@Qh+MFF zyo99G)s0PvG%dp^ISG^;G|F;4cGGLP;w zdZlNkEgYjPGLdnk!xKx}HJ$M3E6BByDx+L#k|L&^tt?X{q?(j&U0z~3yN^fm^n3*0 z9}g-iDS6`k_CG^B=cCj881;V+DcO1^%;n3r=7=7H4Rf95k%LGsX72p_+%QZRZdgo7 zKx;F1fU2w z$yKKe#>N-!D}+;~ETl%G^r@2+ldf?F5Y_Y{AnLh>K)q%rpyi5GFXnB%z-d( zLGhw0ymfMHY}Dx!NRWC$qF-~Z?ae>ahjvlksFyP|qOa_&j=B2$i$Xz!d8)t>L^jtl zT2_%E$_CEpQs*O<*XrdWZ#{VzKg7iE?ulfO@ivhR3FC-IUl?0U8s(H~B8s7xiBye}UB_u9!GUY9{z9h0WPwZ?Nv^u@g>mv@H3`k6#i zaTB5l&Z%09H8NzmUN(jJf?~K9xYWSo8S7LTXYTscF3%qM;~iCLgili4!+Z_44!shw zR?O~ze2UDX6hZ|(F@?|D=b@;iBfhm=-4_4n-qOQh@7k~OZY zBDhpRWcgVSVW2qHf%q@V2x2<$xP2n|jGst6P?vu3N;ey|PY2Z+1$iEqG-TBs?7|!N zu2FNeGIYirWtIwW%O;deK@p1&Y01E%NU&G5EM)yM@_~povx~7}-->Y2d`k zaxl*!)d_K0%ao8<@|~f3cr`b+F_2=gxSgq5Y)G{Qhjj%0dxL6n`STF)kM2q3`rijx zu~cbOanhMZCMD`==#zGKkHTJ5mwz9aSck?&Iae7ns78M7pGPJI5ia64CXQw@+(`F| z%h>5pbYC%eDQBG-Q+^jNDA5xZa&BrM<3wlQS^$v|rEn!W6tbqcdFVzR(U&Q|AKsM7 zkp$r`{4t~J7py~M$u}9mX*a@$8~GQm7h-t7!*%^Rl*9)O98ZD%A@`=e!tnrs{P*2Dc*v-A%Zsb44YpotG}Hj17`*qcNi~|6 z$yj$$UTZq8Iw7|uy!pTum>c8QE9-J)mruR|g~k_;wWRM-Z3N-~qg2aJPCe1BY`&{r zKjY#-8vQ?my1EC<53MHDCb*>iPnfT%=|XEX-qaY%Jm85pER@{tA38(bvwrQR>3`aKtab0mOKQYESUiLMHFYv=Q|tlCk(xg1S^3^f-7tLPu}iKZ z<|50<8*QWr%k18s1C++qQ+z$)B83l9FnYG0Hg_eYu;vCf8y^dB-~RPOoh-~z72NTH zo0}`^MLU7h!sELVv4IXuzX|ilv%7s^hwNWEgL z@gY)L#G3;ySn=`o2)~ZeDx=+2sD`%tHY=0w&C?`T_kHg%&cu+ef7I0>gANyp{NNM> ze177GNOu1Xu*fX1^~;q;Mea?RrYzf}wYYM(Pdo8^^%HKOU;AoZf;L~Ye=Ne#s;d5@ zTeJo{2G<-$j~hJfHdquD_ffwAiIF9)RVCp9|C1iDY@>IFkkTf!Ya={D;JH1zJlX&Mmhc1>EHE(K}3tOvRd)Y9BO!ZlPr{hetXCmUS1O1}i z03GXpl3TUsiQdt@I-uP^@xDIZ+$~eiTIhF0JAf!I?kSplO_N79k4SOOJJ;x@a0@wi z#o>Gp=`Z%kTkg5Q-5a*UBHdDRl6I{btGs}M9`0^rL<8p8+pNNu_e=T{tSd>)SO&Pn z)FJE|@kiFRUum;6lJ0^-?0k>Kg8_;sb7~1Wpn6$SBHO@lgV!rwO#2dQshRY(Q^fJm z6iV3sAa~yyp>Kr$TMVpMaNbOOYPAQnVLO$nFMF`Ww?&^ysap=4l^K$ zCl_5WswlgOC=$AhoX_t%9N!mfNkkBnT+!m>EEF2Vk( zawpjI64~#=Du2ujL2H~}MwcOvh$s3;2TnhVLRH5w+MMQFR4P-KNh&?qVDWmG341{A ze7H%aay*)IVTmfEAIO-H9kv^!;9!6%JW}+>+y;Ngo2$?L$nz!PF-Ri@cu8 zJ;A2$kGGO*>%S0?|JYz-^drdHkKtPxe)N3ZogIB>vQR)>TCx?1Up|g39}P+|Z#Zdu z;8r)D6f?PHfHlUS3X%;0Q1kASjJoaT^{z1|R?(bRkSF7}{ue0=ep$n}8ZGAgYMHU(l;*9j$Q{A{7TE=Ji0mi3EKE827?{bTd zzbQVI3Hu0e_8=QLlt$zw4 zn~@Z)!^hr>CZ^cCeYErCq01~5BQ?5AplgT$oe-xYAxCyp9C%4s1x2G`IB}<{e&W4r ztTBF9?DILx+q{g>ZTQ|S-auXrN-oikO#M zO#V}InY06EdL;tZl+0H_q46vv7D|=i51r0groClNEFCP5%bpos{l1$dWCe^}%IJXT$zKB}7S*$NmirmW2>uVxI;u>)oWIHJAuXXT$7fcI4S_ z2>xCdbRDg7v-846NDd-)R^2jX*1<}eAj`Tn{8u0r2&a;o=ZR!%GWL?)hHn0?v!_9I zQvLh&UiKqJ)oSeu3Gpw&BGy*QM*>j!JhsbOkYu&qdCDC7e`51wJxcysN6>tE9}*dF zEZVMM1>XX|_F`wI!L8N_G*a++7Wz7c8!QMl{TAKgSsepqe5cGH@tR7sV}FOOU9#0O zUcWK9-R9rdEg2a_-8J+EJqP~zwEEfGJCapw>J=~e#9TvYsW!(c+H}g=JNfiD?i=@y z7Dm9RYLP&G;~bBJ%}wqH^9flADbBk)&V&5T5#0;m-P5(d)xiDH(n_g=$sb$j4K2tY zMG&;3;gi%QQ}gt!FW^NWL1_2r_TMj+9vAx1H6$hf`s75R#{S}+NI#d2sHVroU+sZk z4CNWSWmM!iVcT;%yu0z@5aGSV5`v<7-0m?01aeX^xBH#=mffy%D_ktMfskfO$2|LW z$U}j-bo&zi0woZa6F9{9i6NKB7N!fMshn(6}7KsGAZPwz;AzMg8MWn^XP zdN@#hrx3bVl-w1RsH22c;`MrcLjJ9@)&k2{Y+f?$fedvM?&jh6KhOT+9ImS7Doioo&>TtEE?Y2Sux#9RHApyR!yKHzSc{(bHJ6p?>>!;y>R1+1ws{Vz3#E|a7+(9mT&u*M zqb?*u<9%ir-Aw08wzN%ec3l3G(VYvZ>{FZha_Q6Qe+NNmSS9u(ebyOxrV_%nlVMwht+*l6S8jVef3b^hgW5<#0PezjR} z>UjF(s@6P9#!yvuey%9m{^*p3RMVn|`J*?z)r~Ma5na#0ckpTM>^V*K%k~Zk9GGK+ zAB^v3r}E11_3FuunLqF|y$;QpZZNGklEy}Ap*bi;I^LB))Q+ME6O(x*J?32h*6fP- zvB+6+x=4q5w88xdBS4~BZTe=bm2?}?H@dM@@-=A7;-!JKLlp$krI~uC(B)}&YJETE z8-w#Y4^>+a${cvBbEc?RfkXxt!|W$%>Nn=}ox&6zIhp7-uJ1fKDA=)O&n}it_~enF zGSh!c=OHcPQ^0eL8`5Wr@@d^k)Ju+Z-Tv2O=Is-3SRPCm?bJ3#KXsrIlK=-gZeD7gJ~Wt zY%EDINa>@vTW5yWRgEz6Tai29fV(oDx@fb+bHxch@z3J{?{0R0Zh$bQJke~(t;w|D z9h=Uf3O+67l+wlj#RMEra?HrMM~8=mA%B$J^si-W%dzfjhRQD)^cEErF*e(OHj@(M zb5kSX^~l~v<*13y+ZkK`g3+1_wtG~(sA3BK5qWirl$oK2Cgx3!MNL{l3N@K$Oj~E!$}>Sx}asfGRfMaRWT6TPM@e+)Pe|5jp^X>TJ8gbS2fua}W&LiRQh;$KP`S+zKm?HU7hQ6ugDCaj~?GTm-(@ z{2oGI#3`o}-P?=7lxt2Fj#lpR4-^}H_6>*j+)DIbeXR3od_!q%#%kHibc|VPBosI= z>W~+amuI;cdcDd+DfL^ma4SLFxiob&dTdhR3^3O~uHZDa z+W}+|tulJwt%!5UuSl)++#~*0?Ztw;e_e8->jz1&c<%^{2$Rcl+Q^LA+dC|%dn;?S zVdAw~{&2G12VWmWzh&Y2$-B`iyhF@d-fhZN{Sd$#zSz8>q_BxOGE8i1K1U{$^+VC7 zP_(WYLQi>AT37o^TMyYxVbjkoGMvQpGXWqXQAg{$g`U4g_>DjqmOavZXg(jU%aM&W zERR2WVi%KTm8QVjOEt{w6EbQmY0T|@HGZc@I~@1N{r6bw*q5bjyCeN1o&AU?9hMCd zq{10m;+36+j?>V@88{iCl)q}vjgbo+OYqoEVo2zQ5E_oyHN7<^Y2i@yIE%A+Rx*Hm zbzvL!V7`$&9hIekr2fHt(!^qO%zHUaH`Hl^X~UFtkz2m?JD87Md7r{Z49!fQv{oya zEghEo2UnJ1m&CknlYlucX6#d?%H++QDv87++0h$auP;aPv5 zj{?tewld;RjwF*K%nsqHq+tiMf3x9moO-*=Up=fGkHc=20G|E+cCs zKSPwOisz*08}CPXflM|_G0isp$U{>u;7Vx_FrW-I7Vl_UeFFgs$9>8r*9SJc_db1( z6!bZpGrGS(%K;Q8pq*uXsNJ6*C%Oj{V`t}tmY7Z#mGOPt;d*73F1G^0uevT@&jk+1 z=e=->f&pj=av;5n#qFOThN->u7{=zqZ-PcAmnw3>r9)6Xy1|m|d35G6wdAol2fqbh zOn#k&Ao#-fc6GYeaN@Q_Xaa3E8<3xNxcV6_zxG6o2Hv)bO*kX=N6#rNFJ$h;_s-Aj zgdnNj#%yjM)cb|;L=~KSQp4Yd;~#&o#chF{erOCe9_ep>Bz&?YS(`B%K2-;oO=W~l z?(ub!uX(zI6Hkzc)MXW03UeMA$g;2gtvb%R&yX?LU0LNonJ#R0oQ9Dtb@Fyda+vgj9 z`j2g0H{^@j{F)munLU?9sQX!0){XoDUe((8*V-GpY-PubkXFMTs1rq0_U29;zw}uH zpRXT}t&xenKH(8Mo}mm?T|v+LV?*X-a1g5ffb+mGiKSd(D@o-;gS>LM;LKNZ|JCkZ zr#mSbVEv#zrZo4ye>+86ss1s(B!4)BUZ{@^3*YgY)ywA{W9{i!&)Dt>c)q;G*k$Uu zIAt)@4mIUtr=hSD=Dc5@Pg##K(JAf6Rm~r7EnD`t$OlN`>PpxX^uAv1PYK;UNvw9& zW_*0SRnqASEKp!)1O&jEOq_~@nJ&C0x(q=ASUG_L^D@<$hN9Q)AW32-*35Q!@xd z>$wIGy7m3XjP)fFPcSP+w{F9uY*Ea~!c5_Bkl$+n zP&TXwvadulP;U}5RK)40YY}bGWr)bTJyY2+O4ecYNtw{HAUPyr7_V(agq~?$=m-t| zbhBD`U~x^8Z})M;&!~zQK@lgDWc23}w{{NaG>cL-JRAdWkFSk+R~#0pK)__5@X2ZaZNJi1Z#rT9kYrHyWgaa0{>En}j0C=n1Q6nNPUhueB0 zy-&t>$|Y-}^wQVXF3m|=XR9)RV}%D4>Jd}VSQ&U4E^!VOMlYQLE`ZY0rbB4HumCO( ziEAmXBDgiRj2$VgC+_Dlk}whix3;`dU6Z7TrJ z_}8^~O_GCBT!CWaXUIW9K{uZ<4l#<%wEG@|Mf(*LF`I__!+zM8d}9tUs`~!Rs{|Q^ z7E^=c0Z+cat(R$E1*a>V=1&?kM zq+hxneThsRR@!7$!ZDocepfUYTI>Yd@zBr0!^+yUTZm*IgYH;GKW8|hPSm4ATwlk| z7!IT}`V#}CRI6sd&NZxnsKQxrC@qf$$RGFS;xPyh2c;Rd@rc?Ktw@e70o+~Z=MV}7 z&3~$njl_hanq%?ex@pq9ENzR}{_%_r`<8-ckFt)&!U}m8M-(4+|5lE2(f$}=p5t;w z|MgoozxWRyOKXx7QcA>Ev0a^`X2Z`u=CEA`sc3ceHjcsDV}$)8AkA#bg|<1ypsqmE z9B}}S`5Q=&SU|Ar;~?#Gd%8&f@k;PL#iBdq@-4GXdAX5oymp%}bW!XpG8SeH9CbSu zOr2EM4OhZ=q1azwhzC^!Ir%KLVIynGYnsu7tUwF+r zbRIG!&*3kuEv}aXz~zPL)c=f0hl=&<4fteCEC4mO!B_dP=CULTZgs?%1Bnc>3 zlj~@Z$R2Pl@-XQg-*MXPqncVRWKoBHlpXT)A!bCXQ5$6&D@%T9Vv<#H9}|i2Y}4G% zRlP>9_K%Wc;mmdjvL5(j{M`{dJ!MXCX4^zR0ZvX~!T$^bSpGjQxisH()jkeSR2LG^ zycQbry~&!mI*6~Fsa8ITKfcL^`HJ7I=x?vDLWku2fJdK5lmR={Eus&O5k;EA{QACr z`qi5G^zFonlnzqnW-otVivHbOQUn%m ze2_w}Z*b)cNZDp_8Cz+A&sZVNSR>6`44A28cWSC!J9_?RqX=JCL;l!geyI41#Ank>_=K}7_+lx0o|%i6)!Ea@%i^7>&*wzqD>ge& zr({smxE=P+%t|P`seEI*tLC#6K>aj@p;$!3yB?kdQq`HvXvB-Prn!DmVGKklryLzm z6xnIEfs<=|x5GvsM1jFALk$|oDW3~0;t=MCrTS@pM$P_wb(Y-Z115xF77t}?*C=}; zCdj;&1eNA`Ng)3;_Wl~#TcFF(ERlMm(l5C*!8Uv*qyae{g`61c5sfTn+F(}{yAb4% zz@VrDgwoP0YRkeUvSW^!4m;GEb3JnpCXQ^SNUHk)!WC1 z4)1+U5V`h^kq#=x&TVqiXQOv`3LirN$1h`0by|8dVqnLOyvT!=?E@OHwaQEX7b@&ca zqO6$k9nL}-p}(NKQE|(-b2FISie%E(zd^rD{9G^y+ljUtQ$ILjuGjJ!f_Zrz{fy%Q zaLJX%TG-qk7} zxo(euviIba0&x1>N!#{7+V^J*)DC5)gk05)#Suiy!oL)HH{<+1*lz`-qCT>e4L4`Z zMPfyR-kCK6y#o}@vLmWm9HE*!M>h0;d#Bt61C(dkh2X|Z6tBJ8|FnWsp+<-{uGtp{ zt|J?UnWwLYAH+d>b?gr~=orRV41WXW)V~w7}k`VQP;MAwP3%d|&XDQ{4=~%ez4&|wh+BS{=^TAn=@LCFGj8&3Ry-7)J0`x>Szt~%nirFnq zKqGm}g&rX&4YfDB-nuC7|3-N+&;IkWq0q&%o&$+jqqBVNF2AC2xyIU}Y(^o~rOP;~ zFGBQ+J9JNYL90fb>sFSYmf#GiOk>>2=N|DRgJnHJ3CEvKKZON}ehHL)=}x@_zSkxH zh1q+P(G(aeY!sB}oqv%wIUrYiwxFgp7hn^l^G8*r_0Rf?R1u*-@27Y%j3mxEOMaf3 zS-e-VFECXCmL+c=?izAyF==`uqN4}4#4dWz@ix^5>ccAe2!S&tyrxNWN&`m&Jk8@1 zulrp}reIjwIMgR^-7AJ+(Kt(0vY$Y6W0)3TXzi4d7_O#g+_%{ohY2diUL!+mYAaJm z{c5YLDFFy8y@f*be-BPkf*(wfb&-V)aE2KqSU}wd&YOJjNyuq_FC{+cXYP-PaHn`` z6_!+%sjIrh$;lNmT&FZLTLD!7bLyl>Y@NY6bYT=rdf{RQ;SF;Aqno%$DLzlci5)JS zL%Z#ttJ$=F%m(qL_#asaTXZ&H2jk5V#ZLp0iQhFWg@(y&7m+O`8n0>2nD*fHq%D=Z z7DUHvPHGls;`F=!69}CFYWWG8v566@U=2k7mCGLIRRv^wx&z|rSNuGvOYn|Tm1t(BMfMD+qpYdr0y7(| z*9%mfp*9UF1?hh+xkC5wjNa^#5lRP;4~96^fRix z4sHq$v~mB|85MFW(LkdMV@gUPcHH!(Jw@tkYtjvLYlHQ=)r~L!Dye?4^FN2;HdAxN z)FwVm*3ml^C8$+PXWbg_hWHNIc`P z=Imj&`QVI8CZ58~&a)~x8*={QLLu@_WB;l`zD5^?xvPf+vV71ZQv^Je6)C}%=sJp$ z`v=8jBpAcYj%X7%D%OcRWD_T!W7>oR1hiKt-_-@XJ?_rKP%9*FYJYg#Rp3n_KLn%((3-cU7GjEk{dk zC-RF%&j|nM;zc;~E|zWCAeJmI5vgE!Y~ar|zNvM->&R*z(j!$7I!Ip`HU+opSW_Rc ztk>z6cwG_(sVvr;C{c0^;ER#VEy1`@>AMQt>phg2{eT#b4Z3T97PNUhd{JBVvQ>UP zO%vn?LZw`_tBUM8;7!oOe7(nBg;n8M9Tdab4|W#w`VLFr#)GPW6ChgK2u>C8B zhu6feL#n}4=}0D7&LP{$^S$88M*9;lC*I3)Y>govjK|-vZ3iZ+y$qQV&O%1V*?4aO zwUi*fh|SwJYQB!w(bGJeVbg`TShVeYeHGtodUrhRWcry??-r$^F7%ZyR;LPI8=I_= z=Y1q`l=$a@(3CBLx&51I(oY1H{H@?`hokvOd`f&BCt^o0R@;|T<)|pS;GU6rYigF% zP#gjm>#(?aTe**#wQ0KD2%LH?0>ZvPfNRV81gkK*Fdn>mB|{2|#N7|OU)Et3I8Dx@ zHhyzV?Y=XHAF!)|6!E3t=}5n>f;r0H`b+(2_FN^jJO?7VKFIH7$2<>PXO+=oL0cjU zUUYL#Urrl|R%%9ZdonAziz4N&5A!cxr9YVzrxO%bZGAz*i|9CC*?M*NBHDc)?@3~luu0n z{$@KAVvSc*Qwzci;K4ip_sb{G>spM77F6YeDs4f7ES$aI@Ic^nAinbaA+;}Ojv&Fs_KNYa$_aV{J_XSuw0{BNSyh>nR{0{!?Bnnk! zit{_i2pZ#kiJo7W7=*`NaWaMf!PX_GF zdYcqn%0`+8s(2iR$@yeW`sL)hD-My%xh6%Jak z1JvXso|gjHgF>h344q6dscq8eX3QE3xty%yGC*5=3l>}ZLz`Rn?*xTL1Iuc!5>JR$ zVLNUpo!yXhf2$Mq%CgM!gZ~M6Ei>tm`}(&LCOdHEt?UnnI6NZp3{CoGAP37=>LX^O zvN5Fmm-t$$MDrG|O+3rjCu4glm}h?u1aj66N6um!Y3|sxr|};x+RuD(62%YcD#AAs z`=cVA@nz!|q3f49$-BJp8`=2uVEjq#l4=Y35ktkxZEouH@t)fX@AU@Nk zJ|+P*nz>dnAT|{LZCUv>-1nBFOML)xl`A16mVh))y5UF2GzDM(D|^rPjlByeG$v@OINr=WS6 zja@>M9VbAwj5GZyD@>mqJ*(>uz@HS(x#wqESL8{Ys8C&zF6vngUar=`kY?AGZQ*<{ zegD0;uMl;_b(mf{>yA_;=tHLNXQr>K+r6Qg*#;r5hyw-5nX0O>BmQzw+Wt;~cX*pz z4|O(2v$RdPLKZ<*x&pb-IE#9cnoU~ojSgjZzXm($9M^oA8(fP~VM}xhlwZ&&HHs(A zjWcTy%P6QGUGn1=BDT~X+D35yHHzTIlD~JL+%a3Anv~LV3OgkGwQVw}b1g(t%EGZr z%s}ez9momG5vTTQ{=9-x8yfWQ*7J0`&qUmvwqu9w2lEs1lxeAD#j^|ETUTflNS^bx zM5{5}rra+!baHp>Z#5bO5SEpF1Yg~H7Ha%QyZQxxo|~dr*>sZNaC*?UYnPmi;C>9&%%m=8D}z|@<-&EpDWqmJt{u7 zrh2zn0?~-Zd8-RTZ4bL4#q54}pvEHw;~1D*6gJPiN@rSt16$MGkWVbcI!2*1F1F_! z)H?zUT4v6aGM{=m&^^-Wl83vNfi5EYw3uMwrv^yWKHqN_pN=tqcU_R+lyJEjvkf51 z+Ky7;B)Yo!1vs>Oczz8HC@I&?WL8#`o?$voMtPlQH)zGlC+ii_U`2z`8z*M1y2tl1 zh6#k422!S3mw=N4e#W3_Ra&CCHod=ZT*W8ijK^f2_P~zF*@K)itVczuS2Rm93T*Ms z8Ps1b>Ln0$R;Ug%d_I!aBIVxm*tMEcO4@e`^U8oOO5taQ+XteoV(7O^P27^{9M_cw_{&7kt5xDt;3E7!jUGCiKyOQ@c0PTvR90EH#%XBnJepC` zsU%4OO(p&hu}(EABTUWeD3nA3zdo37&rn>pc(3s{fq62lP1;v%v(F(;b<`~|C04A+R1iLFcnWo;d4R$)6Ag= zg}Ymi#tO@zmt#z(<%hPI`SV00xjtc0U2*t(sFC8LEP+?nKkK3@wT5)PEl?Ew)ea+Y zAD59os28t=7uR^;L7%S@p1Aq$^T1K5epayG$DPf!co-Y6VNs?Nq;Xo>Rgv_7uP`0-PnRXA&ATS`AuLA+#DnZ{a z2jCBEJYDQsIa&QVF=#)rM@F#q>aabyI3n0=Y*gZ+99E=o?148ZcUsXyL#)0q;5RCd zIW;-QgQQp`S$|YxRW$0?vM@wM6*Mn~uqPM|k3KZA%Z;=ssb(gzR+Eh6OJg&9@@&$p zOZdrDaKU;#q#|e~ap4^Nnz#SYetx52I`0FdX}B{`rV$c#@YAyzPz7|RR&y9#qR(Ue=k9B>eLc# zc?Wy!L4&MB7c4RLmXcLySy) zkIIhQhz~hG5G=ufVd)F}E}oaO#-zLmnMpdXE`sg2rjsbB$5*ccb|}m~NFrEbI}1Mf zvTH1oydaE9r0qXXqAoz6DNed89Ld0QG99Nyn^|I)*RV^;_$yg&rtzxlbDbA48Zf@S zH7u-FDE@6@*5P-Z{In52N*J21u{Imk9(i!U zzh#=deTW(!x;@mcUyq5!M`KPTAq_<5Cx2#=n>1z^q~w;r+4TT)cB>G1E$|_i3^5Mi zS6jK;&mZ3fyR>yIBn(+M&G67_C@xNowL(?}j`+UAyPqjHvM>B8Yfzs&Nrw0#m(VP? zxH_1i-BV++)(bvq*iDmyRzxyI$0a<4M;#?!PbBI|IHl$(VKYVKXi82q6cKceU82=L z&i_{z>*UjvCvP8+A=%8OH;%b0jV}yk!lyiP#Qf{3&e&9!5>21D6SgPj2e)LUJ{G~9QfPnX=e8@4$p56?0>R~CFGk_wT?sG`TBg} zCg_$K*z}aDW=@*hpEVVvB#Y9&xr>))7vfr$!txSM^OMnl?An%KSKY{yAVXh+AtW~Ei(BM-3((D{63=B9e4JT zC2dHc?c@Of!V<#O*b7Rtpha0Rx7Z5ow-=W}!Xv3vRCGXqY66>;k6hpWpR?CrR<_WxS*W;H^YC76kGIow0oI}g9h2pF zUj@fJ6rQ^7f5fHf@3V`Wv6*fnSYgEr$~#u{K3pd7b{8FcxNfTCj7ADy*r@U6?_i~> zU1&}Mn1_V=J${e1(Zz%k7nDH)>W&%YSMvnTi)vxqc&B6Kqh)8RR>HI7QEF>woq4Kg z{}cn(<*JhU;;jk?o~=lJ{DqI8Gh9TqjOXbn#NFdopG+2?IX0`unEX~w?&QevyPTmL z@qihCwwkc8NW0{^g%Gmb#uQ?q>#xm1t4b(w^LL#}&ner!r2!a8w zkPrt}7(dA^U{(Ms{2rZJ8~%F^RZnw6$Yxw!wyl)(VFc##o$77RvIW_{-aoZsxqs!-gQ^S9f?&(f0&c#H*^8ucByG+WKx0jxlSQt_l`xoMWakD+it z+KI{ndvnvW>@UPmG1J^yrRZgU92HE|AK`8Ai)qe3AFRUT$nT_hbqF$^(LIOKd&X6#sBq*{tF&rvmg~9Jp~B z{(T*<1v23eqy0Hvmd;<|5Q7(gU#}rXI)iJiC7W7NQR!-{YTEo)3qo@ex|3s?!b%Lu zuy>iz;^3P0Y&mNi%bTLmUJVkffIM8Zxe|z4{N)GGp2)IiRRo3%|`K4MN~cLP~fZ2q(6!{@2}waVO!$ za>K9~%RXGBVxAd1IznBUr}&9SwJnI$id<}N*yrJs9lr%drp~`Hc2$6bI*?_@H6t}z z8z0Hi^WO_N=9uq?#idin`s|c&pjJ#Zd|^VJ@pw?NIoXdQ_;XPa4yUE;gbc!}*>RsE z+POnE;+t{VMe8O6KxikAylOMD|BjeNP|Gw3@3fB9Dk$(6(ldp~As2e!mtN$C@p=x8 zuMj4gjjh$&!$foy0tgA*2)>)=4lv!^me`?rI2nBIQZ^20_LnwtUdiX6l5_pK;xg>c zULpMCP@(E*%#|tF;9WALuM0Rt=v3XzNh?8pNwC_@0UPWEj6FC0$lasPUI6M#)-4Zs zVhGS>y}U?!XoMb#Z=HDPP~%SqY(pA1e)vtUM*$U)`uMrj^zDW&I;d!d#(h9tT4cmu zok(IBZ?XRmQ$Vc0RtNdxIZkmzbLjGA>;;;n?`w^lVd#Sx#m2B*9?(; zP5socO;~}ROePT|AAfc(`;MYU>3Ujuu33~~E1SlVN26Ds=g+=<+1sSfbIRU=gZ(ot zx4NV!6_j(v?lix?gmVb$_S`1Mw-_{Bbyk9oa8f^XJa71M58wUz!+z*f^O)xnGo ziq$~0!pxM*hWIo*A&-5ua$!hB^FusFD7lfCMJVTwuwuBu$bYKtJ@Y0N-+$U0M+Yf169w9Fc;x}i7YB3=9n$Op@_%u4Mq;k<+@6rOZJK$~t z33Knj|NMRLx_|c%w{I;7(J=Q7)gc<*Xz749yuouRMOO$y%rE+DLcLAfQR9F)#<-R^ z@^ORSHt>?E%HN!|HTYLHdHEWBA_O=MmuWe0dNAR1T8Y{C79`#X80EJ2ZU=H6cMtiTTc$A! zd~8f<);bnZ#?^}>U*;{ewY`>%)y%lob9CpsKp)SKeB2}j(nkT5u()TX!ZY}AiGK=oYL*&1lFHy7a1 z+L;d}S~UrEo9bVub^So~ME=od`4jV~X4-Qy41X&GwkoQ0&gN~M_96Qg=>Q-pAiu*E z$t5-saz009GaWPueC((yhI;SXiz-xh*YUBG+B}1{ubQ?kwXF{!(ZFisD)qDo>EsQE zK_y%|8;*M~_tGb@YQVafGp*9o@HN7do4@CT_PtMA{)#4b5PjpAo*ZZe?n<8c8SV-z zf`2ncsTXUR8)Oi5I6=e2h?5MfilKwZb*d=0)Z*|}!04mBNKzd1<4QYal)j`5OavMF z@sH2640a)P=v?#K1z&2kA%1t6@=1V)%mCxBNju84cOGPGI{90>%v^| zdXn`ZI0Rz@6TyBSeWbT~&({HOb|FXz>mX;k;DJauW^l(&Ua9sH?}6bjeqUqw}#f_yB%7it*vj+ zZ-K_j?@VKxT3bz~`Ud^h*c!gurL|;vUdS8xt!bwGU2vv1zUDq;&L5g>=v=|@V}Gt2 zA8-J=T@9D0@ZsE1aVbLdhsP~-jeSTgHXL0F*yv92WY+Lr?Y^FIJscH04hQd-esfT# zcMn~2x~)v|bVI+3#J?@o-VGRiyt}ANp74bfKL?yvuF}qT zBR!O;y(%!7w_Zo~TOr{7oqhj_)A-n*gxM5B8efw!z+=TYuC&;2GaO!4FVOzLUDl$` zPos*(u%+`og_){CdBbommtV`q%59;-_foML)Sm|@{ zy9#<9Jn_d*yK=A6LZCy5=JN%8;3f4_R4*saaedE3hAh?vX=dxCc}U8vA(!uiP6+G2`!ly**i~eEhD<>NZ;^ zQVBU_y7x^iaWPL8#YMi-v?^rnvWw^)uY-Ml=-@sEVRUvF0CB7X{o7eL-4?F*kmfE|W`+5aMJr zO)FuH0Y5-!m@ih?Iv*q^=4P7}g6d(arTsgjw?|ds{ zIh7^?v)uP*v=<)s?x(Bq!#1Mu=OetIPP%}?^}dezk1viNMt@oA<`qlrRYgo$(mimI zOK6F<#1?l>2$$$RmQho+iu@y8<}BMd^guHW3eE$pP1QYuJkjW3U|H?HavSn~@@a544s+rj%L2ym(hy(Wwrp%>F=>^`^=t$jBH%sf zF88)FBNVh@tArzTlFP2Xql~R654VkkhsW-R2U7&+Ok}Ji+pDE@e=bN^^f~ zInc^LBjgpGblhqo+>OGp+=e)r&6Ju6J6TmI?B} zD4R6%kbkSiQz3TfC@vKXba{cn&za*aZA?C)uwWasZTmN1#nSPISR38}G#Zr5Or`SV z1tY?brU{8Jdry?A%4ZgI_DU*WE*%$B<03lu@=v8UM>;+(ij=W_abswBxwf}827XSO z<%lMlv8E~9kuS{#=FQH0M4u@e?H!ccnFzA`Hh(^_>%LFd|98av`+En#HDc*OJ!1H) zd?D9Lv)o?E^2XK?a7vr}9AM8?4X4dx^#CLVOeKxrd16sWdSQkv%s%Y=W^4EM4!*f& ze~U&y&LR{04~1Q;yb}3V0FJPge>W|s>1Tt&LaH>$nsIess+5nB$rydeW{82JnJm&J z7Jn&$gMrg1umR?)X?k5#WL8(nBC9pK`TS}6@wEe>BrWHd@#k%Lyu4m;wWrXC4Jj;u zODgfI7SqSm$oz)iEYE_ye{{n)r**yDXI5M)rEqWa(tpOa=hHsAbBEo(JN_T&eKIOQ zFH4L9Z8}Ntxq`pu@3_O7?WNb`3jWo)Fn^#2@p&Q%E}XFAZa?;>%~PO2BugZ`8oy`t za~$8Ck7KqZpiW*86$Z#Oo=ZAXLAP_Pk{L3#r<31fG1(YT1~BDPjhLa#5<8m%k+KPt@^W@lp)1bYI6E`8O6_|xo$Jm7AbY0X~%G$ z$$5b38M$bHz7POzalyGfM~s*l6n4%fxA%OA#}Pnmk{O-G;~u&|;bDwYx;GG3)So&_ z1vJa8)Qn&?Hu`c8ysR^Jqf)PH&J`a+I$WkG_e*E)Sy8N0sbWLN!Ws*gZoUB*e@iJ= z31h&sAxQH@r1&;piHaUkFQ4SdJ+s}B>{!dH`CVqbJJ_}B?Fi%O*FrIh?<3jthHa4W z=mq54Zzeb~(SU~1aQh5dCvmcTd?VAJPM&KLB>qzq;2zE3B_T$c<~c*CE0WPTpD@@- z2PEPPAlI6%ov@q>s8&ke1Ix5r10{3lmj}NAAAfj9QVHNs*Qo9=X9i>?Paw;PT`w69 zjVY=n)wv$~8A-D>{L+;j$cc{}4#*}xW}a9w%-c}*Aa>qy_yuwEj0ga+gVmr$7+p=G zJy^;a^2vyl^Aj{ovchNu#_(6}@^a0XU@iawXIdHyrh|2@hlvd5u{93{Mu9~#R0ptx zY=4YJjVCtEic0vwy;tsOZRvh(h)VA=euBmOuh9W=O&~X~I`D z_-UHxg400@+z-w=b=R)2phUt+vqW~FKpXPD0>j$`2eaKU5_3vMll4-zft_nxJgDKSAKv=%O=H+VE&_{l*2w&K38XRhkq4| za_Ajbh<3~9Cb~t$-ZjEv#+Tvf2S4k9Dn~jB>Q&@wY>-ir2_k;+LN3wFF)SvhQ(vd( zFjk3X433k9&b51J0=V=Pz9==4i~)Cy6z<5G!xs* z*jr={q~Y(~>yA<)YCFQBEs!6a%|>HW>xWIN@DST~ z)&+*RzY`ljim6R{=jhktN7kQ!HQBe8t1`u=)ifHTKr!(K!1|+3m1~S zB_4d9f|M3JE>o7uZt?VK^!w;80HlusePwet-2;A(Ed*dF<8UE~y>Tdt7}sQm$B)uT zj4w{9H<<;$HcOZ1sjdE9=$PFnhth~+$m7?g?NiPDl@rWBx{*);yp;P@dI@ZH{X(x+ zWo8k=_1sJ&{H^xE;QQqi*?&i~Kq4JKF&MBz{ZFzoq#N)y*JHAwI=9c~SbZ>8$ZFb;S zM!}CJHrT9&^0y)K>AYtRXmvC%hVZ-3{Tgz%7vEYfH4Gf{KVv#XAN0>)3Ze*p=bfw& zgLNz9vaqk=AC<|^Dt{L4wt2IJZ_}G2t0;28uULBP*_Q|P(j#1!2Ekr9NUI@irqif* zTCGsc&6W4Uq(8!WEMa3sdOkBa{_c-ka!j=aSZ!mm^+YW@j>f7grkII+a!X`YwO1Km z;&v51^bf^AcU7vC^h$zs*<}o)&o+k9j$=^Hs&VpKt|Fc}Kux|et1s24J>GH{vMDVE zKc)hRZcb0_cYgv~GfYEIZ#xoz9hF?QbS(38fO==?6=0EV4Jw%KuMj1#!S9N3KT0Nk z;FTC0P_xF~GUf1>>casWe@!6v0aRWSKk>RWQB3JpEP2D!-qqaL5`b+U?72>(W1&$@ z7nkv>kwo}We-+D9_s4JVZk^TK2A0W{ACV$CwVtl}WvOs)UM@D|hzX5PX5;pw%gHi< zidsC1Ua;B&+$Lk(S|(hbMwfQuXzQAkGu`l1jyQu;$_{8;4PDxpf4Z=D%~Q|pz~)P# zee-;+=JvZ=4tBp)`z)@1R6hpHkBP~w&$8Z1u#upDw>oaaQ&qlfCdj%_>mlsyNrde- z_30WL>>ZBje*!x7v6f2D-e!v}aytoO#(aUbvA?Q*RJ?m}1x+Zqo);BPliFR=G&8jkx@ z7L_ik+rawG%gn1*={^ufyd{RhdAWJK+?B@40<3^7_iT#D`CjNnk+BgQdWk5O8yj_x zXbu|j#uHBX-PVpA^>L-C`^|@aZKh?IM{K9YrvsR8PJ)n6f9l=ZGE}pNlbFBCW)p@0 zoG`!vQi|2`^*c#FbEEcB*umKk2SeKVg+|zFyT~C zpB=ZK=5G!X6AwgFXVb5SE0r!q z677|f)UcCrYGCNeQZ-Okxb~VmY}IF|N2aXp15mw;f72qVT%2X_&xR)!R;NAC&WQx& zth3@`z)^*)Tzt5>iDJDn7tY7@`Hd}L#UrxVp$oc5iI<$0JhtkkC>MezaF#EFOrpix z(5iaFfREl3)(U$CwmU5_Rl5e;aGKfXNyVbxPf>VgzVAq~cs~iLfIg zmp1T*&5a+!gN^~t5TJqUnpVQXjlHeV!NV_WUX6ptbCn0~^z6%47K%gGz=vu4pMrl_GY@K2Kh_a9V*_$xj-&tl#7D{OBg3b4A zf4EmIT;q}E1#uou87|^Mo37bt;RSftTmz1HYP1a+){xP7P$nB%`-FR~(~tU`$}nGt z5AARD3w+@8v=^h%wO-vChPc80V?2NE#5tdCEA14+#$MHHEo?U3I9EWKfD?Dm)N;OT zZbgITc_a{v&P&_wO%=V12cb=UggRA*LUC6I?+xk}>k~SJg|0?iHEg-ZTFpd|$ICcJ zRCSKDsxt_8m9{TaixFc=d&48oZ>uNEGjWnGGs)bb(BPgRY}<_<`1$iG_sToz{Q zCayD=HEz|v@&X4!KTe)Pf3q0X{oUAzI5BReSt7s_X#u5Q+qcX+bpi}>CYyxAtvOk* z#y{(+4Ink%K2?1HMBX4`H?(9GF?$E0rt6Bn)6cH*2jrLAMoV69zLr&-6{6Sa=_=P7 z@VaWjC1%`4k^H-skC!y$;42sB%jnCyf2Sq2&1pMu4qhhO zz);P9`?T3S9-N23rnn#Nqtw#=Ert)_<1)m+Yj5*-0?=_9#794asLf2=zC|1OphC|- ze|dUaQZ;O1{BVN3ILo|9O}Whr(zC_jWr-|ao*U?^>AwO6IRzue@>8I4kdmK8vbE(V_v0Zgic4CVg2shxf)#-#(*F7*@nyi!Zi?e z{1DqqYZ+-anpUF8Og9@P2oKdoXTC#Zyu%qC$;A4|fb(x+jtfa8gG@gs$zJp#Iog{q zb=*h8RYuSj;JYl?5F~6BmeIDYLR77^5dUkGPbX!wd^1IZe~!i?k%4?TZW-nqjlr~T zSA*KZvNc_NDpK%c!WOBApS!HD8a#YD20fmz&ekPxYM#?e%lB^RsJqK#wr zZtwVLbWH#GbMH@^Nh5VQxTj%hESeU$FU7`uTQ#B?e*mSM9n4Cb4}8`VD{W{*sT74` zz?+>Mia56nXo@9`wAGFtM1^7kr#7nx7VZTReQ}ZWNxs?ATARhLAzDHAm@&8M(ru#; z+58w^@@3Sjk$yKvnCm77;f>u0oiUYLQ zb0KGYf9E!X1r3^hHv7%YkFDtxScz60OYC-??CzXXs0d98nV*XvB*cQUdq0}HYRvK} zXN7M8tKYkJ+Hr6k!kNHfKCTO`5-G7+xN}pGo)*n7f$t(5O5^@8p;RGU-g@`>ksP;- z;;1&pP#R7ViTd(|0Q{PMd=Po7^RhDQyZdjmf35Lj_e@DPGMee>ZxL}urQg%p6rZbqak@W;_NQVs;P{8i*U3XvqSqkin6Wq z42Zd{6W-+U-*CT1QoOyway*Vt}P=UoZGU)pgrtu4TJS>8>P? zUD@K$QymG3bi{#>4p1f;p0j~`!_2>t{4*h~K)Tz@GiMh{@{DWYkbE`nQWLCb1gzm& zgcD9NF~QG;WK@|f`04edW)=4!jxGdRe_U4tS0v*AuLC1UFvlb-#tfIZVV)&7k)rzy z+|0m;CI?ay_OuEu-+9_X5;4$lw2VaTCa$Ky$>_~W74l@Eo2_Sj6;lxM`2>|Gs#{m= zMjYf@l#7t56-Rl4W70IO8`QBx4SP_{7&xEU6gL)RE3TLPe+IE{ z>fg>M&MKGh?Mo&yQPj4~Md(Gp-?%bf#2w~^A#g`!3N$<8o$i{O`#;c8uua-qDX)7m zZ$8XJHVb`g7n=oUX-tqqtsXDVfVE;69fzF*<|XGE8QnYJjNmnGSlX;Mc{X7#K_ksP zTXjQg9_0qlv>Hb^47walWiF?uf6d3u=jR)78jJIcQMb2hyj7$&m%`G(8`NLfZW$#C z|2gV#a5wMvKlQ%u|Ec%KZp1-FRSR^n9;wQ-#i+9ePQ_|H=UBl*DTDxLD3_Dw0|0n_ z3Z4>Kupy*_SRj?INOlVw0=R^-Od6r4R5ge9KeWi5*eK8>pNv_)-mIe^ z6lpqO`%f|G_fhu{Q;Vm>ZM}SX-lsqMt9L6{sQY)1{(Lt1b21rkzKnz4h-QY>g8Z{N zc&Hp4CY>xt*@_cGR~NLqe=hRr#V8=TJh*y+QgEz9z%?t$+e=-#J z5KFfQq3$;Oigs491G~8FDnmAn`~xEHG^u@yAaWo+ zXg8De5RF5$u0x4gE>&;RmC&yymTAt|X1l@x#LilAE&x_12_|$7DsBm9wjjdl9WxuD}XD-{e37B;zQ8upM*C8=?o}42-MrU&KhCumJ)`?gF9zv z5DAbrib+GPjrozHd;Xltq6N$JoK6@7D1P|m^%t$1sQM`WyrL`XZYDeGOc9*8Fa-SK zs5YThHqtrYE(kgsZdA4zjtN zg;0ipRK zi_H%J7}SIE8-W>a9d_^0h$f2MCQypbbqTcg zc;r5gH~-OCaHgrm1=q`rrjP1r}`h*-}v`lunN$+1NoSj`P!*x@!St7YNfE4IjrK;UOt7~tVrjpYOTi(mgl zLw2aCL8ackePdgwkN-v;k=*>^r6=dej9khbe|WT{uY?E8e`M#hhZ*$2kh_i~Qn6S{`1=i`+H?SZ;s++ofD zk>#IFFgAhjdN+1EZ_ClbNolx)3Rg<;z_)D z4vDtQSZRJvIqVNVvtb49l7i>IEf84aC%1|A9lFg>naA_|vTcR2@35n;YB`YLR-QlBr zsp%O73eVxoBMQXk&owUJxB*%5Z6pD!6vh~WcFoVhmLVZ9I2Dc}m_Q-??q zbmSIwZf1MWm;yPY{ zZxGheQ3@KrSM;mj7VXgmZxXy;x8UQ;tyj?Pn*d8#dNRybK~2>GCQh`iutIz$3c zauplV?MD&LPpnW@iZ`)IWR<#GxV)bY>aFb8MVy#4T9qMgNQNx0f1K5G=XO9UZoMt% z0NUD6&?tNpHHpas4Y0^;zCUM{nSvPSIgDaPuk=(K*-ULx)7F!7x=YoXt~n}eL-ndx zJK?oDrtnG=(W6>lb;`RZ`t2yc(N6xkmiLpEc>k}uRO5VpHZ_K6L&;zE&C9>+59A)B z6g`v-z-^3gdBX;^f5Ch-E6!OB94CuxMFRA%95`nTYXF)GFU!GGen!=K+hkVeG3r&z z8d+Ir6b3a;vfyE_=Ri8SAepzh?3^$^ZXRJr3tT_iszv;*buT{8*E$qwx@my9g zF=8Lza6^U_%fZxYK(?Hhkfw-g)K25R39fRt({@Ck^#c1UU^4Qnp>vh+@*g2Xn4H#} zWmwGEoLW^bf3S1HFRCsaOw!T%Tz{>UinPPmqA&QTnu%_UL-G?sd*hll@1qX(-T`B} zOeBU5vBI=2duzDYD5oExlvBOoM`Qj&)~ zu=i|*u-Iv&xJQ7)Df}tixiJ7btZjI=7SThJqEvgOKR-^zRvsu-%WAxn;fY=NAbekQ z)--Gt@f#DN=8Y<7C8?|8&B}MBdsV`NcOCc4e-L3|7x&mdpqfIar4V` zo^iSi^jY3C(p1L^%WUhAaz!tzTb=x=N={>oS-)fIw|;eb9z~>7YFM zU4=f}Qa;+sxvBuEc52_)k6IrdcV2$qf4%7l45j&|+j`u2_4-Y>9Qe&gjLco}od@T> zw2$Ha<=Je-W+o-FiYBGv&?)^oGN^e)5LCs-C(VPTUQrt@D)_ zA!;N1h(lN{bGw|um!-b=rG9Hoj>9-!x)eaqITdT{EjtypX-AoU2V`v zg9-}s!Ig&j*g&P3EnjR)#0wloNnS*f$z|PdOAn+n#LdJ=nHd6bVUdorvusQaT-oj4 zv4#-4%|O9y)zx4^jT~FSiU}Khfw7tBzQl>LwywlP5&*sSxGkwzq9g28+0lP7vl^~_ z@ZiBtZ0@_V*d%~QZ3QPEY5f-4rj&X24$SzlxYBXGxJG0@JVh^je&?so^mI+1Le6};l4B=7<`Wc)LPqNXbt|_ z3hf(n%t}G2;iwp|Y+al4G0A@fIVISD*gt)KbgNI1f|HIBa-=QC-Yr z1d7H4TFmoOI+Sr8l1@lW#Sx2&IBqd)xTI?BwdU@DA_+tmkKLl=Jb^3MKO9V=r1_g= zsXAjdF40z7a>Q#nScPKGWV0YEaYO3yZ8wGa31r(fnJ<4EdqB04fEj;0V!%F^Ibf5` zp;hVl6SP)V^|vZpS{`=y$w{;OL5{+F5((w;g&h z+9)~dR-W*LyumfRxm$lnu6gLzeYr31+MQ!Z+S=WxTBbG*MFhw$gP<2c zWi36i^wb*yX^2JL^3^hp-BbkHTb9>)NXWDX0~BS-rzw8Hcwv9)!$^tuP>pQcQ=xq= zf-CZV_UpF>_x8T=F|{LaYwhLtl|CCj3p~|HNCxzufOEp52FR_pay;GwK-nmLg@ie)bvtT&ok3Ctj3)xIN zA|66r*GOnyK}=XOXH$-Jozk(JE)8}?dM!D#^D-h@s#;3cWHH7Ni>g!!9s1_CAy)^T zE}{>>Td{w~zKO3cL1l^S*^-Iw*2_vh5>iPyu~O=1I#w~wr&KK7NxCuyKx4Z!aUgEN zVwOS-_o^ioG&z{mG9D`_GK;llS{hv0sCtpBD-s)hWc-* zq-C_z!z0@UGD_a17dcG8kK%Wa=$}bOx6C*h;rKfK_2^M!KR9XDGvX%1B2G*NzwtDs zZNXKQh&=|9#O$PJvoDPpwj=SeMf3##oQtm5r7@Z!dY7&G|Hu~fA36im@p>hI#l+qB zX#;=#os?V}P+_nVvD6)_RUROSa<5eakUyONx;fb-bzSr$zMgg&c|{VPsG? zpSf(1E=1WPy+>0kipXp22!q9ieM$Otw{eu57i^_*b}G=VzR z!t8>rmpTNBMk$9-b7W`-J_Hn<9y7jY;|PDaY|4w5Z!G2lbu-J^F?7yVDmso3IgBpP z3V{+>FDCRgC-Bc}t1egp0x&4fi;8j2CE|)?<*tmXJW7ngAJO)0W=~WnpMfk5++^2N zX3VMU*PPkiAx7!bOuKA1#UDhRRW{?bz<)V?>K4o>I#4S6fEotFM+=fi#5=Zbjl_TS zPBd=3=<`DuK>0*?i5k1*>{LT5I#w8xsW?=A=BCrdG`}vyoXbh*^yq{Wld^N5JmPiY z0g}D!rM&tUd6w>BL-!Gu${>I3mDGYD;naf82-V#41#$Wa&ZE8_(tY}Rn)c_p ztmmaHJH|PbPiXxn>+!02Q`XiD(0eOE(=S)a;3Rbx=`zMFB6l`IhNGTQi<2-+NR=C1p7ZPHBek%PIE`qYu^OB_T z%q1vNNJ?Vjum4hnG>XBe5|gn)z>yekfU-U^36z2VG9+})=w>R)k!^*Mo5N(qLDK@% zpXK9yvF5}mCTK}D^(2aX*0X?)A`PKYfkMrSHhlVg%>&d3T~4wwGdbJh zSj$C>S-YwRwgt+c!N^&Y3_Zjbu=cLY;$BTQE{~%=4{BU{Z|?aomEd z;~257d#`!x$rM2tQ~oFF&^Z8TMZOc&$%DHU2{kUtz`5mur`~_Q&(eVoh=-jX{o5rL zxNMR>k@O_MPq^B6%GxyyNCCN07b{|2ax(Sp<*7Wnc3C6XQW|N*b#{$<%ap~oH3~R& zs&^k2_=0i8q}ZinzL{?Bxy;usL3?-1vPt_9YsRU@=(UZ%pKn^IAZ2+Hnc6J>-`OD)M-<>>v z`CV_O*_(u_fzD|2 zY)}j`4(E#=zkc%USwuTLiSYs(Wl+GwFcfQGePmxV!k>S(8+FnNiQ@QSxx)0jOLh7a zcjMh|z38J@XDcbH@+-E%ucG=ry3e2Ev4@YMN0Vg+)C|~wcf1*k33cN1VboSusGLtb z{{V!v>Z4}~D^}e@EpHw1Lv8nV-6&J!o*8wd5<}5PyNhhz*L!VYvU&@x)nJZp>P&VC zeMtHk`3#pI*=_>Kw6B#a)#{Q1$Z$Iaxl=QC&H#;9|k zW)1GiC8_+)#FXjXi@uAG?|$7K@Ob)49eCvr%?8ev%>o)@lNDm}=v@aN$2gxRVugb2 zMUM1s%uX00NurlOzIpcY#pCA#%gcSXrAfK;5m61dPxBkuG!5OU_axg`cmpNdn0Ln@S%dB_@5G#@`#yb~7xo z-TYBmG^u&1ncvriDPZO{!r-K=h%oco#!yGeB4Z7_SMHZjJrtvU<8Ys*3%btmts|Lc zQl5WlwS?1ym65BASn#SF@+RP~fEbS;gjn$^ZPjAi5(H8XM4{VgHf}TkR}?5&J-5}3 z4TjqM7T^|5lZaUmEN9q^jm#4ZI*Gt#MAv-*O3DzD1v)MAX*Rx&I>wBDJYbD(u@dKW zLHlAZpb=_ApB_eHlt06f!w*TMKh31ubX$MI&rd|pa>N4IF$a(+=ZJtr>M3yVRoOgW z#%uwc1MZZs0j8QqMMaHXo&5Ox@spDcL-1z~4*+mTbbrdUNpjv3Gp(+aNTvRYL@C{A z>6@4_JZ4!T2n-CI`YuC#%*MN-+<>Qlh;P~=+Oogj)6u@3W@|coc!yPlONx>JIL__$?fD`)wg3D zJ4NGecz7c-whaVHG6*_by*li4VpOpH=iS1y084yqnN zUIs(ywt3920a!NLaYJVkR&Cjw*3}B6D^&EEsyHy_9Ko)}fuFG>sW^;mWX>KZgxM#@ z`6A=;u&JOEa|y1Rz3eheybGCH;Ao&v^0`3nv%uudOR@lLAhi!^2S5Jq=%pD5igVc<-Q7(uA%lG{C;V_Ts;aVLUlBjDz!BXseezO# z^scO}1_=)bA~H!$l`@2=3uP`YM)P6bW(Ms=Kk~+t3kGD#A<^)?M3G9o@bS@6uO9MY z)>jHo*$__?wftdECjT!{jc;PtY8deiMQld!qPw!Q!xu(>X}Wt4KIebW-fQBMbl|KJ zj}3$3I+13SrQ(c=g{I0>VkQ@}e|XP0KRY5S&2e$)&5EQMN**2>E1CS_n994oy~opO zc>qECcHO+7#u8C`dQ#G14i$r#9<8Rm^8v2}|1D-7vnPBtuha>gALj74-+z7D-P_xH z^YhE-$CFpDN$-A5-ynbDAzm%lsk5a)pmfR(biE-;WCU^FRbCpY_SnaJC{NLFx_j|w z{Gs_idHLe?Pd}Wzq8a#J{6kKPl2ck7!QFv|GzBPB9-t+8_~{4b;s1r4_$aY32WPOJ zw_Gn2?4AySKmdXhMj-oSb0|U28Of`YZ-07y@;VR%!YzHaKoEaD0VEitQCC2m)YFr{ zo;-g^oI%8fWZ}RL2|MTxB#s0v%godFh~LN%^%XlEDxkcEQjO@+$-y8baSx^Bf#s%j z0g{#w^si2ypFDnj61_h8e||b4O(7bkv~hV{yWLH=h&y&so6RAHFo#i_wxj*5x3^d8 zsUx-uI+#dmEKPrLc#N$~m(#1IYR+G{ngSE#GqXNTyK~$XF$%sa&AR=wJdgj(KfR;m zxOW7vqVt2OQau^yueaZGz2VN?F59m{ZSjJrk*fzGU;e0=G#0QgwB2cb9!a)EwLo0W z;P!=Ym~$W11Hh&T!z6dXntxdlw@VYa%MxARmKm> zCv)+r3U7FoO^q^Q;RjJAE)6Yzy|HD_D(JM%wx27yD-WW(@JM5G&k)4NPV6Iffxi9z zD<1tHH}-!~y*YX^w)3aW&bf-K&G#=qEKE8ca44JYdCZ1U2 zHbAU<`0;IqJxruAJbm`~yH}5Yh>l6tKYje>arA%f^OrvlqSr5fdPU-sc>kN9o;`mP z{rLFF_oO|)#wT>;`|6yG@v40u7CFm)WYHCb32@Z~M0d5O15Lh5gz<)8dN|J*mPU?C#oivCmi>z{df zNL}tl?)o0}j_>xqBA&pv4<1w*w&N<`dM)FV;*gIt);eQJO$VX?3H2_uQc}qN_Qh`8 z`^9a!AFN99|-=9xvzONUR4pQgO z`YyQB5Qr3zOut4UQKs4nuRKS($)Tp~DP~;Gym1CsZgey3ie959Bm2tw_vOQfeLN`I zd4~h*^x=W(S|n;G`M5azsB$>gArXybSb*G4nDY1R3=i7g$*o1Zu z_2DE|9voUs-uH+}yLECH2IBe8viE&+v|6PtzSFnA*Qm!rY$0NV7sfA zA10}`1{<~pwt<~7l4L|4pa!WINU7$a5uG0*c-UXhMfP;>+a7yWGhMlf?h>89fA%JN z{QC9D58pihTlDng&Esd!Mf`uZJvr1?!NXSFo}Xm!8*QXu)P2b;R~H$0y$qpen07gS z%isf4q;2}^qXQanW*KHmrvcX|` z==WffJfO;vq=-6b2`hiiR&eoU8lkA+HYGw%C7#jz)ViyXvgvsEwep;+kvqR{x_bW_ zi5Wyjbtu_?r2L$xc80llt2Q)pS@|xc`2?o5X)2X5+DJHER^wGCc21VpF&7ZvSbt?H zp1~$L@M|Q-tj^UkpPx$uWy%L4FN_Zs*Qck(mkT4^@$n}4^{apA&@t?|$YXE8?B|bS zCIj*}Cj%CikiawnaV33AC*a9boQtp7-hJVMrUz$Xet1XPcdUp#ER|vEVwJB+f7`f( zn|s56voT`LSLuHu>X7dIhd*`)kuW3)cnyhT(=Aj5(*I1+i!FSEjBGSKzR0t&L@x={ zf-cd-hw_O!X(f+)Iz?}v49YK9c@cbLZ)(6iv7n#SzMikF zYyK0@3brqnCx^dTKVcn;S^f^5Zi%!+{5Y)uH~}=7Cz_re?Wl0 zA%`ItABG9&Y$Ie8TUnxNB@}6wQ$)lfORs?`5S9a?(X|+V9LgR;1O;5VSu?MfAqxesMpJ`Ji~s)|tiwq{~pdx3T6MM~PTVr2hCt4xN!B zd8Vj;m>Ofq_a}cNo%O}bHz%LjFwZ9U*FsIBVM;g{ht_8ZpPZ7edG4Tqx`ulr&*6fC z>aGYmZ+Mk|N~^W;8*3S-Ok!hsvt=VrWVtWBbF_8Mz^_7)ouV++Ar2&+L93&y_iB9c z;4FK8C=rtn=nz0W4;19T)1M<6#yjdjW7D+4p0w9KxUZc&Bq=~Qn|9r2DuZSBc7#x! zH`Tkl936Uut!nc&CIJ&Zq;!(hQXf4{Y1esd@B2W1f0oslC38;rGYJk{9&?;7BwZ`! z*f`gkVdJ8dB}*4-kFxCI)5_D#jd`KOe}t zaWod+a>d;Z_i=$JyJbw8aVD@6>Pc2gJg#Jq1YDAS9tvjmLM3^*^c;74(Ki}WXwXYoH)k>I#EeL5##`+K zG$AmnU=-VQ2Kil&!7Lajh5e=~{CF?v_!y~NV!Y(y*^6E>!^J!fc@ch1Xp-WAB^Eqe z35vIQ2ju(eH2TKPo%Q062X1WNY(a-hVV$^te)vIQC3!U)*EsmqaUkd7JwzL$D?bEU ztPId!v@Iu)9)Y)g30&?=hzybzh1aGC59tztrxp=rfu^77?I#i6yxM7vW4;6EvH7LkoeI8G$#WdV$XryY&korU48@wvySyBK ze>i1{;~b?h0!q3%9oJ*vt!wO>7^$%PEX0#Uv{8e-=n1^@d)~?8xaif=!tMV_l52Q+ z?Iz!UTPF;1BI~Bmz#^vI^jcR}bde-mnWRwBlX|6b+rO~PI7EYGD0*j81Sv4NhV&@h zv!3?7=x2$*H-3v;qQQ`=s`A|*{e886VLfach?JslGzZ2+Vgk}b_sTc*;8EjUn{z%2 zF~0lQCUlz#p?X{v&b(zwzdns5w$KmACq8BaCx>V1mjfqFpid{oTq17e@(mV};W;50 ze7SJ59wdu_H%K9Q3yF#Mr(L(m7znS;#SN4@(iNj1^c?bWPK+D5Xb6FOk`su3$jLA~ z$v+a`qAUb8ev#+z!0WjtX3gMBrbvZViTWj zbvY!pN^DN~1qX9?HQ>ldBJo;T>~ZG`V2)#_N2xw}w$@SxI#oaB)a)vQVN^CKfsiIo zTSB0#fjM882)MW3|LK%iUG}zr>$TJaiT4rIFue?mSl8G+8)#{S-9Sb1ojW$|?yw$R z6N-NksTQ)Uhi#hO!&-#dVL)p@nuQ&k^_0OfME@o$H`?~ly=xr?Jdgelr+^uUm1f() zGOWGbs|Nk@mq_IS&HsEF{pIEBH`u^c>uv{GdUv}$S(HSC%gGOP3&0A0y-Tmlh*DV- z8Jl_kQ1j*V5$DodT(o&h6>vsmtLuTfH+++KmM$Mki{*7ezdZy`nA#j=h9;C8lR0Ds zvnrNy2cvJLN%wu&Tg<_8mD0(;IB2V+c*p69_~jjLEvT+i^zmy?4=Xkv=@~2fSEjWn za935skELgW-}tV-o2Gk?(*K+)=5(!Z&G7=EKl+QjAOR)k<5_61|dSS%@7P!N$hN z4qn!Q5e2Y}hw3<7(u1ek3-x3_(WfUZe@!ZIwS0B^Etz3N%0 z2{oM8TxjMm@gN^W_W~X(SJuDFyk#v8O#r<7{Q%nsH60=bs+VdpvZ)N0Xv&^X_Xx7r`NSR1hH6+==wR_F^ZEE8$$6pYGBIMI=^d4^Q` z3}tChGGZEa+E3(vtFsLEK%7{T%|v%QYNg#h6x>R2PMH%?5CF5)z(R;+MWZQzSBkFc ze<7`%GsM&or}eDodCg)3OR{PYhjydV?!#TEm|mBPMQL6(r!@okr|%OfNK{Ax5+p)l zvjInlmT<&wV)|ZUy00YdYoN@=kj0+ThE6ZztQ+GJO&y@si!4aPL`SThT) zC0(^tkQ#TK(%`{-19gp=L`p_8-Vrf|Ub96(G&3z$%k_A*hB+d(>&51Wphtmk|8OM0 zDDbdPLP{Ao@Lfks5upV3JT(Xmg3l)`2k#2BDK-)on$@P;-tJi=*AkkUn_1QGiy^e1 zEEYHvr)$W64Zc9lxpXz;GXengoDlUvTeCA&mey)lQfbBEd#%mFDoyTqGk-Xt!|N$4 zPlsk78X=#)=kzLua7nnj3tQuPNz8={hH2(~m3&T*>f&_a|9Cs1)=@8dq0SMrenKb7 zsfxzSyeQ%_u~g39F}wzBTF!gXPe3?|xTe&=J>NIP1T>6 zRE^qyMVid8P%L-{a+eV=Wa*{5)0<4E{X4xPr++5b^m*4<`c(R|UBRsFm`f*`RGJGq z^kAC%@uYw9{M-Hy)It0bi(z+g={j?{LfhKJ8eLaG*K3zPYR=YsQRxs>8EL(uCZ@(> zCrvV_hk}nfQJ}B_nd+nv#M%2leci_iH;>G27la9uo`NFD=&STdWyTcNNh>Q!DS7G`so@1CgwaHbHto~ zaqM9yah8hl;b9B3_DwU=;vyl{O;Q2P8G@t8gtF8b2I`Q_VP7Qzu$vUnqHtO(k`_M- zGlStpI@5GTSh1h0=S(JbzD|~??3E%0Ze^jVrrG?Rg9wN#4{6P8nbeO|ujW`;*=17C zkHiA5Q@n$9(r~$R<-9T5i(#Y_wlW5PQVF=pOItJhgVYZs2LL~U)4|Tu3}l0BgES&3 z_VTAU@yl=HZyvvR8omDMo7aDP{pRF{*RUzzQoFQ?#XkB+nYWpYXqUq4Qg(z}SKA0H zMlJ~9qX1tdh>oHggke$c@pTd&JbtwshR!`?;mig zVfAhYbCNM!xuY&yfSk7Rb|iF-%g=Kh_t5#{X*xd#Qi&ku@G6mdG38h#Ynl_a!%6f% z`PVlmuV^^NR@wy0BLFC0L>BPH-XSE3n!P4?_MX9wB^_1}VMO6AZ<$Vr6KpGcKRkZ+ z;*Hp&Y1f`JknD;{LhAl!4hnpKV>70?!h@!&(-NeU9|~XoAzEU@td_A+tf}u z;7OSUzUOCw^E+xS&E*(Ns>$GbKH(e97Z>$`8dK%lx;j~!fLJ8)40amjon-I?un_Gv)P_99V41A-09XEB~x{{!OPN$5^1$Pm# zkXOFQ6da>}XIu&^`el9!xPu?0bUs6*5~ReqTLPw5)_=>obD9# z@0KoKrHmq^AWMKncVhr9Ol4isP9|F#djdmi?XJNzcn`~eiv!y!n1CHI-`nCAZs%V( z2DVrOWy(9vwl#b$vyo#r(Od#jfoG_FvSi=CRx3iffoL7ZYK_9q`Vi{EcO*Z-NQG{D zOV`iN*x-y#wUufM;v&c_fw9KDEv-Jb*W#u|*-rpN`VT*xym)%@w98zC)o@Ts4G3ge z3I-S9gv5z|fZL_ZUerO%B`x4I8;v*7dDpF0Y2cu2;q`iqQJk%Dqkb+D&8%=;f*tr2 z*^i{Wr+2bIkf>D-(I{DMD_#cg={aJ zKny=kX9({13S7SiJRSu4Wt?-litgUQKlSIocz0!gnJw1aTdcod((*;0^D-K^o*qPe zgK#3DCi(eUo=*zr9zi#e=(Q88q_>D{sryt;6KkPK+;;_sH&Yz;j!d%a6pDne_8_W% zF&MZJ8eNSr1OkBEl*%qp`D_V%rBX__52?*cz=sQhD)PI0ppI4wYZ4nK^bW$Obhm)SC( zgFrD|EE6tCVo)^sBtG;9Y$9l=gLm-ptA$lOaJrPTuxx>yNInqTKE;k{+)YmH-@dJk z2U98ii)~XjGLdzK05zsiC`q`k6I*g&PSO&x8A(=QhSl{HDSHy0?%lox%ad9cn=^NR z#%pwuCezi$buW4ed#Jngf-8U{qbN1z)iPPwxSBHNk)#Z^+EC46LmFGny(Qzb3rY`YQvC!Pl)z1is;^fPP8;avQojOkc4hLv>jCGa#qM> zfk)z2K~O9yX>26pNUuOyTjKhTKb0=mvNeV#tP?QvVySqE<0ABmx#=wg>w#8p8SNX9 zH;DYl`DPO@W?%2`Nf}kS5RVx>_d~@MdQWhypB9w4Sknh^mZ@jZd8U+%?MlJk|2CdYh`9XfwT)m{<%^gj zaXoL5E!0ml`}}z56Q6P@wy2UA4o8!fJKDit}x~ zXNCuGezfN;69r(0I{;IRtlqh)h!R|Juj9wN6l&a3q;X4O#^4~>Drg4r{F5pTdi4dp zRQ|(Cd~tm!2CBgh<;UNkd{CVL+1&ek|C!z`Ym{e?RW@((+pS8tUUB<>OX55T9GI(9 zFp7KqNq+qtb)o80bnFp^u%W^~4aLw@O_bPRli8zn(n5>qg#p+4GI9S66^2|{!`#5S zzvHB78|NaOU-jcIS}))vZbb)f<$$)7AAX>tWctVq-Ck zz)mac+en*`rjUGC*HLP!zN|jITur@iE(GJwNBU;1)|ON8LKvD0x>QQ7T%@yLy_F_5 zEywWm1VOQn-<&)ZI9)3ewZuTBn1)JGzm!K{t}b@R=6<$zQEB~uCZriMtBmqVrdw9Q zZX_Tqop>e>K@yH0uU8jL&&-y|dv z{z}On(JFP&Z~Zo%yZu4nUZgL3|tljlFaIr-N&8-u;^lO`V7Z?kY+yqh{LZe;e#2L!=MKzF0z?4hO0#4VL}PCft7gbM#tZ-fPKBOYMGgV zy@I_Hz!;zztkuY6zya2k@duKBt-V?-o;9c5NT=bV{6#cg7o==C zz>;bL(ztL*sI-}p?$3rAih;%Z83&TVPqZGeLs75G1P(fZpa0EXwI>_VAm0g^Ls|vz zlzcr$#WqA^i!llTJ7@~k1~pFGMhA0-tpPJ&;a$zz*PMs50B2eJGg9T}9=fACb!zC2 zhn!J=rwL}Elgpn>FZu?(w*|Ab3}i@5ZoTD}(8>SI#G3Gh&c!%IV)-^>S>Via0)96d z(7Fcd^<8RGx`2cd5HbRXVH0x%BO{&a{Y4_ulVzD`DWewwRBx_?=xn}iSNlYRrWA+wa%mBhuu5YkHF^@~E+Ef;q+LTVwm%gus~vSpm4-vHTu>H!lkj!> zfTC6N3;6p=s)sj-NU-fLV)9cg!wh^CU=l9kDNcTReqquxnL8Y>iz0#pQ@rv_&*(7yL}nArlPX$=Xn3 zA^@UVW0UOc3>&=>&1kgsW?MYuiyxhi!F{T! z@GK*L6sbVZt-_|`%V94=bQmjonNibjU}-YwQj*|c_+Abo zJ8KVBz#kK;Un{@>ClX%rHa3Y#hZco_Zg3CY|l!hA>N^^#SyC4Di5KUuUzYQxxeS7nm!Yt$E&LxJ*iOdga6qv9{wf-DPfn zKbcgt&*D`L@J_G;T%-ey1J*$sVsBgrVY=PW!j(3wqwO4=`G;|Jb<57*;?=22_dE5&2W|TAHze_Go zppebznydRXwkG9%I#TT>e98oCJei*zc4OV3!AlE`i$U@nqoB38Y*-jYcp)~iuJn%N z9*HrzBEexvpe5jfBy8s_FzW3FqB0uQ2d@Om6sy0;r`h;gFi)Vg_A4MC4rEo}_9)rY22ahrLcE&K z%{|X(yf{%!g0^G#Yr4mZ;#nSl!6b#x&a(HSgKEl%Vt95BH=adKl(C7Igr}oc(;mrD z>U)!Dkg}e0t;rG_mBoJefUF?qR=*CJcPpVXns@F+%rGo)+7LDaaGSu%cUJl-{g@h? z9;PkDZhTE(N+vL7H?5sxZ=BHjsH0&xS#rKiX5GzEIDwm(_O2*JZZ&d$vmzuQ{(a5n z5)KHa9cOU~ntTkqls~V)O|HCiFd!_A?a5f-&EKvUAndOGSUd(8J2_51U~;o(J|{2Y zR%Tnoh2kFXM;CeGU3x8MoU&@Q_oI$v8*2{L7b0WJ`WxV^OjBg1szc+dgj=awh!r>n60WLT&o^@A$>=^^M!$T8Kw6SVS z2Oaj`W%EgYy_}L9I_nc%^qQ$`Dz2p$&J%d0eH(Nveea zgo)Id`S_wAE2ejUKZXDR2xze)`8;c^_rqv+g7hM3%OZ>Ipk&XhIlP3jN8rY zljq;Y8p6oHiwvL2%*6PhnrFcz3Fryl5?jw($Kj*Cu3(?mk5t@qVgik63YRjm<*w~o zIGah_2}M_H60-Xbr=Ms^8aNVAx?oLZ2*}kH!p+P%(B({jVQNwW(tIls6LcPktFk8n zj=@6VAdOsSSNNFij18C6ij3{QI(hu`hZE9M0&*Ve+Q&%vAdr;?i8e!7c_d?4s{wCT z6$G|XWL~XN7jKkPJ0`2fCP(aOVq z8AydJ%AS>f)9lnJ@o70&astRYYm^B2g#AcaE7AoOUg5VArk@=Dl{yUWkF~keD|Mfa zh$XvW8A-T`uIrJF_4wPKY#cJYEWD`I10kO z{s@l5)8<&@JLjQ$|54^VEc@Jclr@h@_T{5;RF9%ZF&i$9em!nFtYpr_kGw%Sw9ew+ zGOk@wE|{*1I>f^b)}ZGE;@Dh8fxc|Q`b=i&$-h2(6FqtP^d#g`$4~lxAyz62Aj-we zICXJj$qnUoa@H_TFLXT+;o?BMIsvf8%@%G`A4sryj zOIo^Ap!RS}CemZlyxP35?qWAefQu#c$v66 zhGw5HV-jSs*l+@BqbZa}_Z{}uT>-4RCeK8FqEmZ!A~vTatmOq`lR)9;FMmFH{l=Dr zsqilIDqu}niy&PO+13S2I!WM^ny0`UwtKM9^W3eqrAjC1)b|)0L*X9B084Ig#2IeM zmSW>FA`wXNsX|5aIJ-4i#*n{cSyma;-Zz6csvC)JgMoczO3%qfL(S4UeF;+XOjaU) zdV^~rcPC~?hMAn_^M9nvTuuSOYdl|P6NtNjdVqz;v|`e`a7K*z0G6o6al+=74i1l) z|L8Nfts(A1TgL+e=REX`A^68I{*%gPQaYrRkXE)@q(GQK0B^m)^K2!Eqi1TKvtTL@5)t|gb@NHe|*7yXT@|-T<#@c5ZE{@g$KeufKMaH zZ$b;Ha+gRz=e2sLjNoW;j%#u7Ta%%ZD^y(YQ7RBAbiYl`C6oX@4Iptk_0|2dGqv;~ zuU(sid~Orpy*A&G6u|KG2q%3MRTmfJDXvmHlV$Wn??J&vh2rf-ZYw z)QXyf(n0vgUd}32g>1;FH*OJjM$8${OhePaI;U?1G-J}BWx55A1}fNgwm>{$!?-=xWwSvXF=vXLl4~UTRsVJ}y-KbNsi|gIqfuR^t(dJyf3Mpl ziae3=^x3O7e|!AR%U5qgQo~J763H<~T#6MNM;pb)V}7qWXX~#|UK`&?!&Z1|Qp2Po z9%nud?B&=4lIEeZmx+D;^L$h45q`?c7zqw@zmT#)>OcwPSq%^y3ZGc#oV27x__{5t zjM{E&EfB!o#ai#GFq&D&d=)HOe+fb3_!@}uQ<2sq*c8-|rIW^I*1T*z(&-sXWgT+I z^N)uGBGwwCD4IQUhzd!r&ztLvMIrYneku=24t6!jcmrd8`|{P3lkcBBe;(q?cOSux zZ)EeXN(9L=tlrlBUQmrFsT^7Y#|(&2E|7$TnN%ewM*6U-*Ljzywh3l#yxFuGLi@Yq2i)=+bFZVyrJj zhA&_2CP!|mf!sorkT`vM^6lfFp1&bds6jL2qQg(AW(}fSk*TMc(Y2qkkINIvZd5VP z=fHBkSfN;3t&D2*r_4w-f79gXP|2936G^MScv-ALuQC6G5?XJYzuI8>swcJXp2NCv zb4Vt6lNw!zbCPgjzm1O8K{SAL8Xi_GP-vp2Xb%)P0!OdZf|a1|n!o12I;~ZO2aJj9 zvf<7|NyEK+BzW>jW$%V})$5Ie`VJ;@bosslw1Sx8e`$qjydfWaJ~)wQ41}p681KSQb{YdAdoH`0E(mKl*P{ zb<#9cX+Bp78n!p@ z(MAoZiLsCjSg-B&)Miyz1^sqKFSHnMR-kbW8(T=gWX4IEf3~~Fm2At(d46ELd#0Yl zJR7H|*;>iGEn7`E5$-Hi$X@|MECj*SYZ)z=Y(DYEM~Mp>BSFZqTWW-c&vx~W;w#d* z&QODbpa~;`KMXg%8 z!mT}Fpq~tAe>9hAg9iQmvo|ju|8O#V@|Ty-p3rvSIvjo}f+|F&`2kAjkOsmUdi1so zRHO51Fp&JIp}--(1`TCwa$q7nJS!mjmBl^5*~@Bc-61u+@IjS3jNCK!FAO_eWjwS*b9d0?XMW!_@q`RFPOd@F`Lr9tCEsJb7xvbG9#mio- z_8%GYBg9|>#@@CEEkkU2&=*SPjQBv>5)>F3e}8eqoY-(D=6VU&bF8_Mj278CYEdiu z%?D9_8MU;JEoVsCL%BOVJ+_r!ZaYBmQ!i*$T^9^Fcra`mPOzaJh6DnV2Idg3{+8+2 zKDYnhvPl$YlVG(5rur^zSop&I=-z<<4KggC1NWzJh1g?fjCT~oR@|jC#%p9A40A~d zfAcNhdvegAb2Cv-75B0BTnQ8?&+SA6|ITI_6=lt?^M~kW$L5Hi1Ms7_=lGH(z#t#Z z-sS1Ak+IGAE*IhRhhJ`z+o4gnE(6Fj!7&Sd{jSsqo?%CIf(J|xPL&c#qCg$JmT7r| zOsu~dI$JkvNH%4Lj#+01hQ4jyGScF1e|v_X^*2p}r9Zs90XW|djI7;FsJ;y*>c?ET z%0M|JX9meZnstk&BI_Bp-$}*38*bM(`ZA`CR5Q~G!-Z5+)w`%@s{PtM76Ak5`$Xe|O_A#X(u9 zsJtuUD5Ythy9CGJTVJUIu;R)LG@$`cvji?I4xHMLKDf@-z&lO?o|z4GYd;LU z;TKkrmp9k#8T${0T4dTaJT{ElJ$H`Dj6B+mPCse16dw#GE@XF<`2Ygb0mu z5wSRFA>73Zg*NzJQWW_(>7!iP>93uRD$FM?EkxWiSQBOQSVobz_6sAhWPWMH`9d0SuDK73n ziU5Af=SfF|4V_2Xi#A2N7m<{-6rHqzhL!MYlLpKhgz*$(&Si3)Lbf5D=`snW6#3&V zZhe-y$Cx2__&A%Ue+e)4F6WsodAH?A6YR?Z&B+JnbTeF72bMiEPAkRp?DyvM+i1-9 zV`D#tU7&l2UB19>NnHJ-dZdn%h4G7XB=|roOFFUi66-HGvf}*p!pr9Q6{opY;WXJf zuBBVW49c}A1uWI6A}Lk8$K!OtIqP7b$t3qyILw&(r{y^ zoQ%a7>y|}L1NM)DN-523HcKa&q+&TpRqUVAS{qW_hD{=U*?5hI2fWF^mdAM?&& z5H8kotJkA@2kHBCInGQ49SNu~?hRE6rHQ&f){?*baU%e`e%zaU0(!5m=UnG=o+As1 zm(g*#lm^fIe-cL7(i6`v^MJ$6wyhP&qaig>(8_x@-%V9pkM+fhIkur@sasbyoG^tv zTrmnrHN=(~5wgh66cElUNL;UTDx3di?`H3SnOIoXtAKkwB^jXCoK8BwfDSq7I^ewZ zYPnj&_i*pPlmnLTc@vk(vhi(73-@XjacRI(U|2ihfBLemChDW8ti@Yh=9fr;Eeju? zM)MRw7@??c;juC z!zX6+G~m_hy#!!?MmTY;2Eo)V3S*>n4p$t**LoxuX}3mC>SD;U{$0lP=8l3-a46Z( z)bt5Ge_>Ps{2T|L(A~veR`JNOe~bjpfD?TM#IlUPG9}IW_HNKgXA3%^9#ovl-Mx)W z;I5p=Y3dy%M52~clKx0MK~lii#&MZ( ze`rL_zPky`nHz8>o&I~Y&vvmYP3w&5t#!%#GK`>mb2C?%S3iXzgj5Y|u^W3dut}YC zE@eDPU1c1j3CY*K^VnGvTRgl~F5d2|P#cA_s-ZqAYc5{QYIg_rdgdGyg9zEU*8&eB ze#5q;wMFN-RgR4xP&|IMp}I?E0TeyOf2?_|j#p~O0Xt@C8*IxK@;5sDWx8*a$5kSuyF>2TLlghP(mq=~c0v!_Hp{L~*oA5IA zAJuOLbdciF7|#Sz3cQ~Wf18a7$8`nUJD!?aaF47|8?LD#YKnVD!bgH- zF;G%xMTr9-_R*+y*?3ywr@;_tCuwUKB(`Mum4HFAme45OV+)GQpabNI_Kz=W$(eECROuoG-Bd`Smx{A%&WWoBd1hd#Snjen=XpY!!ugF+PN!jnn?qRW&a6w zmLwvJKSR}X_U-n13P@6OSiL(Rx(`Ngy#b=lp*HA07t`UC;&}8H$x;1>dVX=z0t5FBY1ygc0(&S6efB}(8804lN2@`w4}f!HX-3Tq1?Pp^OP31)>s53~MBBDIu@=<)gV zmcu&LLKisb?6!4oo1yd2VIEzpofy5XPq%RybKrPmLHl#Di7TspPq4>QABYW6hNJ7U znl3W8=CUocrCwci2zm!jikvpT#XEuwmnGh`|W1FPq>D zO{(@H)&GBeTO}~^z?-oY2X?n+XP!quVuP3hVB1l*#0)G^2-{vMl1Yih`SJzhtVqyX zwo-0xB1p|hQ7UL0WMC~Itw!U>-hrpKv1GoC@B)6>C-D;R_(SqA5-`EOfz_q;2vkO8 z7ncOyEz_xl@FCcqW5s*a$~UIG7AT?t*l}`&*K9F~SHXguEi`1-V37-09onXLq`!9I z4Z;L;vv<%`PvMVP91|1IlD~7_3N=m=RVa&%m(wKzB7c=i#1G4Re7M2s7jyCRl|4%C z2w3eME=gAF<%|XyfT|LxY%9qC)yveAAN{XRbagC}br&?iTQ4ov?*Ll1sm z>{Ey6sbzX-**=9gPMb&{AQo!wV6Wj?in?0wS!^l3qDw&4!BrTdrdqJIC>l?qU*76w zU4K#oznpS932ksL4_l^Om?f!yt9GUhDi<>Qv(n#((rS)_- zmt_&k4w4!)zu?KcbqIph1~$|csH>VAVt*NY>X+;%z1FGSab|DA0lKks*)0vH-W`^q z-guzHtQa~I-Wbm4@q<@`z^fbY)g88g{9pj5qlyoxvax=uZ^_Qm*}8I@|f%CWC1yONVy>})p>?OOqUt2BUgvar_tjVPrYK) zwly7#;3BP;Fqb?#6CILEkrC7WeShr_#OS@ilwELD8#F;WHl5CC3gB6!46LnBRe%;q z*6<;Nf4C$)|6&dp`9%NPJ3y?#UOj9LIBJ8zSvH>xbqqJBRr5TvK>2u6UIM;5-KTZ& z{K~3LGis4@J__DssDI-&QZUI=JDiVfmd>0BN2)hA9Gok7NSOBzH+eM zbu9Y%B!A=_bj3T~wv`RRjs2hfYSiXYr6ik>^|rB(b<^7PA-88MNm%PN zlEh&uY%6|ZgsUBYO+Vff^v&LFEFT9^2>5qk%3lVvN|JL_#ao$-;zGWR)m$vr3pQ-9 z%KG@l-!!p$mH@LFg;crP0hjjn;3_$Giz8L*g+{1ZzD(;#Q3rIrihtL0et>rc21r^! z!PrjCJ%2^b+5$!s8;tM=9 zb_0lRxw6PK()W;{0hX-Y`GRXJ1hf|=;RZO{u}KdSyY3&8rFCGrWM|d(_cx_QnPvih z1wOdGta!3LIO^LWR)@)T>aGl9`=8}a4f6v|(_Tl746=>nrc;&38?+J+@OWTFxH%v? zMR%Y$m79BrK7SlWH>Y$C7`e+el}eStkD_s>x%tu&Rl(@>Ejy|y5t24Zg>)ZW_-_+f zexswT-e5QPFX+9dU$%O=G7{Qxa4&VMR~3)dx6`xcT(8Hk4(D65H+TXlb|+5E^V}Te zRs}d@$Pgd-+OvDGaBc^He_@De@YCNkXp>PV0I}^9tAD60HcfSzz29Wg@!{r!BsG%S zrKza>6^wWmm4fK7nJFuq1|w}Z0nWFb`TcN3+#i8iojS-p>-M^sBvResNxg9 z%n&JCR%Vqv?wF6H8YT3Ze-1Uw+1fM+px>Md#-~(TxF;l(9yb) z)o0}6(|_(q5cZQ8&qSy0prCCnVX(a|R}%{ofWA82$Sur=)u_XoPFCfQ?IWvz(A&Ol z&BPmrX0*E7kI(9ZO+9b)&ae~PzlLd57JHm-7`5d9=d=nWKB?;Apmw+?pu>lP=CQQ; z6$cI7=34oqEjSq)`&o&6Ll@yMq^yOCT{EPv!;zl3kIiT0iIoUUEp#YcC)j--O7 z#3~<1b@0$D#VVOC%*DH)t3NzV90CMHx0SK+EfU6V%vM@#d6^Ow8EXUAr3%OidqDpgvIm#GyjbxU~0Vx=r&YWRB0 z?tgv_bo3%SI6LYpp`#oaRbJ)KsJX}|uC$xWeD)g(db*zU?-aO54Tb}YTm;BRJ*Y~i zUaxQ&3z1b5yO3;+fzdVmowZp>?NhVv3}7Uc8Ilb3H8mAVxXeW@N~8d=R0XG2JHScu zC?}Ei>TPi=U0KTkT3DFqwDMXlnJcg;(|?lh9h{&_qO*WkrnW2_u}x`NfyIj9CU}?5 z#T2$)7q6e8ePf=uSQD{|Ui6&ywkW8{w8#M;wVth~ z++jA~JMaRM?C^(X_(MoUF;q|CP#{^uRcxV!Ft6FtOStU9pgb7x`6zh{V;EuN1%JV@ z6H^CnVn5_Z;1{XeMK;kulipy3sk}piWf*uf`k=o}brH&Jo%3lvqB%Tv?9It? ziSYx3>oJt8vID_V9LhUG1VQ@h#(!1R@;WNdwPkt^Y^M+ZW}Wso^epgvuENTAsQ7W~ zap#-IPrI!v`sLN@H(mb%w{Li2pU+))lABJ}O@wY;g|(~cy13Ah0+-2P4GQO2qO)z5 zg$b&0>E>qxB1we>Z0O2STCCMDAW#nX4(t}SrJiHitY1j|<~Ui!%;75-tbZ9YO6v30 zc0QZs1C}@RdRyl5U;00gufF-|+4HBrF-tX2c1Lb{?B-BNsrN5PROAa5&7LN6Xeu%) z1awuYVSPg+ph~U10~5?<%zsi=s29CTSL-EdFCWSfb4&ALbEU1*-7kE>Xw7F04oDu2iK&1v}_T@*{>r39qebJ`s=zc?6Njth+nHA6nFG`7zq z-^X=Mn&WW%-I|h?ZXA@VmYwpA$GxDrW;q|})^nqJI4=$Bg-Z$b19BRz->s46HFWF; z?Kck7^XCM*Y4N&2+oCZMW4=lm9ySulR~2uxqlrO(IQik_tG~rRJb(W2$CIbv#$?Wl zt??8@9jM&bTnjtm>XLg0dj~H~{5;|%=y0T6g53KyH&4{Rj$)3%ZHr2saGn51FVXi| zp%LH{XnLgeo&mj??mv469OEvP%;=JFiKN8w^nc)q-Z*-~Wc!wy_(9xAKhyT2U;mn= zS1-@-xs-9_He-pU?SHLi)M`Fivq}UoRq#BU%-p-)0o;-W;*T>J9 z5*aYImUNGRh%ZEnm-jIO9e?NEds+IQUOa#H;(Itd{Z)PTI$~%v4s>Bxm{_93H)i6D zIF$BkZu3SsfHb|rp(!`6DersL@}!I#W%u zuW5s|1f=*8r`)Vky8V6ojE)cCn^`uA3+U%Kh2ar|*Bc@6e5U}OnSXl8#mWH)#zOED z53tEZ4AUkd6>$*d$QVtb5;_Y4@`gnTR^10rI!X*6V{8S2N_9eB#6gD|3@1cI6M{c?H%y2UQd^m%W-x9DQid}`gBw&HTF{we(~Q;|(& zBMk%47GTJs)@$D-5K+VjG^T_UyK-`mhl;$}ajrQ+U z&zd{?QA?T$k!*jzPOklSwGGbgkkiyoTqrlcwmOPTS&m7ZqMg9OOY)TWSu{$@)_bL9 z`K?_IvuI4sb+Jy6P6Fds)^zL-qPF1<9`7uj<;&|>k54FFR^5N%MS$i3HHebB0-Pgp1J@i7t7P@Wb8Tm3-}{X>E0$qMPBpnpYQ6&s``jewsmBlI zR<@M?pdNAp;b4JvLVz_g25h!0gV|UPj2AxRaT) zV%o$}Zp@lcY?{oO!U%IO?KouH6w8K3`7=Qs**jnb6T}PNFogt7mrJ-jIo()l>Rk`D z1nvj=LOhiJ$u5=Q@t%J4ebBwqde`D{icRu=y1 zbFnbo4|RXZUb>5lk6_tF_Gui;9$BUdlf-f?eU5wMe=Y_M5B5KVK^y4SQo0E{vH*;V z8ENeHP}g!T>HBoNUa=vK?$a03Yjw{u8i0vF1@;W=9Bs~-YwsPnrD3I16X{s(3c=fw z-R)pF%GXluCCb>MK?+=^b{w`4$yQ(`E+5go{ZfBWh@q02_g|g7e);^TH_u+aF#3%h zXlzj-r|a>%KYa~*)|infqA@ZjqfQcCWap$Bn8YCDBrWs#xf~>KE@0NdE+Z}5`Zpzz zp>6R+p{FdkHiB3~biQ58gtYk#_kPY-5QW18?nA3q{4&w5*+poYbS~IprjYzZhtip< zMWlacW+U95(&_a8S~XlRbXfq#A5l=edhjut$PBqzaa=Yda<5X71F%_9i)YK^Jez94 z(Zodg+sYs8shunt0G5`Wv&htPDDDtkN)RZJPr+JrtDCc(rx!hb`qyW#U%vX=z+CVO z%sZc@;xbyGJ@M-b3Htk+o3E#jRQ5# ze{v{MjYk2Qgnh*u#sEHZ5C$qm3qF{?PXjM}a1g%AC!KqElVk@P*G+U84BlnnAnyD14==wz ziC>-kKR-Qtb;9pN-#&i!96*~QbDI)kHa79{`?3L&wd@8xD(x?0zFyMoOc%@L48XLxA4g7b z$jQ?HRR<1P%^~U^p|#_)Ceb@g=XLQ9)pyx@OmG^5Xn zEsOr0MJ;^f2R2rWUHd-I!@|YyRGrT@C&+wIGV(z=$c)R}rqd~GmawNo*nsYX%HFz9 zd+Q->u3veJ-q+LmSC;<|{fI~9LW_*R9mUa-0SlHuP*|-C`bBEm-P~s6OmVvaEoo9E znQggcnyz|F;XN{iyrdwD%V~c#P{W$YD_6wBu9vaU3$>Y)ogURb=lCLT?M+^QV2djI z_}pQ(*C{hoI-kUM8LTwgkA98zPkmfF6MkT)x%*a{=bGBZ-x~4W#w6RQyrCNjTby{N z?zT0C8;()B3Xzh`1D@bMtxZ}+1C0QXKSDexP(!HR#kGSanNi#n%y zYgn=ia-3d%UqkxyB4T;bJmS$Y6CzybBm|I<<;g8698Dba32S+qAyp0(cVU0`fR52B z(s^a1+eR50UX__x!{r{`-kU`>@s|V|9(DIC!!OfzZ1lyg4j}tl{R-IPspBs9^Du_8ffq!(>K689^FnOfZ3wkHZB9Pi z^w!4Ij}0&zq3A*h52ZEGUOGiLN;O`YE^pH;UCP}TktgfZpQCuZYY0}^o~ ziNm318>rjx!p9P}5?=SYXtYwyaxR@O_e41BX}N2ho)-dECQF5;xqr&30z(N!)UMSXd?=IJznq z?zqVU!wE8Lv}1pM!nW)LRCf-hCsZ(Y1Q5JjvQT>D?c>0sdk3t_VW(*^%K0J^1Ig)6MTj4`KnBxnf2t0vtPp7N;mhc5y%fi`VfK10ydB^3Lg5L%;#IUx;tR;fy z!zX`?BVxNdCa`-GgAaDFY2Y4s|8FsB7FldaF`#u2Q^rlOS%t+Z&%^X;rx)qM8mE@& z0^z-J^v6Gl3Cb&xKu^{_+}A8XfvaTC#_^Zk0fRO@sEh&+4p|84?~|+4i_>U8x7^eH`ULsBO~<5j@oDzr zf)M%8L!2+m}-@(WHLee zr3SV`lR#ufvEPecvV`OF*GHV!Kv9=z~qe6P$?$ z9uh^a+S`+j49DYx7IDeNV|wy&E81aIAh9!#sa?eNH~?o?Hmd#Ma&-pGw*<;bsG^NO8(gKxDb0uUjr6RSQNwcUlg_D zj#bqSGRbQ?1|!hQ&cKkx%Ey2GJ|ngLt@nKujK|N!pyxMMGvW&sp4t)0$$JOY2P~FM z4W%g{Jz~z>2P*qTeOf3{VZQy(JtwQqnj%pDx9r&tWzQakC}=JO2Tnu)_BM|{Hj01& zq}wzXyAT>!KCD%Qg2YBSBf94e%|q5Qva#*csJ?fdZho2X+1@4XWpjV$`pn1oU3OA- zd|3kjx&e&}{EFPrQ+fDclB0AR-xRL-G`Ncpy=2Ka52{&fCboqV#-7xCIyjk-2K3wf z4{Zm#Eio)a_Nu65A#cToIcs1*gyk+hI|KeK@Omd2a}DcI;k1R)Kt&@e&3UekZTXe)I{P;nlq0kxg4XQLFcXe3O|=ok0;!yR&PBWF2~QawQu zrKx(u371#7T?}*cDForC*yG|b&n79?uDL>#AVN(>sZE3_O@E|-(=)Xb$ueKe7g>p6 zENkHIO6!T(r-}J@XVs=rc>1%>7bzMqc+t`I5?|XYh zQJd#^`6&bjc8ayS_+Gb4w|qmLOP5@iia}e}bK4wTmauE^SvzV{_Ana*Q)_V~;wQc1X%n#rhElS`7j*zbs@P&qm@G zEgjHWoYw1(9w0+o;;pAfg%q`Umhxf4<%ZJ=0{*?PZR!Q6FlgmG35E+>z;M4__$M(R zx59tm<8JAioaa}ug+}0@e^=cy3PIV!-T^P7UGNJgDOWNah~vg88|)(yX#YfmTsb3G z;$J1tTd-+$-48le?>|&^b+SHWXudNzCzn!e_$p<+OSnQQmWW9MLXvYoNtzH>1o=3v_ja99pUl(c(M=O>=G z7!)KdjLnE}uE(P#=|UGg^g;>9`K!pZD${5IXA*XdxgFzrpm+h2fy;fE7K!iWFmPBg)@RK5(6U`YL~w43i3ESc zHg}y5rf2{dR?zPx`lj>~)U7!|8rUvxt2&Ub5x5`ylf4tSG&e2idQGH4#(+w4&fYMW z1FrA1&>%dpa(-6s(10!T{~$Zn!GA?V)yGfjKguu_{fAqowxt8rtW<%F5O=*;{*_Ws z^#^I^mpLl6a;}E{Iv8*w!ZX@nTTFk5X!pN_1iPA!%hlY+woJEU$}$ zIF7AmoSkXhntPGB+q>KQQe^o-^!fq?VDnI=JzF!)E4HiI-Ru=DPwL(4)HWX1zeQ2X zS|^{YvZ*UDOm)+Z^RAgxZeRGcI+@?L_-VQOYea0S8HQ@=dMNdwx)&EQ$QiQI52GvNJ~3)6iMB%x78u#-n3n zf^UsnFTaQS9v*WVhr3(^KLgRn2zOh*VHi0$C z)kk8~Tv<3An)mrNOjn>1hQm{mi~NNn7x`~#(n`fv<*CM9-auW2K^sJmpS*eY*OTV0 z%p{k)wG&!0OPA-w6jEylOCveSauo+$uOUVM5FhvHllxqU`(f`s*I$0vCmw0+HSl=X zoact~7!2hx8@yPAB0hghP=z)4StONaU4H-U&Fe@IK^l9Vrx`PvSn1}#M`Vx;*s~c@ zZ-J7!`MLmm=r@8mRA{W7MRjEehLQ z4e*9*$6f=&e(XU9CTTj<1ccV$pM>|V6l!v!np8Hn#i`Q{=~#bNQSzgYb!L4bV{02K zu{kWPR0)OlMF_CtKT@955wvy?CwLswvEpP)M4+_q$Qq|VN7ndHHOiU_++0aqrM!_g zQO7L67M@}NBKWmc_^8+s8KnMsVPQPdxzn3Wr~NyS=@e}iJT}?50`3FR>L4wZ zGo|+!56birqvp#pL!t+t)$0)*^3DBqIK-0c)85aEhw=UKV*Sw6>}3SBaeh9}5WPzZ z(S$}(EK+tcm5x3{O1}U4E56PWrDls&cPF{EokzAyuKIu0_^kz(6hD>m(-dZRLx{e5>0P>))kXSDNku3%TU9O>2p)kS#2)(-P8@uzwf%p|Ab1VV&J7Xdm zM#Pp~(lvhrK*J7W2w^2L6B!3^m^XH(IL+?Pt#lQMUh?3QNmq=*W{W z1Fu|i-$|jkb>V6J__a90L-i{-yHoq9kp&C%hKezBK~e`1?=+Z3X#zf~Yr5Z51T^Z@ zt1{QRk^+*IT)R+_-au}FLm@QWh-o zE=hkHf6(CBYm;};m0F9;4Ukt25S|l*)@kgmt6*>2q0Zz`u0nhkC_Bk$jBAKv4S^s* zi~L=qo`rjKHJBQtr9cmT(KCOt$dJei2>9Jt z{Au#yU_b}o_~O)!?O3xWiV`$6=XT&#Msl;SoEqP+Gw`MtWl;Nj-a=IdP@Y`7wdsHB zyj*$U)yZFx!XIWM-WHt5FlFk;7G8NPK>nYdg{uGjRu+{)l3F&bQ>t)&*FcU#5gE9Zzv57r6mFTb@J23(@bv}qy$Wc{yP%o=rS#2 z)6!O-n_g?MBaA{sS}0Gb@WYjNWFX$m8b|a&jZ?agbmNp%84Q%QQj;T2pAPMP)U)(( z&|le1J#tSQ6*3)^Ok;NPr?ZXABIb`Et9WrZ5=-jnN3GC+R98Is@Be@Ozt=e?ID-u= z6WTk544)`AjF`YLo90emOWs>}?vAhs?2!6UZ@E82q2OHrgNic01R~J<7}VO_lIier z8Let#xEx3O^5VYt`7*tX{4V&RA-sEhwENvu-kmkPJIhyT=*==lqdqMJR@{D0=Pq=7 za6Sg#!m!N+j_59-YoN40vbFC2%2ZRMC_plo+M5wz*tOsp))L zsJ#hYv1=jm{=t`RpNoam@1&n57XXHe{1r0U zbr_gxK4xvLsJ4>=N|N&@@Vhxio;PZDKM0HDQkK5k+FLns?#-b?pf}Y6j(gFQ(nCKe zS2GgA7{@K=SxJAESrZw0&Xu^C4vi7PHdwc;O~CoxW)5t^H>+I_yKAP!_8#YX)IKf~LYylN<`kL2(7(tF->-G%3u-rJlvu-<4K06ToSvQG6}-)kw-roZ?*yxiXmu{{x^cHQV{MU_ZDnF*lQ1p3WDjsX>wB({ z)3X3e*YI7y;YLlp!sETRr67my;dqb$m3O|wJv+) zZLi&13_K=+t7-c^6c?w*AvY}cQGd8_Vas!YOZBIsH| zH*?2+tO}IdGbvJfsJTA}(GzxQIKiF5v6fMbRf1R_Emvkd5vygI1{&+s_K5++V4>yg zmTnK*%4sqVG>2a7wvr@xO(_KRy&Wb-TkHkdJ%QH3`>9GsNJA@WD;S=;a}L|8Fvvlj z&AESv5VJH6Bc#W$TQ;l`*$!&0*AYuOFN#PwbR}7Xg5i!yu<$qNJM?w+RCM3J2{0p{ zq}9Rf1eGnQp{=>DG4Sz;VfnO>(}7Qh8gt6ihs>L`FU~L)G3_7q&h%Fq4biA=u!=&&s(n%! zQwJLxEYHv&(I2c5!pIQ;oN5O1i0atE!TMJfdEKyRyiKy`;e+T8H_?cidAAESBdLEb z6{b9`Eh&Io$kE72ey~8PwP_{`vyYk9_U+gl%CHqF&*|GJLLErwe_x|)jHJlc(~&o- zt)V7^${UCPnEd<}O8w{)Ww0w*Rw_=CbdMc6R46QpKz!WchGIOOQ*1tXepREjB2ji4;_ zHcOz&V=+7Kz}*<2J4SPVW$J2~&`QY-;Jk&R7d=f@2}z49%>-o#+?aPGi&jR!jTIo5 zHmkHr`Z^EqUSw-2anuC8&(X*(dM@gc=I}EzZqf1#*zf8+fEULIn$#68nC2Qym|cUyOTFI@>wup44|t#$$N^6@zTVXzz&>&h{Q!TaNz#hhQ1^Oyqb)+#j_RG|3 zH35Vihs}6*8T8Ifk{M`zMs;NK>1wF69_p+&g|oS@_faW%yVA2pA-zT57KI|O>c*oK=++pq6~j+(>kk4q+kOX z%wbALot&p-3bL#c6|4rlk!yS4z|LD48@iP2VX~Ha4uUSMI963$-Re3(XM* zbkK+>6hWy`a>=SB9-IIT!nr*B^c*M$R7gyi4WQg5#?lTtxL!^%@zQJ8K%8e-*WxO9b$v8wS65 z_CMweE^ir`+}Ji&1zp8T#ol-}X-AzLnQ;tV+2smJMy*LoAyP|c%jS_ECk;WQ%@&bj z=;3B_1vorspc}7IpMkR+p0b$7Ja%l^)^4m++xooK@SA@tyh@vIuu=&s`)MeBQ8OyD z(}6?b8qPU>pgifkW3RCnUkC(J1eJ>F z_8uk{;#Fc%A)4o8PHP! z%J2^k@78ju4IPorb=veDhjs+qZ4!Hr^pBQ~Wn%`Hvf*l(UOrg5UFkf=>m?L*#D1OL z4?TY{OWxzVCPU|5wZl?Wu^5&tHY;81BD9QDXqCHO0&ir*`?m0Xd9=c-!5QV!JlEnu zqoz$@iUAb7$Ds_KaSBJIO5^D6cdlT9c4ryApxu$Cj*2Hwx zs$Fg#(Q0+Refj+9$*bsxXRlwALe||!B+vd$AZqkLmBB%?>6KnF>fyjw;>rt0%O6~1 zS6<$@Pu%g4%Og-HVic0k_C0oDL&^SrBU_Z~Q!a$AfqmWL-TgkkQ$$3I)>VZ~JfnZN z<5pjCRzSfiX&p->NJ>s@3i*Qr+mZERBcS;0Ktat1?%PalK26 zU64yYgk-bC+-sm)9eUO$xA%f{Aku%In-`dp!|3gpP3F3e^4LrStvsgzEzyVH|1JLg zEdKo@`u$%9zyD$I``2DZ?oExYDk^4(E2}HsP%fUo5*iMgbW;CKSJm96X_`f_CyX@& z)#zUf&(&83`aNf6qEg~qDL8)mH;m2IY;QBJ+DOdduWQzH zYuVC@XpCmv!`Fw?@Jx&%t!A)_XN8YMHryCI3qBB|j?Eda8b!*;+Q!jJy=jtE6JX}L zCtKsar>3U{C7OGkYHn-W@XCJ!n18_FpFA$>CTbp)xHTVmN6}ZOVFS&s9%XjCuCrC@ z`IL{o8sMJ70lxE8wPjdn2_U z#45%n#`Ha%ZYb8Jg=@OK=xJ7rb2f+~@J-q(O}BtWx`&bmoQFa8kN$uEzrBC&Z{tYP zMB)GWDar(P3CaRU>MqEZM{TR!IxS23NpgGUNL-vEP#`e`P#6?IidOUe>~A~~ky)8l zS%m^6_w?>IcE?QtRe6n!jO!C@oEV}qjkE}s&STv(D7>Ekt7TAOI&LFMatEVyct8^b z;E9%Z#U)J3HW?=hXvKeR11v;`27~ERJm%T{ZLxVQCduf4?lj&*7(AAVLIiNAN|!Ob z3`Ad)j3#P7Yq5C{QQ!<(BqzXG{e!p9pZ)a9^WMyHdY)thjltIv7W%yg*%fdF7Ocip7!b zP!UjOVnlB008!qZLxNa*vt*rWu_Zj2^>TVL4tY@05@-Gj+-FH#K{mT2z~vh|uxs#{ z|4rwmWMfs{Kcs&Fp)$NP?A=|%a?RF~usO7U>v^E3bb-tdtd{KV`j)5R_|zvw9Z%sb z`c|oLeC!-*qa;?^jQpAQ%h62!j+s>`NH8i~wr5oaBn==fNoM2dLy8(U7*Mo4ej+wJ z#HxH?n|XUo-;rDjU+dU=I~Y;MZ-zt3tlHzpBIlg9$K|f^ zaq0K7LmTe*#$;Y@lZ`LohV>)_hnb&}o3u=4%Klw!*_=0LA&)AW(c|beBQw|UH#brU zB+L&5&TfCPt`85qbo2`6Zav3wKy+50&k8E`gfuSyAYO0eY5;7EKI;WnWN7?jh0zK8 z=EF2&sJ)7;U~_Gngy37pL4+yhOKQfONGj^Ch@{oWs?5<`hRD3o@cd)%kVQ{gP?*hq z1r8_T#lF|RAsb!+v{$p#c*eDP*;DIWwT@-buTp<$mfG;}%nxWR?vz>6vdZd&oY=O4 zhJ#|@i7R#rhtV-mI87jF-zR!E3T>ZPv0Jb?bzzlvlDeEO$))X!?HB zE;Z)!uHgQ&%C)t3J5ylrWpF*uYv=O8iVK9_aiy$sBRK5=22%4n-^wlz)=+tbp?W-H zf46@+yqj%mUWttdS%mT#rPIixsIuIbHm**)^UBBDwHJJr?_jujYKqCnR=aRqwW7}5 zpaao(rHAMTq0lai#l2qdhdn8k$8skB6maJr22MW@yL^s`OxdVdl)#SyMke#Dhf)-p z9{a7=S$s;&zj_JzZ<%Ejb%IL)=3^F_3lM+8BwBS^@6>F%-VPquHT=TNE5xJ9aY9UF zBwlU9&FdG+neUz%%U)#jftlx5x4&OSM#Z%g_H@IwyAdm@V3B>h;#h<`#T%tH2FY*IDdbIa@I^XY?$*6); zGp{}*Ufq3&|J>t04fAGhLOswGzC_H?I0{~8=F-frOn;6v*4tvL~eh4aN>;Y?#@`g3vgzAxKwY~ZIB)iNFrt>im~>4 zQi=bdjUI=^3lIrMr5Ho8r>$#Wuy*gNv71f7uU@~8-n@PO?)j_tQO5?`(dsD4OdGpHJcfLhD_!coi~5KzWVFn z|9$cEev^}p0pS$Vi~Y#F`F*?4Qq+MpX*n5bUIc~=d#&0dAve^H)PYlUsm`dlp@UZB z*~U!I+p%cU*{HxIN$YLU5j|%4c-{{~>Y^zaa!v zEre{)b=%Uw*Aa!Zv44!*GroTusd-!NI=c0D*s|k2-jdq5q-9GzdkNF#vGyg>OOT7Z zQM#0h)!pP%(uKbaNsIKf-`vmL!}|;!znToY!+1f;JKPS-b6|nMk1qv3Vq434|8`zo z!*6O&1dlxzHCao6JG?;=`Pm>MFVGUuv($f9T9|3Po)3XYAYn-r1%ZD9pEIda>)X=DdrEjlR^rv7eZGvBTvVLMf+Sldn1a@CO17G!qjqPq z6>-6t*#&X7KM~Tj-Uay)t}8C}RbEmT>;O=xc8RbNB{Vj7cYN$_x{=YU*82;CO*6*h1c(F zlB(QoF7lV+Halg>wQ#06yKP;V3KnuyLt~X!jY;3A2`x7P<<6MZIJcJ@>h_Q-Vp3gk zApVZ?@OQCB*0f!H?-Uw|esHd!A2!`V1)gfW(3@P(t2CYZiOhcw`ie%1>Wb_iMHTfc z-8DS#mROX3vm07n3ijoRloxJ|*V8Gj)d{W#SKUYWdTZtTE96g**7 zh>=dx<>YiSzby?eldcy1;X)K6aOapq#D>Tevz11u)$h>c(}Oo}U;pj-t7or%gtNBb z)s{9%n!EsGPv?JKBqMP`TyA`OojiW0P|) z5A^wI%@tqJH4IR&lx;BaG}`MjEgb&+Xiw_Jba>hK{gIARe(K2oR+@C2O5K0iY}l1qQOhFnR$N>KdaaP65ldtr22y{zA{iWH;G=_Z3QBFWISCj)G1sh~ zCbU3Zi7|-U7n?vudQ}1H$rbb+MN7VFy9y;v{FXB6- z=o=rIvwiIxhsw2-=j$oo21>I`XlfS<6;gCp${5+NV~^xlc2(v_z1~?_Z>6>uM}^N3 zy##-k@CI(iJUGWQC2E9@o>PNK^sOx!63r&_$!t9n6Nvm=v+BPCLI{oyy}~wxyyQ4y zXn#CS)1?=^;(>{kl|zjMahFy5^(T28Edxrm7c}DiT#6sLE}cV`rkBYn9f9cc$DU5) zV|MF%`oG=IhyS&E{Ovxm3W+f3K8*%^mK}e;y@ewiTm%eOdDFT91DeaAK{w-Rp&z@j zZTc;gL=y@D$f?DXnk=X6-v?LzRkaxrc!O9hFqLF*bOPh;w$F;d>w-E=J`hx z%-_uNv6Zy1v-+5Q`~UsW`Eb~M9Cydhx_>_Y{P6a@!|Q!_dxwSH)%9o(hBZX=t66_4 zgw$sf2%vrK?0@}#ALm3uZWrr97j~ijKqx%dkeb4qKTj?JEeudE$r|_^*nWA)(cvtN zdnIqie}pTKi7Qt|kZ7jD_&9pX$w<_V3OL$l;jz$U9V6<-!Hnt#qYm_A$km@!dW~{{ zHnM+RSBAJqRLF_%C=4%jdsLP~+IWArVkPif-CoOM8#mnHU_43EMv9oDo-L&<&sa`* z=jp#4T}RAEO>)X^X)qp<8Uf6N`(1FX-=UY}*NWklQ>zlmV1Q|{n8U#Meg5x1K7alb z3$?;XJ1Fyb*gJaAJM7}s@AM!08|I!7JIvT<_!(9qZmhTfZRx_u+d8QuKZSozpk&a7 z#6M0l4CByWNptxB7ju+j{HJ$(YyU&{TUtPVnGXAjQ7@#)6R$z1*H8(d3y?Y#thT(Y z^BK+-&JG>=ZM5lEqO!x_)a(P_e;*xk8g!cn5`5US@9w0+S&`)Qy8=F7(@rOJ$H;2u z&KtOLBIB-!I_#NSiAnZ%6PADOXv@?TR8rC6_HT=L%k_Xu3b)uVsF7Ppvl^p^xs7ut zQ5*$G(Q!_7nT6JR`TDo#@7_m3C~RA>c$zRpz_blj&+jQ;(v?D9F_G_#a{{&u&yl#nMlC#QwGVn*5QA~*r!F`Sk$rNRz2^Z*?!jyrE2`)THX z5#Z=9CzW}Y`T0e)56rMiSFn;WQtR8?E3Wt+DIEekAI~!o)}Esg?Cl=c%tC~+4J?ty zD;%UQd$DH3k=oy=9a4Y(-THWXn$!nGJrkE#M*j4B?R39(0-@f~o$RjNhzs@+n*ll6 zu+O}4qmumk#Qy8T|0i=(?;B>uH&9cnLJLlS#K@K?E1Q5{l{8omG$;n?H9tMICx@k@ z{NOA?KZXxYnYh{uOY7CL(Z+MMs6IpzaJCHvSC2z4?~1G2uG@cx>wBBa+w{DGownRn zn<=uAS=cuVj+VT*gCSAx#{PnK==zst7%rnq+%QMw81mOP9hMgWPno4;d3WKRPP6I7ttPA z*&Xm)NMf!`9~NP(w`2gOHMFeAaX0URlHQJn& z)R><0-O2j8Ei0&sg!quKi2H*7d&*#U;tG8J?=Rj*KfeCyd0$#od;T;zozPsxSp^Rx zZWildRv3T#OzP{cN}jZf-1a=`h6?jInj;h^oVp-BIt^<*=yB7OestOMz~J zffR!z8l*uWrBdX?Agzp*s&TmF@5N20lCEG0GPpC;ogE1!@S^PqZzVU2?cn`C4LGS2k<}6?4OUEtOO(E;ckBwc^Kl68F5!jR+Sk1EdFG?h(V>56-&!y zg1oZKZ>m!KelM0D@?4Gv zIgE~ujssZ@c4fIPRfQhbRqZRReBrY-skfag(e9=#5!H5vv_bOsGe;y5Gqi+(JQql@ z<>p;;uiv;Oh_bZg-I3fdVjDJcMyrkXS<7>mW69Oibv>Zzm42MW$5E&FExNr??uj#$ zVw;ko)|9t4%{ygIA53XgOXYTHtlWQ`2^^KkKSYT}KiEjCANGvXp@Xlw&`Cy8MMOyo zMp6b+s_#_otsCM6{UAXpF=NUA+YrH3j6}#>DIhGq6W*?(?6}92;y&-?dekP!5 zzhuMP*pUgquu~|5!}0c+=Z?L;OA$PXi{?>OzTaR>R(6zIre8HCy@YN!B2$@k^LTPX z)m19G6a4s|u$sKJZLD3+*9wfyHefaoHZQugw!YIV>gR2Jh1Up+TioG+nL5{}eEzum z9G^zD8>@!a;C|;mYFPMInT&sb48Je(-VMCJhAn?>O8Vx8q?B7tG(|}AgBos^-Ik*b zJ87pJpwQo4FtpMqr+JqF-wGOlJ4Xf1pMvZKBUI* z;?|DLEGn#@m9}CrUyAn{=9RqPK(4!;FE#ni_hCn0alRE4l+X9i&t8ALeEw6^VM3vn z_qimPNo-MO9iBcu74(Hqna13KZQKah6-XLNO~zx(TpH*YX+RR%&Fbz8ExK%$+u z65RAI9w!y#Q%gEGB%AI}$R?Rheowx41`r^mCPcJ>faD)vKs;M9rmyaPbQ{N1RwWt9 zII^ldk;U~aIR3cNoAQ5mb(Wb*aM^k|OtOqiPfNp4HWmE;E3EF<67^j76fXuR;sN-4 zn3#dLInZ^u2m$#uT%BRMo=WtU4pC*uHn$2AOqTPgqYtO^gLFKOzKveJ9{l+Fzy%{uV`8h53RF=Mo*r-884$8*64(0G645B)wiQPz8vj#AoLY&%ES z5HpLHS(L1X0-Mj~alX6a3%a}zy!XRSiR#fR!_Uapi;OT^OcPW=rwMhV(K3}%$dmah zjnXBF>p)=O7x^9HkURO}kob6!nPS549hf()P-faDLmdx{$$7nXnHmLa~2d~u`8m_(r| z^7O8vX&R3bQ}umip?dT{6?Z5;NiXoPE?&!wRDauG^~m|-HoLZbcq%O%Tk$kZSScL8X&j59B!L^4<5CJ}!j(G&SLfj4#yw9wEuJe$PabE$H6fS9Z zr#RHzU(o|+0*$kSf$g|Qf9bIWQq|o8Sw@N4G=-I4etJM8yi`VPQE~A3%SSY&zz2VXiugS8}2o=!kT^S;{R{;L>qa z)Rn#mWYmp11zL;Dymj!gVmdPi8?nAD8>D5{o$h~} z(HAP*zD*$5@`5>wLbrvPU}+_yPL?E&E-|6S-o7JzI|6F$;r!x_{o#k`>hJTs zW0$S0ND@NwlAk3?>O`iz?O0q@SHUR#!hQ>{$p0&JY#wT`wcki61Tof&F|Eb|+B$@+9ZIFl`=aL~hfWyIZ` zFI^QP!c8kekKAN6ZahosuQWp;pCX00t?iVrqmT3A3$zUgE#pV6VoikZe_?+#?S8*u zIV^E7{~`BlOP)ZT6k=T@0nJ35KaRQpKS030-P#*i@Wu=^3tpM#1e?2fG+C~$1i4xH zrHP-g;rB3OR~cJs5s#A7Wz4v^DR7{nJ?7#7sj$f)UjVIMEb#>26tm7*K@I@WGTm@7Fytqm8yK=LM9|}b)5)stX8}yBdxDoE84Uz0 zZGb?Z%+C~vp0q$WATRni9j57dcfAm_HbG+@+LCn~D3k>|z@lP`#n$Qbq$SP=DOdNm zAK!824zh!0fX;(01rg6sZoQ^|J$$z!FLwAhw0&84?}FgeRQ{U2l~%G!G!d^ale*i5 zX*`fPAKw^~N3e`9lSbGa8GL8nv(coeRc;QcB`!9Z}28TBbCTZ(`gLbf;S`Tpk z_HM|f8#Hk%56}_?-VPjiYt`nK4<_^BbUjMUDK@nYo)|Nhh^w6Xmd>WZb@07~-T*4S z83xoaQAf$9aaJ}`%f!5gg@^d#qj@gU#d^vTlHXL@<$mn~uX9zEZnj84^c~~W{yFG zuHvWFwV&GO9BMYM$fa1ZnCrtv#owZS=Q&VOazo{2vd@L)FtwOZyEFnCmbuTgKCkcc zyAdV3bJnid05E`Xw~9Ulh5-wl{`|R%nGX_RgMhNxEt+l!*-$k+rhG<8`Wrc<*{0XAtTQu&MFblKH>7{yZ&v0Mqv6{x-BbxVVy zJmuxdOZBv!AM01e45$#i5!7?qg>E-8QS-4$(v6y}h*&IsTveID1DqU?Toe7!NTV)~ zp{$3w_t54wt*5pPwCGuNh)W5z8*(p_y|>%DWg*&Y+6uv->B+dvj^U0oIjyL$KIgx{ zONc$CmpMj%x;~V-Zj}FoEeEn^h1h6^A#F*Q;LY7zBx}O{4|ic?WOm>P$oSB??XiA} zoFsI9I*SF|rBah~Hk%bVE=Qc-6B341x*@u^Hi#gCb9I@{_n>hva}=2QdUk?ahp3de z1aW$RGm0kz=L10F%PRmh_KvtDJ-nj0g7MWxe&Wb~;`!Vgolj5D`9+OrB73WXAvp88 z4!%GhxUahod;p`$yR^A!Fb0h33l0yfP)vc$6D_udLlTED(ik^l!^SS8kchak1!A@nfW`nK!h}`&Cfui-VYP-veqAgtu7)5eu{AQe)>CZ}TEEvniDg z4SiUDE-L3`qour=W1wXnHN7$Xg>N^RivJofi&M3|>T_LB00Emsu|Fbkp)|LYg2P-~ zy4cv*>U33V%(W^MIe*i(S>_1n7qzw?_tR9z#V6E}OaiJV0x_Z&uim|X_VOhj)+v8s ztMO>$7Kv}`u6)&bVG%zzqCqdUV9s` zpm%)i7M!C{b)Mrt(qF>FlqA5WN&Y~=99#@^cY{Nz@s&Yy#atmmYok6l zYyeCU4y;h!rv-VTTmHXBFALZG+w)gHy?*=4>z{so`TU({I_O&h27IDfkIkGIpT=f? zEB8~*2r&IOKcM(Dw63_H`YnN#Tmp-m_TNmwY~K6pzc%ankENQeCdTB|MK<>(i7bf~ z?VARhOw>aVG4C|0m#1-4I1##C;>(8GrGA9}-F7SSbHV0x8_+19oGJVg$l5L5=LECb10P z4Orp(yf}&$cU%^@L1teZiO?Qh95sIBj(H`I`433oNA!ONN6Zek!Vp~RS+DmUdyk^| z?VYIy?ot;VtH!t-cBUFd>V!0@a^J8 zDdhy^AS&mf1K%Z7=?Sgv$oD+b(-))}vj4+47DtE&tY}+mtGo@DM&@nNmgOC-dcSKY+eW^j8@$?dZg^4G^JsI;69F0qzG0U0a_<`f!gS;X2OIS=2T4c znt^aZ%dgR%p^qD$FJ9KJzfZ`W?QS%2woI=qRxekQ+ekA2#++OTNzEwmxw(r&tBr+R z9qvqS(JEEbMkD>}42RY~>u;=oqOnR2MiJ zQhRtaY~_v*w|@Be;Ug-Xcne&=fbBq&8%dwubk_q3ke1|aATV0WzyXj@%-VYskK!NV zcRRUDH(*OR z9I>WRkB}}w6eA%)2vrp!lZ!OUg&|iXQh3uSmtYm6kRCEWqZS*36wp~yheG8Lj36a8 zvbHm|&Afi28*KQ0$9TXRG%ICoa_RDqae6r&dLh~*28*kZ9D6nYHkp*d$uj*l$_1uMRtbBn<@0Uz$y%M zsQZojvbG;d8=p-+NkCA)&pdFD2cy_ZTP`4v(AjZxlIfE#4BzYg)2%tZ=_3?be6=}Y zn$HF@8TflCBX0XM_@nyDiyz%+g*JN*Hb1e=@ojCFY>GkXP?|yyr=Jnh6dM>}3o4NIj^yYb&bUC_?P$lhh zIgz4K%VfL;SjZ)yR=7fyEFWO;l3BXE>dpj}r`cRuGGatZ3v9?NT{B?J?~_FrMQh%Mf#lewIaNsQ_l;JFEb5fA$;omKUq>qHk-L)e@rRrfiPf z;x0_jw|E$z@EP60<&RG@w?95Q{SX3R-KT&K-3gpIbKtspAEW@4Nb`v~h)}z|lX#nT z;{0UES*pmJs`}I|Ck#I*?^qslhYiE~?%0ubUK)JV(ZPEI-(rZ(H|k`Wo+tAgZWEh^ zHn3d{e`x9Fw2mE-0|`ZKK5}3*Pm+9Put?bowuy=QqwTSw4L`$+x}INa>$V8J!Ke8m zhcWmzeOgKcM5gH)ntm^OF;;d-lso53#z1P>Z0p-bG9yAHttH;B%f)g+j8QAwX+zW- zQSxcx1-}o^)|^dXfDoZg(^JiOruj(CI-bBlfALWZb+R^n%KlL+<^XuW!92C!fB(Jr zz0%ZHQC#M;ZQz;vQ8U5-pbELn>Rjfy?G>eHc%H3i1M78=dGME;b2F;?ruEpmZ@Y$H z&^K#?I&oY4%6yUh7k4sfmK;B{3PXj_|k3kZz- zwnjtIo69Q_*<<)!<_gys&DPF4C3SIM4Lw@N{6#+hfA%&D zup#TXDJK%*ufoMf(ljlDtcy6t2M$13W3{0OalN74hVp7vedM|p(1MH&KIYO5t*+h{j3+EAW9FuVZE{YJu^JK9ym2Y6RV+RT8AYEM~ zUKoz+W#HnUUOfBx?XzE^qZ68vwD0lEba_6Wrk8_N@@ciN&If_DAFY=TmjH5JcHkAc zJxdYUB=v85q1+#L5?f{bf3z^bM-QT5Jcm{C6z7LXX)5ur28ekQM|(8VJsbGNbp-a9 z&+Wki9AEXAzY>)Z=N*qZj-^K}Vcc4wLkUNi? zb2Z?LaVGzm%&)z~By+BR)E2|tlnNa%t}@&y6$>h}InvoEkTTDue+5X6I1Fah ze~!E)uKk)Vre|xmf7ov3KOP3MIi6!f9LEj$N|m`vL7_01qvRJS@kFCRC^IaaL*sbk z+o3ibSWiQhaPQv2ZgPybQ1dPOn8&jMDb;<}sreX)$HdJ#!)g-M1xFHfXiZIYFYD$K z7g500m+}m3GY%x91p2G!?enc`e-pa7{9>4<|GVRLH=SN<{J9@|I z8ZPh4tv2HRRYdU;MyMakaf3NmoIop@hz$$*1@&ywlL3OPr?Ji%9_I}ePQNuB1oVdB zyo(&(sS%N@Jb^o^x+sXZ6n$tmr9EVv_Tra(KU!IVe=($b1{Az5dA#D5hlpga_?8~- zC}%T5T_$})?sE3%SW_h%Xh`zi3Gs&&^#}z<5Fa7AKs3t`OCirkw-}+ZxB9e-Bp#a^ zmN0hvi>YJ=0eed7?UblLS@diZ^#6L}G<8##3JXx;*D+f9O51YmRnJ#ntApdBm@|6M3 zeNk^}MLnneP@4S!DCb6^^2LYgI3$F*&lie!f7Hoc`D=B;)XNut%0(!wU}5p3Y*=x* z^DS|uE_bAk*yVitHDxYuT}oZ~L8gs`slsbMOK97(P;`Az^bPb`^C~HUqi|%a+ZLw<7ui!Ch$cd zZ*be_s;+w>S5;9b^lU(5LilBX!YrX8?Lj7QBHZlU(f2*g_ zYMCUN@w3It)no|z(g+;X$2LYN{EhcJrV;Z)29v~u-2%v(M{2Ucl70cz&L&x@>PUp2A|rGp0&P zc)YUJIGv36?$=<#8H*xd@Z#CQ~aNEgYx)a}wijI-YKf2d8*ca!-r zWjo4xHSRw0nlp`HP@{Mi12iKZ;kCTE;S>f?`YO1-I-P!hl@8>(vESfs=!QEzO*9ejGpkka-oJhE z>SuW{`gDC;zkc@i?X&;Te{VncdcEuG+_1|)g{9KO=zBn?FGkDUO>td#S0C6Eu;U@eOvBp~(TTHL9AR-daH zZ^aoh)S==)p#-5%OkU%>H@8p?eb!f4we`tSB@qWf2QLr(5c?O0X&_hKMy# zu|+!Lf(+D1vv8y$u!`LrIODiBNdR8*AygKYAiUl?I}|UV$Td_&nZ3P=n#3om1G$p$?}>| zI~=U+#x0kp7ChP514C(bz@(5Q2MknT@R=knPfUrc*TKS_NZ@#rm}=0Jy4P)v9A?Y*aihj|jfv zouN@*d+pVpX#DwJIw!MwC|`bm;8S5&3v^x<_8Qx<@M$S$&Dbwy0`X|t88tIs(PjB5 z8Cky>%9Ks`uMQOb``FtdJjZ2vGyH?vCl2E9{qROfe0}@@Gc{WrY%ClC&KJpgp^37^RXo5*E2mK~VM;5F&}nPWB~Oq;B=S)F zJv6^3mPR3m>IizlkKyQ)JWERk*KlFV-!vMyx#OVd%ODTT4mY%VnjL9q`E;-Tz}{)! zVWgfwf8<)lgQ8R5m>pF-adV3*zn*7^RUQAT7jI-^#pmnUS@9{y>3?w~%nd*Mvejk9 zIpMfKO|Zeg0&Pr-|N8~nz;^nN2(u|u&rQ7a!3djj(|(A}9~(0B=I!hM=lPHCy_lI$ z*zt7y4~TzpI{R1ni-J8DsiWF688nk9o@2J!CD#QzK|2$@$$`|M5XNLs5&uP1vE5+pH03t^sUKs1QqADwN&gE ze*qP$N}c6--5g0m`kKyyMsBibO(J_|#aU9UHz8^KO446Vm$&iuT;|CTtTc~aA$wk< zRG5L7juOp~HvPdrTvn>TzO2c?hu!4HdH6h9>ElcD z@T~wWYs9E2xy#L0kgp5(nf5r)Ez)qFe*>%_J?+1`Bh1Gai}^jydTx8&`*AjfP@w#+ z(p^(B@%vu+!gwnMd}myqcpn97Cd#u~QnJu~Ik2K~DhKVnp#zt&g9h7{5;RbcQLRPJ zgMTg&JTjZiCo`aTW-+qoyNA7_eWwyCQ9RB|srjI%r0mVpL+pk&lv8l=;Yw>=e@0|L ze`bCB=KYJQ3V5Ccqs4Ul@^!U@TUEcV?ROO@S?5>v4DV-f0;WP;p$DfxU0Y+_8n4SD zo-BigExX40W1(!QVc@m&XrDTcwrSjMKr>>Gsv57bbMTS`kwW@%6|fbPd3&fjqmg3; zQ;m<5!JZUc5}!t$I;opkM|lOee=N^h;pPUYshMSU0oa4~$*iJ!X{ptKe&F;`=`pf) zY=`XH{^**mM$K3^MRFAodCUf3G8h)IWFB030>Nbjf2k$06;5YJ zagAO+`;XVZzBg#GT}M#pN6ul0e)P3kLxt&vViJui!dBy9*1};nC}bL3&>V@?0RGB6 z`|f;Q3}CJyM}5^6H{FQ2S2>m(c(^={s`99zZyOUs^HTK{5ObANsRCZDWrt2{MTk}B zrx3DRK`bdg;^CdOM7`-ge>GZ?QL}IX_iJ^kTxT*EULn0rdr9>TwubQisaN(g8N;`k zrBkFYz*Z1(sZvDqL%f@e5^+OntH9JUYLgs0tFgU5OUx{oPA8e5dyxb?k53tSYLv2j z5v2mU$!LNA$X@hZ3^gQmoJ{5i+2~V`(?3Y%gA_{N#a5UACJ#nbf2zI0xE#HxgE6e< zF5K1d3`5|zaCIt&83>1YH@HPo&+?qM=`z+X6cP^LXs*hCUyTA*r~cMa2fI)QRoR4g zIEzPIBwHDSWkZjTR3 ztqrUZn+=>Tm>`!RAFd9pbt8s2wTUI%-WWw?rd>rIH2C&fAchpvv}a>=>Kkf0bGa4DRXzp>XuXlJI_mnad?yY z2bzM!BAr0o_)k=OmzSKj02YZaO;iIiOP33}{S63U%P@PTL6y0T-Gif3tzFbYZo9C^ z6~D>II&~A>w<6UtF$ITbG?oboHi|J=!f4GaSn7YVP$_ZqlFT+n1Pl<~! z7dUSwI9l;SIaCZ!v(_OJz%6wjNQpx3Y?{Ow$IY=ACSt&x>mhOESdtEmg_}l`2Wr(iFEOIwi)j*ET8t!^VcDBgKvrhC% zU><&uf7h&>sNpqKNMa-XK%i;Cx_4bW)-D}ZG!V>U^U=Wv;tFs{PTs9&Ta6mhUjm+i zN;pkvW~X$|iHA^*s#CsR37OjI7Z=M9J)S)`)Se|qPbe<%l<2a(3ZArPBmDJbs5fjZ!T zEq9Q9vX^%}x|N^Z@IL)$+BC;UIysJVr7OosY@4kq0h;O*%bjc-mA4JK5V%_}1@8JQ z`(bm6VNyg{#>oSDA&C zER#h_J56kZ^~He{%z^_$ZhDj3@y}vb`erRLMCl*()Dh_w!b*u#S!uiwrhQY z&f5Xde={`W0Bq>|YX@Bge|z!v{jbkne@43aMp+-sNW7UP^EL5d^9YI66QugBSRR|O zCK3<1-nc;+ckRI}15gWME%p|~Hx!tzsz;jpCEBLN;Kq3pMLBXQ=##i%A?~6qQf?>U z8)#$(_Bip6O1e@E8><%S7WE^$MYw(X`O^4?;aW4lkJe##YgzV-6!AKU^yk@Bf5Jf6 zI$194!IDY^UWfUVaXZW>`IHO`Q_k`!x6yE6Ln>VkrM)S;8MGtywTN>e=u@aP&<8sy z6fwTujv6+r*aas*a12Gm|8?=4xt9HQ*rMMKTk`pSX)TkBNpiVUdqp%Y0Ktj5Zi$DM zdG33ALs_#fZm0v3+T4X#$Qe|ig>?n&BBW+&6DvX11YHAB^7?wpKv%TH3f7*}2o zh+f5z(z(#eUL+RC8OX>D<;o+{q$-1xecO@eadb|_wTBibf?I*i)MOqLqup;Z94r`* zL2Pn3HR}~yNs!fj@cU$e|IH)1+?ms!T&3&iES6MjnD4XPwixO?ie6!!f2;%N6+@EZ zqHyh$+oe&mK(B6kwocH-;`UHpYZ9(*$-QvP8|#TN(i8{e4nwQjdE3wnzh+9Ia4n7% zEgLAd)1yE3iNr5-uv`zGv)9;aFfQz{(wfD!axkqh9B&7>)JmCn5OTQ3%M;#h*pSw! z=QCczyn{SA-piO+XA;kae{$iOEUY#kr%;<+RFP3#$EnbQ)5|2JG#b|PAZClMhuF?i zF3YhTbGIE7!tgDO(tySP@e|tvPudtYO(i@_tbf4m$m_MMcm(D_RvcE#HAySWB)HHF zK0w-2;)m4v1zZ$3w)X3+s zRl-zqmSzBqFcwn%f3*|uw1!uwmy>yS9M2}xD}K&g%EVXZcketQVjjMJN2hx_jTZ=5 zRhF@yPhk8crbx$mm}Z~$Xjl_e_ut|0%8RX@qc(nq2@0&nf*0cLHpuiutz# z!|_C_|LA~i+&p}{>~}DC0mJzTS2nLqV62|=#wd|WJ$`Wx}^r4 z#A0ple|*!}pGo3<_3W4D(K2THH&M{sKDE=*a}e2MptI>k2q-Yo4A#FYQa`Fm z;d+zN-$qb7T>f-}@3hVnQoi|lfd18HEyp0EE*;RI+$IZ->eT#iR=h=xBq$3n@XE(o;UH#<1U~D@>UK2g@jOsRD>BoOxeL9B zcW~5;Uc>Uqzo_d27IGByMvT9xX+(MGk9fpox`y-@8#yRLXg4yg=%zVE5D0`9b*pso zPR?(se`93C>!LpH9ro_u-cf*b2@3~^iVO}J=WLXPRj_M!Ls?sgNpiop6Gjfy4hOU} z46&yF##GE5TJ{7WKo&>#7OzCxdB;=r49K3oyM#dLJsllF&*|QC^O6mMpYs@9NA-he zg1}kejW%;|&1B0}$u_S~9XFigs^sm^k?wx*fA-xzI~hoZ<+9n^>I!X}R!l!Ut#;J<_KH|iLW|EqA#@h@yp|x|f&r+& zf42m@E)aFcG3wsI>$gJX++;bN;F8*74^rPu9k=fzEi6Ou4?*WQ5~(=kU&h?%~7ko%?-WfyaZBWJM=_ z8S@dQfiI6DE6vbpLtA%IU@a={>hn8=CwWoL|zY~zWbP%-_$ zR=tF{wOr9Ud=Duy>Dj9og@a=gHli^c#2VK#uHlF~F%pkz9KCw>{>9&(N58#z_0#L$ z-bE~a$Fm(kHlNT~^v=cQcE?V7f0?kHpRwv}+7&Tynx^Lv*Uq6=NAU>>V(S&r!XnLx zYqQpP2~Cq|DqF;ta9r!1YVV-@YUWFPZxv_f=g@%<-n{rJI=XZB9$hm?X~3e=ZIM6l zWB&jHeQ>YK)?NEJkuM(#fNo93@S)j5@t`lXN;K3R5jCe*HgX}mgw!A@f14`2%=P5y zhETt}8L>Qp-NxlddqE-xn;7Vtg$d7G;TiSR|Ni64 z?{6`dCYBn)d^%i9(Bw`lU97sC(E(=(C@ERuD8legx1z)lu+Y$Vf6E8#31$I^$d?ZX%VyFW_v0!i<$DS{IFMbXF0<(Ka5ln1 zxtG&fJcCQf|F~?OWQ| zDt2W!<7cb3m?vQ@f`s77RUXvoh7q-kEd|68XNv^^c=JR{%|>}BuiU3am8zCiI|^}m zz=eqmJ~4Mvb|^~p6GrMnw#tZ{ACJAaX7Q)s3-W#GS)Oj_;e53CxGT6IA<-J#WV214 z)ULS|%1i1B0LME1EhfnN5mY{Ie-3p5&yoY|`i z6ZG1q`z#gXKJ#$XwnV$Ta$S#3I-9udKq6uCbW`AdHP`WOS&(OWw!)`U^0BlyLfY5T zShz;K0$s5C5FE^Oa(D=OA(v=YE~aKia)8(?V>u3_;|OAqe`&>0elan6{>2zlG_@%` zr%U&r0_w>zfwsQsZSElp)(>&oQJOU9JhlMd$2MZpxY#T99qXpFbeqJ z^bU{BwZEs!z&tXorxkM?_+mO4P9Q6TK&7~Z#2dn!f?}cI342=>D-g+&m&ce1R%s5V2^Ad{-CRNh3_n(+S}GJ`7zkd! ztg;G%vy>DOqt%QeSY${_Bzb(#NQQd?Sa9V4>ry{mrg)}eHjb@Xsp<&MC!XYmfsG?Dywf9$%>d=Mv@V25UqBn16Q6Kr4_ zQ`036j3rWtj#v&h!U)ZYsSs_&B^x12Juo81vb!vo7z?N|xr#{$_Cg$QQ>)`U^#4>$ zfQBgA1vA)zcOuQBvi`-Z!P~F4)1n5PdDgXn70$#rf)q*k@|d&j)Ue&-fV-k?-XzZB zAwY*3f07x|Yw0q}F>Y)@gXOYv2;Q3&cq46Xz+s9C(R(e{M!h7kVBle)ehSZsnG*kS z3^&0S3(p*TJt_g!_UPJ04XAzSdHwC!U+uQ}I_OgR?b+K`usD<-w_TA^H8V9bm5h)@ z_4=pRfQ@swjl*FMn7!=#k+L(}coi%RzG%-}e+!NGv$jqR^m;uQXd2&V+{`Zhqqx(E zAQWGon5cPK3lG`1gYk#9>B2q-TP{3P-|`mM_1hxz6Af96)}kUV&t^e>?Zo=!LHo!i}vL7x6M`9TpjC@t-B1TIriy zA#x1>1s=?KP@bk(=%_7o4O-uGmR<2u$oO6wre3BVLV^q#f2QMH{ygS_Lb(!%f3cVH zFsoj*yJdfOV2fd;jhA|?;wW#;o?^3|@HB(yV4pIO#4{39Apxs9hE1bvgp1WAes+~j zV0Y)MMn>@-V%a3qngpga0_5A@Ckurig~p|iBbS zP2|bUn~!3W$>G98#zyA6K3?V|BKQEh_v ziB+-p!znu>#}Suta5gO;H|CpsS|L77+R3g+RiU#-tS1xw4klDloi#PeMw_-e{Iy|I zJcYl!e)rzg4#+h#Vd1&D2Z0-6^%xKnK&ch z*Fz}u$z)2LD#>=t(mUhs;X>*?{GA4w#8L0$_d7Ijx-5IA^wkRgq5uEscN(&cSAr-J zLc_u$(VQ`L;Bs9_^$F~|-CmTZoC>;z7#@cS57{Jg8)a-gM@%r=ri5usn8dI4xP~TL z=e$~{>EL{Lf1b1?e@qR>#IW#e^eLL13#2x4?Q=GK3e7_r08RJK5Zx|5DAQv%lAvfV zJ`nB`{@5oi_QTqZvrbmylBEN(%5tNtorkqujGZ7Wp@XVGirrf|k3vf2*puKqz`pBJ z6SN)aWny5faD&cSLZ?=axj0=uwFa%W$6V{m?1}qE>7=*EfA+WFVQxDsV0|tXN}1?y zYNRt-SjP`;yX^$KiG;q-=aySEBEJ~YRE5YZ4h}@hjRuIdz=PK%K{(%?ws{(Hq}^R0 zTeaV0hcvv3$#t-H{ig`_k-6-^}(1lE!d&mBlmo!8P zfrWPl=EC&4e*kpykN-?To025R!#@rZJ)Oh&gxwncdj{VO6boTztjJCDTDE zWGQ5&>gPOM7F)F$H`rn(A?FBvnHzPT*RcVMOG@aZ)~MWZSjQ3Lc*f3omNtaWJ9gi=(+>G=0wK|Rm* z`_Ts>l>o7Qz8zg3!xUHc1DDRb9zP~HnRx*~+AK`iRQW1(l?JUOp5#u-sABR`3-#_nrelOoHWn(P(to5Rw{1EKDGVk2eKv}i(zW>XMcVa5) z<9}?haVO38zuzN0toY@g|Clv%l^?c0?E%q@^*qwf>9X7_t9RyEeza!ry^7rQD0-7F z*08WeCOl>@s;Iy<8&C z1FU9|!z&cEoKo>i_F_lfot6mH_CYMhJayu#m&uqqIOE{QVZ4Z0Oy=07lSFYtqP*li zf9KL=y#iZnP#x3@C(SLEFy|AmQ8$H8$e9z~oaZ05 z3Sq`kb(FDzlX0Sr#k`G}w7kJQ#5n56$fk(-3da-g_q-4anmLA79U#I{#cf?6A6=xa zFV~k?4GE;Bn=U7DXJGc0(~R=qUBQbfe*@uA1%w_=(sjlOcmwDf9Md^XhaBRvLyt&p zwnRfR%~`ROC&jUsE@f*?Fv-gnBOh`H;EHLTks1a=A#0Li*z?|I&L~H~-i<%(v`85_ zOGif>q6HHf6m_t0sDYq)98R3{1b2Vt)=09KaVklMvva)D)kB_}8N_FU-&pCfe+gfS zI+@SaBO_hIDIsIJL;c6otKYrY3h0->FPg!h%GN*whvZL9%yn}(P(-0*lVZ#WklCe5 z4{_wghV-x)==W~)U&(C!gXia@O(_;>w>8Ce89tb}5XY)+oUN|jwsj$4>sr{Fyd4oZ z#81Wld6GCq0u8YUkdnqT7qk$pe+65Ni*Z)vH8MY2@sOWcKxGvGCo$3FUld@2= zOpbBDFB;ntd;A_djiVw69dH2V8TqgkNbRk5fhVi4Wchd^?hpE@@>OICjJhN# zPUe~sWez*e7o<{?$jXr=y?y^+`4EVuB|PTL-rXWCl($hfWCI;ny>=Mb?P@wM((o`% z&z(K3Am4J|^4|7i*7rh#W~sf4Xtqm^^HJTkjdvZ7fhBi?jI4oRf9f{(9gp+q#rt=K z3{bUUF@th{mDZeFQlu{;!9Up?b}ex)C}80F5WyWOO)RYQyvPnzn69W*Bh}0_vOUi# z;IoyR`!$YI=z<*@kV6Lf)kyK{|=? z$r~@91|@W?5-^;KCaxm>T>bykcxWONCYpFYo}~;W6(0~ zOhYc4d>PC;xo0kHwX^D_XO`RZG7!KZ6{qQd{}-Sm@UrEX#V&WTa#p2yhVW~>a!#*qYj(O=Z7?}qm{>Z;17U|4_NBZ^L&O%tDqSSq zJ*m3MT-&%Ig3vk)I208Ths+|XGss{-dDemGNoz>AagGGR<`g%l1v-{_mF{{QBVn?I zq%@@9HjQkN9KKt)85Wc+rgR{~rFo3<*Z9Ake-;Oz3CT*G8yG02)7BwdJ<+i2f`I%|uY9a?I#cbZZu0-QpambRxoqxE8!LsYJdq?lKkj zf7lbkxI39Z4k#oUaU*HL$!XKr5+yLUXR=zI4}{~R?D3Q5h1R_ANQ3mw`9)k*GqXSF zW?Ga3o95kB@^%9hJF@-?lO9kY97rrFzh_)R09>%~ulP@1=P3_M^WZaT+mdz)I;&^; z#5yKgIF)C}+EgHJT-*kX&!oyB8>Q!xe`!?EHha;Z%t?VM+~UoQr?EPb2H#=yPnBTR zGvzouRAo4$=C~6tNE@4RnTjj@4_zUojb*v?9<9b|UJtDygZh>YTMlv=<56hftP+Ij? z9mH^e;=|nr-YIPNla@qNs&t!2;DzI6qmH3g&1;?812mbtfxDifD`#te;~4ALg~o~~ z4K!)s+Gz|TTd_lpV}MI^q_-c-f94F7Jb-$|e|Z!owQQiKqO!%*1q#Fu1=wXMwCvAu zxGBFSPqS(K7=TX4IWP6`nZFv=vtMztVYSIXrOCWWmtAgzjot_nY!gTL;#=pUBJsLg zhWc))%L-w>8Oq0|lHDDzR*GgZ@-ld{87RRE7OD&G$I1xgn!565w7Z|YhQrW+tM%Y*gahE4F&*Uc!V)V4QE zdvyCzc)vCROkcZP2*A?YfHHg)4N6dMG@#;$|4Dzb`0ycKuTt3Hhv~VC07<_qa;Tor_+B3JK*_8D;LvaOJs!%=OD(sO@}XVe6U^+AivQXt;=G{ryfh?t&Rx znYk86yMe)mJ}1N@&Tlxo@Gs?Wi`BFJzZ{c_e;cz_p>nUqf4DPGphjjuCiNsWtzJS> zDCbtLGYRS-7HXn;U}2QY!O<5@;9Bn_UR8vYzZmO#T3gy$aRuUAasncYu+Ju9^y{ZP zPZ;{gsI|ml3=)63w8kErriczXWZm<2FOBq5G0%Je@I?ejK!P0=0irw9V)iM^S`+<07KO=|S5WJ09$sbJQ zOIlYvDCouGc>QTQA;O6-g*-`2${ImAKC3N8o z5Ej2jO3vwRW71z3xKI0n%qM?7`Ygr-*tg``!e5_9$%5KFwB>AyA!-=kdZiB1(vRAi z)k0>}@Wes6P8Nv8-=+WeA^EhR?%LAdt?1tM@o{chykPTQMc4hlS>Ql1(e`KQ^IDEj z`JJdufB*AwZd;#>k$|rCB?FHh??%D7!W6wsr#Ztcn8xkuR`WzVR%cfLUO=J0@=e*x zo7iKX!J=$_JWH6CfkD`f-EI&$J?!O8ID>%Ls|D1AB{DFZk#V{6nsJ8ri@RqVPd;xh z0_n^mdiVa>+xIVC{j4=6QE4|4|8;g|^O@(9|60Rc$bTq2tcm~}ZpEnurff)*FzyvH zn*k)42YoPG;Qoui6V8s>CuL-%C-Y^`NqQwu6e#R}Jp1+i>;K_Sxywugm=rau&yK>lHX@J0s7m!Ag>n}0^XfP!}=SQK`i+qodP%YhiS{l;`;M|jF{ zCsG@LT2MdSh5Ax#-dJkHRETqWJcHEWSBY0%)!>#XKH$os*b1tv6pFuC5X5&+ud1WCx7W_ zwwNaSz382kdD`4M0*kEtmk-r}gEp~XB#)6C1%$i$R*^c^mE1_yM4!;u#$yTAM7>4E z-X>{F>oGkBMjqE#Ms3LbupnSQY$xQ@VT}QBVNPZ*R~!{C$J6;T;-tYs%^HpH&!eH!`NWWZ=`TE zIOTG}-93{t&Yt7u=iA{t9o>2z)#Xw8;XE8(~rze~mStJiY+V|2~D8a)V^Eh(nv0DPd1RsejQdA45G6IMet zBDg%x*n*o{Fx!0_9bIpj?oC?U*2%Gnpem&&wrEMX_~;8|k(Oyrrlq*B>&$>h2okG% zd&gWiGF^_OEM+ajsA3kv8h@VFjJ;UD7aYk-}B-$*!Z5e^YK_ znw-*tah{&ykC@1lZ%O620)ELp*MCGPbSC9;XyiLBi`e28@#SI^$m|oh6!NOH%Yk&6 z*9xQGgciKoU<&Le@$ZgEXrH#bbR0r{-}Ne5Y;t3b629ek{eR*aygOBSlleF_VR9VZ zQft*MYp!yOqqugYfUSqETh<&@Vw0N4Xa@R(xP`nb3Def#<;pBPf|~papLOJMKp~w3 zmUXk>B^i1{Uf>N>_%Bk~i+u*EC#WD^2L_-t=ssWUun{n=^S+EfxRhlQE{`op50+;Y z>=SC(GMIxlJb%G*ue_Jw{eRPrd_ctA!V>$nfSo)(XNM3?`0BN|1b=-Kz5DU)i#PB4 z$nXR!&&Qz<9sH#olgHR|e$KU1=DA&)zt!<;{W!UV*pS5>lay{wt)njZ5>k%Y5$4Xo z5eX-9#`CMo_-el`OU1QvevDV$Y;{G1ppb!amL;>3>3>xp7gBr~b!fWX@iIyF-NXw} z&`7H5GP)mdsWGaZ7BzF5(f#SdnIkU)MQ8G8dk!5DgdWqASO=(PRd`Nh7g!U>JPDCe1y6^^;eXfFai5C6@6Fabwf1;#8}^ z4m^AN<9}aX{Ox&{x3>HC`Aexin~ukHbTvvcVrI*?i%u4&NE}Q(4U!=(Xfivcaij0t zlqKz$>a;90&J%7)>$~69Gr+A$+yY+=n%Af+N!)8>i5+)k4HkaZvl9u9;tC&EOay%Xk&scUJ!57t zki{AZv3w@FHW>|!#)i{PLI?9h41bbWR}UmrI4`&LEeQp1P=*RQO30GsoJky0+4DuR zoPY5>&{d6EQBoFH!kCD)xRnWbj@*qK0yjLHrK9NEOFNM3e9)tWcASQ&6UyZlAEkM5B<|A@pJz;_(pf5?1#GUV!=$$z33 zJ!gw@9a<`bsX!n_=ZgozScPevmt zRPp9{^!EMW#gDIF9nk;&{Py*)Z}?x4T|;V5E+Pl^O8GGG+UZ)mBpECLWlyqMCN)e2 zD_-4VSW@Pv&tATy%Zr9^aJo!MJ%#)*LE?mMPU@2IRl~EJ&?Jv~y;o28M}L2W6B^p9 zXTLoEDHm9HdVJox(VE!)awsvyiYUyohrc~sP;RI7=GRw$efO8=FJDF-hGwue;cN-{ z$G4-mKjw`_xx4|rnWcegJU?C2$N{I5E>?*HKOosGBwQfjd=&BYpU~`**&yp~x@`4tg^*n?p4~qYU6c(y}@?vs4$D5HIbX?2}Q5a$M*Jl%`IjQ(}jWmrr$dVx7l|sDI9krtMKgA ze`sqUq9+QX!^RB8XSj?PlPE_0JnFogjcMHDq|lbS9tvCF$a zA6a$JNG|JYX{GaoL4PN_!Db|{qErGFk2}4Rcq~b+WW0i2#39nOdIk#5NW6%$Wxuo3 zDBEd?5sr~fs8@Te4T2J#2vg8lYsApHr}Hkc5#umNRCdJ5-TR%^vo~*EzWDLkpI$zH zQUF`w0yhkHie#&)R`$iqnJI!fVl{3EOmyNR$rGI?eMz@d&VMqLy_2;2lb%{3J|4&_ z{*=zs8ExcgN-G=5h2k8aUi41hw{?-zVV`;;vVQjS^H=ZR^=2d;w}`9Vx&MH-6}1Im z6Cni#yT`c&@$@vM0iDe_pPkMZq~}$3FilU>14c@q)i?Sq>TW{IoK8*-Mz}IaR9MOz z)X3>XtIZp$Cx47p*jC=$`6!+eZ|z6sobI&P=L88^5V5(+wQ1kcVHm0*@GPYLjQAR{ zi=7rLq;n#WC+_#e@|R%Ll43_oada>n-6yj8C7GpM=6wO6Yp9|N!L#q}Fs{l1@EXYl z>4>goLBz<6T13v$z+@%vZ@l7>?jx|%aDTY3^PLapbnUm#ECzPURbs3! z_BTC(6~F$~k){tn-MjNBzB7LOi2i(dbob%CdykLk&y)MZ!|};*On)YiPwtOS;`{XH z-N*MI4DZ}Op+E0G9v>YYjq&W`J9o#A?!@=#&-mnMct084ciJC4I(!(%+&;1EyZ28H z@y?xlcYlu_-9Jgt(*48X!_n|A25{#jxj%Y{mL46Bl9Qt`9(a5*8Xi7~AJU)0qsJ%X zqlfpL_LF;$PaZrTqS0i0lH7av=mGtCIHpHO!w1~e;V?cL4)NzGd3xG3&`LZS#ZLQ=AKgvvAKkx$*?&E{do+CTV1)HKJiL47;SjSr8Q*{W za6IJUJxC4@PsW(a=zje0@zFhed-z}&Ke&4zBRsly=kcA#4<0)0-+6fQ@GyRa<-L;} zo!mLPi$?E_Xq=-l#&rMgU0RGIH2UEFVf^s!{d+vp2k~Kif~|OTG`ur>e216n&ci!* zhJTOT^^fnIjFU(45s&{Ue(>NP-WlGxck+lj#-9%#4DTPsJm@28=F!n({Q2PVJgHC3mT?~Y}I9v(e>G`^$y*mc=Xpr^Ut z*MrEA`k(RN>*5Ljt5t1ICaWn459&R>Bo5p$CRT$ShZc_aqg&A=TccWla(f^1Z+>5@Y|LpUhfmRENE+0P~9!70y{W$t?qHbQfBYs1IAZCz9 z@}Ge+h{7Hx4<0;xB406IIC=0eP9ELYuW%~v64j6IKD?t}VRPgA_r~M$oT)sqP4UyZ6AVSNYwr9j{6>HbYtJM_&@WB#eZ0g6Crc{dnkXO z$lsx5xs$*B4iwy`1~+y}q;zWOYix-wd7_kPn;fCV_tjKy8YFTaS{gsGgdacA(_kBX z&%5^iPQ!C_cIfOnPcJUMX>XqVLGI(EvJ1VI^5^d`B~>(h*LmAU@s$ncp6fhUJr#-IKKPx z^Uey%;ZW-~t9;9oTnZ8~ilH~#W8Xxbi#EVnbA?4m7P0u+rGGKdaweZV%QOC6x4f|Z z4iXYkkaK9WAIx-ZvD!uS`Qyjv<462w7yr9^O-q2CYrW^H!1EQ-zr^Plk2KDd9ZrZJ znzPYy50-_ayZ0kUi#LV|fGbVL@W+Zp^*~|Z&SJzRrncggV#9EBO5)T3pr7CU?Pm)` zI*Un@hqdFEiGP%v({66t(gGR1KZ_9;MbrUG24YP*XFFpynJq|%znUb|5toaBuM;KE z5zIA~Z#!aQh9?~fJNp6Wpj~9wYQfw7nZI$VnYWV|q5Yxfyu=oI`xrZHO7)t&T9D%T z%7!5tZX4%>Q%a(k+vU+O4a-ok`3<%_pMXn5eBGdLCx6O_E)c17@&T2!+5N!ADC zqwCeU`-okm$I-|6abc+XzDA!cCo_+71;6AYF}G_;ibxzWQ?h6AevSd6@2Wh&KORcF zN{h(86zSuJz69R+_<>&XVNdwR{4d*)m?*#3vH3%z$4Dv&^lF)0Xxge}$S|x}N^Nx! zdt98p7JuRUtVcqF6P*KiUC}>mRvY_wdgsVz2O+Xz_0X(YyfXHeD6>nrEDGU4d^pYv zwW*jslCo+?o%k||m5wJ^@6YWCv^#p*$j6f^5VGOfvPd(SL3>gT^5*5n^E|hYm6;gQ zVeltaQgj6x_ABmgzxObznzN2a!5_l_KDBYv{(q1$g7W({abC>X+Ua?K2+e4D-qL<9 z6^4ey`!!n?j$SK34zgJE=+i)j4Y%LA1HhDQPXJmg9zcJ(fl?e?k&3VOi`bNGu&d&W zFkD20&+swxv0PYje?bJs(Qc)1tBqgVa1YtNv@f8HdtpR{m9UVTg^j5a?k-OplolsJpgp!dm8CrGOQV}=SC+A( zokbOoY3iY6#Eh6Tr}g=W zM3HNVo}UjP$z~~CGVIP{utWYr{d%YCNyffd0aIl6ABMTpVn!eIN4;LHy3iZvnfAx#+7Ae_tkmbA5_x-l;LbKyAuIb1tkj9l!tdHN2P4w)|3(_@g zn1Xe7v+rA-@_EDq;x|WE`$b@)W(%iEKrv`dUNHl@78uOBXRk}A-&?cL1hD|{`3q8= z9w<3UoeBuwef9U-kPc~=s}ty#w15AAEBx-&(*ue2`Sj?);K4l;`7oDISzF+myW{AK z>_!Wi7xXDdK;o@_|0EF&P(|zYVuWUzESHqdrO~apK8IR5U4 zPI8QF07f?tz(7&9c-prS$Tm=CRfweFTqcdkAg-#B5Yb7(p|lLm1jO7->mzs1El z<-~Pi$D79Y(t)5_Su@#4B!<_|cy5 z5QMhWMTjYrL2d<$9F~R2q2^@0aRLUb=$QF=0)A(_TusJ64C}aD%@0=V-g*)(NnlU< zqn~nC(aoi2b{5}n7skle>Xww1eb6{~Hx__>?T^df8{u*$Mwc@uS2|yGX@joQThW;2LB`4?h z-h~>*mO81=c*P|mjhEd@iXGE>;Xqhg$ zG}8ZCCtW=?5)=$ZBv7Yds+`yCF)9gGm6WWxBp$TDFgUM*sF)L%HB)G5O83!`pcBK` z2*}1Dewt{#p&wuW`Onfwb~QUmrw5}176rBsBWGonw)tg^?P4%hSf=vNjW-zra#wvclePcJ!?a-yZd8QunA zx<($7Du*)Z&Wr>#uDk5SflFI1d)R+s+5Cus^AQ*iRzD#Q5%cnZ`Qd~sza0@%#NxWE z)s>6oOn;nAQe1G^i=IVqpFexasV*jbIF&qc+FR7|o5$lZ2V_fQ9j!=rD!ACmQmO|a zHE_r!ea90BxI!klad?5PM62g9Q{*O(5(9KrdZ>IDlrbF#e$w-G9Nl^PZ%0LSt&Qe{ zO&$kMsu{7puLM`R&(=J8XE$)?=RD{d61tRs(|`PjsKZR>uGFvaQw`*&qkH=%3jfV> z$VP_cLK5F;Id?WL1({ke`ZH&IX7%ChrwMHoyK-p)Bpd9s?5$pw5+uz~5*qLq?%;hs zpdww2H0U?sQfjn5J1vuF=%iF^ElZ$0Ih>L^0$_D?n>&t<4)5Nj+npAM3mO*GH%@Po zvwsRwu9HT1OTIjGZ=~6G^F?HApfO}j&ifL@oJM|pYfWKK2Nj0>rCP3o-^zq zl!9N4Chtny3}OhGj+YL&-g$E60dWSJIu11DHOCyRX>;@k!(~*p>RyFyS{aoQ+kcA1 z$DLImy_UYM@*1j{AAEHYeSZJjvo|jWzrA>M_fB;5=;+RMZqvr61>gk35>&1-sp?&u z3&pr(>lsTb+WMFdBZ?B|O(}&yYRpLu#8IGS;SzE|6uz{#MSjuSGT}MN9Q$%`25VOy z!RVZb!(+Fzyo=%)-6U%lMqMpu<9|WntAqUP1?`@>%o8|zhV~@Ws-2%4pQy~#+wz>y z(9%w@urG4)+i^r~JJ7p6{S^qQVnDjYf6R!8Lu?w7-IKG?vKV`hE8!64F3Ws9{$v6j z4sD==eXcUxp~V~?lHN}*-adcz{_TI@GB|o5TELU&=eKW4Ki*Tjh*6XL27m8$@u~uB zC}M>v3>imv^jF9vc7Y}%2oskiOpc`Vu-_u-MyF>hM;VixEF|%EX*``nEh@%YYRKvm zTo78ZtN_AlLjBcukKjp~>MdHRLMUtaO5Xjq_GfziIvTF?|G(n@Kga*yjV`0JXgG|P z*#%%efDC)W&?^}FWX{I0*?%cDQ5qHcnAltn+PyNKpt9F0;@AxiYDI%W@H2FZAyFL- ztgRz!^U&JP*xE9R;}B6R4Tq1Jj=t@1yF$!_UBk94Kt5CX=eOQKB%UI0IyMdlC#=lU zctmZpa?0sbBe#B@Wi(C_uDwfJonb~kn2*Y=&h~1=+8YL8 zMj(NGWA8m!CY*Wc4sxfp3DCd{QOq)CNHG_9vEVU^dC0a8*J+<8h6a-QQSkuw?JQ4! zj-2dgTB`c==iE~I8Gq0o7V||1&e5TLXr<0?6Tcv$=25fb-+&$EDXff_Fw?*QO|;eo zZJxQPQaE~N%rQ`63y)Ic=^A*UJZSC1W};WPxBSfM&$6N%v1>~nYH3D1%#xxkvLe_J z!LSk8MZa-s`MPS9^$!(+oZSW;1wkp8N9aFvK)oKcwQHa3Dt|mpUSlPn6R&{=HhaR6 z_ka}7^IEF*NV!ewS*dE#n_2KI6$CY|bjGXVPtvw2i`eq*JiOMb{u{J}Dm;k&eq=(j zIc$ZSvmg|Ie(~}-@r@jL!hxe$sM+Q1j}D3i9l7#+S`1GS<>(Y9^xUu(?km<3sph1b z<%h9za;~<|j(_v*GEuw<(>G%dV4Nd=5c|F88QV&LSLWDbIX*lG2jJ6|InE&Q8kbNo zeEf@^XCDxm)5N{9oAds^QM7Y_n;Tl|LW=xs^ zfCwgMl;7m>*tjZp#c_FSmn(<|5CxrfNdfD!DQXB?Lw`XxmwpVAb_A!o}DLR4d$ok3eutxPb1@5VHts;Ke~zvH#-4PN8X%HSe)Oi zC!L~xvay*Pzk*0r5_VQLNHmOq$pb!)Z2(4kZh!woFqLgvXe@uKsHN8TT?lSG)}SX8 zCf6u8%(`Ta`=)K4t1LubO+FzqYP;P%$z7qCYCXbr&W=5~(53DCZqQMcDz)o~8F;7d z2w4YMrDQZ{Tj?z~8q~uS8tKwJ9>x&Vr>?!-tl3Qe)^P)YN>2=OcXNZ70B^zVxEvm% ze}D4z>1dZ#DFyi;d1Jq1h;ojb56N3g;}p#MlfP)HBnXv^#_li{bU&}8;-SL(fK?=@E-nY& z!;aDCb7ZSkGT*PbUbh;;udkl{jmY^+`p<>rY;&TmeHck1p4ZAaM&yUxmZrR_?SD#h zUptzoceHOc9Z&8Q6@}6ECz<1tD>ZIY4oaqz^%x?IiTdb8&u0@Z_hBIXO>iT^+$$Ql zP?ToHd(mqRkYy<%9$iebbb0ket&;u7M-vM+t26&TItu=bW%xe&xci}vZOFIr_~UNy zdDRx2S8{cv;uR}YJ1?2fMcacJxbG09_Oz;1S^g_eB~RWC zENSk`%p3K_f8Aspyj(XMOuo|9Ba-GTh85~X^nQm%9ogZdR~Vx3cFq-q>*c{G_o-ZFl;LV=qqG=IB0!%@+~>TJSsw9}G;0}4TI4Ahf3-yg#X>;zn!oR^!c z2WyPedzcgCg>-Dk%6couU!wL3{T(fcKd_3JYs+X56D&3g%|A=2!Qo^%T+cGjf#c|B zDW{Biz}iNV)B)+M>4m1#2#fr2P5`VhezSF_v0cw6)X}?@YFy@vP@p2eUO`EV+6{Z>RN6U??R1 zU+ODhDDYP}y-R=)YxN84U^+I7g0w+dC8^7R=qKE~(-}K6k|m5%)B*Q8X2cBZ5?Lm) z6Vd<;=GQFGmzLQBsDA+_BTl|z+~kbT`pT5Q(aV)*#?AvxkkRFV(G`KDyfkN%Q&f1c zi7(hoOr{sTjFIs;F==6m?1X^8iq}G$;8KyO*|2ipJae*v>0`dPl1f9y8^oSv)SSn# zs2L$-;U~Qv%|~JPU^d|0Q&CMI2wZ$L~R2>Ltz%T;$u{)-&@8YlmFXQxH{Xqu)ADOF`TgEfIO8z4phw(}J6$noTq zqj)=vi9&i2l(Z<1LhkCSvDlc6K1C8ROJ|XYS}#`SJ*inkYZF80JmVADUX^7=*jfIni3Q9ZdWJQzEe?ltmaJmtqMVhM<&HJVYot#H9}ywc%v9LnaOE2;gf?h z9MGpNxDYi-<9RLW&QkWP1<~8UDpOtSrMq=|C@#ezgSW^M9;8QLl!6$GRBmm|K z1t}23GdG`Z-`5;qV#rq84a`O^t_Jiz$DovQ#g~HsF4uuwF^;@qo~qe*`FTLH4((0ZDo72e%V$-Y>58je4IPf!U)p;g+G4o^ z>wh_@Y?S%Jfcb*c=s{Zt6b#!n`jI_N=IMGzK*^)T; zD>V>VkJ(t|JvoOoRT%XqrqraEm}1K#To=*BB)J6Xov}E^o$??~60VAwHw_-}>b2kW z1eh3S>7`a9k`Mw~zlBMUrOjQ>p_FjmQGc$fV1lNKBd2GIU`mJXKsAXU@6dpGGKnKG8t~1e&fZN{lSQL+FxvKN38xDoS=Fmqp`iZ5b z?o%5K<)Ae?X^Tvt@V7yS4!WFfiQ(m`_M_#>E>9*LiMc0{k1dj=S9fOf_@(-^s1&F= zEfxDR=U$igJNDjUsh96AoCwW(?`oR7mUTd$SR$&jcVQ{mZ6QYe+T zlM8Jmt zl$9ecNs93)RNPfAD&;+JAyr>Hk^PaaAAG!3AWzVxy(Fczhaq(Ta@~eRxXIt8|od?8Tg|`Yh?vzkj88;twiv z=kzXx-!6d|H(if#kVmjv2wNk8CF-zf>JuU-YI9RoQd0H;V~0kan;r`JFv{F2?q%wS zvC4|=6^yx-G~Km>Ghtxr<_t8fGh@6N6Rb0z)V*ScTveNum@nk|BNK6Pq19qI(ghGU zBD`>w;APBdZIi4-);T9KT7LrMxhqW*;YyS%q=`(}UkXPieMO6syH9eR;{CI?KR&omDp9p`6KT{SOyZyuDY7Z*WLzlETwHe% z#EW!_6Im9^T^h+rQwvo8&U=$H1822L?K``k&qIu0Wo=nlq}rk&|9=qQUK`sS50=%( z%w?|3Y!&9fsn8caBRNIAW%eYd3XH_Bb6>_}tE=vY26JEZ(`Z6npU^;Q`aNeaSa|D8 z>D1gzX6i_uAXy0I9WcBZ2@n$tTBSnK57BSd1bLFIR*6(VK+G|5J5eemtVpd7R(Do1 z5ca-eGi9uXL(@r@u7AqmWIP#)2XT0o!p51-UHm3$4*qIpz=oDr^yk!;-I_l89(`Ml+8#w>)NW43c|%L zbar>ehKt1I;gkgL(SE5>o1|n0kkc~j?evw9kFXi*^W+GP0e|;yz~xG93vQ<0-aNN% zRbh?>HA6Xg!5+*IOR-IXJ+kIC??i9tpg8x99Ti`It9X~L9IGZ>CPq^tVeTYGtUlZj zY^`6;zqxwD(GvjBG6mjGp<|=38aFeo~zW8May z%|=D$TbVQR&Yk@zSq-b(@rsGsIrQCllXwa*_?7sIx@sL4`nCNGbfb1FJE~e+^JehH zP3g7x7|pHV774@)7T+lHV0Y4`v(_%LnazN?rHG%PE`QaxqGUcGcLN;cKf|Q$ZyGG< z%p{Pvy{%+xt&fFn4v#koyZJCe6yHSTWg*LxdPNSYG0v41S=G{n)gLo@3{MJqdQ#gycLVwtAR7yaWEc;uSR$kXY%~yeiWX#3t*yFPZsY`w72;I_ z&V>@hq8gW~V$CPuy41T6rpc_Kqd~etcb@XPwCxPr<&hScY1J*gsjqGND9_q!IW$%8 zwtsy0*B5Wzym<9<p6@18mT%i1#gP~l>-WsEka zHHQh9!_GY~Se^wSQHIQj1>v-7V}IR72699UUFCL}8F%75!&_ePN`7-xy^Dch6gyL1 zr>vB3wS3jt-C=Te_4}~N6dw+)QRys?b9MQcu*0$$_DKs>?4@dxARsuQU*+K11JZzeL5c2Pf#}t?j}71vQORe2~Y zOT2g|UE0VS+nAuU!1dFanZxyZG80j`1*LKO!46{ z2f2kCz^I}`96LTZMEg?A z%E|`A<|HpOuIkl*<)|!F7fMB-;q|J({Oca<_eqB2IF604Fqm&TEf1oF>_QQSV|5vb zb*&p2sCnZAACg>?NroMuX+%#sAa2H!#`R_V(7_WdM8QFq6^RSQ>wmMj+9uD|wp5;u zL@1k#^a01*9F`{y!!z+T4*GS}VryXOaYQYfG4kh>9oT1j93?BHWOLxzJiwkV*l7@J zgER}ZL2KCe4^eqU6U5U6G@W_IJ}daHSE(rgnEL`F3vQ4%4=d?>YV16D zoE;RXOnhT(kT6~>8GmaQbwj6ArobV-T+RY>6#I_ZY`D9i4r1nIORu#Qb67?0=iM{Q zxW@(|xE>GSn8T8mqvTpLceXY6A(^msLtJ84?nT9tNStY$)fI+;S9D2UgfAWr`J=HG8CSjBC=#c$L4gnw+n;z4G72?m=g*6rgi z-Y1#ZY=-e7KAB8`AN#jwFMoY5)*Mcnz;qW{3k1Qr@S`Leofgl_Z3-BE21d@j8S)1H z*6aL`1@jnQM_MTfWp|w`fsGM>diZrYau*=`XAXTb66!ezxQ%%E5hg!7=gOAl*2an* z&QQwF-@JVGBY!L$?%i)QG}rU4l*g1@IaqoEyTpWRLA$klY0Sy!MlAW;8K{z34U_;ch)z8h4umBp1>4_;{0OKJ& z*~J1W{_sTTHqc}aSI(Hpy|UQIQV`-f0)ATlKIo)1Z+|+BP#VcYuH8@Blgv+p+?cY& z+V2QQ{;yTHxwQlpMnP{ibn8_NO3y>(u*~n<4lL*h+-6{MI4j4cKW{rMd98_{(&D>_ zUe{zNTt=~b&uUCoYN7AsO45WDxm$}^m-y)2N}^xM;T4|C?~Knv|D~I##;aM70%*L< z;X@Q6Q-2P9tJp(bU8wE5t61Rb9?{*_y@aT%x(lQBS9jwH%fHS^ml2PNnihSJq{cw7 zQC1>{3Tkk*N47G&Aw2l1EcyTAnU@s8{_tW9EsRwqu26|c%mW~Id?r>xR(iHfwM?2 z34bFv+ZBQ#d?H>j^&pxjgL+KsS1rm;)WJxiY9>nD@G}u@85uT9P7x2qDFV5hMGk<< zyjVxi^n?Mbv^FEzn)JgAlbK|BG!9%i*<^_qIzQ|Oq@fqQBcx-ll6;6}o%}rn@77#I zP%I6UQx42XBn~}a)rr)@z+2FDLh6NYgSOo!@L02ZwyeJCI073 zT%)$8U01}ZRhnWpoC~a5ev&9^C^Qd7P3Dwpi+~;G6)tso|)y&%=N`?euNf?+>q<^$O zE!U$48dl&e7-WSZ)9XM^=CCqi9+6 zEHn6_9R6F|9t*LhQlGDqfsi(Aaw0?Gd17FbdcW(o(OH1b39RSzp6+dmZ$Pm7-x zyP>$SmAyFZ$Q=&ftLM|))SbgSsMD~gSPtN4mU-l7eGkF{OP-nt3DjlAOgOW}8!YgN z(Hm65Fz^p22o~LoM=<6kqklbHchIEV1oP;gSQJiHk~9c zK&8arymf{3JxPY~I?Kg5#ZJm5LjYT@BpU2nII$6uhBG3$tj%^-zHO%)80l5F?9)8 zMRtJ9r5u7(mpnL##7EDS9>8x+24p~Ly9)jpcmpxv&fz^;EUFm+We9Q=IghM zRFg}9q?sn$y687pmALFS4t;8qNJ5_$PS$$H8a-#;tqnMTk$+%uC7s1m{#~!1$Xrh1 zb%^;kL#`PtPw_Hi9}0>)=;KIvLnm~gdQnFJ08Gf9K2!EbRE~VKPBeMPT*Rmh+tn|S z=1V-2uGJOHFaFglHAfuA5(&;x1Fn=x$4{UbP;8XPOODtfOdAn+Iqf}OIcs2)=%JeFzg@dL|jz7303VRzJ zOf_sS0+TM!jihC;(?yKwOit%1Ag1Y+Ep}c-Cq-eB49ejZZpq7d?rW{0lqZVFstSD` zB;S0?z0i&#et46Q-H5y>B5iU!V@&sQ9ND&AG!T@x;eQQMc7%idN@Js&nxhb`77!c1 zDO*S!j$*vUxoxpo=Yepzax7dR3a;6G(|R#xFL{?OuNGagsor0^Ycxqgg&2dHBmz1y)lY!%` zpUG9`!+*$YD96-Vz5U@GH&f)wK=)rp$@Ns+n1UHX%ry}1McnLZlJoVKc6w-!GsyrLn27< z7ZUe)1bKu4QN`x5-~68N%#~PN4yldyDzbt0=zla}%?%`wR(uaFJ{D2(FI?D%@PgX$ zZYESm|4K&atDO6AV1EyoH8-_?!ksXan!?kL%kmp3dPeQl8T4O+S5cvhnkypLL;53 zeFr`zWYj2{5EmhwC8G)Q7{yO94Fn*CK7X*-;WWRV^ChJq&`^HZO;qmV1|)uM5Abr? z+!%Uu!%NsnS9Ezbl%yoe@q);7d}a1i<$n$qUY3bLb8IG6xOS-!Uu$li+D;_=N$_5? z%h)E6NrYAoio#gc2Hu4}p6JCFi~vnK@fr*WR5aB~ zsg{1evdiV>8)k#pQf>0AezAFo5k9T;;!{L>aYfuAU7wzbf*DWct`rL*uG#~G27ePr z{6^0BJ6wwiYMO=}a(Yxoy)SM@TuD@-L!oq`zS&78Mj%Jp2OxF2mPbg;T7Rln=~|6& zddr{sM#WUR#}I^O?RXL5<;i5l(lV!=9&k8tSFbf)Z5umV6QA|R4qr!XgOOP6hCN`S zmMC_K`w_;7B~`+<(>`yFH7CY4(XBawCAK%+?!JVAzMo$x`-r5)GH6 zhIM5;#$)vRszZ<(v~)F(c3Bh0@e$K8xp* z#Ttl7YJlLeSgTgD+z>CoxO{qijQA6w%%7-L>1eHyHyj=0oF4Y#y~u0vAG& ztz(=%sj$sUyAUTBt=4yn>^Yh&pB~U7``BV-SVk?--PQ(l^=0w9`kQ=NKk~*GUxU~T z>r&MIZyck6&-QT|__TgupMUPefOI-g#bz(IFu}B}9UoP)3@2j40kAbE0D)Ji=8JSH zDM5&diVoB!gH`GuZ0<+G^z=xQyddvSR{ev>^^0bR$yzTkH(nmsX|b(jIT7Z=7sy_|H+yP{u_L5Ka)Qo0aUFs%Cj=JJozV2=G)8#TjGC+M=ak+xk7>U*mz&_>u%DWsn=j*h0URb8P#6wI80aC zQ*_n9yWBG2)$ZtOL4QYRVFo!D9yrxc11KYjJNwA*wZxEYUJ5LEZWvSBQ4uV9s4n5r<2&-L<^V}HK*+OKAo57Lf z74>=TVPWJcZjR6)YV(Gk?;PH_&khgj68kVr#H?%%gC>QUi+}9I_vQaYprN$HU8kVZfRq>+^Ou;O86W$**0DwC*~QQ@G~3M7 z`bQbC`t+Qyxf^{lEum|A5+FHW>sZb+u?o+9$yk-C(xX;!yRJTm;nA8MiR7H&&W#mx z9h!bx4Mqy5>eS&XaL(P`^m5#pf0);}dwmDD~J> z&vQ1u!)AOPNUGn#^b{8Iz;pE(R$P77Z*N$TO~{DjwTC67fx_UBDV@ghx-U>lMuQ2? z*C6xUIDe}tYy!=?%2!8P)P+lKW953>gQP9gTW$gGUp>q1Y-pWJ{jp;4Yr)9FT{A=g zi|3Q{(kJWnP^ZPGZl-yA%Sk`469vuCU%@DdWS3Gav(fpO3>sgDHa^8 z6yqz`O`yE-g=(GL5y%x?Du3q%KcP2LeDU(0k)=XN-wpTtkVA6@U+?@Ww}&Nt_|Jw` zCl*Hrc~h8AZH+U|4O8h(t7}=9l%Aj&#*~RX$hleRzH2|+RfkQIo37M{rF-xG3aV$U zw#~33<-?4Y2ZOy9G@qByh5aA7s1-b&!V@%o$5HyC**;d`qHquVWtvGZdKRwg8-~V- z)5|twRnMxMJ(0|Fx-(hGn~}psmF``r=Xs#FyYR_vlA5+BZllEMW!bM!4(puX`QOyq z!Y-;JF@%d~y!zJBhNCy1sl<-4*t3$MW@a{lHj>I^x zrCzm(gyvR_G$#}~8hSMi88tVI{?fKvS>4ZW2Bc2$*c8tlX|85I3Cp*`p*Kq#@!h&b z6%o;QUy_Q+6K_bnjbGTvOk)YN?$j zNr=CE+~B1Tx(AL3alXiU@BMp4g!An|P3qixwv3!!Pz;SIma{M4I79~F+F>8JS|8Rn zPUCXcWxFT89pW>&y}by}VGsCveZj5u?u-4M9V{pZ_L#am*VQLINaTHYNtbMJm|~ma zc%-Kk*do@daev^7Ls% zzKv}YYkSH@+iA`DEOE+=8SYx_hQ}_REOM@t8(Us-S_J;@&l*L8ysbo=S555@EU&Br zvwTR7y$3Ru?IxNy-!PK;%==&=BZUl=tL;ZF#!oz{*)x-=Th0dihN!n=(Z)W+vv1c^ z6ui;IV<3?@TX*7}Yw$axkHv@<6TkSzm>5m)iNZKrq;&IuvUB0A)dH>{!*6UV8?glq zRWQk`jM9qgI(C;y&7LMdatNd5vad2D;NT$qmN&K{L@SZZe)u_GzWzbSM#R(9?rRxP z8P=8jB!20+L+o9AJfo@isPWDWF|l~Tb?qFYQ0OD^F52_eLM%>|lStX6@6?>n)GKj*zU(Gc6csA&4RH(TKsCIj zp&5FK&YbM(l2;Jsx|NRxm+sdkmAEV&Z_)6w3F6+r~)V1ObIa$B2;+~Ju zxZuiaStaE!NBxq#a#7d%C1X#qN99vA-B7(sUiQB2Ti)G{Y@BTP9w9ON(nH5;XWpHs z`it)TyxkQ!&%z}l&*rKIj-w>dtqvM#S)P?;>QDlDDCmk3OtKE4_2lHE11V_>ubOi8 zuJu0b4!97BN|P=B_HY5`(%+IRsV>lbGl`E*Zuu}47g)6lA$8}Kkk_r(1HVltT1B;{ zydo1CDy6-CBW(^3PRDd^l@<}zL;Iaq^K(yMQNDvmP2j_rdez%CnF8c@m_FRlbR*MU z4O>k0yU?EQpf0|#W%MF9tZYH&m+G04=e&%OsE}*;wfj{MN>duR&cEyJ&_%CDUpM}` zjOqBiNj5a1o{=-8ub;VbMP~xdt%~k==7ol%7+GbgW984cw{hS!w(sICh|1sVD*MEe z_s3#|4qmRDd|4wKOA=9+3bJ^pYeqg<@-8XJV*H^7&BuD7bPXO=C|-F6Hl!PeTwZNa z#tF0SE=%CHHEvo#*ke955vfP>&nNtY;Yrul_^=*bFsrV~?&A7+{W@A(lPn8la+SE% zg{|rlx*V?~jk+TN7hH+wG!%YXxDfU^+pyOhJ)IPAx;b9#T1UHVzwlhszto6u%Mh{? z9_Y6q_|}+i#J1#Xa`uu9Rol6y*vt3QgXvL1j5gi-CG1qU2;N#d3w06{CZBktF>*L5 z`9HDd^WRHyeHrz&$;9Vd?6lTuHk=Y}s{2i1b-yKf>qYHR9UMznc&9(U#qs0~RAFJ$qAn>@r2K^#b_4Ppex>o&`kP4%fnA>*( z$+UD_DfmmMb8X;DA21+zOjaJr>%-y(gm$4xRUEWx15U~eN172JKts&f3i|CPGMLR9!9ae zV#^0b@#*pjon{i1hrKl*-+ZZ0Nu{7CrRcNEI`e!a2#rdV=AtAO&cc)y(0Yb{!bk5AC*qmy~NNCI?jIq7Ay>hBk6`dy#6b|*AAzpgQnJ`bf zQw&i#WaisVgrKXZCV%mcW`fu`cj!fR%f;!~Ezgjj#_H}gXXRgeyrNs*<`+e(tNuC1 zQtzrK{@La1o#@#-4uQWbvX<(rpSU;y>R~4MR#*OhDkE54!?%LhLWzkG;Y~GMs z`~&r~-P~$Is{sXOKFJVUV~uT7p6Kj{m@UEVYK88m%z{bxCA!kM$_S4gQElPgPr@JN z3#N{|0iu)mmAN|n?kR{3W4ZK>hKDB|?LLbe^eWahfXfJv3{vzNw~Us_y<9PiDMwk2 z3RA)&2rJLhE5BCIi1G$4Vf@{kv)QY6aGdp)VPN)x)vvI_fA~Vf!yWY za6a|<-~_Mh_&iOLS!ck(p;KF+pySzGOK*#jS`@O*E*jN15812AQ$$OiGuXUwz_Izl zhReSy4q&$lIXL>Tix$ed*cTD!wo|E?`5|1;wuhK+{@3aEi*Vz#vv%px=i}jiac!|- zB=}`A(*jL|H{UtBR!yMFLt%{5hbLX|LHOYMEldelQSdipog zgS4k=HmC(kd9n_iEeVo$e)!GA!3766&dTXLurJ1lWz4@x^HApnf5dL*#@R6*^&0gl z9XR8Lw^Tl z<=^Z{kOHnPZ&{WuoYl34EEw^1oc$Nmrf zv1nnl@0_P}+APZ%yo68h)M~5A-?$Z9<&b;ADgD&ABHRH&BRp1VYcpkU$tl`}$wv}= zpb2Mo;r3h|EB{d6!)!7^!hQmDUGl!VG-kYn7j_xLr;i>HOl#aDmo-b5e_e;aI@UUbpvuEJUFMz<-&5m#i_Z=*5SXH=_`0BI3 zUDRGjT5P|U=QrlRxLn=0wHVymje+YcbH&p8pe#nd6?ATT=4JTV?(SC|ZrS89Yt~Oo z6B8@+R@O=>J3dyov|A4;q z9k*_p%>0P;m_kRU7EM_-+p^lbPk+wM5Png(>h-OyM^nvZVA4-0Imy4(B{{vxT)590_v}ku+W6L`7&iRT z7%$yp(+cf-t3@byR%3*-FJ3i=u5TaA=X&817E`n5RiWojXM7oE%!rb&FZgk=(U!bz z8%(>%tRJ;-nZWR*4b5Za^0Q>g(q@YGpjIbAI`(bjBFF38Z8CTGo|}mYNqxJU_cXF$ zr69Meek2U*0ppp4m7R@GTa8N!MbHB@ICrW5{}zU9^02s`nOhAhHZjw^A%@HUOSmcrbr`b)wx1QPckZ#~Lj}yt^|YvaYOl48S5YJ%f7{t1{`3a?_$^?Uxu53-q;-g4r$JSD?B z%f^ti(@zzMl4LU+K`+vhKMW7kfxNnOw4hvyKVi>734DFwce%MWFfcEm^?>h`3wx-k z;>C4+oIQPeY-7sjQr2R*swr*q`DW4RY`H|Daz5eqyroBB(&Ib#49#@zEd?2f!R4sX zn%E2c`&LlD7A2S+s^7_&Vf9u|vFVG5xJxRtK2rGOmeD}X$IY5IM=f8s_=xl3UB|t{ z!(SGuzrE|~T{@KuJ$LE!E9@ObSsV-&jT+4{xmvRI`($bp zGEf>8P6EQTH84gD?s=j+W8sYA43b$awrPJa>}<|AaW+lbw}<+}oa*gye%&vZ9BG?> ztFiR>M}drr9-zd)?XEi$SLXyLeW*ZSq#$*&;i2$&5&QTFT6&rVtFN`5X6{`vHo}6L zGQW|An9KXzP?Q)Oa?RKjmSou@ZjbGou>mvJZlN<>_S8Nq^qRPJj0$}^G3~r?X<2l; zr(19=jji?M?g4zCL&z8q&7P@qD3w+afuyAY=*@go812rNN(H7d++tY7isg-?ccdTA*kMwLPVNp#pjx;wnn;PsRc) zjTyLe#rS~gt4-O16Bd4(d|Ev0reVQI5rUbY>mcJ%Hra{;P3C`Mr_`OFu!0EpS|<6-JO{G^_aKl1P&2w?4X)+dN!W$7UPgpRj!)T zAT3I!U1ORQ1C8A5euI34e9a@u=h1_A10U7(0e0a5-l8^vk?!X0b1ZN%zC%}@WrI+{ zd^YhliU3c=B0u+bUf~ygqZP`oQ^j826VO)F>)L;Kz4}$0+3T9a6ISzH9aURHG|s|s z4cD#2=GCwI2eFb3XA1s1@@>a5PG=k>f}fwCyvTY)PY4A8d)#?xJMKLq z@TuKvey_+$SDM+P?qaLGFx}|#NI7e#?LkF#*6Y|(1rOfu>>o+Q!yYFCaV6@$A2*vJ@sjD8t1oA*Ko7po-`?n)L#5mfBLOKG&BB5L0*Fee(l|w zM{qWxX!35qj|vHo;H2$ZEmXYZ@1d^Nvlo{N1ix&a3Ky`3Ap}jWhE1#_N<; z7>v+E;LF(Pd!AHZ_;85m8oHHAN@!GtCW=Z0jk>|}@<&$qyI*dT&BbwO+kEy+r!vX< zSWR_LP%&?xz}?oA&@zkCxsVB937s>Gt0ldr{u8kY=7s;!C2Jit)_d5=%R3V!7_z! z=6pehU*eN)nJJcvn`X~tY>J#)o~aTZ_k5D3=%TNDVC1aQ$zht=S@7|3R5(wn@Jr=m zDpI^2H==R6f(}zWWl5>{gg9<|DPiT<)S&`$&%So%)oBbGiC}L^Dh%!76B0GAnt_0) zVlkOo26J@QPB!&$;Sq`(6Y;Yy(m3i#{)rxjqTweK_QFi37DE3WBn{pNKT@C7)@DL|xjjQML2R~X5iCz^} z&3*}f%G4;Yh)eg(%E&VbzeFTQ{)doEhVx{l6oK5=lF6{}STN2!5XT=V=Qv>8j1&*P>rJAPsrm+EV1UeOU_rwd zqu4dBKPO?0>oJ@&gbNngh7TcwPNzPeeGGKWtM--dTZIdReAUNN1Y!U-Mjs( zW07)9#kxjymGGh0WD+*!i2@-v)+VfXU8%_!>Sygt)vtw3-wHx!%{3u@;EeW3ezz&^ zo3^YN6@x*_Wr2={1k0Z4^_ZXm)V8F%wUrqDyn_J_m8#+WYNZTUzh(-3NlcDnGk1Fu(E1aZHQJa+2_(F-goG`Y?CIEbp4e zi(KaU2a-at?iKR=n^q>5WC|nfa4sBI)3-OU999xZPv92=CA9ewR_b-~OCC%`D^f2! zDdopj#MrG)JUhZHlsc3!4;mxwgdPW~3Cl%~v9RYV@A2J8FjS4qo40Dp>Yl_o#}~m{ zl36%SeY<+Udf;JdF`m=3AHA#(MFx=^iEv>>pR;tgWV;h2gyi0~aeIdP6D?|rN8g>= zUnUQtqJ4zRj`u&aXwCMG(m2_VNj=J8E51B67gt&TM&$Wd1 zteIfJpwGl~pDx4gvV*i*lOonxK1Lrn4ZoilX>)O3W}rL2qdRF(f4eMh@+J>%nb~1Y zyyak%B`~&C&=cPvf$e&o*2>3g_Wnf&_^H(;x7W4djt@EJx@pqNXBa}J*8MA3X*Kk3 z=H>1S7Qo$Ee6Sq&l(aiGtk7E|%FvkmXZUo^m{ZeoF>>CmH3{{Gghy4{*s5w3br-%d zG~NB&ua~=l_o|q`I+cR~(_7_-OwtoN3~39u&+!6H^(ZT-iBr zqeCWF4!%ho-Z=R>@nrzDLxJy?`Puq{BT_kC>+g+IZa~o_ONBNo%?m!CddfQSv=nXl z=S?rHUY^^Fc77qw&_UeqBPVzwALuP@xnd7u695kO|1u2#5-R8Ur^^AUMF#Psjy=96E+*V0Rj)u z4ftnCD&Q6lv)!55i#8vba!M7y<*0BQU(`5kjcoHAE2DRL})v5TJ$!(i|dc zNd_oE^#m<+6q!kYCuk2o1;eYRz78dY;DJFIp#1p(K3Sov0t-%17=X_VC9HnS1m!0{ z_>{6j)dv{nVc6AoZb7vX_FwmCA|QN##t{{#8cztS_8*+Ex?dQoj|>H&j<90>C#UlAaE9YzR{xPXJqAveV~@etps9=NR}=D>VPl;ZUS+nQ$&Foet`wP8wj;Vnkx!|P9RytrUF@5 zoF5ui^?nHSeIOz((4+})6M{xU`p-W8yJdhfQm7_yr3YZ)z=(k)Y*-4yuP6>okrFWq zVS!ZzA#6z&z%&s9paAv|F<2{r%_0V!g|J760bLPn{%TNF3`;@Am|g-~LT-_ua+o1P z=xaI50x?jkfZ1FPs;ettXUIf07GTuC;0M?-LV#xuMqRyH1^a+3P+AR)6j>mJc~ESq z4z`aF1956#sUEhBm^F=ov*iZZ2Ez1EBa8rP8XQprm!DvVe|3nOVas?&!50PzpOrcm zGf+|PMg!0m*c-^eDZn=hQw7#rV5A6f)K(ZZ#O)l3B6^8;E9?ej<6p$-5P}I{x501_ z8dPmCYSf3o%~6;dviZDjgYlqt{{zss!w@wF#M?pRA5nm^AD~OnI2q8`4r7Oipdyjd z6UYsK=M07eICjA3ASD=o1WACJ#@_*Ab%HjCu>VlR0DTt>9f;`!qXhm3W=8~w(176n zqhZ_)Y7BOP8lnFKBQ+33*uz6=fSnEpUsVYeLXPscLn3V2;{TDL1QI@j=C=Pu{I5YN z|Bs^S4j8^C(H}*6V6g`*0V?qygck7Zg)t){FIxqLv;I<40BawN3vz?xk1!R`*au@p z2w!an$mieGRWAl~`oWOINRh$_WU?Q|4@o2Y2Qe9dNkERs|BGA$&IbP74-YB-@IsLG zzY`olfe4BX&<}xrT&VuY-~hQpFj2@f^*_j+VVDpkiuNC5co-%KNv8V;p(h9Xo9hT@ zY>@sRIC2z*0ice;cpzxk{|nP162IE-kiFm3JQWlZU>XB$STQ1n)5lab(UX#Bc1^**ZJ&qko zT^(NlbP80*=lFx%hp626GrvkgVHXh>@m-|d ztAiD2oCh-r{fm$SDhnVodhZ{Zk%iwo@TyZn)Mb&>{2~k+Fkb|PyZ<5#2seo4vaEoV z15fBX5Oc-f_Lg9BkQ}u?3<*%Q43mMRnf@2S0nEPsUJl={pwBbwD_$4a{|e)TxY!^k zUMs(=h4}*%>9D;*4FQ~0@UgsWhnxVbzZ1WDd{L9*%FxsS23zom=3WD9%H)8Q0i4#&7yfKJEgq;6O5Z4D}FGm=q zb3szzm4N^--Ulm}`xl`ERKEXSRe}RBpI5F(VZ@C>cMI&q+?!x0rf~ZMlmFE~gu&{L zq`D9y?v33Yk_8v&~>UIK%t$`v3 ze-TE693rDlPox}pTM>ag@%l5t`=1KIy#cj7m_1Ok4w}O7xtaw0wX*GlRJ?QtR|ZiR z&u4#-f3if>#mpB;IX?v-xW9E-{|kd#`2SZDk<3p&q=ugdxXg&Uz~O%o+`n}}v)saX8RR4tGLB0k2Bk1T2wmP2U-|HuF46dIxcpUqP!eGF7={JO_?P2^gAD-; z>jtDS^p6U1i4a{DEet?~qCNUQryrufK0%TIZy;FA;d9W)?r#J?7(4)sFJNkaALxpg z2uoMOM1asQaDNGeBN6cCM+x-(`knsFFEIVr5l9NOLk5U9!mt2`OK|&=NB)8Txkw-m zd55SgN;3|Q#s^tJj)8Pkv}*u9Dw-%{wiCf#A;=zss8R$GU#2d2bdXMN&#LVsUZv`R|dF%0VvuHi1qJDJr3Ak1z{j^ z%5+6rLdtI-#n72x1ON;TWOO)@hyfa!2tY-iEZ<||938W)vjH&>!Pn}byfGx zqxZ+6*J9v;d!@WLVB^9-{U1moCFcL1H6`x)|Nc+0|0US`EQI(UK&JTrAeD;&f;Dw# z76P{6o@Vgp|B~C~ZEgzx8`KPbo-F%*bK zDhd|3GGK3PYtG5V6uND=uxQ}LH#4o=7dwCLi=P1KN9wo%ts`!3<&>hupc z7i6B42Aq(w5(qWN)J_AIbM=kh7~^*MXys%%9Z2$F&KmbbsV+re`A2kg^b99r!IEdY zN391k{qj9hA)leRGn=eHkupoqum@4Sx^RzT0iZ3Qt++rkel#~Q#PaRKV<2CDxbI(w zFKPMemdJ3}HpGTgI(J5reVZ$-e6UZaU7Tc=n+e~UTC*{G`!9e?!LB9LzAeDE59(|CX+30@4e(JFE4g`{GPwOT|A-9 z0VtL@yNHX%4!^P)GQKMscKM;u-&u2X$MWn9jf@z&TVpItn6)28#LYMOQqyMCXhuE4 zg1DGAH$yp5BrKW-9-NHZ&M9u1X6-7 z-~D{n5}p1vhI5g{>vtrD!s!mY5tZOD`+tEHxu{0LnfKQ-3 zd7rf*b{K2SH%9?lIT~T?OPJIkPxp+JUT8PlW8eB=WV^?A?pyV;YHyaowOQ|I!p?u% zGMH!bXrL0?!quA`r>1^_EwX_dsN%~GMYm@qsA>;W?j~zb66h{r&V;gNOZq6!yLNkE zPS6(+Mw)O-VAOo6>dLVsj&xttu9@E3uPN)Qh_dtjnN*seb~M{+ow(dQT3VJa#s*67 zR_iC88|Uq&;4^t2KgGoF@d|I0`96`1{X-ewz96=SG}9%;tdXv<$}J}qFy(owXwh-_Ia`k_`HhY_6S4lh>41B*78X~E35SOO^6i~V|&uBpR~dW-NPc}L;>bX;0vkllGOhe=cqx%$n{PPvE{S33AcuRn_;!CQ9&SZ_1q9=Ws)(-S++ zTFvR#>!F6InnE`H`jB^Xdk83zKF?hpc6vFI3zhK?Q(l(!d4RYLD&yC#k0+W>4wY!Z zW`~v-s7z-_;c#dp+;UQ`S&1UN9}>eFVaZj;jjK)>D_|;$7yy~4SJW1RJ~nmh`=IPc zz-2s%TQp{9tQD&Rzzuw6-N+sgr{j&a^>>#5!1IZsCQZBUg!OC-u9{%npQ&6Dq%vU$s;QPF<{5bCpt5 z5U+H|iL~QiM7?7=_z5f_<-=2t`WrDZG}mk<(OI!amFL8PA;xWEue|7;97^pBGZ|f; zw%8IcmVAeo&Y{y0w(e0lCiqGztPVVkV>T0>C2DUx#RZ6o&?u1K^7LbYd#dH7g$;nX zA&T%k{)+1w5`hA!M!Q^u;<%v&57ui&%|O&|4Lb=@F!lNEy*Ju00qj|$P?j{VgitTB z_s-6G^gMK+19oyOg5vH_40FBmH~mI@K zG%6ee9UZSMqP6hI?-Svy815dO_v3$J_cp~oz+iPjM)B97kU)+7RZ=qI$CZ=f0}hGTLnq`Bx(U%LDyy4|a42wE%OsJOt3yZaW&pjjGJqw2Z0)F3)|E0ZQ@p*b9#my7-?AGK0 zS6?DCA2YeYSIa-^=M>(b7Tn7f|DfPfBY<(I3O8jUt4~u)&!>qCy7mN|VxoxI$iL(b zcG5(p4(~64O5^3@-JOtqd3Q2!JJ&vrw}pezC&t&>@3U2(m%Bk`XI9CxpV(JO&FB*BV4-KB&Ebp4UuAMH!lH=16$lGSC?;Rb^>FS*;N%}^u4fPJmCW1sP z8zfy8n3&6ONi3pw(+&hXj+jQRIN$^~uc_!?^Cmc%{nn<7;544w;mqMgS3R=;!6Y>E z#R-L>7|)lPm%)XT)C0pX@twH&uX^sWrGCq^i4t&c!QzE|0c-6fCcz_3ml<|?IRArx zM+Uz^)4K8%j*}it7yHQy3m4?+CqQs@w|91K7?5})Kc6N)aH*^pte@Yvr2z64H-3sJ z$Wus8P7A!bS{Mh(56%l{G6gZq#+EsG`3iS`j~{{Dh8%(u2*-HvQivCgvogLG7W4;oYfYeEx_kw^C(&t#^)#Kzq1bm6*~mP#=f zmTtcpeyYb`_`|aEJ+%%7qMXiYBxEl%$&nIU2VwR-?0BF%>Z|VMFgGm`BqPjaSG?VV zAS6z{UOZN`)EMSy=?exuhO4WcEDzel&Gm>8c<4mp>+55<73K()cs5HABh@ zD#%mOVnofy>c2ov*kZp(E%@7IiGxQ-c_oj#@Y7Z7F@7~3{-en&huceXMCyqr5 z{4NrCkfeesvgiM=3j~zmk)l86wglV1fB8Nz-hK+s(#wn^yF-Ir67^i|3pPS)c#&B< zA{hB zd8Dz7$8=*H$Ka88QsiM;<*@#0!6pSidsnOB<9+$SopA0=y!nxUEXPy7l%wR^HIc zswK|IoWnjceK!xhBlmaufcB|ZVx8~NrxDo8LzLIXDnM{98Pa?`8*a$5STTL`;MzFQLv+4uzI5ErH+EXZe_qv4c=JlynC!^t9jHFLjNE@C5;{%ROCN zcpWzH>_GdO@TjX1`Jaw;^J3}54aT*EA&QBW8nd~>2xuEbkI7+mIOhaW3|xVx;QcV<{)ea z82wUj2{{%kaQbjGd}`9I%j~w+)zNfdJZAeASAfZ4)XysrSt6~uGj8}TDf-T%O-Uuv z=*n`EtPe|@FT!GWeK5gIh7Ro3v0XlB@Cxvi?OYRS>qia-)gijGO|k!z#U?SD_9h;LKpE7xfw9}gBU9|xJa-S;&vd%vHIu5@MV z65Lny1$r;$C95c^_1e@XgQpyRt3Z1dWgPnK_1wFz*DO=ibH(I{U4Q3T-cQAe8)iv> zx2q~X$DH|hcp&qmeO01>AjiMjXi;b~zXOjJ+Mv1ut3}EW!(ykq6R5boi2banLt)1Y zzR7Z7a_WAmgLzC8snQ&W6V0NT5Lkch1Q!U`M-%V4m1(aa-2Kce($t}5_p_!cD%TuW zNq))^6|%0Q`NUbPox;~Y3KwZGK8>H`^u1M{Z$>HH=m}b`96+Gpk3}~sWg#}gw*eV2 ze_}MQg7)M#H)ng^z?A>~Ob5xg-?laFTm49uP3R_^#k^&A5)rxOh#0^|Zi=f%n(bOQ0-f@9Kr z=>gwHoRN=UP+*-Q2KR0LrE|J67)8Adf>}S^g(~4}(=0W;1lVW(eX8>O@WJEoXUcQN z`6lo*Oqfxrn3EvbBcYQ|2&I#=bhUF&u98`U9u%u|aV{r0i%1C`R5lGemC&Sa5Y*UI z?T)toa`m*m#~4iw3YwA5BM;7U<6m??2T?n2JuWub6dIGLL5N=*ugjvZ|9U@-k z6Q;~U&g=>J`3sK(BleT!wrKuQXJ1HW*hzXzrTdvye@vdq3LeK?l|tY*gOm2?GMOmu zMgd>4eu8lQJNyUF0H$EM#_0xvnK23GcY|^W&Wd0XRW(*)L(;b>!8Akd(!C&o{mtL6 z(`4r-;6<`A1K}}QQxVlGQlTGIo_g!as%}O8C26|H*MF{VHa3;BY<<>~Y}m zSBE(z_knKHO}tWW^Km}1zb*O2;J(cx)Fdoq47@wJP?W7gpe%(sPBPSO&F#2^DLio^ z(^R4lSEINWS4jrtysn{N?=ay6lNnlH9c$>LHgnt_b9*FX!+C-0%of=I z`ePAmb_33Xn78tRj9+$nL49Feq284eHlOEIUQaU&8J?$M>VBDk)a0MD*tfNBEyuCO z0=!pBekS|s^~uSJ>}4i!84hiw&<}uzF`|8&lw#0Zx74v~|5%^<&G!D+T{A5NrvCa2 zDI?tgUEa+Ty=hk3*B6(cODd8?e|!-$l8gDYM8ZrXX0!)IT*Ihbm2%)C*b)TY(s z9tpvGjSro06w90G!YCyZ%C+=LhA>nSPa&rR@?N%OKg{pbcwAn>SE;Sa#sh|?l{ z9;)Nu-}GS5x)gn;#`<>g-o|H!jDy6l2#Nw!&mvZiK%eD%fRE8C*Uk?3JT7 zjPi0$E;-v1nib^o8bsl8H8ZPw4`0RhV_9E)r1&Y*9pwd)brCF8^ROR;w)vD<+PPnK z0-(lnVNz=^%5~gz$ZxjX8dL!~s$sd?z_g)`ZgEF6UV1l>*U~FVY0Y$k;P7qb>pdL)? ztCp=2wEW+G{C(^4hg?S8L@3(8Y8kk|R+X}<{43jil!@K|pc%di#hK#s+|760Wb*O1 zJXoe%{!5W`JjTb^!i$r{WY`G&r>9QouJ5zxJ}L%d4RpNk9$4jFOynFv%Fj;xtNPhm zJj@UY6yJ&UA*;DP4fD*l2KoN*=cne0w+2F)~1A=F>lneb>IK;Fm zcg00VD!H5tfZ7GEn*@xtG(nSI1XnHuA7XQgX`A$vLnpT(25#kDo#yD}geHO3C-MH# zx@w81)Ez?Aj->B!OooSEUI zZ*>`o;V!0wv?@FNEl@s){aleh^J0(C;xxi1Aln-kPh_y}0f31|MQW5X>tt=$_n zVLmgxHQSF~w!Psl%dynw>o#ELeSbyX-h$}+ByW+0as;H~-Ua>wy5xejUg zPBZ8PAQrS(<7WHH#rtFN^ZC=MLA+m!3@Q?fn=LeI`mp~eNIP_l8d^=i{fb*{_fbd7 zw{{M6#L6$;R7`0YUO|#>r=G+NudNvyqYz(EHjDu)hLF(C$ows)MaPD}ZioIOP)nPwA!rtT-H;?$O^~iH(sx`(-Rt&JPDm)Ud__fcZHEO| ziC@etS5UhZM0Z;!4!s2||AN0nc7NHZF)I>j71BfR;K|{2=Ovv?yptl@8@B(@cMpWO zXGQoJx%4+8NV?dM?YvVBTkBlNztyAL`(-88S%nq#II`|}B{Syk&(-+t1;fKQ9h-U7 zrBj{Fku8esR+kJWKlE#Y2yq{(rOFj(OU7j~Xp7P1WUJc9_+El_;1IEZVMzCRy@h5p z=<>ZiBlCWG8|nGCo%-@mYTd6OCeFWC;mlM& zDsG;kaiRmN3clfwD_(NG!TfZ*vfg^$?gX}b9o=qE9PeE02yebV-e_MN+SVQc&$hkh zgH-#txYDtYEXlr}+sqFwWVrpRSl_lj6`A)1Dap>A?gv8~ zjjZ#Dx|SoaSPPNli@a)4t@@0ID}_kqQmxo`T--_NVZV*zu5FvAJiGcSlu-_ma(mV> zIT2iho{Cu`{KhFBbb&BpRdqE0QSE(Cjru@3B8^WLUBrSAW97bXle^M>3_IJ-GbLwl z#Dxf7;zvRG4e0enzLL*}R=C0U2h8g-pK>#qb*JSRT_IjWA=`$g$`zdaQ@YL7uYae5 z_hEAlJ$}zCST&(F+ss8oXu+=T6;OrGOMbjDd+j#n7|dQPqSSq?T$?6903fJd6aQ9o zOP8hUd>Qg=d<1!=Y|75Ak097NOYHj%`xF<+0K6hIx*X!DXuU$*P9;UnNO3?F1brWc z28(ZIa5;u(R@5t~h6~PoH}zfb?Y}>hlG#3Lj;YLjh`k08G$wgDhn#4Jf(2K8 zUCl6Vi_kMNJdtx=&(r`r-3y`%Q3?zThfQgiZ2Kw&M}D_ZM?ezyK8$d>Mcl+tmHy9*>^>s+%mo zkT(ppl6{aAWM>dc2ZY!;S}hoFQEfjo{CJ%Gh|vd3;@eAzCY&s%?9px#L3iW^oJl35 z6Y5&zBzRWQP#U1%QSi@Og9i(l`FA$1bC=v!u`Yw5o+JhBL3|nt^E@1J?A$i~Ud)<_ zdYYGuP<25Dn5olPI!W)NT=kzxjkbP0^ppd^eeEPnSFucgA&$XxTj5H>VEi0i23}^P zulGRXd!zXeT~4QG5f@fKO|-y|w1@u`Q4=AflW3WKTLOT&NfZpau%isEhElv4(NDDk z3@cMEWTOu0ryEh8b??D$F>Vxf^FNgu4avzGyot_i=dD>{r!KKDDNAynVfO>qpx=-85nvqUdBT=Q*VnHsbsV%Cj>Lg#nIgT^Lw*M4 zzj@f)N?j+`=0mT%W2OrTiI`LEH=hBve(5rvwt$!Jz0=7%OyHN%LwtP0AsLi3Tv%!| z-KmSrm0A6u$o(TC)|e!Zqp1z#N!+M#YpfdX*pb-DSP`C%v6q?EA4@sX#=*qpp0T` zb^wX(lz4bhMhy~)n&9c^6t<|JPwo@6-=gikDNOA)x?GjQF`P6#rI8`-G0?NfknA5gr?|wuO-Bvk#)7*{&(#iF61*t3VpKbl`|k0S~5{2v!IYVR`n1t50(-! z2#<#)>Gr#bx)d!)?#+Q*ofjA2ig`^1mB6TpxKLzMEPh-kjZ9Z#b3&$lw%I=Sg7wM$ z)ct|%T=v<*-}2TQ29{~qerGv01^wU1=x8uy<8jgMDmnQqx4DA|91OCUU{ps+o8%F< zXRu45QiNT`uP4RY_w9e?C74!cFIdC=g}?-^82l7)-2VP>1)Q$OX5NvAzC~=iegRw0 z?9QbOme$FJeO~YtQC}GPXl`H>y#%1u673fpvBTlgpk9&Y6rm(k&-A|@508|m3&Xr_ zx%{Oz@0_g$*;S{L15spHrx`}V)vkhPV894me?~iIeYmIySp5?Eh0X9g{regC6dV*S zwRFbOdUfD4Cj*w-V=RG023T=;OTgU10X7Jx6H>PnLQWqXVY4M@$J$uhoM{7(WWj8`iSzu^m`0~B}!tF2tG!vM_wf8u9n%n7b++ZbcO z=@~3&xfpf;%oUgRhd$=#(W&}k0=oBNJuyG33cmH|J3eePAk_o1V4OS02Rvc5dOX$j z&p?DmdX15TJXX(P_Dd9uoJ0ZO4v*jZQ}6FREK!=?3T0G+;LxW@^SY&osxKqp+?X#nnmA1Iww7H z)L*V_WN0f~E5}FEu9GKI;BjTzuS*e87>S*aIY$-;)*ojAQ*N}1nKQrr(}Sg(z@a;t z8xAp|(<4#JQdnb=BZr*!)DF4d?*8gxItcwp3DlKL%J{`=f2cT>kcgy9K;=sTL z*SuvAzTSDrsfj@1LvYOc(l#blz2_98pUnEq3AP4K1=0--Z#mt@i=ReWvT3l#ywit0 z31Fgny_n_ZjpLXL{>m-eFD7^+Gt84mPB;~l+eEDdc}|JDq%&`x<1qLm)*ak>m?uUj zA1(JeA@3Jug;qK%0u!yoWqm`-X1#QQ?Ix{qKSWK#m$h2P%VqzTp&T*x-El7eY=G=U zeLZxK@dJ@%6mKhuS7PK z10Jc-)0Ou*#vZY4O6xknhi35o)owIFDqfI6R*8{mJeoCOh@(2s{kwG|%3wy-LJll9 zBExA}U&K)_2ZLWbkxJueIdrXON&-J7MB9KUWk<*paHt^d?-$;W>W0)J`Ls=pD{H$I z&jD4&-9^$N9S^w8$Nw==A+i34oL`Mj4r*Z%BEWd~k0k_#sdrUs7(7o(jhF2|b>b4= zZ(5SXbX9_Ig;fk0By-n)h4;zRZ0uYjAdaC_60N_)iH5yrFFSt|au)B;?HBl89fNmE zlXyX$0*8?r<0f8j30m!MEsJ*rx<3_Bq0>Yyl0s4kqVYw*!%xj+GyWu?R5HoB2IBXk)ot= zrwUy-4XbIUQM@5>e_q>6!`|&D!cj(FGn&7mt42+K;eU!e)6&yA*7ZxuYIEP`zZyej zg=>LsqWeq9``X+_+29JoYzd{->e?j6mL|TlrGnYAOo$jOYz6#kb#caL@1e0o9jSQH%i{7-&}a1;O83)frfvX=?HmxZ5#;?{@Bv8Z5f)K94J3jdrj`Pa5|^{D1jx1gA3 zJ8B%@kJY9bo)FlF-{BY7Nk`Q$mdoGPl#|kJiT>oK3Fy4ZzRHJ?w|w+W9G6G0R3xek zXqXov#Hn+M4X6qTnZLFbx1C{4pO*O_DrdeQmKDm};->Rxx2yf6FCD759{tnYoM;!t z;cVw|ZU^*7B{0sn*>kCE*0Vy(>f}V>9C*=`1zj|@F+B5YOX*WMk^2d+<0#(uvnd0c zZzh_`mysHR`1T{xtGUH_RTvG?%K;* z3BO7(3701`QhPZC0YeCs zwRX(r=N1ci1Fspl)p(sR&du<~F`hD?`-v7}Z39_Mj5B_M_xpBOc7VIomkcIY8LD#gYXGTGw1b{WHTeOHd@ZH?=_ zcSh5Y0jZkMVaBS2dEk;;aZTukNn23dLsxJ~S%Il^k%ChwZ=_5{CEAHn_nGfW*O}rJ z9Xt##;`D^UN9|hXv99@fljv!bA@KEpO|fKO7u$Y{8jpehRF(J`9EokQOM>V+;a6kM zAUT{qpObDMfY+ugC|Dv(+Mm|ktTIZl>WK49Xx9Jui;H4Ud~YoE0Wiz>$p7(hiF8Ol zy8M^1=K_(#>TP+AECm7^YtL!mqGnVKTtjykyiO}dx<+mt^0=Z9SI#YA2AH2;G`b7` z%iR+meL1goQEBrZwlYOvL)DZh#ILWSc$&iNv%mxSt#9*y&ZdQ>v+kTmF#+mWJT_4YC!kDXcwPJ^qzXiRl4O$O0-}vP&l|3Ev@h|&{A*#lxi0XH z-P~VmgUPjmhOWd|J)BOl0U&i$rykuup^wYxFRX~G{2H^+lUVX70)hT4*t50o*dNWa z^U~O9_=9^$KX8mxJkh@pvuBOuthL`K!*gt&SQtG#SZm!w%Ps03M69{LlolddzqWDV^ z9{kT{saR=Gim*@A>JnK#*qtGLiV>Hj<(j+5P`f$rN0BwiQSdBpKKPk`ZCUQP=T?Ho zb}gL(@Pl7fCFhm?K`mtO;dwTRP`YumN3W$Qp{}> z>t4%0Y#^z8tntPd1h7w|mIpTsKr_POu@VAV=MG7Y*-o4bCl?G*=#hh+DpjBivzr@Y zHK+Z1{Q(wUNk_T-T=TEYvBBynta?97 zHQv*ivJc6z*LGU#??=}2vl|=4f2pVQX%{a!VS0bf`Z<$qcuX|VB2BWLsQs;9($p8kbUt)hnrRYwE@uXvu1s%UIFS z2XU4CJL5kXkEy-=KGo90V^N^XP#>)t(ZZ$LiN6p>T_)5iuvm-v+ig4iGYq`v^DfRV z@Ece-`eK>BM2M9s#j}V zdezwyMB9nIC$)&7H=v47o#hzw^DbTHSFS#%z98J);PiZUbj9Iv)F8BSBV~I&)uA06 zJ_*BLG$8{dEIUF;lRQr68wU!l zQF$i*Evs>A%Ir5SzExuE{E%av{0M_AsHNQ*mnE|{qcUzqUv8D(e;OdkN~pm~9ZOt9 zWJSN<8ONppX!Jwzi?4_Tec;scv&M5V?yPEi>{l$Wi+VIBe=n)qUgW*)3Vbf7HJ~gS zS0+!2!cmNQ#kL1X*&A+GMsUerS^!IKX^sS1tX8Y=codrMN&W6)cMcr9k+dyOX>FfV zqA^eM+y8Aw4`27uaQND{0S~)*?l=yHCM~G};;rh{E2l>|C;j$X-YZOc`ft5^+b8{7 zU*i;<4!>RfXQ?f&?xTs_bo9BM9A;b5-3i*X)v2F?{@Vr??vb*(6V+eYg#+AeGKp$< zr^^Qy?6^Hf3lFcJt;6xsJBs?$(B-ru~b>3@3OXIh`O*Euo3ULc}=nG02)oNjPV zK(puQj1J$LNX@mVAeJpt-2)6o6uNe%2N0%{wrY8##v|R{GDLNX+o8`kX~cMx^|MQ+ z6t#K?WzNs*w)iID2yh9yg3ZkuWilvQVeRR3zN{Uxb%ESm8_L-Vs*1v#I;Xn-EM%U- zR|MDkNT?tEb?;S#Z0=At`}kvK*KIR0NGow8dLtL`Cf}z9YBD0_w}Ds0qdbK-6znT1 zg0aIz8na^M9lQQ>jpPuONz9~6dp|r!o8*u4J?>cU66%Mo{S%~IsXw`EnwnUS9!C^c z0m{h|pnWms7#gk0{%zI_JwHO)*v#$vyqhA~U!XapNg}8@Kp!U`es_=`OI;X z26|nUEpH{=ERi%Jhyesm`r3F(7L^?@tzU)M` zNW#8IHu|YaLx35UV@KM6B2&!7i7ABbi+wYJvDWx5&#EoF933U<_r|xjKh=t&SlxP) z&E}>7Oj-5*GkYNl6F+OepLQB zx-lr#h3kGarb1@uO~GpQ!XooJP=WY-LiS^WG+)4xTQ9PjL6|zRL$cyeNTLVFt<3H%8e?Z_7-jlV>b3u6QkK6NlIy7-yHw@wR zBg1!k324K}jIMlV$|>k?8m3&3lr(%g-Ps5F>@#Lcn9sbO=$`2G$-{q@Zd|7K>M+5= zPYsZ0d_6v9Ue7V+d2Wca$v9sQTZIy&t;eIVk)2h$S+N;8PQkQuDW=TecCA+NvGp<5EKTVbwtpc2I5K0OJA0j6{R_4gGhWGU|q~K6rO#$3n^7|RNBxYMY zGcxWtv4L58B*n!<9}pW5Qe>dbesXDyc0LH`%B&e88@mqa&p8AIUn{Xvz?w_n z>EYwlBTbC9-8kFQA&q9`)bvXbmnKgH`j1m3<1(%$l%{`e{RI&N*robdiQuW1WcqUV zfNk(FGI^?(1nh#i3X^K7BgzvCk!7NYs!03nuhl_5FEi2bVlBur-2Nq=+r-_B7(FL+ z?t4h&1Kp2N>xT|W<;R6N4q`Nc;|T7P`IY)bqiKmNP10xDC#=zgweaG(f+KKkK$%a+ z)X%H(xu+ZWSkj!LkG@(D3KAm-Ys{7g#u`xlYOXTUqc21YcSRFH6KfM3S!{UhI;9?Y zI&{rdEXK4#l3`MZsmHVL$Ed8ne{@0@tiElh{M(lQt8s)Z!aEoBv&@eLRx3iQaZf(`2 z2giIE6Y9Dhl8Pg&aW@-Mw!AKeVOKknI7QX!`71U->Q!0IR;1Nbd00ZjP#gyjJ5pSY z)$7FGp(dtYXUxR=QwT#>V8HMMAYv7c=pwG;BD9>i)e$N~W-mjtfeY%14i8OZ7%ZoF zcFs&EmRPHXX^p2OJ*>kgqLM8Mwl$ezj|B!?o4hVwh9$(Qaavib%#vHdvfuqr3EW71 z+{(66J7dcoArFKWq)uRw&nl%2w%_?KW+!CI)KTW!ybqSnLK>}wraUPd_nbViYVVdg$=ugn#?Jm#8d?*d2Wh}_ISnfqowzT>Tg?=DY z&S$998R5hF2ZLggs(HWxybO-38I%mAf~rth75XYe?7Gk^b9U_)NlJm16RFe@3U~Tp z>HZEx>H{=`z<^Yq9ylJL2mP@UNDzGW?(fXb&A#MTyYWxiZW)dP6^x?M52`)wO!D%tU#ybhUgjl0r61Gg%rs}mur$zs z)9NwqJZwQUIcqOLutI{%*Z`TvAO*AWmvrK2+sgHYvGRFWhsjU^W@#1@4b=gQSW%69 zn3}=!I_WX;AH!+AwyW&v2aE2J>oiEGTnc=<)`hf?MnQT>9u|qF0QI|LZkN~XeutxB zkFWoo#V#+b*-Jf8_x{kYK8|u_`RX}Ed~Sjv$WZWA=;?5sGfTNm72#P{6!uR#qG_lRrP^(RQS5vJE##Ox4^_VK)R9S zc^Cq-^y`|<2!b;Ln}z-9V8y3UdV@`p8_ZFGv|Aq6coG0iurZxuiiO@%r#sF%O_6y$ zN1w`sJWBhsk2Ig(7(a?oeI@tx!~|E0#Xz*@=jWL%xxVf5z-e*p{}XFZ)r8b?W#XZ7 ziJl)~;fi{cLRWE%v7gI}PDO@tFs$%RL~1>&jaIyYU6W1Bp`3_79|vooRL|9%H{tJ) zwQ0w6x;F=$M+je<&8gfxY=6VPd^|ynTywtsTi6rfg-yR@-p_Mlx7H+DpqYH)K4vy* z)y>VQ%Gc=n(`BMiiZ5gpS!rKBO%c0!_e*@?3&9BST)nIa8$;Tn?}yEil(t(W&d>38 ztLAZN5?iPUT3Tgl1$@sLswG&BD~zjtsb|K8S29Cje(!RPWx3T6mf8kp!P!Ni^q+-k zYtXlMK6xUodbNzFVA%kOiaBMOebShQMV{rT=p$)U_&!hKDG&bvfBH=$a&2x^^_p#E zKDc>O-4yy#(;!|kt|lMM+fcBSMnX#ZoQsM%MJnXgbp{WKN)^N(QEvqKPb*u$7o0Lg z8RGc7g=C<7X<(&vS?IZolE%Y>sC2j)BaL0?CT| zizGR-d#p^#t{11TbBhmJ$u+lv@1*Eww;9>E8>?4!15z^y)uV;HP|(+XbeYd=#kiA) z*u4EEFI8s}TBxQD?ZbdjTP>X?4`y0mQn1_qea{d_S}=Bf2FkB`kLAB#n*25uRfw)! zi%H4}iYpb1L3y&6RgKi{g0xi4gP?{U)rN{Vg z_q@Ah1fFnX%HG3#rKtEuN8%>V_pdvb7}TDMNa+ujlXNy?o>?u2S%s1sEvGxRM_)v~rI| z-DdTT_0G^#=j-e7Ux3!|zCJZrd&U`~`z2Us7kcR!L?CS3_P=9{?%+K>7x=eTa0Y2jGdfmL#s=mb7^)q`Jf185NUm5Pf z8W*V^sY)JC$YcJuUyGahc6r}dOKsst$`cMVSO`*(spl=xeM|Q(Ghmq?Ca2>4hZPo^ z*mT>VE`7eGGj86wV0Z$+5$y}Ml}~!auNH#IHF-+zXLk{vA2Gp*;d89CX4Wn#sa|fv z__G9Si(tlVc(Klv`4@x#_osVUNqBQz*j-AAoyjMy^d-3v}HJb31G-d0$R_% zifKvfi(}?A-~BZx*i{Ho>}|9isPC8<*K|WDnp0E1gc}-6xzz>yH!{EaN4a$pHm?QW zQJqc*f2E@@Df8cpu+bPxa12#p>hLM*6(~EYE4y$vcBOFoWuEurq<3r%g*3rYWfX<1 zXzl3`G?UVNdp#CLaMU_WI|p8>H$S7$c$VjeQBPpPN^W>o++cFkr}}l1sw>{9JL-Gu2IbI{-Q-6MwieY*}OB=X2Lm4Ak%Ply}_>ubM8sH;>xw~a)MCL zLysJfqv7kEvooHx`H&^U(z?TF=LQXEoWV3+g)nHEu|11pJ3^%_plZJ z=2K7xc25Exu(sX0D%P1KI-MFURpVX8j#J69HX+HSsPvcka?K0)=G&Br&j|tDzjYSz z$J*6Op@MeHK!yA{_oOo!UogyDN8X1Hm`lpGhu5Rz%OprK#+9LYvD}MlIs8kd)D2xoJskObo>#?-Bq#oH zb|Ys!hETYlkq3hZ{uQiFLjmhb9ZHsku|{wZcicLJGL^rPT8Cwo=wJE&07XE$zcp@# zp$}pd8^d;aK+jzjFP~+BTLjuo{noHeScaZVCJ{IvPA-4@j-p2HdRlp|nU&%wo5qnx zqbkqK7vH|_Z4&1>WpBa3{+X6rUDA^Z$~j|qnqObSxdioiZe!zH3>vODD?vxNsUJI@ zH~hGl?|%JZKlG_`p{w`mU`7|kY9LZ!X3AxQeHxmO$39uOFiS-9Lp(+(xsixPR?Z(` z#c+d>Ro#Dk=1q?N*m%3i%i%lD=o)5-ps%L8R0qL0chQ-?f?UY>UT-z4rVN!|n;aqk z)1jW@VUeFD%W57Gt8I2r<+&4>YxTvBIRBBo;Lczk(o$;Mk7-=qLS7ogZ_WzUVnD8% z&+1xy8XZ?sxk%T$w7~2RxSK%2JUH+_|Jb|k{lkClTMI%o%zZ<3h=w;>I-m`2@LWpP z6@n1+i~gEWZ_{?vIAD%3t|g9q+Mu@$ydZ4+m~c9+#B6*E5^n?y_MYQ#V)OqTaYBiPx1(#nZKo=bV92n|jRUlXU`}WVWl6FX zaz%d;RectUqsEr%=s@H(uJU?{eQT>uL`_&s%6~ zdo39&nQ^V>=-$11RmpOH!?X8XD2NdCli;uN>Kero#~;#(HdtFzZ;Ib09C5os!r**T zo8G>2P(S?w)q7oMYoN*AU4TYwcRqw@l_b<{s(+o<(nm)Jze`5c+ebkQX6v7@RO>b+|(Dp1)|$JbJ7^9cv{-1{p*hPS7wh;>5$MZ0I0zohnK#wK#lb zF#2dOk`xF1xYAA;r7vj%6G4W4`r`{NgI!1+I@i2*!Agxb#P2RszDf?uIdc3NA}}Pl zIv*8d#A0Z%0h@YOCJ!BWT^JRwCs_}ILohZl5$xyDM|!J|tPXgy3qe94|Du1?(Y)Rg zE$g9CCd^!WpOr|O-8Q)0UAGP25JavPI&1<6eAQrf{ULGLzY1<6hyI;k-$8ud z*qWR+{a&T-%=dOBfQ8K8n~uEduT@o165grlQ!alUdsJC1P1dIG z{R#1{Z5X8K2-NE{$l%JG#{)3ZLy6j}0+V_Bb!5Ml1>C>4?>})GAN!Lqhhj+MYcd9S zq!`DQ78^9f;bm2U_6P2g7Il6aRV;=ro$o2kRF#!C1lMwxtSr-8*K%nv?z7E0ZD=p( z?b>r&fxg@ZSl46#GLL`u?8l)2yASR*bQ$(~wg`Z#yJr`V45#U3I`ta%`>e0GF&>3@ zEZb2x3>tq>ucr-*=3|VNJ_o<6py$D3fBdw|_bM#}I+SQWpV0?iQa?piIdQJ*2PQIP zu`Wn5TQAK+Qf3Xw1W_>)4YPc0F!=cKqit3yF=-NMO>z%+ZUle#(6^%!q08bnTPIQpIpuZln^@vvo-B%se5Gks$l7Ha2jh5-mYHc?3Q?KJ zUt|1P7oxDzDg%GGmDqWQm*dcnQPxfF_M+!HFDdCvbCcH3px2FPDke}BMUi67Kc+4U zxE=a}v=C!%{4ObzOO6oYWHU`GVT=JkKxmjRRyaC06>&%wt6Zy^rOTKyD*M{f25-4# z(hF*b#?$M~vJDI#kF;i5q0>=jlCpN;95UdA8xHTsp zllp^tedpb3H4FJS5M8Td(a!ctk70uY{`j+LqBVuX^Ewzd<=JPVxfjY18u0<@_Cyk~y`4e(j4H*gvSe?kr5 zTz^^v2*r_-U>m1!-21xshgc_48-XgQpEiQCWc`1UPHgr4+Aj2td&j{MST44)0eRmH z$R7boit7~#il00MZ2)i}iMUhm)&Pm7>+wn*jGr=s+2jwwhx|3TABQP%k9h%Ocxi~Q z9$PjxGn=$R<$5*(4iWGk^ptx?nGp)wuvNklI?3f!U(&gqXt_zTYncj{B|<%zF#R6} z)LVaF?`%BUPPDoQ;;zk@LDyo}+56^cW~E)b`fk-7syAaz1YXUohf2pd8FJdTpxa!c z@R|KPj3-z=&ZP{>QfcmwEeBc|Xym+3(qg%7k(Rok9U}%F&ytTl{zYQ90Eq@AGgGNNdBKSAqiI6y%j$_zRr$<<&R$97%cbLDYTQIeFaNcx&5@2z ziy~#LUuX;sFW1ht#=y@>vK-MwGnO=kI`XACzY#(4mtApDXxl{tg}194}RqEBIII!hjyc=ZSwLxNyRb zd;Hj&Hcx>9kt~t$YW$wn&vAWoK8`t(fI4|at1v*O@m$i83ewK8OJ>M8o=$#`#bjeV z8NifFHDZP`OYCeexG<{1LgANut{0DBK2gVi&KD^hypnmvp`K2Af&{@upplY90|wh= zR4(PFrHMw;j?R*T2HfibO@dU-8=^sLfC$qHu)7vagEpTzJjjvJtz_z>lp)2GYjXN{ z8O6_|xo$Jm772A&(~hA$lk))6Gjh=YeIWqc;(~K&jtDU^DD0d|ZuNYy#}Pnmk{R8X zHogHK9j!BVqf)PH&L2ZMT&5`ZOK0v`QLIy`Vnf%$8XK2!z5y41NhwwdW5BZ^Nb^Oc z_%^FVMUPf5pXA6rv)vKzSj(>YU1oeb*tP4O2;=D2LNSW(BiZzZY>@Ei1?1arCb%)t zfQHg=`wUqpak6}UBh#O5o@-(x{!MyFxW{4OT-Ew*P5=~ zu$&91R!Tkt%e34BC3ESQ3cmp#e|kq!3E)rHsO~Ul0%RdiAj^ncFBuMvS5!-?b3OJm z;%003r7I_p6CXJokWG9{Jh5b$w;}9-?R?&3EdbaKc7qyWbTx_gU@m8tPe!Da zpP*sl6-FvBhQIQZmwUzw<^m9Krlql9I#}0wnaFUSTJvCF6xbxQ>HwCIe}l2e5w@Q3 zp5Sz9WYjfc)#s9os4SES0lB8E8CJ|ih$ulB3W-<(`4SVn;>y4#hRi%W zN(H74AOM`YaAp_63To!rf2^=2Dmro_qL4j8$hF43T_6D%GfToaX+l>t_-UHxhSNn0 z+z-w=b@#5YphQARvqVmyKpXP80>Rq^2Xovo5_3yNll4-Lft_nx_^jR(Xr}tGSy;Jm zIK<=b5(I<&dQuQ`4U?uY)GH!ms=R?o%O=H+VE&`4l*2w&K2>LPe}@!{a_AkGiFV8A zCek8ePmQpc@ntyr!C&=4l`9JRpztB+nC8wfS8a{E3qO}k=}CIV;ewZ1*PS?=W@4Kedz;LGH2l4* z?&wNHZHHO31@eQFe_TF-IpbH9f}=LBah-W=_JR~Bcd!-VMLDeL=Us4GII`3S))6ON znRa;ug=RAWFV*l=`z4Ej3t*>>*Hb!N)EyF~dZmfK*=THP{jg~j9%B2>y1)?kcOv5_ zF||qW9Q|_q#QGDkC;QfNRi@aqnnvSUi-fuE^C$*Ui~s8ee@JqE;X;zP#DmXMkkVqu zWy(_7EuKD&ejnWjfb>zIuWZhyd%(}Jg#ZL)94^GMHx5M+)Hl{Y=qp^Zk&Qf!gDL}EE0Ist2aSNT^+AP;*#00J$wc3+RhCih zxSG*gO}zD+uH+eci9*Hod~9~qgRvDw#Kgx6I6dzOe?QYV0mJ<4HnQUM|1xQ-KHv?6 zB`s7Z;$|`J__8c;vr(~;Bkef0<@x0ij|;!-_)>Y8TlUw}y}ezI*@0gf1wWeDV6z&^ z--gJi^PV-J)zQ2d!tXx!YslGNd~3DTFmTNOjOh^F=%2w9L}C2SJ6RzH>sH8RVPC^P z%9CGIe=OW>^JWR(rkW#*D5Bt3EWP#Y%Y%C95iU!EU@u&x)ett*Y1BKdR;cFYO1&`Y zk8mGL*jSOC&kT;g`{R}zQ)vNK+gNNpQOk~_v8swGW@4Y*5?NL4RmPXNT}6-mOEJ)0 zbydpsN`mXM%NRzVZ49Fw$Dou|qvW-yBAz)wO};U^FV(0$+Hwf8DJ=y*rUHl_PEYK2 ze*#A{yoR3Kb|e5h%DHOkSmx&d_0G~Oz#`ikR50CNAxd6@-xcG2luZ176R9+K5@wzloOi3%2ykTnZYHn-^z%~!|TwkMOS)-T~m+`7`iSVQT zD(0u|kKf+?I;pu0ER!ogB1Lj)Jz4e3QsCaaU2Mn^6B^&l#_dPS$ufb6T0DtfvDgFL zCS%-MCS09Hw|3)b>ynf+-SAY7ID=El4rp8rDQ&!ey0CZ6Q_t+c=1W=o=J{I5?RR$^ z?0&2ESzQ09ehru(6O&n=WxbVPBSHUeb=-!gs&v`BAnQV{hp@9J5sur`U)R`R?{G{X z2ZiBxIxdT8`UwOYRY>$clPF+o)usf)%P2MeE=iE5HHt;lUYCJW!Zwd%`sY3n<@IAV z9I^d>UrIPVeuU@5dT)Fk5Ap8(F4tP%E`)S&tnu(8{&w^90%xx#;kZ9#QR#AZ8%V!- zn|aqN-3P*mx5Q95FE@{uyV6)$fEBRio=p)s>xEtv85^-7mxy4wu~GMm=AaR8JmG}j zZSBZaA6J@s*nHX7W?F`M#CB?YJAnA+#0dF+rrxbBvugHo67yHtY{C$L69zayO0inL zekbW?Zq!~1J2?B{U`RW^&>&T$?gQIXLHgt+5MEhvck5CsQbWdUfhWaY|E+na~tov{R=AS-OdEON1&vmk|V^Xawg z?O=D{G+`$nAYqVUf@Jry0L}DzYuBG)otxLV`J02p!~@aP+4QU7N~KGYSbOCrHRNQR z8W?)AR0)&?uD#|CTlE?0l_`7s2&-Oy#%U2(F3vLeXTuW&~e;HW|t zE^cmbqgYku!ugm!zqJLdctjREbU})gc*%LoV=G>Ya3N>{XZbQnBwD-;t*SRHICPbN zREl!4U9@m^b@9TS%HThlX66};E&*%erfbEJWY`SpG=Hb9u^5t}|Np8Y9pUbOet^7} z&N)Ock?aZZPEL3>UQGs&NT=x~%6^%OaHABGj;ZRV-WL)W;PG>?uP#BSjaxY{P*Jmp z-j@bnu82$|y)5j$ZrDWAK$+5IKgsaBQGPdVWEr9A7`n<7jvH<9b};zIKmHMubj4w_ zv=+A{&+>{1Cz!+WF(v_(SRMO+&c+%pV6p~8oKknI7y;VOQgJT0MA*?Hmp1T*!;K$9 zgN^~tEI zKw&rl1WO?LY;84R%WE6OSG>_&v2}+1qm_N~&pw3V{?0N}vQR=}7i_+NXT!Zp;Tn%L zFNpGR%Wx47I&{rO3opRC<{EI=Q=@IrkcN!LgEHCB+ON=Soqp8kREGIFbZCF8EAWBa z(<(-zYgOGEhPc80V?2NE#5tdC>)I)XjaAiaEo?U3I4Yn_z=^x()pEXUZbgITc_d(q z&P&_$ri$FfgV3fvL7XZ>!?>%1_Xc%`{Rv&dvaW_*H5|F8TFpd|$ICcJRCSKDsxubu zDs5k;79+-#_J&8E-&RkSXW}GTW|TwsGnP&D+A&9$!N>s?e}th>?~oab^?1w`b2-2c z*AxQ_E+bPjhNkBRuX{Zv|WVc!WiP;I6E2u%RyyX=f#lT0VsNsfuyg+yTiA`B$r-%f@Uy#C77b#;y8S zUf@9J$H`M@e`ce4z8f16C&ry5O9Xf#Eui#k`<8j9PJltqWRq~XH7D!U_-8$_0ZWay zPgNekB5z=^8(Ol0nAJh3>AIlr^s_7f!Sai?(UO;&)v}7SLgYHVT}8bCt*aDVV#aM` z$-iqk&f9H_SQ2dEM>k&hPp3fqcu7MJzH)KCjJ~{oe_F1#xoro|#mkE}FstUjecEgu z56(kiQ{0dCQEF-b4#NlYaS3AJwYPaZ0q8gl;-jBI)Mg@X-=PhBP+8AEeR+Do*U?^>AwO z6BgG@e@>7phZ4UA3IDLUF|SfHLZ>6nu>NrFs79BCG2lmiw&C)>a1BHqKg9OZT1J|U zrj=+i)6GT>!b5e@neWju-s6mpWMX|}!1*^Z$AzSlfv2AnXD@n@T7;CyHB&U`e@HA68OWF8mSMir7)3q<<+a|QYzyFeMm7prMlvhTHyA^B ze;l1FgqW>RIEi_mT+U+thUsCm59Q#63PCaF!)W~{Nhe{IJ9SPD7${bd*6loXf`(}c z>scL6p2#8t&}VPU76mLrFrqk9F_A20U=}wVONdlE<7le$l8e=9(Z)49 zw)DF>!d&O6IJ@p8_vo%WWneD$6r|#jQyieZp38E!e|K&( zSkR#9XS3hT{MedKft_g8vBd7y$?ncMg^JLmkomdzK|&-br}vYot41up=C1H9V0FD~ zrxORqA)E;u=Ht51Dv=VKnL9TH?rG8d68J8{p)~FfFO&*|%R8SwKa%5)Q5@CA7)rw_ zB2nMI5P)CPj}IbmWnLC$eRuy|e~vYN?3pQ-4UOKZ4Zp(7wx8Y3^7f~;KjD*fIm4Y7 zsYXw`-hystJM~ntSXh`$V^4NQvC)vc+v4ob%c`l2tVKA|jX9zH9a-7dc?Q_r)(LO& z_;1j!krZ!LSdNENLCd6#8-#h0huB3U>G^F{gMi-eWYaZsHLE{Cs*^lTe-2Ky`D-y} zvjI$9i^Q?2&kKFE6r7qQAZ@bsm2GOxUB8&a{(8X=s;t{Cb1mCtN_QoB?8+90p6W=5 zr6Uf6WPmcs@SF|g8)p8EfY!5ovU7&BbrhIy9MM1t-MP%{G~njA<; z*wZSstn;*GNyI?I(J~UTo4Aq!C!;qDRmhWtY_^`UDyAUh^9d?XRFAIMjX21+C^sQf zD~{3z$E0amH&(|kYS@En#=!Z+rns>nTba{K)Z(FdO)~MR^qiVUe>8}FQ~!28adx?U zZ(lNzX+>?zT!dca`;9x}MciRt7y@@xra-eZ-s!Hnx&I9v1>3m2 zcClGtmc|4*)avo#3|K3M(Q(*0U|w?6$mqcVX9Tb5z|vv0$+HPl2^wjp*{T~_^C&lX zrqwvYVbJAZDswqKe{H^QK0n=v(^#BmjJmy5;;kaJxhpIUyhHt!?Uqqm;Xg$k4({gD z{>R?e{Xh2pr5kZjQPl!ntVb#`Z87Ssfm5+s&pB4`PzoWy8Or6P`2ql*pMs}E7HkOV zAQniaE1cbeN?feZHQl>&d~|g5MVF1BHW6K;X*`}SOTlj3fAt*rC9Cp++GdyfE2DfO zCzyvJBzcxe!4X`mu-;r_o&V(2=C?_(?#15R|vXi?`MR!D-@tgf*5xVJ{ieJU=Z7UDiH1Zon+-Xw#7DnVie9&no?jaI~ zNL_~#vs{YaBrBm`O)S%#vCVdc1F)U7;#>f%P7+M$e;(Wt&TK)1)jMWFya1J>K4h)F z(CbAHG4aQ{cvO-5uXPfJiR6x}@762H$i_m)7UTCR37mXtM$Tk_8CJ`SfJXVgnp zJz9%TRqxC!rX+R_p|uSe3B0TToXxqE1yJBzYm6PuX|%r&K|*{8s{ToMBaqI3vV%aq zt^2GIf7Wg(VR$^abA|?y0BIwbG{oANA1S)$e0uuRYChCzVh&ChSYXx&EDNAc$s zsjR!1?5HzEaN@!c@Qb6`gjU%|=d2NQHfU6~B^(rkiMD1X180P9FIMytjzC@sf|(*+ zm6g>Ea6Aj0?4o#GBQ4wmqyV65PxiiUtQ%+tBaqFEZVg8YYjS| zz`j4D+Og4fSRcX0yU{O_Y!Pe`o)NxrO`i7_4Z;R0ZAh zTmm?7F$6q;A-8`G85$qlmKwwsRA_IlcZ0 zLG3%)PU64j5#p6L+sg^*Q`Bk~WH>bAtAt1H<9PEQjRj|#N?dTg3_3*8WK$uYgIjQL z&O&zZNBAGM*O-i516g`4$&)}vUm<&H!r}fG#(x0kH=#qTVV4l~?ew6Kp8eAuwe$WR z@!QHb8Ef{+HIgfud+7r!p*mqnwdkfvVIp@NV%~&(B#wynJfn{qa+(}l#DSIE0EQiI zv$9(j4!&ZGtS|(AmYD$_uGLsRu)p~APc&qQni^E<-P<>|h5Gn!)Dg+eFJ5|bj?BoV z%zuGLOY%y1!2CycPA4vH__F4}wqM`wHXFxoR+&tdE){=?;Tuq1Q*H$SLPxS)?G8o=O(EPCw~(mC;|eCP{Othw+)4Y2vP2EsX@U$5wUI_ zjIJHuO5Jm{UNZJ*t>f4RzPJ#lGdMa{={fO9TrzB?VGQ}zg*cAvm=IJd8{Ce}E5 zkaWx90}i^a?wV$m8e(vuP}S{(VM&OY*!DGrfYcDd*M%2_je=cWf_isXsrR<_Jby|7 z(aJtB#=e((6rYe9vYwAu7PJTAhH-~E14Nd8Ho@2|ma7b5j3H>^8LXA^sr<{HApyb= z-xj~CV30{|XIyAV>jdOzuxga8MP4&e%K6Akxc9(&#vyaJaVawgdG=I$H#Fiv7bZ9H0(=jNbL0_I$JOv*>SIIdsfP8H} zIygd%SZth2vt;?9znrX^sE&lOjdH>pDynGjuDDZH&zibE7WK#6tF73+eH$A5{Nwp1Ca zV^6Z#lo~GW1!hZBqb4Eo{Iq0+B&s`flrJ@1e;z4*t9JRL>sw3|uU+cHJG3@(t2aB$ zj^y(tBMLEmfQd8LraLV6VLAm|p?vGmQUqN(hCWNrG%v&yo6HHJJQxdAyk0JH*dIXR zU6)O(Pe+Dl;}u+{Uw-weD1Vnu3x07OFTghl>*xptjo&N!)o+XTXfH@iV`z_o^Nb@< zT1!DlmYmAv<(U*r#z{TI%Dxr~vTg_yZ?1CWHn0gkQ0<^)99^jFQK&Ir1!^*C)SKVm zg#2bLruC(F01*5JH{l`Nx_kN?L3q|q%_o3(*4nrmjAz5^{wlV-KYw>0!xp&ChSwSZ zJ2$*t5|24w_*m$#I+vRY)#y31FF1K!p_AslebB7I@z;iowH@DcA2JlwU4RF{^YLjd zbA%!Tw!wC9s;m`G78^o7=p9;KP%~X30VuhOjp**92u_HXnPy-5dRGE5FfB{<*gI zS8ehBUv#U+`TT5Z4AW*Mf8IAQ|GYmCJw{jbP%;3w5x%7j8-LUW^U+z@Fw_jL_dDD`PVReY^l)~Ve|Bw1-r=|_&`W(_ zRVz_RZ-K{#Qh&C$`LU{r=kBs+05+gWh^*Q2Za214*^6px=4e*u5{i%up7B}(TSDwS z^jc@EN2e?~2bX@+l@Z>na1UF^m;d9rtYBiqIlkqF3@Mg_snvjNIWHki5!I-j#(fi9 zMYq#-M4t5m`zl~E@~c_r>cY!^WEsNCY0X)N#Ei|URez-dJ16|2;=;is9j(vx*Gj2K zJA5trf`6)+=(ac{KOt*xT(jnV)WP06U`&^Z#LyuYId)5n=Uy$$FVc^|Y)uSGI+Ora z7HCeSd-wJZ&Zfz^xHr~WY^so0L=PjZ?io1ivH-U_WazJ{z|MIELJV>0_Q_Lqowo|y zx}lgxwSS(o6mBjx=Sr<)sfujBuGXV=zE(r@tq>MFjTH9?a5#lOg?qOKK!>FbPiql5 zBq>Uc;Dw|B`YzyLasf+x4qV$&iHe(Frt^%`WgyS;p^>IKmSJ{pQKpjnJD=twx-FjW zl{>9N02c34Z|BN^a8<5!C@&AeV=I!cnSbySU>Fr~ktk(4DTW-SXWhfiw*W4}b>Z*4 zV~sOZ*zk1-^}haf(eSqQCxyRu%iRXQE-}<9U*FcmVwRRR9amkc(*{c|zu#!4^=!zp z0XX{gji`%s`m}C?i314K_SOe&_?HgK2!!6~bEuX70kZPy)js2)~^R)B&`+x3j zM_?$;H{I6L&YQRIy5+!cKVf9L@5_Z|WxHj0VI3Y6v=xCP8adO#SU@pyQZP3X?~>c~4S)RGn1 zrP+!Csr=5!kKOA0`J%+7ivx*&-hZ1%2ZL#PR)%SdFO;4kvNEHg+xKbbo4@|~#k-TP zvsf6ElK!dgJtkmi^zy_X?-asG+0N5UJ?8bHn@9H{}?+Bis16IXzBC z8=rSbz3~;xiivOrf-zQWrKGIr=8(8$tu2>iTHNr@^S}k|JhttQ7FF;6JAYTS&Ufn# zZOoKAU(g#a=labX`l@>CZn$wb+_uhFVuYxT@Dna!wao2u2Va&V$M)M-+TD8j%456V zy^hc5&KF3N`?cEV?y5$$WrsU9j`Oz>67C=){O=$nc=Tn?!RR_z6X!0|aLXq)&Evql zEa6f~@jEfFtp80GRJl1!9!zb(Cx$`CgbBV}d?z=cIR&d#ziHE?B*f5#d^ z>@mX%W~;6S6Kdqx3RXxXKS~ahHrzIt zgRqo7&Uy41f)9^ds)n4dtlU6c9px3LFQD+!o?!6OFjbD0A+*&JGx zj(>&J%A)>OVN1)y?mjtbc0VYwn$>d^s<53ypV(sN;LpC)&+faQh3yjhsISbhjl><% zKi@?1^!a}Y`$$QG_91(j2eT+Sc=RKdgq|BTyt?o6S9eUcNg7&cQLCq$SIljPUW_(! zj=Gg6JRxsz4R7v$){$!-x^rLd%e!{x*paq&_iHUv8;2qcWS2qElU1To?$b=m4rAG1 z3@e`s*~01uBVc-H00Zf2;}23ax}ZCHoKKM_V8ZujjLMsE8blFkR*28Dty5V` zPb@w4W`Q)sqHg(WnZ|A_4DCJhYrQ07T7vOX%x9{v1&w#)S8(La4T zGtWIZ7%`N{b&ArLyDW`1@h`O|xS-}PtEMg7ueET#gau)j6_qBwbmu|38t}k&S!jLx z*nQj0h1Upwtm+n&S^gaGSDxC+HkHq1GY$?iB#sk9|9(;Zpow?=_J`@|5GeVcp7a|uJ!x{Lpq6ylOv9C9nR;zz{xVT( zL;@XG3SL%}j)UZjeqwrKobd&o>LkPjIbw>F^`$g_)p~i!*=qm5$K>U=quCtR%=R)|zQ)aAl*aB3BnAHu}i;iGQYt&x%Qs9l|yxK`+7@MZ$_L zR3(p2WWI}N|EGcmGT1lLUin4fqbO=QJ;c0!fUq)ppUTITPy0{s3FF^79|yZYR4XSf zqn#ce**1_-@*%y*VFG>-d+WCyo8!rdiL3nh=XPF%|sA)0B<{ zS5+eN7)TPclb+4KG$PoJ#K#uV7XWZBx?-2cXo~1Vw(9>QThM>#4ot`El>inKbw8wk z1N3(ia%qr{`=e~$IJjkc#&BBeIdqn6#g+S(W7w7yBQNTBQ`Jw4==CeP6w8H?LD_uf zvO!XavPJrUrdAY@*V+*V3x$12@^!ayl$;lA5u`svhzvHV)qslTnCtbNVG1;XI@QAL zf~}W23lxn~4x#4A&<=bEC^|i6e9y*z5pda*SFhh$%mwOZma}8%oU2rH942xYU7i&J zC9qyh=xa{kpVxL>umS{NP@ESPSE8>;A5~|WD5e9!m$G4e0QJs8-Woe)$yPq;+ zPF=s|%2K#U>-rE(6aVGw+@Abv!&W9!y`NKEfU z!yfCIbOZTv$`v_ZqWsvsD)dC~o)Pl|k)!g$1QThnZqrP6!efoNu_UF0m z=cQ~r#yONvX#Xbb@v8Yy*7gk0dn-ZHFL%k{By|?)GR7?BR^MqKl*s7Qh9SsEJNZ&( zNZdp|5lR&sOgHMSW~M1k5TjX|5BL;OqxsT&lCH)&g={H^EX5+9vvNRx7jm-VKu{_C z;-0O>{o$L=9uGl=b55%{z2!CvwlGhmXBE(}`)IU|X;IQZ~ou2)9_7$2r>sn@KWEdy-z7mwWT{ zs=Zkp*X)&bAsH$o)zHjZvc|=Vo0^zOWi76zUXrs#&o zq1lD(gdquC?M!$6m0*h)*1qb8DW_>%jXhym0==MWjI`KW<+Ewj0l?Bucc%()%@amd z!~~)l-N@r||+Gm*0` zj-_10n6;~7U|XR48H}7I$eJg8C4S_+BlwmRAw=@CD-`}5OR-<`aC z{atUS*_Pjzo9l~~C5_gz-KGzsGLtb z{{V!v%A;oq3s&7jEpHw1Lv2^PZsaMVXGR^V#8C9n?joD_Rj(~fR&SxT8qC#AoyjTT z?_{cfI5SF%FZ1TxNe8&sQOBg+g`SYV+j+>X$-p`zk8>7yF znl-p5cS+@MUQC(ZgXp{X`2N@30gtDzs{^n6p*g_WvYA0+Y_dbVJgV#9;~4kTM66KY zy~vTii`fZ7Bu@1D$9FGYzk2#|U}?F}wlpb!mtG=hf@!VN#RCf%Bt)TtVLqiZtWbqw z|Hzu8lE{G(ohxPb1xxW`hJf+;Khk9`a>-eWr10}~Hc7x4U{mRXrNktU)A)Pi*=~j< zwwpgGizYR1HPidLFa^xqMi`uw1ra7*+ZgI7S!Aq%_sYZasmEf}ZyfIPbV2G2YaPjd zG?Vg7t0kNsER0-bM1oh{kT(H;1=x55Cd7hQX{#37mLQOFAPQ-t*|^aFToIsT_uN)D zHW+I2TYy_MO(JGSu$1J9DYb5{b?qD-6m}bKR?lWmLnFxjyZrtIY$Ibq@Ds-ugd26 zGG+_l9B`+s2AFCd6%jRhbMoWMr_W9{48fl{JOIEU(eo+OCeHal%(S{w!j<|fVx^?h z(l;?O<-;pAVRo&5ODJwc8qNVJm&Ro{+r z>=ccsl|NaovNOiQ5`CU;MQ(_VPo_F(Iaq{akt9HTa1&MjRVr_xTH6wp0H9LR(*5}6 z^wBuH?Lm2`fk8~c&pjRsB=#Ic)@%;gW4x%6?P!QqAnMVL{yBmY^ul> zoWCMs5>flMqtdPk+--x-%^n|x$t-87v7Wu?UCwbeYn%zsVJD@Y481d<(bSs__7Q`N zI4TlWx(&Ww`AmfAc7v>0Z{NC~Jy-J(#S6qIY(o4l_HOqMPG+NYGBHAbSzWlaGN^h0 zc^k}1x6NaI4ZyO|jvG3YuxQKXw60blU7@1SRM~+s=LmK+F8qugNyTAgBXjmRA}8i(;wfZmfun&w%jW{Q&kU0fFYyA9fz&>v6a4hMlUMKFLXBwu z6@`Yr)BC?oLKGi!k%DA@YFIHn!+Qsva!p80p#k;VkQ@}e|XP0KRd!I&2@3;&5F1gN**2>E1CS_n994oy{FS@ zc>zKCcHO*KjU}S?^rocC93lo0Jz7nB=L6me{#(pE=1llvUMUkeKTP58zyJEQySKOZ z?ys+-A5Y%ACAs^5Eq#NChj_JIr_Pba0;N-SpsR)`kr70FS9xiq+G8K@p*%&y>F&j! z@rUO7?Dea+KmBm>hGyV<@eesEN^WU!1a}7-(iB*s@&YZFho62_UjARmjgJxwb5I7$ zdCT=e!S3lI2m~NFVFYqcHir`QoRPda`Sz!`CvO8mAl%Y_XA1<;8$g0V8f68aW$;4B>2Az=sIfy9xZWtn;U5%C)tqP}9MLj{!AP^u9rog5589QRO49$0Eh z7g*8~g8t3P%af;XPolRc|JP3^Bq>CrlnySBYd775i@4(ywb>kE7UnQ&({Z$)_4f8^ zJ$1xZK^GH$agC)Z4v(>w>2j)Cs^t8ID=F}Td}h+8X?Kph!bU+?rCGOsmgn)G_@{T2 z9QTgkRdjw3RjM}w{q_EPt~cDd-(~w%s4d>%Qm|V9zwlA-^?FVxV)@tP zKjHK6Sa4^WRtqS$&R1PSzvg;2cWdW7ThTHVMK-O*$7)~^S_E~4WMvxumpuGGbd~Uf z{K+UDRpt$^vZ+xX6<#HFF-uQ#^rSp}We+4gfqy7C~p505ks_Y6UN?8H7&7wG%% zzv9t<|I5Zcs+yz6V>^G`JU;N;z?}t-{y!5 z`^2rAxs@dZH*V!27GykXuV5o0xLq8cUtAq^1K=fS7uhS}9k^{`SRg z)ceIa`iMyFj8+n8+Z1;=Q%N zp4y7~7b}ekCRU9$z7`$s0XHilL`5a6$TO$7`)T9p*Rv66$J1m`O4u?nYkaXPh>1)p z>jOqkq-p;l4ec?a1nA>9miX0}ZjK1n*793f1a>b6qMhRCyZGpj|DtruYOcAg?w7>O zf`W66jS%|u=NGTymrwup`lok)(c8bhdPY1TS+b$aCF;KCmJ&@1LgnWd_kFpjbdWlK z)=$B`hCrkMXZj@yu`-oTc;`9NO)fPhPch?i=8ZGB@}QexSL7PK8QE9Xe<&Y5?&Cp` z&O01frw(S2Iy?_a!& zp1ys1^20YT{}w$zdH3{x#Yuvg zL}CV!Q5{P59|=F_shwdi-l`3aTvomdNj`yTZJJ7Dj5ZQZx7B#niJX(=b<70>IM!cD zif6Ei5Bw5|F{^X6%;)FQK$-G^$P43xh5Gc|_;O*SJ3iij#J_$K89Ig?7kLa$fU68j zl!`)Pj%cH(hvbUVg{zzQVzH~SNl2?P6%%_++tZX@?L#yy@uQ`9>y`Bl((#&HlCm^ zV~yU$oM|k@qAp4S=8GJcCWkUiQ2;JA+Tiymf1^wL)$4aBpV>0WHpjQ(Mle^b#KUlG zafbMRu_;})=MD^_Yq>Q3eAwV2yC_5m{Ex2L&N$Arj!h=PfqVwC5l8Yrl-@bqv}WN{ zsg1otuvNejp3ZQsk?ye?UpxSFK#adS%RU}T$k?M~ks+V~62jl<&k+sd19hOmIa*>& z+G`&?)J`7L;Uv+nU3VJEVA;PHAy(mCRe6cnNU2xjf2uZbqZ66<30)`2t@GidbnQA% zt-{0Q(RnvWW8{n{6XDJE0Z{;)^HpLF4sz8w8yKP_S^AKAB+kH5Wvx5bsa11`z1P1^ z9j}_rnRk6<(g_3AFfxs-V$6}r^MULehoi8VFaAFG&kBSYEn^Z5GReDFSDLQG(@OY! zz$fDef8t|iU!F!MjGLoT$0BF2v6Oy6IAhP+7I-@p#*<-{4f3x>2^)sTW+EwC-zi@% zU1!~1^o_<;8TbYkPMCK(PIGC^xa*vV4n(FD4C9&3z;x?DXaxgBu;WO*eted6d<@kr zK`tVB_oCNKa50ZVUW8+Z7-%FeC?dhLmB1LAe|NBaU!6wZxXFWF0Or6AZkjFVMkuTo z%lE$)mi<=K5simaEvFLL{s7^Y=*o`)6*UV%TH2NqNsP$DzC>>JB}M>QTS9A7_{Y1n zz*CI8blLTyr#xpp|COQR)k6~;BYW2lnXlV?c$cXJ;6v2ORQyZCIjM#!l$-K+k@rP69IL`eCD~ROl(j7Yn;Iszsh?b7iXEAOh zq=y>pMbF@#-1BZ8$49BECb$1b$u8jOwVRxuZJjWd6KMy9Mpp3JO|Nx#MSw`MmC1?| z@ugQ<_e_~GX>P_oYUZKnopmviI&zI^e^9(z1zYGvf0YnqW4O&F90s|1%HRFbKU5|D zaob=-6nz8Sz@RX^fb`IV@=d*X)Oyk8p!Y(ok3P6Vy9mM>To%r}WlO(4jU>3rk4Ppu zW(yC;r|FjiCr-LgH^p2+4n_L_3CZvrpL7S9U2fR7gmLo$DI{<^F#*qX>J}Lze}T0b z-Ce08U2z(C&sjcB3UEWW%tAn!b|SGj8-OSIFGROo4E&sgn*0N3J=e^XtK`~*KjGpE zheis0-qJ9DZGe~3%jphSY1L{*6atwtt%VM2i3fB(l*B6T_2uG>a0 zBtAzF!}z8vl&x#6N!1dz)a1M;I*lW5GOk>*HgKE?xe~DZMtoff#f1^LYe)|pw zxN6?&AWi9hwe&(A8~Zi;-bw*s(>{%TU`&- zzU$lkvUK@aS}fHC{q_(vVTu!!DQXaMOzMPX%qm!l;zZv{lkWQ@FvjNMxk~9~U?8Yf zQheb2Ed25TS_{fc6n*^Kf78o~1ON1n75OVuFn%bQG)b5`?Rv&4$^!oA`ur-J$7jh5 z^)B!*lAHB%D6Wh9eSN~rO+!xA4z9*z+j4t7&px&z8+ZqrEUVD*=?nJ{#n6enhXwbItKMyX_(6=H}(w54$}f|hk)v;x@1e?zq#v#5c#OJY<> zk>S@?9QS}`JAzELo?8_iETC($Pz*^a!jw7Ml7_=sC~pp-BKN>MVmEh#O1N zIY_soR@&V|0qzs)ytxqt0xeq&EQV56G@1fY<>uuR9X9nB^5@2$9-Z_O1OdVI$DbbHGt=-NkJEY zG9fvbmmy8Df9rY7_RJc-me9=H)RKN*%#;0OvB0G`U4w710yXE_z2MLAfa*OV z;)AwkXR0Kv<$k2pghTgQoPtG~+;Qjpa6*^Ya~7Ts%{eqoKK;n~C5&N_aCwV}-5OX9 zqi_NGj%i;xpVOoIcwGE5K8`5%(u-cHb=d5mtdk^_e?;SDUKDYeStobz7@i6?^X9$i zCqTSJTvTV^UT1A>PnKGIL?!u*QZp+qjA3%7JRbnKuB+`EWiUgCOpQ;POU1nz&n0a) zdiw0$i@%%*6FWYQeti13m#?2b@2kLoI27=R`B*I&1@p5nzw920CHU#{zr1++`pw?} zF=vv|f7opinf2GiF`D|JWj$gltS^3#uF7uoP1T{2RBg>gn#{0K%yf7NHOFlFL1y23J9WTinF<}^L08)v3r3Amb5AUK45QH3%1(c-?XTjK|+ z+KccZ2@a}QbbLYO4@65WtayS*mv2YjUT`(G$j3E{{3Lqu>g|i?Cw1*zHGE^GhmL~X ze^4V_sq|^?9dvc!*piI^WsRE4r)w~nm=hJu6?4YHSDnP!Dh9}gEzsIG%}9%jghV&V zg)(;tt|H^huM-T!A)CazN(5mvDIi7RwpJ)1eiUW~LyL5$>5i~qKTk70@G`0Mb+SZh zqZC0vD~ruD&E_8*NHnNCBsH^TQa@6;f0}~@<&;T5Ghz!+r}zZxq~UYq(qUt^7sE&= zWMvGb5^<21wq|zXsPjfH0Dc6wgPo@t$Ohg9ZbV${^-u5O*Wbq9Jbm>%di&EiZ~yl8 z-N_GcVN-xoyR?~=KKwzMxR#9Ql)?{Rb_A`fZI~6OZifIO0I(2*htLDUxDXFmf1QM5 zjbH7Cu|p4;IWtBTlRo&AT%{@pqc1fLrx0!#N&$%|y}RK&WQ^DBh|3lsq;0$%38``U zd5-HIGJmXv=M^%9cZtM{DFYQ#&QWCS@Azo}UKG@2IsjmuoDkX2a_Jgl{xq zR>TKtOoeaj_HdEc>>{}Nvf@@jps;ccpb3Gs?6m{F5u5*9&#-+E%CKbxe^||)Y(hLs zY;qAcL#YNe0`QIcb==%#>q>$+oiZ>H+(kq}Ui}tRaf$w&aV?CDJ!VCN;%kip> z?H$PV$y;(poPUHY1b$3ie~NaK0HdR3-Cp#DCtM&C-uSx-kvmdzR{};%c~OXBkQS@XPK@6ReGlTNQ;=_KLHC=<( z;3F(A4sM}=1zVHe@PtTWhgo!obj<}HGU{(ZH>;8G3OpCty zXZpN1F-A#)jL|l4$BaQ?%AT@R^SnfsVwHH!{g+CmliJ%D z)A?n#%;#93m=w!|Ycd!ZLB5F({Q;W@8tUK!eEe!*6%U+lrEDx)U?-9g!M0DaV;Xmp zQ~b1VOM}5wO8?^6l#NVeU%^0)DHK8y)O8|Du1rW$LN+7LD#Wn5o+4*SV#+=3Tfhvd ze|51rb7#Cq7iltGU0nB~*RY4WTQ7;#xH5`TVqPtig^jBzV;+gi;HVANEH55E4%?X89%u}knXnxfduvy@S%Kbf&#u5HtAvAf80H^H&pr6@r&r&@^*;RZ<{+`s46oq)q@S!&qSB$d;w{|Gre+yQ8 zX)L44uTS!EwMHoh$xdd899BKSv3^=q+G0%~z*(lALFbv0Gqx)gOaJ?LHlfAkSFddZ z!zy3I9Et0Bi^dmuHcp9urW%gLb~wl04cn(*Y1A6I-v0E%4^Q8`IC&c|4U{?W^0WVJ zr?PrhzgwBIc{>%o+pqO+8#4WKe?+)f*{N1fr(UC|?$m($rH0Q}@4kw&66n5KSn9B$ zvQ*u#;(S~0ne(HaAMJU|M1fe~4!~4ns&{TmLIii*>-gy|mFl)ssoPSSE;tCb3YtN@ z{8gpayaH=pF7sg}zPLUVldEor^5bt%Kc&6^+1&ek|Ap$7wUuX&RW@((f7`7}yi#%d zOXe^ZI51bIVh;EEll=NQ3ggtL=-4C7!iFlJG*p99F;QZJO=gc4iVAI_7Y1DG%f$UR zlvr_j4O0Wl{*IHTZJdjAf7QF^d)3{|x1U-}q}H_f(W_1WHq}Dv+}X<$0JQN@1#`%X z8D?3Lz*!TCh4nh~e>Jh|@DY-rXDfe6WJoMpwDjjUXeK42=pg7W=Ad_8k%A+`iDkgB zOzh)>ut$WNwhM3kxQ+dmOXZbj{5%zwDh`e5dN%Ji2V@7 zSslO2)^FOi_I15g70E(!p{A~_VGxJYUsZ)?FHfGna%wT>fAvOfo~Vc{)$)RL#(VXb z-tB~itT@O6x6*dDGO9^neq1}wFYe$eFcu}Y38gs%$GOOfK3J0#p_bJ7`IXDy_Z4deM*ddf>r{3vVWg;VO}Mm{0<3U?-lt(eZby;9YO5 zT4!TmHH@;Me@r63Ia^Oa`3@`S*WM2-CXI!`>#*K6Nbh=!6^!p@HFlSS`pxGkCmW!- z&rx4Cc=hUeX5h#cu0b zZ}LCoLI*F>z(Q}ay9~+!V}NF`Rw9=H2S``OA4sayunO^h_dT$G8V;RVhnB00xEuowLg^4v`h0X+(ZtQo4YI5@0d{hhYB+K8w3N{c1FAPyVidMriVq1zhRv8-GA_of z(5ro-K~jptXSuY9Nm!+^k{UUQa~F_j(yqa`f7+jll+}(prAWh}SS~1w)g*k`J|Jk- z`~v>DlJdz7ED~h93!D5kmSKh}4G;-eF%&01J-;yNnM@sy*F_bQGUjtzOUVepPmzEPS4LLXSVJw$bLpfy7WKfwM?25`fnc5r5)_aa0K$;5 zixlzfg_;&fmrTyVV{(`_(h}A6k%sAof7LGgZL}mFd--VjkT&A+!{x(S^6_yAJY@;k zNg}f;jP4Ke_m&x3jEvuK9*MylN!e`b)uM6n5}e&8$&FIv7X}0dEe?pFy~58}L*gD! zRa596nq%>p6+gNigXdIJ;h9G$Qi0xEg-yqo%U*`+pf7|@iP#t7df2Aq{`2A0f2X>E zJEJDuz|v&Ur6j?@(7jwlcGe!MfIlXb|5bniP9(hKV{8(W4lN1;$2qMoiZ1dk&{Yt~ zk}sFoU~dTERih7W7k2*Zy=(P0tI|TyW`WLBo8aZMFmke#x@2Yj3tJVO0~wQPH`K3~ zMBV$xDmDF3674je_XP+hM_S;A|akzh1l*Wzh1Hk7}%@oD{}vKAE=XO zMehSp$VfmOWRos|qeW`n_(SLb8Yq5?Ls2ec=w1)-!2k_x^>sFTIz^BUQh`z7Y|-Z? z!(~#M(T6c>2^aKe^=V*K4Fpp z?`>e<-voTT2?y}7DVPbM)c6$`ngzU&Dj8ZWMUKNkR!2o`c#^E1vNx;AVxWQL>w>W( z;hS~pUMg4T^0}i_eec3fVZdz|ZzwM0Fc`3LhlML6D(SqKgCBT5T#y8kN3CJ67KyDB z5)|j86bPeHdj&@RF1a{?e@Y&sYc6ln*qYQk=}5Vc@GTQ8a$|mWIE{6K25&7SE(XbS zjDptUvSDKs;f2V=y3#w6dnCr>3I~TJfwq7vGO)FuJ;(KSooc}yAWd}zjxClRu8`Tn znxALSyhbW)kj}P{BjzUo1TfG5dWkL)D<+pbG_U|~II6;^PnDHLfAk^?HEK01eDFRA zL^dFNf$c_6#V&jNsj(J;F8OxZxzAr6gi&ud5S7s=K6o`Crr3R{O)r=y5L){ckPip4 zDxf_|_O!uMGp`V>=5wRx8HpD+s!7mx?0!vptO%av6--?C43)uI2Gx`i#qjJNZoG?} zC}R^Z2~S6@s5g?Mf7JI@sSh7^?g%z2v;FV|SwYOLejPIJRzhVo@7#-+VOZd_A#4WV zHi4V(tn^d*F*Pw%R?5_S)JO-_# z9#XQ)JKt7Rw=F`Uc);h;MV|POUW*y0EZgh-s3UpomQ6=a14n=h1TFAwZQVAfc56tG zv=Kx*u~ET9u;TdLqLX3=aL4_r1T8Vdi;pFOQh1W?J2C*&PUV-7Zo$RHKWgThMF5?! z>3!^bR`{L~f9e9RCNz|9OQy_^XC zT5_*|FurUk>Z5i%Erd1c+EB=BS;o6h%J`NL@q44^;K+vzAsp_}Uf_ZQ<5_pbo-uGc zJT&n{9td*vr-KgrAF}zRzg|v>51sXCT~y7K{Zp+0f8cW29At-xH+5x&8!eHU4jq3F zG6y)~BkURQ7DE}4W_jeTsM9WYl$&jrQLE>GkcVBVVIp+k zt~igY^f*Zo4}dU{I5Qt#^kc>J?#EyN00Avl#Ghx41y305PLN(CZCQA+9h8i_UFaPh zIuLJ#e}tjkyghmOZLA@T47|wjsZ30a52|?qQ z;su=t;;QUTfNQW&I7q|S*%dx!J7a^ATH&$%e>W#jpZ{<|a!P>DLtOh54j%-v(jd`h zC@XKt7}jdQhgBJYZ4{YTYZL|><auA=LD%f@p2U2irH8Q$?ulPU9vEKHJ}ckdthyn9$0lK+u4 za3(rZ`SP$_mslOd3OTP1s9#vQ_(l9a-Dd9?ek{qY7s3@aM(lyL+p|=w_IJ#Jg!N#Y zgRX~jOX4aB_xd9!5>K0Jk#){PSN~Dse>^Pv+;){Uk4etulX6r~q9-vME{=XVZn~^w z&P0!VKsmI|;@>i^T~ThB?u$Ca!wuG;=LF)|sG>k$Her1xv-IR&U%ZQ+y?%ZYa;f7d z{kRY-l?4!m*;G;&CpkOmQ8fV$s6*}hjc6!ule30#dZFuq2p0$1)d_$#Znkine+qf# z_$x6i)Nqh1KwZ+(r2@5wTQZRzljhy#jdeG>SsIZz1li2m{=j7vVhQgIK{~W2>7m2_ z`Qp1r4?)XB-7zHld>IoXi^YZ$5F5cCme~X)P}o~{1+eNGKNF5l?cIymoRYAV7mQ89 z3cq~)*ORyJY)P03?J}(b)|90Pf0Ff(ZC${mlLT(5c?!H?dj<==&(+l_s)7ieBvU_N zYz&2a90M%5!4YSuC0mM(%dkWs!KVrp$>Z$SU>QUH5`o~6Bo^s?GkBxAkw_a1oGVii zP81C_OY8I{NXau<3F{5+h3HO9jtnz7&*%S0m$}>mg4cMy&L&`Y0r3DEUyo_UBzNJC z81n@zQH|q-%`F{V9x?yXXKGu6-G`2j2L#S}=ov%sk74{Lkxo$|K$!QlUE0~AUE?s~uG#%d;mxvMqC4YX!erLsWP+aaM zU=Y|iEQJTcK7e1hAiv34NR>NVgk8K-hH*4G$F(~0otL4KD^y(YRVolEq~9jz5=sD{ z29P+N0@HrknOgdg*RD-aAqFyh_WISgFW&qRNKvsxbYc#H8qtYIL|AP0`B>7Jeh%Ix z`!Af5JJwgWBknQ)_iUQq1_5DmCQ)Y{mW_WN}A4tnhRSw-EK*HmJ%KlgH zWn??J&vh2rf|R{6YDG;#=^*@Lm9t7!Asce)ja!(VVROba)6g`q&gokL&6qSunQpxizA z4{{kAN;3sTX(1Qu)hwT+Yzr>Qwm>{$!?-=tWwSvXF=Yy$5;YS2s((9~UM1Is)KoL1 z(I_s{QOs5(*MDtdMIOs|{^HHMzdilt^_zDguHhyp3Fnw2F2%Bqqm69iDZkg8v-Ou} zZ;fxH;V3*esbNwPk247qa=Ygmk*inJcVrl5w*oiskP z=4I=VOwU*<>ySI1e>^M@vDO$t(VUq>R7i4t-dtxa3b{w|Q+ZHwu&Y7F8wm5;*KeMk zeE;I*%Me|D_ylTvCx>@cB1o2D^|tOOZ${|=m5M|S{tNtcP#70gM81&&Ur<0M$+znMUkdUFESB z>w=Fioi-)L`b=c_`qgfHM3S) z?Pu)c@`SP*mCf@#uv{-zDArahqgwqbGg8eoIe$7-GG^&U(yA|B7HiOJ%s-)o*1P7f zHkiKZNv*r*ux>mYl1bhqM%Uq-BwW~UqoZ{Y4IrI{hZPGHny3ld0|k!2)ho4NC8)dR zuQ{+zYg5BLT})k<4RgI? zsei}>8(*%XGTrIrDzMU>Uao>8ZCr%yO}P+9H}yxV&_j0{Y6U^)R}8fZ3v{!&;|i|N zokm?f|95)13bV6$oK@tUzy?(DZ32%}VQ89L@rU)vC#MQB@`?LewGv#<^F;wH3(MI& z*`$g6b&TvE{dcK4X&S0DpDTooNqo?P?tj_*QX_hsP*Aykyj%CJY79THfWZ#VNH%HU zZ&;7Fe|z=%$G1VaJAW%PHjT%rBV<8!^T-)ub&8jX6`t6EbXffU_L*p7Ywvd3yjFU2L_kWKo z*_M_2{J?nkOg)ErHcnBqwUT*TwwiDv+*zuSzXF6<2!g5CGFmX%eBzCd5*IW^f{PDpgLlgdp3=U<+_{K+oOn6_zESr7gK zV=EtK4#i`sD{lM$UHMu}stJ^HRAq{f_XAIw3_H;c71uT{i=fcEs7bh>fgZPR0!wqd zNqY>F2J)v}HYOC;0nSohLw_%jDEI&zLAdEAjDpf5tW!7)W%Tdj9^Msqpm$qY@2y)3 z!Nxfr{$B4y5KNl?1&KmKMsSHp0;pUd2G}8vCIT59ZaJ| zn`{rc?9nE{%PLm;Pt5Wo#9#x)-nIuVL2P=^XG-RdxFKl?0t}76xPN6zY|x3hUc&Vp zdu}+RMYfJw)XIMIMU-DgE$w5=9a8pCo(@lrZRMBSE)e|G3tCn81w#&A4BLhiY-ooe zVF5`3a~81vmg(0%xBuU>Nfc+3V6_Hb^l{I-6-!gf+X*H_`2m%@I8Z z;79LH@g+%sKt7qg%iCciVVm(?F2eT@zud&PL!)k829RfhV;21ST~{M`haJ@yJYa%w zs+33)1?uRvOv@X1V*Sm~-MZmGvMDok%{nJA^lkHzkrsD5Gk^T7e`p#k{o(Bm!1;Dy zWbJN3^=&XwKjp$z2Ff8hGe{27tXnh{SY|c) zY8JEG+dmB~|4o%MR8~KFf{IOipWcSv4$4}!=g@`-Sr8i=B&^NunX>XtXuV|Hus*&0 z&rH^3ApB>gZGWfP-3YvVVVA4HefnPajA!4x7@13Q&L z!(hXcQSp~6uAf;z>R8h@8hE|~$YK*^Of@1+!YLC#O3b#;O@oM^{H)Z+4emyFcyt$v zljrV6Yc>JE*|1+U{21SbU$jj z<5ec;-GBO9aZna2DwU;y^2o9owhvfbbQcq&9rc~XmGx}2A%6Gf^-n*BRP=p0VgF4k zo|p|No!QnAZJf&Nabapi1jEUHg!c?i) z>Ar}#!z~3n#l;;+5x`IRJjsZ#q4Owv(WXfEB9fApB9k_(VI{oUqye)8VLZi{bD3PH zkZnk3x=cbTMgDk;JKtsQHD(q(e4S0xgnu`Cm;20?yxVf63HD`y=H!EO(hL{Yfo1QE z(@OC?`@OmSHX8H&*w{}Y7swuBmoIQy5?B7HUa8|`Vf^A82|kd@l1?nW#QF=4tT=zY z@UnS+#c8fpI8AnrYw1=ogK{lO0ZVnNNJGkNrLHaRWjx$q1M*=F0dqagnX`=3rwaefAv=M+@KkZGv z0lin(bFT9_&yj`1+vvDlN`q&934fz(>4|5TdBEXj+tv!?(U6)bXy-kf@20A)$NFN$ z9NSQ{)UB%;PMAU-t{4TR8e+?g2w7xj3JB*FB(B#vmBW9#ce{7ML@XrhRlvQT5)V){ zr<2YvAVW^N4mfYUTCUdcJ={Am<$$GoKE!3RYzJF}1Y4uT5 z*5a)$^Gl?_mW7W`qj`!TjL=iICbB+c_PcRBW|2^qp1n``kh%5||Ak+NMrqpLFF!+~ z>6mB`<$Y}cyz#cnlFt9aztKSqpZz=^&BVp+ytnUZFGs~dFE z*@AAUM-``XcW)yRxH~6&ntDeGk*MXAq(2f*kQDH>u`T5Tr_nFJL@jy08gaxM$zn*A zD;OeZ-~tE6blx|YSw)K_^=HBm`zx@1luTDl=sg zzF^wY?rAM5tsh4ZqJI%J`{6b)XKuimbo%enKHJ5rYg#8vZ?8+@mth3mo13Y^y!vYh zLYAt5EOsN01~REHox3s~r>+u?k%Z)H-+Aopi7g)9DmQQUU8s%1+0{@Vl|2_PX0^Km ztDZR*#UMg9?zO;!h~Ka+X>HMYZiQpx2NaKAZK&>+SpY>(Fn?Dhyjm*s#dvXd-F*@|&f#ZSX$kx>{z;A9+IeDqa!r&%{(5LO=_6+<41 zIVC%+6Z=m-%L)~JvHQzHDX7(M)2l&mRUgCy8>bdvdA~IiaaM8zFWJsV0z9N1I~!WH z(BU=D4-wZ=V}COE&}S_+ehe=#oexPCq>02IB42>>g8r+Lo3+?N7O`&&mpVgizH|_q@|~fPaIItv6sFp6bw19gGdSsi%Rm z?`oc+CWV{LaF!;kwT5pVkhE!lVY|KP`!rn?V$pZO?>%I5HXMHFyM)^J42gxQ_|mgt zyAfH5(AN;>%6L9}i@`EPjw7a7VLmMDZ@PSfY?bbf(hyxP5ul^G0|Uj#A92Ec*;w$p z5xgX`4}WYu<;|F_ixmggXwq%%_GwxSH~zwV*se__2D0f++9L6mH`Io8tzA}kUQva^ z^lvd|O?SS|8rO@X2R><~%1dtBTJgVE7syg^q-xVo&4QGadZ``DQR5i3Yx_w>E#WOv z8@51)#P{fF(P9(crv8(Bq&AJ<-!n>#}>hOX#e@LI}^FCEa94b4qBaVg1PtXHyI; zenGso|4A(*=y*U||MR?gUAOmbp7L#cyKY635EPt|iRP{FxmM{Yymk1IvA9(%YvyLI zp>uE+rk{9eVFL`@(1A#oOd|p$0Wz0yBLWkDyPqn{LU$C=8^>vsK?m^tZ!+ln!kpm_ zm6ijBq1x3Ge)Gt1rQ02BkQ*izwD>fcA-R{9e&fF28-e^@PNUyFBA$GAQ%2wj1Z0W& zl;)Yw8~BV4&2yWqh4w&OJe1~cex6rP`zKDRx{IOpZBi7Qhi9aEwR2b6G?NAr%l}6?@y8uNU*$v+2bHLAm7cB^5z9a4m#>NL`1IvBiGZUALBmx})qnD~A0vvzK)-sLX zYBxmfjm`p`gqD4*HcpqKhNx%ile_tCSbNTwctm=swG~{R+URQUZLusl)K}%8n|NT* zv+U8MqrgXOGA6{)b{2ZF=G|1v>%VV}+f(HWVRgdOFy>x?? zYQPMf^x;WXEI?m_y@L`vMbUqsb^(=jF=Ww%$r#lpWTHC&vMT=S-of|jV%3Db8g+nN zFy;4votP}gjI26Mxnj4)$m6xxJHXr&eglP7QGh|@H#c^GW^oC}In1dlLGcD_tT5eWSupm(4ar&Att zkkW3mqbE1atR0}gUV!%eS=?a)8xH=47>wZlvI)+tN!4DY^1pAZ1V$ccGnV4O?$PYb z^9V?6U{e5WJL;C0fhB(mVcRQ3GAXe*U%z6U6$yIFR!YrH3sN&ulmZ$D8CVNQtI;^J zci@R_%$YAEyntW!iM_--{t!Qm1Wd4RV0CFf0+mtO#U+7v%XBIsd^Ql?YqrFzU_s6n8Zv9J$OWtpZBskaU%T)IVFJ3@J7^WEr|?J2j){n8$=^9| zg&HT0Dl3bFm)0f%B7b$2h#r;?_;Q2OFXrOsD|?mP6R_HQT#~HT%NY$!2Bkgl#bSE^ zv};*p5MD$?(VDSiRBc5&MUl3TDR0_b!dkfZ|M!3WKfKghCL)sJuypzR@TyMXBMnT% zKDPZB`u1VeHevJ{3~j+am?pf~{5}Ak<$#%t(P{P}<9psDBLIdkCLYawJ50cOK$T{D-Vbu=z3fZt?EHN1yd)zutibMZPQlG!G5- zf4hBjNBUllY_uOmzmJdq;PKi=^vO}71Jggy(4*fM`_v(NYMCBdwojpr)25{lEEa0+ z;H*I{MP03r%(fI?(Op25!Ic@JrdqJIC>l?qpWo|YU4K#oKc8|s2_0}Q4_l^Om@TP) z&2paAevqEN-?uN+WsTl-ASJT$V*BJ4kBK{DLR%)*%R18`w}+ zpe|}|h<|19SHC1b>9xMv9cT6?9H1LJ%5G^m^>kQcw;!DM-N^N0>5=|A&V1416>igf}fTutjw1?SJpOKcxRbTHIlJzmftI5lh>JiHMHF zrj`S_Yei18YcdE3o<@R9rc&aV3(de}!n-bCNd?4NDZAjRHfVxmY`UG(6u`4c8CYANssJqzui;Au|8Plq{>5A{@`?VncYs)f zy?WRhaMT8avur*Y>KJZMtLAwof%5UDyaarAx=;J!`IS|gX4E3*eiXdPQ2)klq+pV# zb~vBdEZsR1j#O`KI5=0(kP;UxjZ&K{GJjRfQm&7@pq_~;SE)})w9(jAHd#sfCyli2 z_1-2us8}ykMK49kW9cfBOAB{RBSGzlM;(=?zH+hNcP#q(B!A*ubj1fgwv_|Hjsc|5-#VStjrZ7XV@@bJ+wA`$nDv35|%m*Cvk`h$BLgALAB$r>BoD5zS+Br z<>Md<0sjt6`O9EdNpg;=cq@}pT*#NPnv2DH!G;YMS)ac8n8yUeSLl9*>Ys&9JjOd&hZ@Vyn!DZoFjVa~4RBGr? z$G!ApAR)_d+5u&^P2)2?L6Y6e5f=J};H|>Syt!dha^7v22%GEbO64ZTO_o8|JGfdV zi+a{o)wC=%S6pJUW%)#32U9+>8$fi+w=nfR8a&r&S&3|EZdrJ3!;k#T@ zsT3LfC>nQ~o0X2J3P!JQ*-=etA?c7*mhQ%d|2Bc;w>rwI2D`a`LGLyFvenDwk&upq zXQ^9NRXkGPzMeJbdOd!1INzGR!4p8SJ8@#3=jJN6BETU-hWNN%nv6ODh;64>MSo?pX{yWY<0g}i4>uoNQp2g;H5IYHf)UTGQV<Cr+?i~SlC}hcqTe^2LWws z34`rzxsq6L0qCpKjnu+)SdBWY$z)af*gmof2)*s=&P2R%Xhy2L`}nLp*wphz?+iP! zeKkz0ve@f%!>BC@f~uQ+JvE^6hEw%}xJ>}MtN4JpE3 zNO{5-b|X4Y#@c|obRiW$O)e3eRn(N#KlH841{vp&dG#W>Mx-VE zg`?E}N4CI!dBjgcrAn*uGPQ!GZVAs=tdwO;4XelO?tj-nM=!F2v!kvOy2^o3?If<-SZ;M;$%32Q4!oozSm1?zQ zuE3&9TYtWHaDpm{&IVqY+OllKHl<|+7AuCE;6pkWQ`mZy&ji&?i!WVEnb|Wxn01VM2PUYGNaY%~yBw8Q*POIkWak%bBZYy)e#no&FH*OQY+3_N zdV>|F@(wYUVc^Z^Mt_^?CY0Ga=hJ*db9n05o0H`d;|B=WQwUdO2ZE(Ily`;*g7n3W ztAD8FbyVJK%k&)BPB;H%o%Xl%Ebx4;!oql{_;KrL=bNX`yR9qw<;~l7U0;FQH#D)& z_pUq1O*iYNg>GGirK{<>xX_UTm&sra3gy^EXWJ|@6IA2U!_Njp;tC7c(3PUJSgRpG zpd9WU*duC7J;!obzmWRPak7e;!dEa@Gk;{1)aR|8d^XDmEN|%buEgcP^uHlpee=_c zm(PD=l4@Al9jWQ5n?oU`-oGGLkuR7vdy>qdsmQ1h&{d&^{~acFl{`ZLdxdjP|x1hZ&CRp<+x$*KAmJp?Qivu40*5P{{zPTz}uU zr{#O3D3-=c2}rZ|v^!{iaWJ?X7aA36hJ0FSY@e5WAL^Vm$Km+9H6<r3<$R<^&yDKgyfo|=loIL(%W0&3w?>-R(6Jx1-#ARqpA+b&#rpmA%o4CIbE8|HKo$arBIr?OST%2XQ0)m5vwv`j;%ddVPk^rHmuD8A~i}Z+|tTR`bas zpD6g{{My!W7i8bqOCQJzTS5SF&^)em;+Pj8UtKLB49{7Z;*~{3E?Evaltpy%=FRIj z!=K)sycx>c4!?cz@+9gU-@pG=_d)b-JZ%^FcStWj%jeYS>V&;oSc1I+jyRyNzPukH zAEStldcFH!|BFPYq&ONbq#BU%-p(Mgp1gSVm!~gzB{E=aElH06i!X$Wm-;dS9TTVC zN7?$HUcG$r>U%gl{at;Gizi(gA^&xaK%O-IF`5d<}Jc96gBP5=63gDTk zmt3qIfM6^HKk)#EOxQ3T5)u&yQI3o;mD%Y)AR0DB-HN3gMno$M=!XP&Rp)=l2o0pO zDH5eII9bRfYH74&vBG?H#kK8eVjmEA!l}v#&r!Msk|@K7$3h2ihSQu_%3(o7h@aXh z(q)#fO@506qF@R{u;O@~5nljvhyPzrg28t^u$b=HI=z+YjCkDlYCVPH}^NUTz4iXV&hBPd#S4Sf6 zRc@ixY~f9&XI4MP>A+L&ItU?}l|V4FzF$r+ux_!tX8OE0-#c`%X+D3o?oC^9xmW*` zewV56rm~TS0ceYIRGk*}bHfZ+e3XDWj@|*7tAx3r$ynn^^10$r zk_X&WDtyG{C{$kRt4PC7$X;2en>xaNRZC95}{Ydb6Z-fz^bn1>-b)#NUz z`3@-TbCaB>9zU2{*;4+8ZbkLlJHYp1-<{hq8XSv-H5fH%UT?tz6m~r}s*bDG?=djD zquR>|nG$z0b5=~7xXO)xSrdXylQ~leVeX|Jhisc-+3;5WOi)Mm4p_j%;srHKS%N0z z5-v|pH<)NT+;M%&l!G_a+TR9s+JHH`fIbJ*; zCg)eL-<^CawekWDu|RcVRe9fpCjBR*-P-8?<4Cu@kR|1kkmRkTP%=|oRLn?3vRqW_ zW27I`@p{FU3sPV%rq}8ZqXd~4<-Qj{(Q_7yUKdH>DH+t)9DdiUb>D|4aPfyNewZ@M0T z_~X|wAdETnKN=%dE$SrEMRrcS*kocL31pei&*kL4yMP{zlSyKYbtsAFxNQL)aWO0y zj9%1Foo^R2A@M1LqQwE?!r@J%G{hJMj1qB%eKMv=N23vcy-*UuoR!Y>9-@mq8$n!6 zr`H3BF|c)$bOum0T0wE6z^P+g;Uda%AS^>5uTtV2FcMIUXUpU~n`(u}#DrDbQVZ-F zn=Bb|leV4HcGOfO_Gd_e@XY2@kQRy2b5^W-(bMODdGYr3o4*Z=L|tIs`79M1{Q~WI z7Uu#gt-^7C9hSI1$_$kTM9`FN28oJqa6+@nuM0;WKNfLZHlRj<8dyyVAcv711=to` z@_b+n^3PCifE)UPL-=hRhOLn1axH#X7gLl~7!FybX=w|m(!Mqi_i0TNvMhvE>`C;V z*SF<1epLoEAg`_r#3F?qHGqJ}F%`{bdgj~x@xcCn!8vR6Z0P$M(I~|n@@0jIznw{xlx%?rdK-=faSGT&D zw0fj}zd6_zP-VF_j+sgfc;FVYhe|{pm!!G_RvLfUKds(iM-2+Q6WAo#z?yf%@v_7a zX?Ui5A|Hi0n@0V^pzN;xfHShw=;1@sT2D`-#Zb3}e}Ub}f!1kQ=ucZtP{_&iz^V?M zWi^+me}&er&l*SX@IrStuQX?)0Gy)k+c4*UMS`!3#S|m7YxA=gjf!UUIWZp4zq6=? zkNiloigjV%r+JtZ_?@b^&n97*4@yElC%?RKRd4t%f33V|nF{cwpf&7J8vJld{vJ+UFe5;qAQ%#1=3|B_E$U%<(#9 zVoK+e_&%dUM*Gn((f+9qBxd}*cAC2%rFpKoH2ke$?`=%7jZz1CkZ{C_W?Bwtp+-fE zAWXfglF;JmN?D{Q(f$MDFJ1w^*9o5;NaKF~4Fj?=qyyh2n1P?;g=LT7{ObjC9*5 zL&K{Q6HB<`=N=0;ZN8P^{3&~G>5?`()|I&IGO+Vs}OSo;mQ z2BB~+iN~Wo&|W%4H%c`?l$5uBX-1kp>%MUHujd25`P~BFcAc0FC=77KjY}Mk_1Unx z4KIA^!dBv$KKGhd5AP0PP8(LTk>ZJOS^~FPMsv!d0foLx@opdBtWuTR)oNX^xLT5% z^W~l}XT2?V4UF<)Zp!SG&@}f?IW~JJv0vJ?+TXoEp7LsGc)l4ix)Qj5RHecl4_RP1 zL1K+|3<%#A4vuoV!FccrsEHsjms=LfN4tCAZS>%PMLC=_4Zesaa+_mOCVx-HuqtT+ zw22O`_PaG7w+^+~xULTPi9Hnt9+QT_MUnm7 zJ$??fLHL>@#%+Uq;`S?l$VkOtr?#TfT4RqngSc`bkxrE|4mo8F-xZvIgCBGc;i&d5v;_z670dzDW_H2d+rKYr;`76=x z#AYSo>4y)Fx46EQUZ`~KOEogA;Mu zK~biK!R2@zoxFX(yC*eEhZP$ufDiVMu_mX0UbZ^S8Us zg@Nuz7kRNVu^AS_MogTs!GSrWQ=gpA^CFWf-TPM;*Bm`|ExyH6%K{~n3G&@Ek{FT% z5><=+Ui6wdBp(4O4a8RN2Pz^WOG!rmA-#UY<*v$FfTVtW7z$2J4P(R%cu3Nld1f~# zmzLXqEDqAXR$q2M-v^9y+T9Q2KHH_@Sg!kYLa>nj3Bf0}YxRRZ+B7^#?0@8?{x{9I z!~oblWB6QRna?9{(i-O%1OJ$|0KQRzGZ8YOQ~5e(APay-(` zthg@j_vIUl-e4;=6kSzvt~e`#Go{1x_MwLW{F}kVkXTQdybEGqppVsVAWoGz!6i6A^&3&Et=aAYc%{HqFIu zghuiXYbAKVu~9#U^t_>Y$XZ4=wtX6Z)z7Ze&Cl~a+q>i$Z0=m2`SiZaPRfoiOQcmd z#8Htpk&JgL4hjzs>*9cCgzL zG(dQ-vRY>HmTj231_ne}?$Wa}0Db}>b)rG8uzon4nOosbUoRQA2{G~;Fb#~3Qim87C+-;((fN8dN)d}j%;b!Ian&F0kb@gJtek}E39{BqnGw!# zyUOim7|o{;NR?ubt8u)Tq+BfI3Q>XxH5sKg^Pn{SkpNE5)NUk8d@(Ds5;R(V%F94^ zu?9SfmyoGya>$)?RU}p0lJS^-ZtG=2+a#gIB*b%uBV(N-i~hQp(Z(?*t6Vr4v{ETg`^J4LNYTdPDL<_9J4RNJ9aK za$hP>5^^Y)Lu_m?5F=_CN*wC@Rr|t%Q{LUin^NDMu3A;E&#gafB4CVv`TcYWO$V`H z<;$m)Z``iUsh2ydJSrNc;@&O5fX1@e`PrvW_uNr?7j^LY-f(FdD&4Y%I+regxeySeWUS}5Ik+rgqf(%uyeLOxV7N122R#Lz4Dx$tY5nX= zTr%Cq@a*xOQKXXLEJbQj9we8nVzJ-RnnL90(3GbsfP7;KDpWQxAx6H;uT9vrVQOr% zCXV={w`OLT-U`Vmcsbb$KokrW;pvYr1kRT_;L*76FwdF%fzv5}jt{*_!J9jtg6fg8 zMm*(=UAzc!NHrfPy|yDUfcoVEy=3X>FnWPoM)~^!3(w1xp!LcYbg6;n3%)BDxH-9DpjoZ*5b5Y z=%1#R&xJE=^o2R?S*7 z58jkfM>fkC>!{18VQLIW%>&TfZ~ncnZK?uP7%dJ za(-5x(10!Te))aZV6BtSRZ7xj7^a-$#(CFFDtE7cG+CX@ zZ(D7$JpHvrY%0=(^3|#o0NTso742SnGSK92Q-1QFLVTtu-1AW6il)y9ic=8N(Mp*j z+E4OkHu1TFlSL9djrg5mDc8#1wJ7A@wJHxbWvuS|lOO!E;&$qrtujgTTEjl&)l(Fh zhzEX9qHKx$&QXqZda^TyGSkq1S+}lYS#ZQ#$HoNT+H$@Ao=d5_!IVP%W+K_s~wZ2z#g%7&Iz()@663b&Ek>>z^R*`6Q0TaUO zrjA-O^EycC$TV!tj>`&zE=WX)MaJ^RW(L@Vjw7m%#HhKva5yyY^J|!{KqU-^r^FZe z3x_ZA-_oSziml31jiaTjcjRBS8dd>~)@IOlV@IL(y{q$$&kZG0YaIVVbWCkcWQ5{i9+cTQ4n)CS%r? zkv1?|HFm4mAlaO@Cz)nN+QhN$w68zCdiocd`qOU!@LId}8VL4(Q!hFYNzkAoM+fa$kVG*fH?5Qt8fF1vl{G<+9v;#ZA zpY)5vztRX-ZPHRF;>H04(4ESxR*)f|i?js-r+f-gC-7IjnV_7az#>|eJ3 znd)cCXo%3nx#v}d>^p(WcdoCAAHU>Sc&L7%N_T3XG_qhF!cfgguDj;oP@M*omyDaW zx~Kb1wa%h{PQCbKtt+XMRmpG()glZ;^g1hqhMNriA>b-GoQL+}q+{v>_aIt2hBL)n z>4gS1Gk~b7JiCNO|3O36u1&OaS4v7TH9*8`0M45jj67rISOt6A4lpDacokT$Ky@v~ zKwCrDQpe*YMJ%0Vis2qzzEK0xGt(&H^Adw^$1v7^z35v51?R$21bgytj|YKki!=L_ z#X-N~T->C{=MPv~Rtn`u!OhG~I8U#7B}TbpY4AzA+0+nOJULquu6itP9@zSCn=cTz zEltX3pkyno3BZ_1psJUS(Knmx$8Z%n&y@F=f4)$k%s@=j>Y&-LJZsj=i&GgmaGHJq z%c*#OQUlg*W`CM8G#Jp$H@@)dClgm&CMdg6cPRy4W&9-j%Bk_VI0J8bQ3kc|SAnk# zpuD+uYtxsH8DRO%$zNWa{1p}eoDUc&5b6Y911!FDSS9#^LmdI{Y&&-XIqTg)&(h|E zvv8PcwtC{k3{*pkTpV!^SE}r@68U0Lu-qqqO8D^GJ^R3p`{VQ_WLyhOsy1_KlbOns zQCog1If18m``PfkeO6`w5%mTGrT>FqZ+G*CIy3`bxbW+WYFj33mt%+TL| zoYK?IVHVr|AH{)NfWPph7%XJvXVbf%+^?&V;%DF~srz=nePPgf1P&Kr7)XuabS4f$ zMCcXn%_$eXlgruG3!+_wuM{ybR*D=lK4&&|NDN905wY}IMDM}dJ>dve(TboNudWxw z9q7LaYaXVN^0y%g5BKWvDzq5o!`dZ(-BsniSsjm&=e&rD+MpZn!-&oCWzfWJW#XcW z{Q9{YgSGe9wl&bqgyv=NMz>)l{8`*_F%C+~8%je%X-Ob9ove`YG*c~ugn-G=e@9}A zT%rYUTG}Ez(`yYeLLxUUErcf>IOG7xWOjU&2Iqn7UDGM!3*ItI#8smaWLq)&&| zkL+26IMk+WrXDY&jmk0|ltg1r@~7kMhpa|sNIlL_Wvu4^c+_2KQ$`$_dvbW=Fr1VjCdxCK78%%`}_ zFUP@a-%eP624F0g4UeL4pM0lt3&M+KDe-sfXLLH>FyNgfmw-apD55EUMd)Ib!rJDt z38kd->jGSj!`SYHMA-&kwtX%ZQl^Z4n%o5#uKwLyk#No<$&W} z^sMxY4a(h&WMPcEgtHqYx1(tpdX7rmybg_Vcs4|?LBDNt zN|^V1(OVM|I^fV9kQO8r26*EDBo0L>02-rZ&ZbFWJ}%{4u0(07R(XWmDHn9MFr{Wu z(`&Lu1zFp|i?jNFyBGv}t;>Lzk}ZR|9ID-Uh8pr^TP8sV%Vw_Q!(OR9$yKc0b%@bMVWm}n8*(5juFWC!R z@A{t0q;*iC3YBn=as%-*pVJecjpAdvZY6T`(eM9^tGBv;q_=2(nOxO;RAsLfTy=T8 zDzw&lkG$=*dxwF?Bv5f$Ve7`Wb=&Lx`Q+(yOaml&%lBP%?CxD?g5~@fn78U)rphFo zCW5XdbTfDC$0|U%J(D1%mzw)?5Itj;h7(dH6l)2!SS9eVYmp%1iC8VuG|*V5c1}zh zIx{Wjv~+uaI95)RaiBT$Vvm)io@ycwR^K~eVzk9skkb=rEqtD;%Ls00Ic)_wZ+FUJ zTNMU5sFOMO5F(bwVT9xucFTrEBHKZ&^*T-UmY+_D^vl;j5slv10C7_&7lli@u{4?jUdzkcmDS^iZw`L zT0IGHqu3g1GAInvM9~!;#uefSbCIPS>C2aYaCdM^H(DWZV*>g*=q&Q?3iIR;rJ7Ig z(uYBjvwbimsR3%Q+gxgpo--+QE!5E=K&1*M^&#_CUs9+Ik?!OV}krJYq4#3(3BTknw7EKDqNbTgPW6Ji4 zVY!c(hoV2@8i!`(7`2k(R=uY zLOf8rU^v4PA2SHCC~qr-Vwbl=_EuWk43!A;xr7ESxvDcyw&1`XMp6XkA*(vlm>c_L zswA2SLXLi9l&K7IXC@)UG(RIcviWp1)L9R8)|NVX*Z;n{PvhY_nlp$3~kdot4gF` z!!nr5l&(6tPs_*w+pmm=GmeYX2BS<%8*o%g)AT5rG&W7&DN!~ytglye)!&6$lc0s> z2m`ukgcS;-)F`=RRW2T!01eE4xxD=J9w-M?NKBXwpxh!kje`IQ* zOSX#y%_+{67*xQ1Ic^cPo;3r7rPRzYABz^l*mr=OMqUXENG_98z9Ra6FUD;+L}37i z9d^V$4TWO`fY}f}>TW?5nxUjeJgIY)xS<%LfGO-&N@W~u6;)m=S(jfHv9)58oWJ-lQ_03#E0m= zqC{1cj^}p>hVgQH}Zxl;zNrMH=O?5H0C znVk+C3fFMY@dM>e=Usb^z4%NZkSb7iYhp4tgQ*xbY+#<}dl8*=imnNr-q^n62W+HM zXUCjd*S0>T6^WLAm21P{_aG;gL5d-DJxm7jsGAiigY&OV&GRriRqBd znZSzN)(k)n5y~@@hQsl}V7f$+B~ju1raQ76nNK%5*Qk2qnVgO4!$S`KsXxr0SE4}l zv{j!rx3Kpxktl0*)raYG|3RCVTBUOgLcSb|4%_k+0IN)YRC};xKu`USM1ytK)0~5r znHWG4<9%3$e;1zOP=T6iXTsdg(np1F1Zb-&T^A zf;wWqP9KIIm?a?X7fS7?=|UIK4q#QV0~ba}PHtKn2` z=L#5T)U=6=e$!fMbhyeU2z(82PxTXVlQ*@AnD?rGo+WowmJgE_*5aA_EO?$?)w_3J zq}TL;aZ0j=Db9_yqNC`ms$JdgYT2$R7PL#9*41GxwuBlz?cRotgtIg)+gy_xgFP`_ zwQ9=E6WXoLx36D5KY0`V@Z#-T63Duy+IG$8yMLg<;Go&`O0O94aNrAZrNYtj2N&6$ zmp2}N5_LRgP;%--j6(9+zDG`MDB0g{B#Ux?%8k%Hu&-N`so%%>8!xYY1l|}!5w8nIWs~ee?xv`crN8-(@rtiu%uDZ0? z1sP~P#GAFo_kIK5qrcqV3(|pbe{NpD0S=@0V>X%VKFVV=VYKp`2DC&szyDkO`&s<^ zN%Z?a4}Sl{;P-F6jNIEASye>L5LH%pyrD=le|5L8=# z|5|vizB177IWrUW$>v&rEb5iYMs=fh@-#Y~a6Sd~R zF=Td2eEFthxb$sR1-fnCIeZ|PIS{pZt-xF9qv{|b*f)&Lm2B@auG&b<<*$3zq_u2m zMI=VE?_u@fG&~a{NUIsF;#uJui;JKINmY z2GCPDz<0i~Sk~p!Mb!BRNiX)KCt^^INiUkUi&!o=X|7n0itA#P&Pq(EcY?ToE>-4MbEQhoU=g`fp5}QX}Sd%$pZk1a~=liAAL4Xj8P9lS_Dhyv9=BN zrRV=Tkl>vHgjzPDB-fwh<33Grf#jjcy2EMNva?iSWVmgBh3L>=FkOnryyzZ^&0~?J zlRn*PyoWG&EK`LD;82yAk#h`xFjkaKGPR!_uz3(s;7BIc6X2|V|INwM=RchEW{%Ty zR17)J#trTF9Cgn7t`n#Uu5|?IQ;-R(V9ffJiu$+C5cuO(;8}N=2}k;rB9*>&VPxjRdVo$gpP7a&e_;b`L78)$`DGKHvs0?ed;(~k;chC1-6 zg-#ueqf=g>SYBQ^MOhMYWII#@l$ivPn>s)gRpyW&7T+vc=UUlfPqT6)F;p3YV=}lL1Ks zNNbYWS@b?f

NYTAn@-8y;d+-m}fTbw;0&Tnb<7nfG=uqKw}Rhmu*f$B#)a)d=^8 zPYOTHha~#t7yFu?EdKIHT!jZ=S7B%Ytb&5~Z^OPZJ7TUFgP?1Fd!9|N4S}?hNy$HA zu{OH?%pojQ?zpLA;7y;_yT*@8zc&tTxSt!7dA&_GzJwdrlMozcc}hN|Wja&#_iD@L zyg3Vb+|Z03N2eK?xqkltZ}08<+cuIs@&ElQFe2|rIU;3yo-%Y|uP64*`Ztc9kL^r$ z&(ZN95|pqa2`)i@N>)62@4xz1RX4hU1_;VZc5W}c+l)m5{a9UHkKfweNGXu8I21U$ zd9D3~= zvf&j#dkssCXIz_?J+;nN>sSW;+Hhv64G+)#fX4DpnKiAdtWL;@Z7XOvCn$K;P@Rxj^_GSIVk3g3}&gAPukct?cq(4V6b2s>d@-t?s&2_JQsH zkVgQmubf66MV;lovT;q?omaHkuD#&1dcZrvmQ!OXnO3o-sbTcG5`7{ zr*AA+eb}a|BB?T*3clMc4J^u~$6beT%EV7x5v}+?Wmt`?ATg(ACGfgfBNH{=9 zWB!=G@49yWl89M}Vyyj?)Z#yAqbFhU0z|@5 zDaKIjY3te-tlbA{>}FH&>o@PC@7}(6_u}>YsBeSqXm%j1$%4^)qgeuZ6p2PR)xJxA zBoEr9&g4v+W$1U!=x*t^@LC1?)rRXOmxj#@Ktm?W%l>!Yzy90!f4%(cVVjeU0pS$V zi=)WA`E|F{Qq+evX`N0rF9Jh`y;kj!kQ*9D>cAqsKK1i5$+WoxMuJ4ikz1Nh63 zv`A0;&HZ)o;P+p$pC_FRCh>}tceowa7r+96A75bhV_QM?@TkDF_nYd8;L&q`QIoX* zufrR}o-GCud4ZOIo~8ct%EHX!?Q#M{0trj1DZ?2EjR6KanB=3igFdj9VHv-jV>3$jdncu7jHKiVZ#x!YXkFXe4^iUDi6 zI&*frx-c~?>ow#;%nVCJnt4ZlfT&wtu6)o zawm)fMg_2 zh$~DF<@s8Jrq#{ZJ&3Er#zIpxZ6;Iu2LX3!op#+E6ICZ;>7>Q1wk zBI_VyB+V>;O4b=aszk(^$=NoYqUPK%`ZF)xBxXqCK6YThf0%VUWdFWbRcM~fHkK&4 z_EdD5Y_5{T9CXQl6G~)P@)fYt`=>N%z!eOb!URflK)Nj`+(|CP1a>(7nR42={JE_< zr@#HN;`ZNEz5e!Lf1G8{|EA*jcOP@D%I^1$^Pk_Bvh5&sd0@m(Ypys~6ek5UV;f97 zk9q^9g$Mt5*pq@WeO~rMf27llpL*zjD@{7iCN9^K>SI@b=h%QxUHalH2OD-{R@Aac zycL&MfnF=6Xv7lPhk;bCNCpQP`{*E?g3{P*K?254%#~v22`$h-Vhp10K%3x3rcHrM=$~cC)Vu86)`;uwh?*YIL%)0JMSO=8ed8l@wy#^@P`Q@!Vm;;C zKxvkgrgo`+P$6Y^rHqmNI`&B3v8%E;>dnr|W-GP5IBI;3=q0#>w{SBS!8x8OQ6qHp zoEl7`FKo$>Xpt_{#daYk5c#=b)qetn5F8zPh3yD=DR9Kl{%oFQYcG1m0~4z%hZ+mw zF01zIPx2&M2b5|rXvF)u5LS+Me)r%lWG$Ucm=R??Bq>c{+x|MRr} z;lbd4Pw`;(Z19(pPk%i6-GiG$cY7zL-PQHzjwcO7^u1Xsgw*FL1kjOo_P_tnk4qvU zw~KA53%k&MAQYZ!NloF+UnW<876z!7WDR@@Y`;9@=x`Rsy_PrQKf;w~#Fc9!NHkMn zb`m||WF+cF1sv_O^jK)JjuCa|V5UujQ3v{e3FPWeD!oR9KpWYA-PDG-NL0wF?1jKQ-!wGC2Ywq}`jx2c zL2zpJfv>-g9&j3Tmj@Dj*tGBNq{3N$k>vD~0zP2V&QiK#WVH+D4O}^qao0qB_RMX> zB>R&IOLw$oY6>c;XmN)}BHnTp&Wge<_6us{KGLja=wWH&+({JAQI7PIYvElQozp;T zy?XP*i+ArMAr!VPSUgRbB4FBvIFN6&R!?Vgo~0A5?PJ1|dB8y2qf@yqwCbFHZH3$A zN~&X>CbszBDqW(oUZ(g?!JeFyd<8$hnB=T~MnH`L)Ftzu)==xBd8*LbdgVN;$ z4t=E~eA1KnAqY9kBe{gd%TBHTD!ty~@e_ zrSXR4DyZ6~6IT!jHlY?A1wgX-N}7bLS>thlb+^%5P5(vn3MEsa9mbLIbORKd2N8Wm z+cSTn@dJ~qDWE|a#TEuo_A~bRPx==L3g5hX8Nt|{8?0PujW%Z^HKvz*ce1{2%L=L@ zAwDE5;-TRGo-x>eowx#D{M*a-(Km0NzZgl2YR{i1XDQ89oK^5J;%2cPW`(iO1z+N) zbVVbi|7yO)GCAY^)q=;PX5g>r#hY)Q7cYx*WEC@z$|2x4r5vLm$%`7y&HxE`s7ZCS zHy~E_li@13xv{{N!xUdK#@3Z1s!pbMN4;m)ld>*bwhC~6ECsp=22zZZXq*Lslq!)E zkrA(`CLa}km%=|%_~uTpC5X>q>hfb@MC+Pn3-hCS%eRtsr!s6G!=-R6Ra|@q zDX-4uvvl8o4*GGtD%Lux?sB((j@e4DyL7|oG)2jABDskxe9@ZN^^4@%_IGj%pPlg- z6$?-he=&;^H3aJ?+7`?%Io!3BP^J%vqVKwkq2zn0`IY5bW`%D-!Ypc*tS|1dx+F8} z|8X3h&SDu-E^_bOVK!#p)y%a`>fFyZGjE2iv*t>F!>JC$MC*)p1m^gWHKY2p50wG@kirD3@WXxSXwR<dpi;gp_{#}`!bBKSEMH0m`sDi6L!3H**$bQ$ZQjx4))w0xSXr6_eRsnbw7Y3bM0K4Z?U4Na%n?b%3@u?G&jnI!wRzXv>o;x*qAD$U zcO*BA*oK{)(Q2b3*7DrtSabDsT@Pq_l^@f8_$2C=zeTsV$~|$0Qf^Z+)Y|gawt1(_ z>4Pb)YN^~Wjg^}-fuj=nhbYnLsg1OH+A~gvKE4`2Cz(nW5hW=YNf}6~xl^^b?uZxk zg9N3-j41U?ACshvINcdoX zb53J9BNd-&R%+laWgo?hb?mn9=UDD+n0<`mRn&&V_l6+*nSiRpiVbgPMtpQQesI61wGxOl8vD<0%MLSE=ky@Z)>JYVzK; zv2HbAD=;?OfZ0IUyy()}`%bT^pSSma72Y5$?s10)X6js@^7;Ahb9`FWZmb(xi~F7X zXkg)cWitLe{JzY4ckuoOwtUx=^qX6fQeidG6d}nEYPnr@TORJ%Njv2Lh5qD%p_RvH zuPuLkx1{uLSdp*ISTn2Jbpo+l9nR{ASt4YUbicqL;BR|}kQ&2_+c+|_sIY#2*4m22 zd@0^*m{*E^1G(;YzSQJzz79M3%JZ$Epkls%dG_+vi|0|F358ld4I% z&=)>c8gmD>b0c7r5B1!h(KWUH?r$%@`wsI~Wgx^+_a%D^B-(!~!A&L)IsUlO z+wymHmYGU$`F1i%@|;UgOT$n$75x7WR`;$%J=Z-4+Q9;fBt(^K9lUsdcJ4AQ_1H^W-RA#D88f${pVAq^Lmw5>OIkez}XNMt-^7wc{>H<-WP|)9m&Zl0aIX z)je|Rxm%k}@3`KY^6CG<*_REChYWh5HlnAFg|BQLy_1A`wt;#X^$&kLlC;=mp29V; zLYeDj&ZP?TWPQoCOfOu2&}jjqFvYpG@bbK8Q`P6$b{(B2=kaBVe`#0=_pB{UvgIUM zFQdLboGp*D*(~}Zdi`en&6`(m-r|jQVsgO0%T_dB+K2hIhJwV)WinSRBgxU1BH5-w zMPE?L_%U8-ZK@Gy#IC@2MW-|@Xuq%C3@;=3poH@b>R6q+MX?>d@i@iZ}2-!~Sj zM-NnahvL)h5`PWwT5hEJBZJi==a1VQ*z)0>VyNlnnxW`_3qQwzR#ApW8w!AyE0*Js zsX-F%3eaphXI@B&WUj(ZB0{1k@@)cd>=wu)XUO2#n9TZZ3|9r%gE@V~RwWB0RysJ3 zQT#DkTJ!}v)p3r@4_d^bv)|?A{!lFCXq4vOZ$xy!zvH*{fo1AcjHIty> z^+sNcXw5c%T-)u!0j=t+lgl)@D%eJm4Udk`kfvm^;fv-yo}m|`{ZS5YSz~suz4F7h zl?N^P`{gXhpV@M|n#NAS4({Z@k?cmEoOj?nBxF2N040S>I=ELJ>cRKufir<-`SI9x zJfwf=u?14qZyzX$DWe`m1CA)7+vR}(q$Jbaf^NuvqtxhQ2jxg_Z~NXuJvG4L7*vP= zXJw6ys93=~EG!4>14xq1W}Gg}RY&nkL3Cpsk*+sOxs?iBI*!^J=x<+q_v+auOVv{uKJnB13gu^&bnO*AGFzm{DIkJ~GkB1J;RkK}KZ|5Z# z`{yZtSm2$x`hb@=nGT|UiPj=BZykKBn9j_>rmQc^25Fgfr#ol#r3$xi69~4vV9uh@ zZDA%@S&68hCyC>DE{}3ROlZ|RbcAn5Ky5snpS`h9pGMdJSQZ_-Y-K}|5R#YtEKyP? za^-C&;;On1M(LOKTX;qBU!i03P>a1iy^gkjC@fOmW5Db%XFp@HaGI2Z*dDq9%9g`? z4bhT3>%d}^x5bSR_v9{!8BYSW}`tFuWKtEW*v zzRXg@Sg&TZ78mIP$8tG^`+b^ixWm)!*<_jart&5(o3oa=&)u3Dij; z)K*&b1lft$}dg)gblxk8Kamp$*}W$G`gJR zV}5sB#Q2NwD#`#J#wA6Z!{}>&-3s!5q4ItM%AwoBsp}U>vLcyt&E<{~q(P@r>BwoW zJQf2bCY_jatJzvoDx!XhNWW`T4o5?bpC-od(}V-=l2weG=ul;BsYN_Z&ek#G;%2~s zhW1#91Ej(x<6;4{da=Y4{HC0B?rKxcsBbvfxWMo>CCETezW!Oe;3pgX`dX3%vo+hv4+{_R z$4B#AWvlI+B_zM8uFL&@x+Pxcsw#tgl}yrEI*F|9FtkceIIGuD?GoYRT}D4HSqiK! zPV_pH0Bb;$zjY{!GEVjp80ywYJbj(Lln?foq{a`?NT_CxL4>aIr!%mh#^)SrHm=CE zSh1Mv!$!s5qJHNEP*Dm)Px$a}lvz3CtC!epB0wxpF@7(+oTWnKl6o zy`J@(GLLCqR588!O_adee=0wZnzx+udE{=-x2ICKL>pYhtLW2c6dm70A2|4Z1rXi; z+{SYN;v@O9+*wUnm-!S|1N!01ziZb<%rPdjy7vBbKb`k*oQS1eY~}N7R)UzY;?q2v zZ#OC=!bu3Mq#_VzG7^Ad`d@fr1m!mu5Nu>NvzckF8PoF6&JnSgf4H6)K*aizF9k_- z{nc+?!JRy}%|LG3cQfnQr2-8~;8#3*;f^yot*EfRx|~^AtHr=;CY<3%Eo}lxs8qq}dRs}fjn?u4;=UaMwNGI zbJt)D7}aMS9#)~40+}aTYzv1Z9>7Rr+=wk3yOcsQE=Z>^T`&hhCn$P7i3TU-qEF?I zk**fr(01=ve@U$`4`RW6kEuxz-fj^@EXT|~izy#sI3N?K?kQWBk z|7-QKe{kKuzj*!p&D(F^JpcaHi+7&sU}Omx@QG$Uc5`BUTAQuhPcI|Z|S?{EIruIHbZYWA8Klh***+*c&BBv!nu$&@R9cCU#hXnm#@ zRM!{va5q+j&!y`6;n&Co)fZYN#PR05&eXaMe~UuNs9z**dGK4xEt<09OxO?qPr#kJ zBZ|U^`$oDm{^Fk{lESf2{*we!xX}mf#umj0gkypl*-uSk8NM5{!uM(QFj_rwS>O(t zef3a;_UQ6q>sKC`SBjYbfCT=K{?Fiu*}>Krf*U>S&AwyrQ8d55GxgYA>XKvC7?;D& ze^jGLosuS1?Ymsr$@huUJMf8~27IC|{GpA$(AtAv>jSMq9=SWEoS+&+0@LC8;IY9Wb|#cFfS;+oke*_*~eSkkGwKdTPf z>N3?K;%G?i;mxp>J3ich`s0Tm zQQ^c};N}JF2AbSS`t+u|9!P++ByR(O(NYc$fP`Y!-rIN-e-^*n>2GNqf4JX}Bm|@5 zcG(<6QKots)xc=Eo}TDZ-sifsl5%CG%KH3_t}KDNU0sh^FLvMlJQmUsN}z+{A0mzF zpQf`}0ss+<-Kl4b^%LPYLO-ta7pD~0&Fgo%!6rYC z2dqW2Qr4!BE`J`Um(#%=IJ<(a-PXyqk2j!mnXWl)TQ4xlS=d}38-6My$dPL<#Fpzb zGeKh@K0Dn`nz^;@tbeAtLB#Iawp37ZzKmD-IU;Z7(B}fHFxH_SP`2vJ+I}Q$e35>X zfS}QcdEmGRMzNK)TtFV7vy70wI5fD63tZ#b^4Tg9Eu!zq8ZBPJeUw+5Z-P=I}!Q zvi{{Cmw$fq=KZ_xzx(dZ+xL1d@665Ic}9BkazMHqT}P;rcC}8WXw*8HZ2=Z?1*jFS zP$kO;SiEGBt*-|QLFH*TmyV1Wk%_&$lCxBkH&yp(T22^# zP~NdR<~|#S58bgN?YuJhsIPvFYDi7{$rJ8g)1BT7C?yx{lA`IfT@3=kr; zX?m(1&om#YS;rF?D?Wc}sZQ3ePt`wa#T)<+IGCsQ`>((DzE_&sD~ii}_6q-?Sck_ifkkGx}z2P$zDSUzsnG|Kv`_ z?UI9Uuo6Cz$iOL7ewFQ3^E9FUs16A11e!O_^ z2uAbyyc_6N_Xa);H+7EMt)8&w$aeB8w_lu>z5C&vmZtVLlenJ}pqMnd|Fri%26uMJ z?$>?0C;vM|uhy>f9Y(D>ef(b$ty=d>tt*eOpnYxT9Uw6B+Zqi;Z?3ONWRKx@St?ww zxQATlJ4fv7u#10m81Zlmdf2Y$)dW^!Yb_p#U!G$%3 zxWz^~{L$8M%y)$I!hSc!?bgmaB~5W(Ej?N%{6#VU?mmADup{fZEhiGe`Y?LM100~% zIYO5t*+h{jOXm@B9O*0p7exr-MY7tM$~Umuv4ezkkby1|FAT@^GH~(pm(TwC_Sv`5 z!&91)wD0lEY<)4CXIJA*@^N#h&If_DpKjL?b2Z@0SuTI1%Ns8-$(-wN zw8d~Yl|l!Ms|$jE8*0OW^)yro_wIe{CdYUS zHQ%?7c|0qSQaxgwnva2aOx&z9tR_)ia3oQm*3?AzvTiPM5hZMWDbK(*<3KV>pud{l zKHb0ZH(^l7FNSIQzdK%cQ`t;9(}8~u)coPUMO$=+avr82N1(dYAog)9r zaEZ;`?R-o8W}W_&*wV-jS#*nkpLpl>b_Rx9tN%nD`aC_ooBg;eZs9!92jI(kW9NoZ4}lc{nj~D!{vR2)kfUEiYQ*e2=zlb zZZYSY6KF*fv0)*9?kXfZhLVR%cO6}UCtgIYpP@e z4N1QDLi}MvJwkyI#79Uj5Y2MLQpoeseMV>;Za!`ziO1%KC5+wvVk((Iz@C$OJ16Q- zRzuqa{lDQX%iL5bh<7Xw(c($HtcV|Bv5918)8r#*F!x(@M&-7-;bwnj1gFWI%QWc< z^sy*Xqs4xCXa%Quxk(iWo%7nfi_EUJ{l+q6`;E)wWw*8D64aoFv?mrZJc1GU;_M}I z7sNus@n3<|FpCDhOtu@q%7IS6!xr&>Wb48{$UoYt+%dqpFY3*$sOPjFO0ypW<=jYA zzW6Yog@iEo`BL$YCb@sBc&$m8diCvmyM%kPh{h(W(L|M@l?s}a%8AJ{<7Gwz z-T)`kELotTiV?LP)2e4&<0cjGE|}5J$B;gQDeb|S_|Z1Z37?bN75_X{s8P0-{PSo1 zKR+tp5jd!i zZH!R(H{S1?M$8X6OcE)(1&}q5)MUxQ1~~rkY#42>;#Dd=SX0g=500Lp)?lQtQ<184 z$LsA9E;VO)smmcs^Bie);?sG&yht_!wl^71VL9U&Qza!l-q>oKPExd#MZRXmkYnoO z3m$+j)GB|z<~qtnp*P);aM7Xq5j&*lR}k`=3lgKS!N0sC5_~6BH61KKe>9Gvry$b7 z6T9bzY%Him<+!?lOl8v}=8@*-H|8H>Iwlo1A3Q>4@DpN6*~X?3Rfn%F7odW!m855w*);l)t&(M>+qHujXT9lBm!5wgB+E(0c9iXAHu%zO&NPBSP2)`r z(2RJB*NWyQa~MGBtKjTP_A``k@s!Uoq?5YXdY!nZ0Ri49#DP zAD3OX?furcQ<=|YJl`hb+lCTFH{97-qKSB)Sgm^Z{_V@xf0YNLk2gp9^|QBcpZ&Xj z`)PkT9Nyd%hFu0Ktdu53-(xy`F*%^;x*jS};FR4{J(p8U2s$ z+iDLyi@IzzQ|(QgZ<o71C|!fkzl@BrsB^YKf$+lpC!*G!=hd`{M_FXZRIj?w3r8w54r#)y zMOSB0<)z5vRrDiU&l@A}Y45!tPcfeoZ>g?h^)IfDrLQFjs$W z)OcEM(P-6yRt(hy`fFoE%modn_i`- z>i7xiDi0q$jO0;B;CPdmYP?>n2gw9at^T`82PY{CbRn~INwTDAI@~A|QjdjX5;qq{SmlVUD0b#SQhpdRAaskAD06@0Na&=A zbP){YEs$2piM@58QPI;iOtTgMt}a-$?id;y6_3j!f;+r3H0rC@-SkA`FZR+one{{Y z{QCo+8oOGc^Qy4d+Kz=!M>%WGelZh>N7K%!ndOEq%a6&_`pr#MTS`2@vnRFRyJ0A?#|ANPc=^evm;?{`QewXE-TIn#|3JF4So%@F)jYz7ia_9 z=`RsxQ>C8Uc0g}&&M<6nO=>gCQ3R87E3)2Z4K@!}EgF4y_55iRyp!&iRwkpK7ckXLs0 zE`wSex6Nlqwfq{-^6PQ^^|bAv0$wXa$m}c z?tA&>kE2RZ#YYe^(G{ZUrYL{>GB9~FJ+z#!AkQOma^wHN`)DS=_t_*c{6|@@~wf!HEzXq zl4wK>Cw~_S_2=n|=CV=!^;JU-KI|s9&co-?N*|w_hi?U7StCYGDO_&8f_ziD&$P#} zZjpxb9AgFPY5#xKd%}Etv6$cEtmm%Ry&q>&3I!_Os@ydd6Tk13FO9cWz<0*wiT6>U zW}-Z+B_&JkR|6|*r*hma8aj3fJ7}=&C_w}D7}Z+jJox7l!6S=wnJ$3dna9YUA3PX7 zJaj6d62;@ZRGJTZN~+#GJ;ZKkLp22#AFi}EU_=J=XV!nmZ{EL{>VW52Fj~#`FJIS4 zxOMgGx_(!Il68Jn&+vW*Ctxbnm3nXr)O9u1t@XOB;&dG}Y}qx|A4_FJ4FhkaNBh)C zv`^!91KJULRM&Woor9Moh!irCtAMST%-ciN8I2q(m}-2a4EChplK3?0)JfgVI;tzU zXL;5dH#dJkP0cLp3&0+CPZu@SODnAg^aH1lT91*nV>@Km^+(rkH5$gcE0U{($YVAL zlfkfvCG+5_6EGH+u6@)X1sa^d$}78zAXNEuL-~wu!3Fj&b`yNLZEc&TQGphsn#vcU zK5GkK1WCrPb5XRnv&=>C(Lg74v>G0JLoJEDa5{fOifi=h*}uQ}{=Gqq9XNu*C~^)% z^o_688Y;|o6q9IG5w;!=vk?xnMIqDRf)+@u2JlzrIdbRgVgPduIqIvixam&Jz1p!9 zz{AyX)RjjKecPHC+Lx-YftahEN*(ZOBRh0jD?_Y0KZTIpN@7X*5fAUIBkIlIiP4gb znuUK0c+{v<6*`l_@CxZ|+DoQyur-A5Prb6&$qc^DJewnZ0k(pOOO+y;AL3m)O~ehU ztpZcas7-S0tj6~KJTbFiI!$vy_aX^)8J{uo)HGxFB1#1el4*(n$YJzC3^gQmoTkg; zeEM<7=^v!>K?S5tQ<;_;X8HCbS zAvC{12eFOGQrp%JO0uKkuJP+cJjWe*eqd>6@F)HZAH)xb5035EZO3t7twf<%FK2(E z9xHSWn%)G0-nRqUrNNVL-#q{B&2te;r6x?6+U@aSskMbQVz+^_0~6#LpDJi0kF(b0!+w|%}XK2h8 zd>ODo2G@icauLzh%0%l@r@uP^bf|xFWQ$|y*g@I97}S)g)wJ`Q>k@jaZyX-*Zhq?A zM}z|XcN{ajpg;6qW9DQ0h5T!HMu(gJ#Q)wjv>bhMSXvN=>i-?4l?Y#^Fuo4>SddMLL1F@gJ!6E-yK40W1<< zny3b3mabQH`x_9zj$!sngDP_wy9Y<7TDz!)+;(A+YkrfF^_wPoXho`ZVhRo~Xe=oS zHi|mhOESX2l;qUn0LUu^UE5IhdEbU7XS@2D5gSy5p#p1APt z&G&D=d0~OSazxi-7KIzDZXhRS4G%mcJ6mMrStoiWFb_Y-Yf(+q@EU(AC9#oyAkeg6 z-3P86>wpd`8VF{w`RL$daRs;}C+{}1tyT@`F9FX$Eu5w_bFXsGiHA^*s#CsR37Og% zl^4qoJ)kWxK- zRQs=+e~R$SyNW5`oJX^Wd>wduD>|m#S!uib{ljqr~e}DP* z{rAsaMY{M#Ss#BdNW57j%PsL?^9YI6DN_A5ERUtEiNq7GH*OHdU3)Og0Mvq5i@gQ$ z4F#sF`jHlXiLPlexN)9DQH@**`Xp{yh`TI{RND#o23nbcJx=_MlCBiP#;QfSMWe`W z5pJJRu{6G6xY5k-qjlKbT37udWxNg|{bfFvFc7v*RttZ7u%uFh*I_gW zl=EWBT{K+UkXn~RWpAo(2JJ|FE#h1V`V?vn^ubO_MT~FuqlVoocF74497Eage^WkZ zu4TU)w&-`mmVCZnI_u;zO|I@WUJ-2zKyYHNTjHT(p8ML~P}Z!A8|v7kHVXXzi##Ph$Ti^KxC02#TVTt!5h zRAq3oZ~O8*j?S65_RwM~xE07uO_nh++QT-(!GiG^#3qMRv)!0~Y_sPizl7 zX=BthmGC^V{sFfmuh)U%5ts*AaoDW4B(1EI;6gL_0BKK=voenw#b-bn5vQt5gd61U zK{KWJnpEMy_D&!>1q93~?9zUaxTCp#bfA?TGPNn*f4%o)c!?(+R2XhxNoS$%I z^GXV1^^!Mc&2d@xxYic9pE}T|^!R@|+n${l!ySWjBFlDoPxiLFqTT^hb>1e}=_^@2 zj@OfFZi&rW5!W4$u)1j{+6>>tk#m$RN%>T_)}XVZV>1rABF6c4HcLO&55;+=ekfx< z^fN@~j8qM63k92WQ?V&|LHqPHb_vAu=kH&>dj8Fu@BUpZ*7nXfjs1lr-q(N6zI_p` zW43=21ugAU_d0qGB6|#UHp2)31tyxo`d3BjM>Q#2Z!-EL1hvEEPdE6z&P77XH$N}X zK)EZP&}=RR#FFb}MYwvQz+UI}FPb`!Gp6|<>-=7a4$m~Z%4LX0cyN(l=f`^7%sly5 zlClh4_vlo8>>Wv?d=(r5P!xaXbWL)B!uLUc@^%9Y$|p`Q%^J^#Kbx3VI{PU(__B zJoHCA;wsxh`iqSmlq0konO1buoFNDV!i&0926(67x70B*;&oB~G<<(B{Qc2A1xS~$ zaDb@D;E-|7Mp;+|2X;4o#oVD)PXGdBab)lFN_3rf zJXOzt?CHB}2$bH_(F5o?gWtJ%$p*pCd5o^3=D{;T;4JV)n>n~cb9TlgAB8!rcaP;Gu8`5_5@e*73>+t+@@|vPbiWH*fz297^U={jV^SCm%5A z6S!?-h~9Khtk_U{O)M#)#pj?9Itx9oC5X3R04ngU0j~>0-C2K(x_9vUZBRKkSx-`2 zQa$!i4RE?3cLNv;F;BD!a<$T-1`j|&107C;Xp^>iq~Jl+Imy&~{=w_AC0%;5HkJ+a zXK6C$`c~-_$L-OBM}HVR_~YQw??=1>e;S`A8#?jpn2#_GeEl%8(hQw8wDpKMD_oQu zZ;=AOXcE&!su+JAB(B8KDy79qR&!QL=&vO${x{iTMHg@`Y#cj+p@K+zxwbZ7h*N0l z2K4CRgWn$0e;@uaTF}5?PN9W3gHuy@$a#8po`8#&me#hhq8`O%T-*tAdkv%S)`<~* zESu>svwMtODhn=wQo3>LWJa?h@ipfwK$rb7dsRVlT)}@A*hsqC`tPCKf)9oDPIwv8 zoGT8d3xRyXtk$M&M8PZ@M}ay}gO91p3@h^DB?DMdw}2 zquJmJG{cRTsIz0%#mw10S}w6}m=AS4mU4gVC2Zfy#@4Yb!x=wWwZ%LMV-X|-PpJjyPK^2*A51T4^>aLV4vrEvrk_p7;%52}JZ%d<5;m5Pt0!x7THmd3(0;uYwEJ%r$3rc=N}&j+4 zY^FXe?(}ao+i*6wy0)`(eQZE$>F^mPTUshQK!9_-jh|y}M5iBw!C6YYe zGm>FX01K`iU|s5Gz!c9^%*L@TD^-2L`NWgFFtAa?8x@G>*N25b$wQe&e}3_oH*a6q z^`EBs1Xf?t!A=t?#IEbi2Qh!m1v@l{Bq8WenqULdn3^tmU@VbBbi{J75k_cEOoeDG zuGk1!>VXk4mfdB!#8^O$$yH23uovQZn_3-Tq5mgh0yIR?Et$cNy%T93mGv)Q4c>lr zofb9V%(JcqtZ*j25u`}Mm&crKr-tpG1l$!}^Coc~4*@#Vkj#i)%hrE+fpKFC8m!l~ zL-5|L!5isn0}fMEh~68qHtHpT1p^NY^;3FA%#`@UG28@SEIo7L^{52Y*rRI~HK6vP z=k>P}f3>^j>!3^Nhi7kJ!{ShV+;&Au)xy-sR5C&q)tl#U02}9U8;8RjGkZDoBV`x1 z@j6%-e9>LF78>toZJmD_7!HRp(6qkKxS0d`qrB6IAQWGon5cPKOApz%gYk#9>C!$2 zTP{7*-0~jR_1iM@6Af9nsIi>xW21lM*Lg1rt90&ekcJ4mP9Mx?hbHE!B*iL_0_JL4oyw&-a~uXDU6WSH zE09bNj|xwXUieBO+}L(?8Ly+xgEB)c|5@>=RlX?{BG&*=;=!B;SgL7B*>8Q&umu6pC?>Us89ki_DUXR-K&3gx9sl@Y%#2~@mh~n92KqE zQ*5>qo@Njo>{AAkctL_HBw%&NuxXTyaIu=i&#&_oc6YvNWEAfqmZiDYBrv5BAm9F! zt`vS08katf!;>or@>Rn8ioNJKP>=`t!~{bYNEP2>f>6MdNv*+63RxlI3wWKLn!oVIwww*zx%XK5wC$R5!dr_Wp zF6bI!c$_3WWRu8kl(Fp+F~Mw`5~h(diC_1)h9+9)yjrK};Cy(09(N>64adZ=@O*#z zFT)8inLplB{W5bhKH*vB3A!`h9rPFCZRr313b z3!|%@hqYbIoFFTqgStS9gZl-KLQ3V#li)nSzMD!Dv>n-1VqmLqgDzP@r&dn5I9)Nd z7Oi$?Tbh@9>0 zq<9-VtcZQ%2a6xYyr#o$75Y}{LZ;2VWB;p58lr^2!aDC6{e_BWvz{5Bdls9!cEw5e6lxCkeu9{LF1b6ss>g*K~ zc#HVrnXM{%P(ETF$dP%&Bkc|=Z%mp4UXeVR&qzRuN!rL$4j(a&lkk6Wc>U)6i;?H| z^6gSK#)8kvrE zi&%4T8%TWuQ)2w601P@FN(N2z)K6KdDSEj^o(EXXs(@E0YdMwTm+Zxk2KPE5P}>Kw z7|YCwt6nEF>foG%A1CoDW-*y#mrfJK4T*}9_nb?Y4@+#VMRk8rFPyZnSi+o7yhhzz z=6mPZ$*~aw*3yeAE{71)k^o)E_#qcgcyp0|*eQh>NA*$022RF_HWu?XV$zBRixA_e zFC&{H<|`aed^q$%C}`#wUVVTFM-_KF4$uwuhQl1pYUb~d7HNhk=Ta0|j z9e^vQb53d)427&oieb-tn>nK#0ed$-z1JaS8cqor(YGSTi!hs?RC7TpuMu5z(RCc-jX>TP=$61J{|y~*1VfkXUM{GX?ZQzXz3ivTHUJab74!CJ7z zxEyCyT_b<%aNJfeFTqlHb(T(>lO^7VrX z7MtX9Sg=n%Kj(4Iagvt|3d-3SQ9lKC8Al9FHHOJC4){f5J7SOTvC}vzgU|sN0FmR=*!_BIAZ|e;YS)31v*-0-sNY9fjgCvTHzWXj(-uE+W;Z+8Sj>o`~yFo_QKrnTi`;NzD^zwiGyHW&77Y9gqZC%}UGGXDN_fxP;5-O}+g}tk7VrkiGMqjaL7ujCg=7pAxW2JxM zE;2;UL9JMi3Ui7pe^^NXq%;8=89bEp9UT;_TyD70rel$sLi152Ypl6G&YZv=TEAAS z7yDL)kfCQ(q+;XJ6`KI4JmEADPDjl>iP^DIAk~OEUc%VhH-hFOM(8ZacE&)%e7!=2 zTwj|zz+&N$B6YoT5Qg{P6>m=cVgY}(%8o18;wCe5t=%#c(r}qwXjA}pJe?KcCx|at zy6u`ERL?u;l{YQoF&H(yLYQpBwnicEQjj2>#Q5ZmmrsKd`c?^;%taGd5r3)v|9Lzy z5elg$p3iw3Br;$LfsEvLjNF-#??WuMr(@ijg+@Oy?x#~=@(!Z6FaG}W#Sed;)C%Rm zNbs#ZwRT;?p661V=IM$(yL`pj8m~^!oo=+&PBHu9wEopsT`P^BoS1t@?MH?l%{a@~ zBdgAqXutkCstC|K2)?Tz59aZky-!NFJVt*l_djs+c)OgOGb1$is+)VBJ=ugBx=dr# z5Jbs$xDA$-dOU3^|8fC0^%H;F`e3l(o^YHTn{<^bEmtzLe+@a&QqCdIw!A;aH$NM@CEAtq%Ogqz%%cfWc^G@NJ3tR21dg+b_>D%gqjx)1`@}b371sh+$vK>nucUF|5*M((OsrP3GFh4H1OaVZfoNj5uT#QJp~s z1In`wM2|ZYx{V7Y2sWp9UkvAgVi&6&$`XboNF#h`_{9 zWh%!^KSuW#@%4Sqfyz=5F2uFqrAa07m2sD;u*aSd#@)#UazK9}$%q?C3rS7=qA7zi9JTJ87g-05scg`>3qMEt=K{wN)9N0APfs(fypxBr7SD5sG0^vYn zN%=kF5(40Yjeo^|iaJk4Segf)(b$%>Q_@*I(brk1k3GEO)wL1gToIv+ar_zh z#yZvtwsAAAu^y4&1ouEQ4kHK=I*j1Mif!`*BC2DOI{HBJjd- zvr*qrtLC*X?Ey-cZs4w`=*rnT+&RYPb)m5$N&`(AxON(Y$X4u7;~3xy9qH}IvN;1K zkD*@izdV16l3F%UQ&HJs?g9nkhZ5{E6k7J@INX%qlBd};egZ(JlY*D}_{?{P_3T%i zY*}qGP-(Jg(q)%BVWW3~1lzas$ZZ;tY@nPhjzn+@daY2j%v zp-&68ziF}0lFFf`O4iUk;)t3_t+<40!KtftCu@It+fCJUE<+=Wx-{&c9;44K3~KoyZrq_ zwteWvsWc(6yKC2d-hX;%a{{5xS4W_MdWwJIUildb%xpL*!h~5eSY}rY@b$6!iYkB- zhvpa)=#r9rIqQEA7sZqjOmSWZ*1704SPiw)kZjg{l4&q*TU55V+L{|&pz;JFjePIw zn#RRJjg|KcyQzl%t~WHORqh1)vk^L6!#5Nr&abso{{O{jezhiNg6ljH7wxdWbmw01E)wq(ZGxIF%=qUPEc8+6;I#fcHD>u{n{eRtD( z%Ur+Wg~rZz7Pf8}q3xo%hn9F30xbV z#+#au@|QDxPisqCE3QC%OHM#!5%$?cjDG!e=aiv;j9N<^#vt)$YisPWX^QBOL)JZS z_u5E5H3JPN%%?p3FNc4GVDYCf#K=@6yQ~;#lrfz+f;8%Jpiz%!SELNGU6_BG(ukfS z`@ZyCU0i;sB7KK_A4O1+C#agJpZ16^cOopacr4X!#ymX-7Q+?-sr;h1ZqxT;Tc=rn zH&`05Qn9;xyjjNrbw3u*>?h=q8-lknE5(C}d`aty2L-)&7H>b!QzD%BO30JMq#VM8 zN#K{9NCEg|kJddYD@cDKDb;_xua2PJBB2XsjIj6~DLH3H#-zV8aG&-CnNRV2^ht~f zuy4t=g@1jTCM#<9fh}iK4pGDSwi|VjR({mZtQNAMhEoUSI$0qW|A7AAhvegmy6Z}R z_oLt4oSYPv#Y;Bt)pR`?nFS6M6YYMIK5yg*Ro{ua^gll?ZR_a_3Fv=XUo!CM$w3sH zD@@VrY+f+Tl4;zoZaq)5V|8|=*pyz;M2~p}i?YS>tYBIO24OdLzd;oA&?}m71_7~G z3#bW8WMDQU<8tQ>;|%W?ch5GSV%}T?(wRl{?)|g3?_a+DtJauArQJyU*ZH~4XI`fN zxrMusQFvGt0XW=-Qwx7g*^nq<+$&@@14yt4`e3%e{g;6!oE^1K%E&5D7Rz3c^hTa2 zQP}@@_Wk=e|HGZ~fSCp`DH?cBF#>4DW0nXHv_?*MW8uB{)ojf+Y~RYirYqZueKICa zwfQbC>g}@S+iAiF2sNU*leb#zQ&-zRiTroy29&|Nl5DsO0X2UgBp;DpPTap+yj+gx zF}ZzJ(TxR}Vu_$H@0OHnLSKJe?hvLL&tR=&*(sG(_3QE;MD;_g9HFj5xPvFA3I0u6`h~gMQ0rg6&YAp8w zH$1JeI^kds9z}o0$0GG?lErFtoNrIjz%l2)xIi#oJEjfPvjRkDIcBc-M$@mXFM}du3hW5er)1bST48SG&yF( zK2u!2kKNKbwc-$D9NtLUu@UZ?HF`1F3K1iq8kc#yW&5AYN{sLxMi=!vEh>CE+13m@*Qx!8`lFVQ7Z*-By=L7oRHn(i zqeyr!%Z3QR&}LS4W&RdF_e)q{M((}nZ`0+E{_RS+_uq1-t)&-NIk-jJb2jllw)_{X z&mBq&9;x9e6@#H_#)-`gT`!*(JlobhE=boTrVHf2&$0Anr?Dhunw=KhZmEHZ@+JFM zBd3WxTt4VjI;x^WkiR)msvv(eOuBS9&{U<^h+B9km;KT;nb*8f_&QdYHr5(is^g8Y zgcc;_tY_lvZcfZbi3#R1q^0Z)np;7mkx5mb9-~@qjGM9~HAcmP6ozO6*my0lJr63{ zth+;j{9sl2nQcb;0spR-!J?*3Swb)VfyGE<`o~Hc^rK2U8$>bK?3x;AwrzN@eYdsD z{{rdF*@V|>^8Y;K=nid?(*HRz;ash&Z-t)!8__aor+5ebkn!lx5bv6(JA7Mxy&%pj zVe;FGRjdRH`qU6lKa7nUU|^+&F?BaF-WX;QxLnhlv1`q9pm_qJ*|8nKRCjQ#dxZ0e zB?@3E$Z`mR-hzu7w;+|+ZZB5MaxO*1t0rxq?BJ-t%O~Nk0F00hvd-lxkF!9B2oGy| zMw0tekhV@>vW{k2o)x_!Dy8?jIb9O}qi|co$;AcTp=`QMqB|Yu|G&O(f>O`GJzFCn zjL2pcI$#ZSj|Vk-8Ux`UCe=DA;RQGM3&#Tc;Rp^L_R$H|XGkdTi=T3o)pjzz!^iIc z;Uh)*U@`A%BNVN5;x6q7uvD+zBw^h|7p^4wa7}~z^l3jeJZawz($5VPn2R}=WLe?i zD=1yja2=Zpi@xS}Up-!b*J66xI_zK|x%6b-n`LF2?SzVrJ^E4{hf+nyc=gs6BsN_1yzJ*$dliu5kI4@xYEl9`dAPV(Mm3!2VFWWU>EK-P@ zyry9{W=;Ii(K&J+j9xcN^7hk~=v9~d+im+3iLsksBG#UK2;%2#)QHhJguu}%)mUHE z#MbF^qj!e3u=TKEl!PQl@uC9OUl^*Pb2vw{?T`R8uDyc?mA_ugiG{nGTwDF=LS3!o z!t%pCoKyc-@#GNzN7WVf%DMsUwaz3Bw%LWCG^bv0#@Rq>na5t}L}YX9KmK&up^Z)U z&0`U5;0um|7LGoVxJ|J8_M-2$UDzt%Y6~r!c zGs5#5#2@N*cwefJ>4!MGg_`i9tuH&3b1qQV0H!v*@2VNTJ`H=cc-(+*yNUBz6Q(TO zZMbAOO!WtAq7>muq=-eikRvge3G|cZ>&NYkCK5bF+;nh}V*y&Tub00)AY0f%wYI~B z?r@#SO0|5q`y5Wd@{2s{MnMvjP3lQ1pGTXIf`0x8OJf*>D+(_Q9DNJP|8RH?7O59n z#~AH5)VwM*EBHx#2N4LIGlymMOd{0oCmF1)7iCztIayvmBZ^HxV(Fwv((~BtSk#LR z3ng$hLBRBG3Ri-O+Jz-tk_P|#85^Te%4cNCm^6S3SNoT^jU5LeVlZerHc8OReB~>}l%0RkbbA1$?_xI%> zf^T{TL!HI_KqA4g4AZfNFpsRrJPd|Ic(mexctx8Ps1LQ=W7TD~1>b3!GwT=SbLrZ@ z%co0-mky2y*j9LaJDs^rLF(0&Lz&>G%VJ?&x6S;lENDDW+7O%&4?M0m+%q*2TCa}Gs zD^U>`1M^DEk+=~Mi-2Xy&bG9yXK@PP&T&36XFxO<({>_Ik`zTy*r2Xa4N5r{tm@(? z$Lm3F=SYJ!xa)0^Y@R0p3RyyHiuH~1sgaDLHfpZ)FT*XT*fY40dzL`SSmz#Gk_PHm zj-E?WUYFRMSk~{CEk(aoAxh>z6Z^!YPKPMXud^75@Khpg2;=<3+ycXl z1Z)h0STk~zl$9_JNvo6stYt%uw7Yxwx;2vySu%Kcs(2i+>X<8Id=Fmd^MHhN&Z9H& zbYyj-UxPe-VnXbYDXO%;Vaa@9yF+^gicAAy2F{u1(-=ll3=jr8JZ1Z73kH~MH`RS) z|Jo@7!)=t^FXuk+0(~_L2z|-oDbnP9A`nT^NAQpdhx(TOgt_C4A7F#9DuRe1hg>>e zI>-1op^_;3TBBKgBGrS&-A82<<7=~$GNn@Y2gkzc5tp0(R4(jUiBQm-R~_h}V6i&R ztK)QIASHGtQt8)53i=5~yN`6?H%RzfbAA8>2pk{3w3}g-$fvlda8sct>(zSnXXdIw z37$tc>jeqJY8^!op12{}Co$!Z`8Wg<4m+{k9iWbW^+Wmwtt$%TQlhOyqie4X#%>`) zQW@S9y)Q(gu%Pk8=_wSXv_(hI{3{I24{_ys9*=mTZcKSN2Z4|x!%$_2_A~1Hcb)h) z@QnfY-Uiaq%ndH?&FX-Uo0pjiuxWuQtU|F#DceYE>Dn_v>!ItrYT@`{9oR#9ir_Ir zE!Q+RF5G|LEG24S+VL0qtHCRnRI7T4N(+Kk0WFf-jqFeyH^?~9l7X)h9@>;@oZ)$! z{WvAla*JNKvAS@~;X%EkbbsxJs+o)hnBS$phR5pZL)PC4=dLK|R}<~sxZ9uC328dh z&SB&saGEAowpjfzxQpTRa02BUu=pTm^$}1Zk5B8j!6vFYP~}6wM|;HyfUEECC6V6G zDr4uuYNj}C;+!Fyp^|8cIR0h)6RTQ2QXl>XLma0S;3wmiq*tEumTKrp9=&G$ga!S1s;H*^2NrdrF{ka#$7z$-5^Pt=s1}82n z)=-n5bCG+-QCz9;AG1UxnuK8nFwByE@&s%C)^~(+Th<-9IO5=t72(JAYvdLyQ%f<* zDQ-xnkX?uQM*`ImvT?JNj7084T^cO8`8$g??_@#q{!p0&y21cKNSgJO=8;o6p%5rC zTEQ;MD5(i#43ay@pi(Jd#~Wu4u92f@ELU&C?{~vy!j{4VIKDIu5i>;9b9kSiaQbf zehMOVzZQOF5;)=C=G6BC!$6ZiI_Pwhfh0^%j?PD6a)qf}Ws1uU3`n6`t5<8D z;f1>4F2zJEfIy)|=pmADpv$nvV>+rEVJWNlXt;DE7s?8H$<%bts2xRrh6H&tI(Cbl=d~Q3!H%! zrR*}2GRlBE=RI#rP-oBbjzK}IKD0wUtmB%(H@lB+>;2HCiDJRp6b+cN9u>rV^81l$ z0M_GIwJ%`DPaIMkn2kw~BK`tDMPpllrvxO{=ut=l+q!Nm5l}xyzsm0XI17I&gkY~j z^0EQ_(qARQBqw^w_K&?{Ey+{Vm;Xan7G*;mi5nn+&x-MsT8eWBrJJy%1AfDtNgp4h zemN^Hl!ohZi*_Z`3!kx2)^K(1!Gy%*r_yMG=2nqxwVRg;bXe^uiRS-7lTvx?RdvDV zA?5%Zgu}DsBNVIltaUn;V(q-3gN_~=A=ayV`kDYKIY-Ft+1s}!o{<-rI_?%?j%qfY z;qC@oS5BEtjm{V8T|+*s6!6kZ5Y+HyBD*e|0K5BEe4<#1r0S~5jQrTOB0l2Igr6o0 z>7*k2e=u@DaEu#X|HycfJpw>1F-8aiZQd%q-~IO9Z)=o#F;46?pTrM@_HZBmfZ81}pZGCwStOcB zT+Y`j96_P6ism^rVg5c-5ZInB9hdj$R@aM;vbI|w6J297ZH1PzLZr}yJfdz56idJ6 zUn;Zc3ik<~86IxRDKE3%2Uv*5dQjTwnhOQx{pON_9U&+VARGY`$@_2l^C5#s{j`&> zVk%6I`KIXU4l2`2f{2g0<>T@jUujgHDv_>o80V|!|7x`D!rCohN8I;VJWqu5@}&25sLF}t*GOfYynfI`NVgX>p1RTGX@FPs zzrc)*Kx5(OG1zA5Y8wi$=Sh5nv|?l$n@$zA5U(|a&OncZ3j>mHlTWv4mF#p*b)e@0 z=4NMzbU=5O&gq+2&Q*V}qHa5=>Al@6WHv52n3rw-84+w8R&cxwhoh6uT*|Zn<_EQ! zX(di{5xg5b;Lc6riE}ljKgeMr$VPPsKvg;2zW$y zZOFO*gRz0(YuGec4z>C|mOqvig7n!M!oob~4;q(&&X3u%f9CpG++&LcB@E(FVT7B? zqGNiD`s5w@9PLlZZ`(qVOtYtcmNWUKw2}6Xi3q3dJPtWugEk(i{EL#E-!^DEhDgd2Vzs$NOiz+U@*s-%k# z(efB0I9Z{!oYue%wIuW);ObDO;!ff!6Ji>w{ixb-CoBbgLN0WbQR$;d%$S)K9*H4d z{QIe(d#FvLnU>u51F`W6F%&dwmy`e}(IzE1IvSV3qkUsSaE9d@9JaUfIH z7nzg|zdhRil&QHEy!$j;D2-Py9JHJt?gPTUI%VqgnYe^v*#=aQNLIkVb$6WW2SqKiG$eqpwF< zNdEw5mdueO(r+*4fet~vADjL!0}oyfk*zeD{JRA_A3nnK^SVfitWe*6huK$(;w;%?@Yj>5EOau14%z5+r=p%f#s`akN?KgU2mV0Tv2ZkH^;k`2dg;PxO6!MyK9ZEjU9rUpqL ztM?w9eNf-34Hvl?v)uc$+__=r3ObZD1N-`Gw*!oQfd~qC<0XtK19-Kj7I1Y&5kk2G zD~*%-)J}Njs8;;lVbzYHG}x*GVo83;?#S1amhSs$mPinq3@pMH1<>D6YAV?j0tgOs z_dMMJq9;pjYwN4DlKFOME8`UBK4mz{GA5CuS8s^4$91b_`VO2{LxloYJhbkWkvYT| zW+%=vz_DHv^!BF;F{Be6%W6`Y&Y1SZDCfi!bO$$i=ZS!$z7tn+jF#4xP!fn~x72^Z zl)sAbUop@AB?%lvdb+CB_dM|BwRd{LD5!a1JuGt`?!k<0F-Rn%taah`{@qITIHP$G zt;E&7;;C@%4~EkFC<5ry6p7YTXTVnnn1@Vb0sU@CHBwl)4i_8|(Wr$N%zj!-7dpjn zK^$~ZSCr9Q39FX;-8~)qa5_M6+bz>t-?yO0FU07JVb@}?b@s~6m8L146{@2&(UjRe zUy)vkmnl$lu3;!{b3I$lFMW5z zpE6}$C1Z`9huv}F*hozL3dN%&%cHv;52=|#ZvEGL9w;J+=rh`({(I^^0JN;3iD)J5 z{$B>u+a0kD_+${T&R*c>90;TN5!n^=2{1+chC_t)Z2#)#H-pZEuc1Ybro6To>QNUs zglEz255c8G1}ADY?Q9+vi6m|q+z<994Dn6_U9hW2kCXvz=|k-dw-Bm5U&LP-tHwB{ z|1`?m4vIs6ZPy-x2DE0x1KFVCm8-^RGZFC~j#jcqHR(B2rb0D!Cprl7j48p!dLX=~KN~#ian03zSwJY9 zgQTkgP!auZ9gc+^2;)BmBowis!roL|WKf)OkfS0M7@jjm7HY!^`Kf;qTSb@$O*|0e zX8rMTwXFa%om3a{%xUztJUc_rrUoLK4Cn27k0z;1G5Zsi`IbdqT!5@&N2YW`*>Rlm zXM&`JU2kPpt2&(<)mB7DJ*>UEO|7Kjs7lshWj0WonW|Z0g?POvX^fQl3WVXBE)_*% zLO&iv>$yZoi82i9xkL#g(l@GWLj5mrNFPgR|kQP1l z({kSFvAb(oCOQFo!m~|D2>6mCKR^A#M7Ga$~@5h&G;nif9R`kUA=P z(sZRBR6M2n{G64~dlSDv9%ts+Jpj)uR0_HM2g)dvrw2HpN~c;ytb z8r2t9qjVofM3y~_nk)s?+}zs}|9c-3pSo4VR+#AL$m*j^N3|;LuNzW5PV719Go`6# zdFP1P646~Lm2gJE~1J~D|e%586Jyj^5eHd(k>ffepf-+8)uCB0-*wrLnX+zc7Mq=+cZN= zj3jS;aNis&@z<#e`nX^1FTdfrHrwBH5K;zDZrssJlp0k0^9J;`dhu*nM0{x3**tuJbk)jj<($u)@RdmZD zkp*NYZjkJq*;#a<)z>th=N)0PVOXTC-tkuJacU)cM|GeIqp^VUWlP8p<-XQ6+g7aA zo%ow8axU&8g-=Z}RdaB$Db}-!_%< zC*23D@nT>Y%$s|{y7WLLRZ4FaubZAdhb4|oDiCzY?BWs7$=n}Q(~jp^M1XBlpEJL+ zkKgRG4{2LB0s)t3eQQQ}v_udun)EzppirN~{8^IOPU93>qRYY{RJggHK_w zw~)mTuSqSwc{YD8fQ@6DEzSd3`!8)CRikbIAP|T(ALYuC%l)bbX1pMn@LBu8r@y$q z@L5?MBoCtHoI`gJ^@d%;eMQP^%1%=cque4VK>cPXG@bbPoL-U%zP6KA84>?+5pMhS zzI(xQ^FqRw(THf(0=#=X(9`Skek_AV*u5@v>6}I_j3@|;@kF`CpXZfntw${%6xRf~ zO#*swF4Ax;$OduRIxSjLqRT-wN|S#xl_l^5r>!{)lVp~ALGhFAdsALUs>Q0kqu&XF zC?4OjgcHc#t&!;|hLOS_1aJIW;I|Rl<#+_CUb=|PZRY3*$aFGER+EyD%)@60l{Q;4 z6;Qd<-!aL=Uhj2L475syy=i=0EdBV^cLem4PSYD;UrcvwOkiBI{5kRUe{5i%{s^#_J7ubd)Gf$4<{MI9FsWy0@RX9)@yl?~(mDF= zGX(>X?ltEYnriD2ZZrh0uATeYu|pSZmH~>5ziOq{qZ!3$OL1jITO6i$qTEQLoQ9$> zZ%D@km{Y94TcQVCf??s`rfGp1W1mGc#xj=6f`dl9VgiL`Jgd_SqVlTs4}@tr_(x*0 zPiPWcB{Ykjh9q=H8N*>X?nxslTk`oY#JWZ0bTwY{AiYMls+GpSL4OOy%yD5QJtjJO$7Xbc>cCYKy34imie31HFn&+2*l?}-q+hx!Y>Eyv14jcvSt1=J zVdz0dAurCnF!l1zyCw4I?rOs6X4lbx7Hx_`IVcz z$k^*tK_IY!o)LloCFl#3234!d=}TVGR`f$g!yqV^fh=d`-rR@|I5~+Wbr;%{eLQxoT{>l6yV+hu(n$kxU8u(&V;?&fh$lumyx4matUYnI+4cC-GD-TT)RK!4e0&;QZ#gdh^f9p@G%)gt~$75C!e*cXy>BHp5f*AR9F#HicMm`c>7KH8$BFLTPl zaGR9Q67T!|dPL;g_z7LE6M46e4P5r)3Qg~g-N(pwJIiH9r?QEf{%Ls^l|{(scJJxp zCZD_gfk49 zZSw4UE`wYFMa>wjgyS7lnbpD)FdI8WaC`u%vVA)Flu37PWfG7$NK;+1A5y62ZSN=| znm@8i5ZDCjTyyV1s^in+D-mN~HD^Ar7Z#tm%yu`|{3_hsYNwEoM5M>sDn;I?QKTw7 z5eb*I9*2*Ij?uujPdRakTPCKz;Qr8#$KnUQ8oZnovWey?f-fk|XjDc> zKsWDDZ(Qez9Aa)sR-`6=9kq&>;ilu`vKCC1fHnklXwdzk=$OCpLy!gQ8F$3>b?&fQ6=Q%q7fx;t|gOC z56py+-%WlX3fgO(&AjpF7UUFwhaBqBbkf`X!g|e+);l`hUML9|%O?pG( zq62vMJ|WIn^Z|ke)4_6cX2S_jAAw<9%yq(}=(wKK7EHDb&f_BBBSNZgFa8Gd4IfIfK&Elg9X?yO10;jcI)59X2H}Br?9D5m*-ViD_j^`Z`hO zEG{A+WSISZdPOr79poB?9PRY4*UM)>hMcBvHWSlwO}G27i7!2_^USD&Rp%v+0rfAv zrh7IFaB7`KKkv06e>~Nwj>CH}98s69;*mpGcC>IGMXDlXsy_3Maiv#Vr#9KCNsc8L zKRQ`ziV@)RFTpN4#9*hHW&M}Qr!_04p(p&WSgYP(I8c4NSS(o8&Ai5`EuTrC9u$)I z8wl)`p{R!~yBx(52~6|8Cj>?;xObQ9#$LNvKyO}M<3=T}((m8I%tSb7*=C4^$JVwU;~9Z75WS9;tPM(8hoKlO{l{Rmn69@>UxIv`9#P()CGPZkMf}>6 z2QziPzaIcss@>dX`ggTGokq-j!K$^EJuCyq8D~BhYp0$<7@5C=3m4ceSI!1c`UYuS zP}c0Ic5$b(gn%~GObTT*CYcB`U}h26g3Es-B)3g!9|57Zo0_w|X4WH*D1*YC>ovqm|*BW+l6v!^$~XylXK0~YaKhS=uK zF21VTWoY!0Y6H{U2_E=o(({=RC+xvZ{bJn?If93`V^*+CxG`ZUtT@>s3$&D>ON=+t z;1_BOvmhnUNx;qR@b+fSoqpm$I_MJ)>f&DD4P`=NwZXkj{iZDY8k@o|Jv3&yYK~C! zex)HP z0D>j-OB$k7qlSSmPQN}HSFsTPFk#YKcNrj4QJEf_ouH5o#<{~ zH1%1uRSW~`i>5>PB7--Z7@ni}K+W#EGRgne=2l=jNMZvDQ&EsYRIoZ*a=Z`k!K1_is7o1J<`^V zqW$CfIJ9kuY}Qm+?L?MCGwKa}7r9{A@j`Py=pUvdMqlx3a(KMGF4yYym-k_cx=Ow$Tps+Pyc{axWaSC=A0L&8zD2+tIzO=!doNtDxghJt8fa=hx#q~1On5bkCY==9RUooHv#${V2*}T$rLE{;C4CyL#1|%Pt-x>wTqYK>IvI8eAcI7!Y55 zmm<7h&?*nbx-@9AiiF0ujOU)Y!9PySN#c?^@I&&108C+!W{%P|ZLQU6L~*y`U=O`=^$}V2QF_Y*5zJyuZVz`)n$J8|4$DbWExAH(KC=a5a_3eM+~T=_@}eeZ2BZvD zi_WKVS!&Gnm7$H_&KtK^!Gnz(%V^K#_~-r(2r-(3#!Cd7xa=7hMLzpCI1M#@VgF+6 zH#lX`s&(KR7y$Ykvn3j7;hLz}4tYTI1y`CS%W{eS%l@ZWTWsPmP3?WNbG!0Q%b2tC z`=A*PB8y)VwWXBeS7`40q_6${6z=lzHuJ4A@oxCuN-A{*zbLXu5H=m*p3h#sH;Fr6 zTuHO)0(94vno9Dt>~X!5WSRocXZjiy_Z*UXZeq?^W7;*1oDS&84I`G)oydU()Assg zS`nlUi`?(eT?!968ynXe9Wv8@$2ed3g!k}HN1-Z{7RmH%uR2tm10cJsz;q!6f$tmJ zJN~`?40H)eL|ia7+&X)TNG6%$f|K(yv9Eh_3%8<8(Io=D5V&?DR499piwXmKWxnma zGSbf(`fT&XvM!q<^ggxpWNKLilg0SxRoCEV666qK~X6ItsHtmu7Vhq}LB9R%Hve3e;t_@3^)!ZjJ zrnbZ~)=7P{-m$}&COU&#J!09(K){LjZ0ZtQ#Vs%=u+8iG5Ba;0Nbi9!4_$a2Wr@&425MbFawb^XS^d8FO2!YlCOcPGei^5&ntEkGqT0b z_V$-><+AJoxNZJz;;|&O`2?eLBqkw=;Y3oI`YAqR!SV)LXwIUlSgv`mKxI6}_v0L} z!BsFZdhCZqNQ_A>mUd0p3EiZ}F)5S>Up~vC8;Hz^Y|DIL^m?=vEb|*n67p;|^{x%~8uxGB!t@3@Jc@7V zJ<@YAz2Duya;jT2T#2QoxlfFr?d|7=+1vFx4?*0Tv+Avqpn^j0zjjnH4m83Q+?~bf z&X`AP5e7)S6Q6+ponKN1ABS^`N?awys`L?qL_vtKcxr7CpU-nBOj9~bZvy@)_EJKA z2tTObWz9qG_V?b;D5} z66k^24qPoRbz$N{?|o*Qd(Y>c(~zH+Z-uH|cZdfJ9fOhnFA%D(Pr3RT;298sIE{!T zK)~Ek7RBotRqd`MwQINUpKZKT@M0JA-ECT#NvvT|Y?hC&-8)O; z>5p7Xpn5T;abzd(x_<_jle4^oexZ@bp#m#^!txs+<7VZFe^9KkE$Ze)TfSRM|J94U zU~6M}29H!hOz|M`)E1HlOtGuFme34IzG zosuIv>Sd=U@3J?i%3bDjWX6mLWf_mb4e5buBGK z4n$E}U&G4%py#d_L0DX3J?HXi!!Brw!1N6Cq9Ogfqu!<&X*{KfaAonf{$hX*c)?cb zdO}Zb5B2Yl?cXx^+aq@Fk<<6Gm@Ch@xwa1hGho@<03hD#$#OUa14O)nCy%EW?wRq! z|MRVY@-hcv1KegF1R8HyK@%L^ErjDCb5n-s+Bb>6*5vXDrx%!fY%pISq>)CcY*ths zdIzT~q}3#dPjBa0TNmi&g?85uoOW3mCsKxDYG6A}8dF$p<0+=558aQ?wk^D%qM)-M zgcKfbEE<__AjJM7c4dC?&$&rbUTewE(MlJ7Oaq(M(S&`vUoF$AOmpyV)hPGS$T zDv0Au3C?P)FFTpMs2TLw4Dq1LpznBj_o?bG7YpX*ogoVBHeaj(f(i(0EjAb(4?u9g z=li4Awqwy_NPSU-sI2Koyw^9`hN-p)7BG741c zgttV?kYmJ~`IRQEuP(l`MBL6R?ul!6t6jFCYoHKqQu+B4%o&-W5IgJ1}6#sYe z3C@yN<{Tt$I%a+;5I*7aJO!1#|2GG&_XREfqZCpUCPACNkMm?uA;PkCj6ViiZH1L0 zD_a>n%Gh6YmK>)M?{47ZV>QDjOUQ4oTUw-pr4>T_t8Y=;IOj+ z5Yh|*mFst>iY}d_9Cemq=(PyIP#tYIKzr^NF2pU#C=1;IXu)wR^{(HU?jJNhDv+9@ zih&&1y!)32{U5f;+7C)$^0)gJOla_tmfZHi<$Tu6`2r4`MJvTd?|Xg*RyoGwiU62W zqbi*#Liw6m(iEj7V1~E(60;VdQzV4rbjX{Y1oJs&Q1_3r-@Ob?*pg$`#Gg~Yi6$Iu zN~YbPYT_pe9pCkczw)RmW66j)biV;`ksIf){ep+;-C|Ke|5Adw zr5^j#HkoHR`iS_+7~ymVN4ORaCnw~lJ7Bf;BVYUfivTi%{8vu zS;fS64Oq?9TibAv{n6ghCDtSh-zwCa5NeZFz|rauttD6gL01d zk2e+2AWqY>lFBgTbgY43zpm_L znea{^8iKw7y%I8oY((%}x~3(`9DyK#y?5IUJg7w-w@fwHe?5*yU@S}-2_T6VJd+SN zwkOoF!P=7c?v6g_`I^rH`&Pm@iwT z4H!eSU@0~P42}B6^UI*9dkeY1FkGKM`=PTL3COQMOf&6%8Bk3*;(DHAsIOUH$*ef? z4i56bx9={1@-*3W6GSfT51TzZb@Sv=Y=&?JAkxGC5|FFu2z&s4-zLS?z9*g_Jit|i<`agZn>}~Yt0EAS zKZrnJpPfKQPdx5NXKoFHBM>XddiNs%-{q=(Jz?u!CuUZf;vO-1N=`MxOpvtIUIm}DhldU7T&QKK%7t2pa0m}H}y)mxOfJ#w9b$c0x~I{702%oEaJBveR{1p2v{ zFGB_K%jRgR>Xst5wL=N*)i(pgKwFi&8cEo9y(Aj1)HHf+Yy#!V#Yz8O9+#DHt(Op# z!;%nQVnTp`Vw}Q?HYX8TdG?qbgzD&t>ilk6ZG8A@<|#OXV7EmBYJbY84(ZWYspE}d6g?oo0aYrp5M9uttaNmIj;;?4IV149rfH&7rsk$zo3<)g*&oApo#B_Idl}J+Xp0oY=A~ z|7oWKV8S~HKPSd1dCOKK0^*3-Hi*mdu2}E6&ub0D!;!+A8i4|hN0%uUN1LeDO;#+j zDi}haQpGmA+@1~>p1xaJ-7B%*ta;7uw=LV#?iq)tjN-t#R`EIW3^`r#5fll2GT6zI z5eXeE#MoAafH}XMkdFn;Xw7Tu(-iyNSiJYJ=1u}0E_n(?6G9IKfj}YijToBy4AE{1 zVz3`r5~Geqw;~9^f~2C;UZ*+bl9N1^B5s?*L+AEK1~MiEcAU8K;>0b~nXk`V&<6)Q zXUAue_irW>Y6%L!$mOd7Av2Tv_vM1RYZT+=s6z5cOyquUb#oW(d&HK{PaDPOu*)8Z zR~EYXqvcDUmQ{}m;HcGMN^!jj&D6S1f==0FsJk>W@j8Bnf)6bdO}K`%HQ&gT#e!7F zA#)^7OezT!$ZjPQ(L-}rJ4n-1tqXTj?qZF#>+!pQSrj$>C%>= z`>l%f$4hyqh+r8?Sch55Bb}imGMw^!>6mGsd+TVNt^T#1E0HvEizwa)hQcy%+Bh3O zy9g|Os@YeYi&u#JX~ZS6gl_Fpp>!jJAx_eNNG}yD3*Db4nkudxVN(qeCt+U;vAg`W zaT*ru8B{(Tm`Mhe#wBMjo$7Y)!KsViyI5Wkh^BB%8;~v zA55{}g&KBnzJ9lMe~f5jc3@m(Uonhwr#DR6Hu-5z>J5@X867RzMj~7Kd}`Mjt%5~q z(%5oPC0iq-i)Qn%EUEM~YBfxp>rG9zTifGh)iW9>1A($>`v%CpJ{E}Gf|4^lV9 z?h%jD?ec#5Tq#$}eOU}SfCM)OMWS{+w{BAAVKmX1XQKU!!Rwr5QeHgmC~0fo2!E}K zCi1%($cA5k2JV0lS#@2gi4>Dvk3COKkZ#vZqSTZ!2B2kr#pFD=(a50px;0rMhnb~R z9x17*p$0v=~v}$OocCwP%A%hcRs5 z6IVtu{l&)>`gs#wa(&na@LyAc;xOe4`SEFalutoXSU(6Wd^i0QwwckAZAOM?E(tnl zrHzv&g1y>`Ii#$J;f-jVT?WuXW2A1?wdbw*(hDZW&%L=)(Z}gBsZwb`vRC=cHDN{$ z{G~?ydA=S9iKclxj6vRD-g8}@2s%GCVPRMNXQI2w+j}jIVp@)rL;!sHfNyD)^R%;Z z1nh@W_r}L$B(y>|0`@jsM4;w@RrQ`x$()g-`+VOgCTi7nDOnu{aIL&j6*rq?Ydv++ zj3o5%u8tw*fnN@-gN1BbdQbMd2c6CwmgUC7mM!ExQc$N3@2o;-D(CT*ZWoZl!Dvyk+DhCnp(eR( z_huj`l`3Q}SWYy(DE4vkQ&-V~XTFc*}~5n^o-xFw?Vr zL*O&{?H{m}f#)Pj$a2ALiWv9$Fe_n^G1;hf)W8DaXI0?P)z_}3I#Fybx~T`uCCP_O zTdzx2iemFL)$z$*_H1HgE(5A!kpf|dAnP>>78ES?k&DJg6{L0I@yfpP3Fj3?p!Gf8 zS*JiGgY;;m(id*eS!(&Xkqh@WutR33$>{;pnJq4>sDQpM@3L z?rwj1UYvTN|57Tws6=ietz&XIg3$K7!ny4dStFm<;d_g(Pknw+7rh&Z4ulBIAB^)P9YoT^xj<<$45(hd!dg(MXHkf_W)s;A zQbAE7Z}H5sF@5onkG`PsCYLWA{mb_V688Ou(VKV(< z*C@SDM9hEkz$qBp*4xYXD_Ioj820lEw0RXBPz4HbPkL((#{?{a{hyQ^nGeuQ7Q_W0 zC(q*mUj7@L#s#Rs{wGnB0WSV$fJ^cJO3B}*`pMU{05}ABDF8S+2naL?$p1O|p8KC3 zyZMz05dWX^<``N4#eeq6NU7gpu4nC@O`U%9>KwzMHv7D;Q#5qo&TqU zZ=PlWa6tc;1S~IL`+rG%Te$wu-G5p03j>gw7X<+G|GN{Pv~OGQH*myeToC{U7~*$Q z+93bmk=$(tDxZA)3Xam8B?@3i{x6)M8K_pW{ysQF@^?)iWHX;CK<$724Kx6j$@n&) z@XZM70EPcW|JDutZ}dO29vlF8@~0L6x;ah@u<&2{&6fIrD8PT7zt`}4Sq%Vi$wYqv zFwHi`fV?07-3^*QVEBJts-pqc&60rt)Bjz5uaI>!VK4yYf0y4&r5zfjHJ$<6+ML2Z(GP$3YSzheL2(d7SM7^MHF zY%7n6@`&Q@92^U~3kb^c39NvCfJYl!rB-WgM5`6?77d;E zc*S@mwZR@r8f(-vwZ>9KtJPEm1wld31yn!~`)1~Izt8&D&ilRJJLb*%-b_M(n;|@? z_{(o-h>2Vj%54y`gEqdBQV_hzr#6w&V}TcABHL6f481_D@CYxf!%W>v7peoew2RJC z-Gta3rH$NA^Q05(gMlitEOwFP#8r*%kjb$O>in0lnEsr(CTY&W^8@eg>DYiE@!& z!bZzQbqTvA7ia%s6XYWD0xK7b;ujZKp~`S~DXUPev*rrRmaNJvELSc@US)G7{rFYZ zrnXT_xCR%mu@-^v=*6|-s_X2Ss?)9;EKJqO(!n$+y~UcO8^krZQ^qQ#bgCJpigNZq zdM>@qf|O@mY0z0BwF`UTF{mHL-IWqC>=Yik(qu=GIJom8ky&nGzUstT#+n{YxI{g z-Q7TqTH)k9mPk{}b?AgfqX7S9ArSKJvnX0rrQdTT!&#g*XVFWJa*vb8jMw7 zf?|aSD_3Jo8qf#2fi)2gF4m&KdJ|+ekUMUwlYE>nI2Romqb#IrCu1^7m-FfkN;p6r zy7asPtxBTK*G%0ZSb*go!!!zR*JA-lg8_AePam>4x!a?DNZ)VLIibfRmO_&o4Z0If zK4S5bE?R*8iMltQvhgt4gEL4SLMprkmSz>C$6l7PjkBR4SHz(Gzra>A8ev=09b< zEk1CjnvE5AMo*c)XjMy-0?XdT?uuz|B0kE-#*@bx&X*I*2O`!oh zqSR+7jYdX#jU13w!K}*YHv_goUkjI00A!Y-(aJ*Hk#N$&lgN4l34?Tk$kpy9&Sj#T zi{VDb$3X+kPqIvDz) z5(@nEq{X*K3P&n5#h>>laihF~4Mv3MJn>1BZXYRChn3r*HU#}0FpyZ8mGoCMTJZ8o z|8(&?U)=Vp!qQ9h80Dqc*SM|eVd&+sfpmq_c72RGx?sp{8H&7nBQ~u zW!!{uN_Autb-+{yPb5VKVgrvuPeazFU_3O0VqMk-q0`P2l;8+9*ClVFLd81*js_#| ziGjq({mLEHPf|R5Rtz9ZCwm1u1O}M>t)8M(@~QEC0Q&RG^dcsI9*F{3K2>P*V6{#6 zB1`gdmO$OGumIm_QykboDR%6iS_2OKUtLz(uE8X7WR}-N6;h5*pV`n5 z$=&j#i8x}?JuSlc(bwhSEA1Af)qx^Y}(BgZ_#e0)}bCqz)#nt$`;lfRA|3sm? z4`FrO-7#|bJTDULt$?^+$%6UtLkyn=>tc{rEronic0hpHa4?pu*(i6s(Ie1_VC~K9 zuU)4ZaTqwT!OIAND{<&?vw_6gUcI~VS*DThjbcj0fh&>w!G#`ZG1rWoz);XH9^p0% zxa0XO@)PbTo~OW;H0A>V!*E#A1XO4GdtocgO2E<#wt5iwyE(j2+UZ9O& e!D6^2k#hzT4L=Ixwp(!mdh)(LJ+?5s0R97sENGhm diff --git a/src/bootsupport/modules/punkboot/utils-0.5.0.tm b/src/bootsupport/modules/punkboot/utils-0.6.0.tm similarity index 91% rename from src/bootsupport/modules/punkboot/utils-0.5.0.tm rename to src/bootsupport/modules/punkboot/utils-0.6.0.tm index 1cd5324c..43372880 100644 --- a/src/bootsupport/modules/punkboot/utils-0.5.0.tm +++ b/src/bootsupport/modules/punkboot/utils-0.6.0.tm @@ -7,7 +7,7 @@ # (C) 2023 # # @@ Meta Begin -# Application punkboot::utils 0.5.0 +# Application punkboot::utils 0.6.0 # Meta platform tcl # Meta license BSD # @@ Meta End @@ -23,7 +23,7 @@ package require Tcl 8.6- # ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ namespace eval punkboot::utils { variable version 0.1.0 - namespace export binary_arch_classify parse_punkproject_version read_punkproject_version read_changelog_latest_version vcs_dirty_warnings vfs_binary_arch_report vfs_boot_library_report + namespace export binary_arch_classify kit_offsetstyle_report parse_punkproject_version read_punkproject_version read_changelog_latest_version vcs_dirty_warnings vfs_binary_arch_report vfs_boot_library_report namespace eval argdoc { @@ -736,6 +736,65 @@ namespace eval punkboot::utils { dict set report ok [expr {[llength $mismatches] == 0}] return $report } + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::kit_offsetstyle_report + @cmd -name "::punkboot::utils::kit_offsetstyle_report"\ + -summary\ + "Advisory zip offset-style probe of an assembled kit image (G-134)"\ + -help\ + "Probes a finished kit image file with punk::zip::archive_info and + reports the offset convention of any attached zip payload. The + punkshell bake pipeline emits ARCHIVE-relative payloads by + construction; this probe makes that a checked contract - a + 'file' result is the pipeline-regression signal make.tcl + surfaces as a recapped BUILD-WARNING (advisory: the kit still + builds and deploys). 'plain' (the file is a bare zip), 'none' + (no zip attached - e.g the metakit kit shape, or any non-zip + file) and 'unreadable' are silence, not warnings: the pin + covers the offset convention of an attached zip, never the + presence of one. Purely structural: one EOCD scan plus a + central-directory walk, nothing executed, so cross-target kit + images are covered. + + Returned dict keys: + offsetstyle archive | file | plain | none | unreadable + dataoffset payload base offset when archive_info supplies + one (\"\" otherwise) + detail diagnostic text for unreadable (missing file, + punk::zip unavailable, archive_info error); + empty otherwise" + @leaders + kitpath -type string -optional 0 -help\ + "Path of the assembled kit image file to probe" + }] + } + proc kit_offsetstyle_report {kitpath} { + set report [dict create offsetstyle unreadable dataoffset "" detail ""] + if {![file isfile $kitpath]} { + dict set report detail "no such file: $kitpath" + return $report + } + if {[catch {package require punk::zip} errM]} { + dict set report detail "punk::zip not available: $errM" + return $report + } + if {[catch {punk::zip::archive_info $kitpath} zinfo]} { + dict set report detail "archive_info error: $zinfo" + return $report + } + if {[dict exists $zinfo offsetstyle]} { + dict set report offsetstyle [dict get $zinfo offsetstyle] + } else { + dict set report detail "archive_info returned no offsetstyle" + return $report + } + if {[dict exists $zinfo dataoffset]} { + dict set report dataoffset [dict get $zinfo dataoffset] + } + return $report + } } namespace eval ::punk::args::register { @@ -746,8 +805,8 @@ namespace eval ::punk::args::register { ## Ready package provide punkboot::utils [tcl::namespace::eval punkboot::utils { variable version - #- this version number, exactly 0.5.0, is a literal used in src module folders + #- this version number, exactly 0.6.0, is a literal used in src module folders #- we refer to this sometimes as the magic version number - set version 0.5.0 + set version 0.6.0 }] return diff --git a/src/make.tcl b/src/make.tcl index 07121b28..1a4aafe3 100644 --- a/src/make.tcl +++ b/src/make.tcl @@ -3478,6 +3478,20 @@ proc ::punkboot::get_vfs_binary_arch_report {vfsfolder targetplatform} { } return [list 1 [::punkboot::utils::vfs_binary_arch_report $vfsfolder $targetplatform]] } +#Availability probe + advisory zip offset-style check of an assembled kit image +#(G-134), shared by the bake loop and the 'check' command report. Same guarded- +#require treatment as the checks above: a stale bootsupport snapshot degrades +#the pin to a NOTE. Returns {available report}. +proc ::punkboot::get_kit_offsetstyle_report {kitpath} { + set available [expr {\ + ![catch {package require punkboot::utils}]\ + && [llength [info commands ::punkboot::utils::kit_offsetstyle_report]]\ + }] + if {!$available} { + return [list 0 [dict create]] + } + return [list 1 [::punkboot::utils::kit_offsetstyle_report $kitpath]] +} #G-133 smoke-require probe: execute a freshly built kit artifact via its 'tclsh' #subcommand and plain-'package require' each declared package inside it. This is the #only check that observes actual package RESOLUTION in the artifact - the punkluck86 @@ -3823,6 +3837,20 @@ if {$::punkboot::command eq "check"} { puts stdout "payload/target arch scan (G-133): UNAVAILABLE (punkboot::utils vfs_binary_arch_report not loadable from bootsupport)" puts stdout " bake will proceed with a NOTE and cannot flag wrong-arch payload libraries - run 'make.tcl modules' then 'make.tcl bootsupport'." } + # Kit offset-style pin (G-134) - advisory archive-relative output contract + puts stdout $sep + #availability probe only - the path deliberately does not exist + lassign [::punkboot::get_kit_offsetstyle_report [file join $projectroot __punkboot_offsetstyle_probe__]] _off_available _off_report + if {$_off_available} { + puts stdout "kit offset-style pin (G-134): ACTIVE (advisory)" + puts stdout " bake probes each assembled kit image with punk::zip::archive_info and emits a recapped" + puts stdout " BUILD-WARNING when an attached zip payload records FILE-relative offsets (the pipeline" + puts stdout " emits archive-relative by construction; the G-128 stamper refuses file-relative by default)." + puts stdout " plain/none results (no attached zip - e.g the metakit kit shape) are silence, not warnings." + } else { + puts stdout "kit offset-style pin (G-134): UNAVAILABLE (punkboot::utils kit_offsetstyle_report not loadable from bootsupport)" + puts stdout " bake will proceed with a NOTE and cannot flag a file-relative kit payload - run 'make.tcl modules' then 'make.tcl bootsupport'." + } set _smoke_declared [list] if {[file exists $sourcefolder/runtime/mapvfs.config]} { set _smokemodel [punkboot::lib::mapvfs_parse $sourcefolder/runtime/mapvfs.config [file dirname $sourcefolder]/bin/runtime $sourcefolder $::punkboot::target_platform] @@ -7662,6 +7690,21 @@ foreach vfstail $vfs_tails { # -- --- --- --- --- --- $vfs_event targetset_end OK + #G-134 post-assembly offset-style pin: the pipeline emits + #ARCHIVE-relative zip payloads by construction - this probe makes + #that a checked contract. Advisory per the G-133 posture: a + #file-relative image earns a recapped BUILD-WARNING (the G-128 + #stamper would refuse it by default) and the kit still builds and + #deploys; plain/none (no attached zip - the metakit kit shape) and + #unreadable results are silence. One EOCD scan + CD walk per + #REBUILT kit only. + lassign [::punkboot::get_kit_offsetstyle_report $buildfolder/$targetkit] offprobe_available offprobe + if {!$offprobe_available} { + puts stderr "NOTE: kit offset-style pin unavailable (punkboot::utils kit_offsetstyle_report not loadable from bootsupport) - continuing without it" + } elseif {[dict get $offprobe offsetstyle] eq "file"} { + ::punkboot::print_build_warnings [list "kit $targetkit assembled with a FILE-relative zip payload (G-134 pin: the pipeline emits archive-relative by construction; the G-128 stamper refuses file-relative by default) - investigate this kit's assembly path"] + } + #G-133 post-build smoke-require probe. Only an actual 'package require' #inside the built artifact observes package RESOLUTION - the wrong-arch #version-shadowing class is invisible to every structural check because diff --git a/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/make.tcl b/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/make.tcl index 0658f3c4..1a4aafe3 100644 --- a/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/make.tcl +++ b/src/modules/punk/mix/#modpod-templates-999999.0a1.0/templates/project_layouts/vendor/punk/project-0.1/src/make.tcl @@ -2300,15 +2300,24 @@ DIAGRAM 2 - KIT ASSEMBLY DETAIL (the 'make.tcl bake' stage; incl. vfslibs phase) (gate) --> refused: kit listed under FAILED KITS, nothing | built, nothing deployed, bin/ untouched | - | zip image appended to the runtime exe: tcl::zipfs::mkimg, - | or (driving tcl without zipfs, e.g 8.6) raw-runtime split - | + punk::zip::mkzip + concatenation - both mount the same + | kit icon step (G-057): .resources.toml sidecar records + | the icon choice for every target (default src/runtime/ + | punkshell.ico; override = punkshell.ico in the kit's own .vfs + | folder, pre-merge); win32 targets on a twapi-capable host get + | the icon stamped into a per-kit copy of the raw runtime stub + | BEFORE the payload attach (non-PE target: not applicable; + | incapable host: distinct notice - sidecar written either way) + | + | zip image appended to the (stamped) runtime exe: tcl::zipfs:: + | mkimg, or (driving tcl without zipfs, e.g 8.6) raw-runtime + | split + punk::zip::mkzip + concatenation - both mount the same v - src/_build/.exe + src/_build/.exe (+ .exe.resources.toml) | | smoke-require probe (host-runnable kits with declared | packages): plain 'package require' inside the artifact [K11] | deploy step: delete old bin/.exe, copy new one in + | (the resource sidecar deploys beside the kit) v bin/.exe <-- FAILS (kit listed under FAILED KITS) if a running shell still holds the old exe [K5] @@ -3469,6 +3478,20 @@ proc ::punkboot::get_vfs_binary_arch_report {vfsfolder targetplatform} { } return [list 1 [::punkboot::utils::vfs_binary_arch_report $vfsfolder $targetplatform]] } +#Availability probe + advisory zip offset-style check of an assembled kit image +#(G-134), shared by the bake loop and the 'check' command report. Same guarded- +#require treatment as the checks above: a stale bootsupport snapshot degrades +#the pin to a NOTE. Returns {available report}. +proc ::punkboot::get_kit_offsetstyle_report {kitpath} { + set available [expr {\ + ![catch {package require punkboot::utils}]\ + && [llength [info commands ::punkboot::utils::kit_offsetstyle_report]]\ + }] + if {!$available} { + return [list 0 [dict create]] + } + return [list 1 [::punkboot::utils::kit_offsetstyle_report $kitpath]] +} #G-133 smoke-require probe: execute a freshly built kit artifact via its 'tclsh' #subcommand and plain-'package require' each declared package inside it. This is the #only check that observes actual package RESOLUTION in the artifact - the punkluck86 @@ -3814,6 +3837,20 @@ if {$::punkboot::command eq "check"} { puts stdout "payload/target arch scan (G-133): UNAVAILABLE (punkboot::utils vfs_binary_arch_report not loadable from bootsupport)" puts stdout " bake will proceed with a NOTE and cannot flag wrong-arch payload libraries - run 'make.tcl modules' then 'make.tcl bootsupport'." } + # Kit offset-style pin (G-134) - advisory archive-relative output contract + puts stdout $sep + #availability probe only - the path deliberately does not exist + lassign [::punkboot::get_kit_offsetstyle_report [file join $projectroot __punkboot_offsetstyle_probe__]] _off_available _off_report + if {$_off_available} { + puts stdout "kit offset-style pin (G-134): ACTIVE (advisory)" + puts stdout " bake probes each assembled kit image with punk::zip::archive_info and emits a recapped" + puts stdout " BUILD-WARNING when an attached zip payload records FILE-relative offsets (the pipeline" + puts stdout " emits archive-relative by construction; the G-128 stamper refuses file-relative by default)." + puts stdout " plain/none results (no attached zip - e.g the metakit kit shape) are silence, not warnings." + } else { + puts stdout "kit offset-style pin (G-134): UNAVAILABLE (punkboot::utils kit_offsetstyle_report not loadable from bootsupport)" + puts stdout " bake will proceed with a NOTE and cannot flag a file-relative kit payload - run 'make.tcl modules' then 'make.tcl bootsupport'." + } set _smoke_declared [list] if {[file exists $sourcefolder/runtime/mapvfs.config]} { set _smokemodel [punkboot::lib::mapvfs_parse $sourcefolder/runtime/mapvfs.config [file dirname $sourcefolder]/bin/runtime $sourcefolder $::punkboot::target_platform] @@ -6296,6 +6333,472 @@ proc ::punkboot::assemble_zipcat_image {raw_runtime wrapvfs outfile zipfile} { return $zipbytes } +# -- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- +#G-057 kit icon step. Every built kit gets a .resources.toml sidecar +#recording the build-time icon choice (default src/runtime/punkshell.ico, +#overridable by a root-level punkshell.ico in the kit's own custom .vfs folder, +#consulted PRE-merge so the _vfscommon copy never reads as an override), and +#win32-target kits get that icon embedded as PE RT_ICON/RT_GROUP_ICON resources +#when this host can write them. Two mechanisms share one semantic (delete ALL +#icon/group entries, write the .ico images as ids 1..N; the RT_GROUP_ICON is +#NAMED from the icon file - uppercased rootname, so punkshell.ico gives +#PUNKSHELL (user decision 2026-07-29, RC uppercase convention) - with language +#adopted from the first replaced group; idempotent by construction, parity +#recorded in the G-128 detail file): the vendored punkres portable stamper +#(G-128, src/tools/punkres, built by 'make.tcl tool build punkres') is +#selected when bin/punkres(.exe) exists and works from ANY build host; +#otherwise the twapi arm (tcl-sfe sfe-0.2.tm ReplaceIconInStub lineage; Ashok +#P. Nadkarni) serves windows hosts with nothing built. Ordering is stub-first either way: a per-kit +#copy of the payload-free raw runtime prefix is stamped BEFORE any payload is +#appended (punkres could also stamp post-hoc - the bake keeps stub-first so +#both arms stay interchangeable). kit_icon_process is the single internal +#entry point - mechanism selection lives inside it. Non-PE targets skip as NOT +#APPLICABLE; a win32 target on an incapable host skips with a distinct notice; +#both still write the sidecar. +#Decisions and skip taxonomy: goals G-057 detail file. Sidecar format doc: +#bin/AGENTS.md. +#sha256 is self-contained (same algorithm as src/assets/logo/make-ico.tcl and +#scriptlib/developer/assetorigin_check.tcl - each stays standalone: make.tcl +#must not depend on scriptlib, and this step must not depend on bootsupport +#freshness; bootsupport carries only sha1/md5). Memoized per path per run. +namespace eval ::punkboot::kiticon { + variable sha256_cache + if {![info exists sha256_cache]} {set sha256_cache [dict create]} + variable twapi_state "" + variable punkres_state "" + variable K { + 0x428a2f98 0x71374491 0xb5c0fbcf 0xe9b5dba5 0x3956c25b 0x59f111f1 0x923f82a4 0xab1c5ed5 + 0xd807aa98 0x12835b01 0x243185be 0x550c7dc3 0x72be5d74 0x80deb1fe 0x9bdc06a7 0xc19bf174 + 0xe49b69c1 0xefbe4786 0x0fc19dc6 0x240ca1cc 0x2de92c6f 0x4a7484aa 0x5cb0a9dc 0x76f988da + 0x983e5152 0xa831c66d 0xb00327c8 0xbf597fc7 0xc6e00bf3 0xd5a79147 0x06ca6351 0x14292967 + 0x27b70a85 0x2e1b2138 0x4d2c6dfc 0x53380d13 0x650a7354 0x766a0abb 0x81c2c92e 0x92722c85 + 0xa2bfe8a1 0xa81a664b 0xc24b8b70 0xc76c51a3 0xd192e819 0xd6990624 0xf40e3585 0x106aa070 + 0x19a4c116 0x1e376c08 0x2748774c 0x34b0bcb5 0x391c0cb3 0x4ed8aa4a 0x5b9cca4f 0x682e6ff3 + 0x748f82ee 0x78a5636f 0x84c87814 0x8cc70208 0x90befffa 0xa4506ceb 0xbef9a3f7 0xc67178f2 + } +} +proc ::punkboot::kiticon::sha256_data {data} { + variable K + set bitlen [expr {wide([string length $data]) * 8}] + append data \x80 + set pad [expr {(56 - [string length $data] % 64 + 64) % 64}] + append data [string repeat \x00 $pad] [binary format W $bitlen] + set h0 0x6a09e667; set h1 0xbb67ae85; set h2 0x3c6ef372; set h3 0xa54ff53a + set h4 0x510e527f; set h5 0x9b05688c; set h6 0x1f83d9ab; set h7 0x5be0cd19 + set n [string length $data] + for {set off 0} {$off < $n} {incr off 64} { + binary scan [string range $data $off [expr {$off + 63}]] Iu16 w + for {set t 16} {$t < 64} {incr t} { + set x [lindex $w [expr {$t - 15}]] + set s0 [expr {((($x >> 7) | ($x << 25)) ^ (($x >> 18) | ($x << 14)) ^ ($x >> 3)) & 0xffffffff}] + set x [lindex $w [expr {$t - 2}]] + set s1 [expr {((($x >> 17) | ($x << 15)) ^ (($x >> 19) | ($x << 13)) ^ ($x >> 10)) & 0xffffffff}] + lappend w [expr {([lindex $w [expr {$t - 16}]] + $s0 + [lindex $w [expr {$t - 7}]] + $s1) & 0xffffffff}] + } + set a $h0; set b $h1; set c $h2; set d $h3 + set e $h4; set f $h5; set g $h6; set h $h7 + for {set t 0} {$t < 64} {incr t} { + set S1 [expr {((($e >> 6) | ($e << 26)) ^ (($e >> 11) | ($e << 21)) ^ (($e >> 25) | ($e << 7))) & 0xffffffff}] + set ch [expr {(($e & $f) ^ (~$e & $g)) & 0xffffffff}] + set T1 [expr {($h + $S1 + $ch + [lindex $K $t] + [lindex $w $t]) & 0xffffffff}] + set S0 [expr {((($a >> 2) | ($a << 30)) ^ (($a >> 13) | ($a << 19)) ^ (($a >> 22) | ($a << 10))) & 0xffffffff}] + set maj [expr {($a & $b) ^ ($a & $c) ^ ($b & $c)}] + set T2 [expr {($S0 + $maj) & 0xffffffff}] + set h $g; set g $f; set f $e; set e [expr {($d + $T1) & 0xffffffff}] + set d $c; set c $b; set b $a; set a [expr {($T1 + $T2) & 0xffffffff}] + } + set h0 [expr {($h0 + $a) & 0xffffffff}]; set h1 [expr {($h1 + $b) & 0xffffffff}] + set h2 [expr {($h2 + $c) & 0xffffffff}]; set h3 [expr {($h3 + $d) & 0xffffffff}] + set h4 [expr {($h4 + $e) & 0xffffffff}]; set h5 [expr {($h5 + $f) & 0xffffffff}] + set h6 [expr {($h6 + $g) & 0xffffffff}]; set h7 [expr {($h7 + $h) & 0xffffffff}] + } + return [format %08x%08x%08x%08x%08x%08x%08x%08x $h0 $h1 $h2 $h3 $h4 $h5 $h6 $h7] +} +proc ::punkboot::kiticon::sha256_file {path} { + variable sha256_cache + set key [file normalize $path] + if {[dict exists $sha256_cache $key]} { + return [dict get $sha256_cache $key] + } + set f [open $path rb] + set data [read $f] + close $f + set hex [sha256_data $data] + dict set sha256_cache $key $hex + return $hex +} +proc ::punkboot::kiticon::toml_escape {s} { + return [string map {\\ \\\\ \" \\\"} $s] +} +#Tolerant subset reader for the chosen icon's G-135 assetorigin sidecar - lifts +#source/source_hash so the kit record reaches back to the SVG-derived master. +#Missing sidecar, unknown schema or malformed content simply yields no +#provenance fields (never an error). +proc ::punkboot::kiticon::assetorigin_read {assetpath} { + set sc $assetpath.assetorigin.toml + set out [dict create] + if {![file isfile $sc]} { + return $out + } + if {[catch { + set f [open $sc rb] + set raw [read $f] + close $f + }]} { + return $out + } + foreach line [split [encoding convertfrom utf-8 $raw] \n] { + set line [string trim [string map [list \r {}] $line]] + if {$line eq "" || [string index $line 0] eq "#"} continue + if {[string index $line 0] eq "\["} break + set eq [string first = $line] + if {$eq < 1} continue + set key [string trim [string range $line 0 [expr {$eq - 1}]]] + if {$key ni {schema source source_hash}} continue + set val [string trim [string range $line [expr {$eq + 1}] end]] + if {[string index $val 0] eq "\""} { + set parsed "" + set ok 0 + set len [string length $val] + for {set i 1} {$i < $len} {incr i} { + set chr [string index $val $i] + if {$chr eq "\\"} { + incr i + append parsed [string index $val $i] + } elseif {$chr eq "\""} { + set ok 1 + break + } else { + append parsed $chr + } + } + if {!$ok} continue + set val $parsed + } else { + set cmt [string first # $val] + if {$cmt >= 0} { + set val [string trim [string range $val 0 [expr {$cmt - 1}]]] + } + } + dict set out $key $val + } + if {![dict exists $out schema] || [dict get $out schema] ne "1"} { + return [dict create] + } + return $out +} +proc ::punkboot::kiticon::writefile_ifchanged {path content} { + if {[file exists $path]} { + set f [open $path rb] + set existing [read $f] + close $f + if {$existing eq $content} { + return unchanged + } + } + set f [open $path wb] + puts -nonewline $f $content + close $f + return written +} +proc ::punkboot::kiticon::copy_ifchanged {from to} { + if {![file isfile $from]} { + return absent + } + set f [open $from rb] + set fromdata [read $f] + close $f + if {[file exists $to]} { + set f [open $to rb] + set todata [read $f] + close $f + if {$todata eq $fromdata} { + return unchanged + } + } + file copy -force $from $to + return copied +} +#Memoized once per run: can this host's tclsh write PE resources? Returns +#{1 {}} or {0 reason} with the reason distinguishing cross-host from +#twapi-unavailable (the acceptance requires distinct notices). +proc ::punkboot::kiticon::twapi_available {} { + variable twapi_state + if {$twapi_state eq "ok"} { + return [list 1 {}] + } + if {$twapi_state ne ""} { + return [list 0 $twapi_state] + } + if {[punkboot::lib::platform_process_family $::punkboot::host_platform] ne "windows"} { + set twapi_state "cross-host: win32 target baked on a $::punkboot::host_platform host cannot run the twapi resource APIs (portable post-hoc stamping is the G-128 remedy)" + return [list 0 $twapi_state] + } + if {[catch {package require twapi_resource}] && [catch {package require twapi}]} { + set twapi_state "twapi resource APIs not loadable in this tclsh ([info nameofexecutable]) - the vendored twapi under vendorlib_tcl/win32-x86_64 serves native windows tclsh builds" + return [list 0 $twapi_state] + } + if {![llength [info commands ::twapi::begin_resource_update]]} { + set twapi_state "twapi loaded but its resource-update APIs are absent" + return [list 0 $twapi_state] + } + set twapi_state ok + return [list 1 {}] +} +#Memoized once per run: locate the built punkres portable stamper (G-128). +#Returns {1 } or {0 }. Presence of the binary IS the +#mechanism-selection signal: with no tool built the twapi arm and its skip +#taxonomy behave exactly as they did before G-128 (zig stays optional). +proc ::punkboot::kiticon::punkres_available {repo_root} { + variable punkres_state + if {$punkres_state ne ""} { + return $punkres_state + } + if {[punkboot::lib::platform_process_family $::punkboot::host_platform] eq "windows"} { + set exe $repo_root/bin/punkres.exe + } else { + set exe $repo_root/bin/punkres + } + if {[file isfile $exe]} { + set punkres_state [list 1 $exe] + } else { + set punkres_state [list 0 "portable stamper not present at $exe - 'tclsh src/make.tcl tool build punkres' builds it from vendored source, or fetch the prebuilt punkbin artifact (win32-x86_64/tools/punkres-*; route: src/tools/punkres/PROVENANCE.md) (G-128)"] + } + return $punkres_state +} +#G-128 punkres arm: exec the vendored portable stamper on the payload-free stub +#copy. punkres itself deletes all icon/group entries, writes the images as ids +#1..N under the first pre-existing group's name+lang (a non-empty +#group_override renames the group via 'set-icon -group' - the seam's naming +#policy; language and codepage adoption unchanged), and re-reads its own +#output (resources AND any overlay) before reporting success - equivalent +#resource content to the twapi arm from the same input (parity evidence in the +#G-128 detail file). Returns the number of images embedded; raises an error +#carrying punkres's output on any nonzero exit. +proc ::punkboot::kit_icon_embed_punkres {punkres_exe exepath icopath {group_override {}}} { + set f [open $icopath rb] + set icondata [read $f] + close $f + binary scan $icondata ttt ico_reserved ico_type ico_count + if {$ico_reserved != 0 || $ico_type != 1} { + error "$icopath is not recognisable as a .ico file" + } + if {$ico_count == 0} { + error "no images in $icopath" + } + set cmd [list exec [file nativename $punkres_exe] set-icon] + if {$group_override ne ""} { + lappend cmd -group $group_override + } + #-drop-opaque-overlay: the stub contract is a payload-free prefix, so any + #non-zip trailing bytes are build detritus - concretely the COFF + #symbol/debug tables mingw-built runtimes carry after their sections, + #which ride into the extraction head. The twapi arm's EndUpdateResource + #has always silently stripped exactly those bytes (measured 2026-07-29, + #G-128 detail); punkres drops them deliberately and zeroes the dangling + #symbol-table header pointer. A REAL zip payload on a stub is unaffected + #(the flag is inert for zip-classified overlays, which punkres preserves). + lappend cmd -drop-opaque-overlay + lappend cmd [file nativename $exepath] [file nativename $icopath] 2>@1 + if {[catch $cmd output]} { + error "punkres set-icon failed: $output" + } + return $ico_count +} +#Replace RT_ICON (type 3) and RT_GROUP_ICON (type 14) in the PE at exepath with +#the images of icopath. Follows sfe-0.2.tm ReplaceIconInStub generalized: all +#existing icon/group entries (any name, any lang) are deleted and the new set +#written as ids 1..N under the first pre-existing group's name+lang (fallback +#name 1, lang 1033), in one resource-update transaction. A non-empty +#group_override replaces the group NAME only (language adoption unchanged) - +#the same override punkres's 'set-icon -group' applies, so the seam's naming +#policy keeps the two arms in parity (G-128). Raises an error on failure +#(after -discard); returns the number of images embedded. The file at exepath +#must carry NO appended payload - a resource update rewrites the image. +proc ::punkboot::kit_icon_embed_twapi {exepath icopath {group_override {}}} { + set f [open $icopath rb] + set icondata [read $f] + close $f + binary scan $icondata ttt ico_reserved ico_type ico_count + if {$ico_reserved != 0 || $ico_type != 1} { + error "$icopath is not recognisable as a .ico file" + } + if {$ico_count == 0} { + error "no images in $icopath" + } + set old_icons [list] + set old_groups [list] + set libh [twapi::load_library $exepath -datafile] + try { + set resources [twapi::extract_resources $libh] + foreach {restype var} {3 old_icons 14 old_groups} { + if {[dict exists $resources $restype]} { + foreach rname [dict keys [dict get $resources $restype]] { + foreach rlang [dict keys [dict get $resources $restype $rname]] { + lappend $var [list $rname $rlang] + } + } + } + } + } trap {TWAPI_WIN32 1812} {} { + #no resource section at all - nothing to enumerate + } finally { + twapi::free_library $libh + } + set group_name 1 + set group_lang 1033 + if {[llength $old_groups]} { + lassign [lindex $old_groups 0] group_name group_lang + } + if {$group_override ne ""} { + set group_name $group_override + } + set update_h [twapi::begin_resource_update $exepath] + try { + foreach entry $old_icons { + lassign $entry rname rlang + twapi::delete_resource $update_h 3 $rname $rlang + } + foreach entry $old_groups { + lassign $entry rname rlang + twapi::delete_resource $update_h 14 $rname $rlang + } + set grouphdr [binary format ttt 0 1 $ico_count] + for {set i 0} {$i < $ico_count} {incr i} { + #.ico ICONDIRENTRY is 16 bytes; GRPICONDIRENTRY is 14 - the trailing + #4-byte image offset becomes a 2-byte icon resource id. Raw width and + #height bytes are carried as-is (0 means 256 in both formats). + set off [expr {6 + 16 * $i}] + binary scan $icondata "@${off} cu cu cu cu tu tu nu nu" w h cc rsv planes bits bytesinres imgoff + set iconid [expr {$i + 1}] + append grouphdr [binary format "cu cu cu cu tu tu nu tu" $w $h $cc $rsv $planes $bits $bytesinres $iconid] + twapi::update_resource $update_h 3 $iconid $group_lang [string range $icondata $imgoff [expr {$imgoff + $bytesinres - 1}]] + } + twapi::update_resource $update_h 14 $group_name $group_lang $grouphdr + } on error {msg ropts} { + catch {twapi::end_resource_update $update_h -discard} + return -options $ropts $msg + } + twapi::end_resource_update $update_h + return $ico_count +} +#G-057 single internal entry point. Decides the kit's icon (override: root +#punkshell.ico in the kit's own custom .vfs folder, pre-merge; else the project +#default src/runtime/punkshell.ico), writes/refreshes the kit's +#.resources.toml sidecar in the build folder, and - when the target +#has PE resources and this host can write them - stamps a per-kit copy of the +#payload-free raw runtime prefix. Returns {wrap_runtime sidecarpath}: +#wrap_runtime is the runtime prefix the assembly step must consume (the stamped +#copy when embedding happened, the untouched raw prefix otherwise). +proc ::punkboot::kit_icon_process {targetkit rt_target rtname kit_type sourcefolder vfstail raw_runtime buildfolder} { + set repo_root [file dirname $sourcefolder] + set override_icon $sourcefolder/vfs/$vfstail/punkshell.ico + if {[file isfile $override_icon]} { + set icon_origin override + set icon_path $override_icon + } else { + set icon_origin default + set icon_path $sourcefolder/runtime/punkshell.ico + } + set have_icon [file isfile $icon_path] + #RT_GROUP_ICON name policy (G-128, user decision 2026-07-29): derived from + #the icon FILE's rootname, uppercased per the RC convention - punkshell.ico + #gives PUNKSHELL for the default icon and for per-kit overrides alike + #(overrides are by convention also named punkshell.ico). Applied by + #whichever mechanism embeds; language stays adopted from the replaced group. + set icon_group "" + if {$have_icon} { + set icon_group [string toupper [file rootname [file tail $icon_path]]] + } + set embedding none + set status "" + set reason "" + if {![string match "win32-*" $rt_target]} { + set status not-applicable + set reason "target $rt_target has no PE resources" + } elseif {$rtname eq "-"} { + set status not-applicable + set reason "runtimeless .kit artifact has no PE container" + } elseif {$kit_type in {cookit cookfs}} { + set status unavailable + set reason "kit type $kit_type edits the payload in place inside the mounted runtime - no payload-free stub moment to stamp" + } elseif {!$have_icon} { + set status unavailable + set reason "icon file not found at $icon_path" + } elseif {$raw_runtime in {{} -} || ![file isfile $raw_runtime]} { + set status unavailable + set reason "extraction produced no raw runtime prefix to stamp" + } else { + #mechanism selection (G-128): the portable stamper when built, else the + #twapi arm; only when neither serves does the step skip - the combined + #reason names both gaps and the punkres build remedy + lassign [::punkboot::kiticon::punkres_available $repo_root] punkres_ok punkres_info + if {!$punkres_ok} { + lassign [::punkboot::kiticon::twapi_available] twapi_ok twapi_reason + if {!$twapi_ok} { + set status unavailable + set reason "$twapi_reason; $punkres_info" + } + } + } + set wrap_runtime $raw_runtime + if {$status eq ""} { + set stamped $buildfolder/iconed_$targetkit + file copy -force $raw_runtime $stamped + catch {exec chmod +w $stamped} + if {$punkres_ok} { + set embedding punkres + set embed_cmd [list ::punkboot::kit_icon_embed_punkres $punkres_info $stamped $icon_path $icon_group] + } else { + set embedding twapi + set embed_cmd [list ::punkboot::kit_icon_embed_twapi $stamped $icon_path $icon_group] + } + if {[catch $embed_cmd embed_result]} { + ::punkboot::print_build_warnings [list "kit icon embedding FAILED for $targetkit ($icon_origin icon $icon_path via $embedding): $embed_result - kit keeps its runtime's own icon"] + set status failed + set reason $embed_result + catch {file delete $stamped} + } else { + set status embedded + set wrap_runtime $stamped + puts stdout " kit icon (G-057): embedded $icon_origin icon into $targetkit stub via $embedding ($embed_result images from [file tail $icon_path])" + } + } elseif {$status eq "not-applicable"} { + puts stdout " kit icon (G-057): embedding NOT APPLICABLE for $targetkit - $reason (sidecar still written)" + } else { + puts stdout " kit icon (G-057): embedding UNAVAILABLE for $targetkit - $reason (sidecar still written)" + } + set esc ::punkboot::kiticon::toml_escape + set lines [list] + lappend lines "# kit resource record (schema 1) for the kit artifact named by this file" + lappend lines "# with the .resources.toml suffix stripped. Emitted by the make.tcl bake" + lappend lines "# icon step (G-057). Optional and advisory; format: bin/AGENTS.md." + lappend lines "schema = 1" + lappend lines "kit = \"[$esc $targetkit]\"" + lappend lines "target = \"[$esc $rt_target]\"" + lappend lines "kit_type = \"[$esc $kit_type]\"" + lappend lines "icon_origin = \"$icon_origin\"" + lappend lines "icon_source = \"[$esc [punkcheck::lib::path_relative $repo_root $icon_path]]\"" + if {$have_icon} { + lappend lines "icon_hash = \"sha256:[::punkboot::kiticon::sha256_file $icon_path]\"" + set ao [::punkboot::kiticon::assetorigin_read $icon_path] + if {[dict exists $ao source]} { + lappend lines "icon_provenance_source = \"[$esc [dict get $ao source]]\"" + } + if {[dict exists $ao source_hash]} { + lappend lines "icon_provenance_source_hash = \"[$esc [dict get $ao source_hash]]\"" + } + lappend lines "icon_group = \"[$esc $icon_group]\"" + } + lappend lines "embedding = \"$embedding\"" + lappend lines "embedding_status = \"$status\"" + lappend lines "embedding_reason = \"[$esc $reason]\"" + set sidecar $buildfolder/$targetkit.resources.toml + ::punkboot::kiticon::writefile_ifchanged $sidecar "[join $lines \n]\n" + return [list $wrap_runtime $sidecar] +} +# -- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- + set startdir [pwd] puts stdout "Found [llength $vfs_tails] .vfs folders - checking each for executables that may need to be built" cd [file dirname $buildfolder] @@ -6461,6 +6964,11 @@ foreach vfstail $vfs_tails { $vfs_event targetset_addsource $sourcefolder/vfs/_config ;#some files linked via fauxlink - need to detect change $vfs_event targetset_addsource $sourcefolder/vfs/_vfscommon.vfs $vfs_event targetset_addsource $sourcefolder/vfs/$vfstail + if {[file isfile $sourcefolder/runtime/punkshell.ico]} { + #G-057: the default kit icon is a build input - a changed icon rebuilds + #kits (an override icon lives inside the .vfs folder, already a source) + $vfs_event targetset_addsource $sourcefolder/runtime/punkshell.ico + } if {$rtname ne "-"} { set building_runtime $buildfolder/build_$runtime_fullname ;#working copy of runtime executable - (possibly with kit/zipfs/cookfs etc attached!) $vfs_event targetset_addsource $building_runtime @@ -6857,6 +7365,13 @@ foreach vfstail $vfs_tails { continue } + #G-057 kit icon step: sidecar for every kit; PE icon embedding where + #the target has PE resources and this host can write them. Stub-first: + #the assemblers below consume wrap_runtime - the stamped per-kit copy + #of the payload-free raw prefix when embedding happened, the untouched + #raw prefix otherwise. Runtime store originals are never modified. + lassign [::punkboot::kit_icon_process $targetkit $rt_target $rtname $target_kit_type $sourcefolder $vfstail $raw_runtime $buildfolder] wrap_runtime kiticon_sidecar + set wrapvfs $targetvfs switch -- $target_kit_type { zip { @@ -6886,14 +7401,14 @@ foreach vfstail $vfs_tails { } if {[info commands ::tcl::zipfs::mkimg] ne ""} { #note - as at 2024-08 - there is some discussion about the interface to mkimg - it is considered unstable (may change to -option value syntax) - puts stderr "calling: tcl::zipfs::mkimg $buildfolder/$vfsname.new $wrapvfs $wrapvfs \"\" $raw_runtime" - tcl::zipfs::mkimg $buildfolder/$vfsname.new $wrapvfs $wrapvfs "" $raw_runtime + puts stderr "calling: tcl::zipfs::mkimg $buildfolder/$vfsname.new $wrapvfs $wrapvfs \"\" $wrap_runtime" + tcl::zipfs::mkimg $buildfolder/$vfsname.new $wrapvfs $wrapvfs "" $wrap_runtime } else { #G-122: the driving tcl has no zipfs (8.6) - assemble the same #kind of image by concatenation. The result mounts on any #zipfs-capable runtime (archive-start-relative offsets). puts stderr "WARNING: tcl shell '[info nameofexecutable]' has no zipfs - assembling zip kit $targetkit by concatenation (raw runtime + mkzip)" - ::punkboot::assemble_zipcat_image $raw_runtime $wrapvfs $buildfolder/$vfsname.new $buildfolder/$vfsname.zip + ::punkboot::assemble_zipcat_image $wrap_runtime $wrapvfs $buildfolder/$vfsname.new $buildfolder/$vfsname.zip } } result ]} { set failmsg "zipfs mkimg failed with msg: $result" @@ -6930,7 +7445,7 @@ foreach vfstail $vfs_tails { } #'archive' based zip offsets - editable in 7z,peazip - ::punkboot::assemble_zipcat_image $raw_runtime $wrapvfs $buildfolder/$vfsname.new $buildfolder/$vfsname.zip + ::punkboot::assemble_zipcat_image $wrap_runtime $wrapvfs $buildfolder/$vfsname.new $buildfolder/$vfsname.zip } result ]} { set failmsg "creating zipcat image failed with msg: $result" puts stderr "creating image (zipcat) $targetkit failed" @@ -7005,13 +7520,13 @@ foreach vfstail $vfs_tails { cd [file dirname $building_runtime] ;#make sure SDX is called with the same working dir as the files we're working on. if {[catch { if {$rtname ne "-"} { - exec {*}$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs -runtime $raw_runtime {*}$verbose + exec {*}$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs -runtime $wrap_runtime {*}$verbose } else { exec {*}$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs {*}$verbose } } result]} { if {$rtname ne "-"} { - set sdxmsg "$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs -runtime $raw_runtime {*}$verbose failed with msg: $result" + set sdxmsg "$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs -runtime $wrap_runtime {*}$verbose failed with msg: $result" } else { set sdxmsg "$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs {*}$verbose failed with msg: $result" } @@ -7175,6 +7690,21 @@ foreach vfstail $vfs_tails { # -- --- --- --- --- --- $vfs_event targetset_end OK + #G-134 post-assembly offset-style pin: the pipeline emits + #ARCHIVE-relative zip payloads by construction - this probe makes + #that a checked contract. Advisory per the G-133 posture: a + #file-relative image earns a recapped BUILD-WARNING (the G-128 + #stamper would refuse it by default) and the kit still builds and + #deploys; plain/none (no attached zip - the metakit kit shape) and + #unreadable results are silence. One EOCD scan + CD walk per + #REBUILT kit only. + lassign [::punkboot::get_kit_offsetstyle_report $buildfolder/$targetkit] offprobe_available offprobe + if {!$offprobe_available} { + puts stderr "NOTE: kit offset-style pin unavailable (punkboot::utils kit_offsetstyle_report not loadable from bootsupport) - continuing without it" + } elseif {[dict get $offprobe offsetstyle] eq "file"} { + ::punkboot::print_build_warnings [list "kit $targetkit assembled with a FILE-relative zip payload (G-134 pin: the pipeline emits archive-relative by construction; the G-128 stamper refuses file-relative by default) - investigate this kit's assembly path"] + } + #G-133 post-build smoke-require probe. Only an actual 'package require' #inside the built artifact observes package RESOLUTION - the wrong-arch #version-shadowing class is invisible to every structural check because @@ -7249,6 +7779,10 @@ foreach vfstail $vfs_tails { puts stdout "$deployment_folder/$targetkit" after 300 file copy $buildfolder/$targetkit $deployment_folder/$targetkit + #G-057: the kit resource sidecar ships with the kit + if {[file isfile $buildfolder/$targetkit.resources.toml]} { + file copy -force $buildfolder/$targetkit.resources.toml $deployment_folder/$targetkit.resources.toml + } lappend installed_kits $targetkit # -- ---------- $bin_event targetset_end OK @@ -7257,6 +7791,12 @@ foreach vfstail $vfs_tails { set skipped_kit_install 1 puts stderr "." puts stdout "Skipping kit install for $targetkit with vfs $vfstail runtime $rtname - no change detected" + #G-057: keep the deployed resource sidecar current even when the kit + #itself is unchanged (the record can be newer than the kit rebuild - + #e.g the sidecar feature arriving, or a host-capability change) + if {[::punkboot::kiticon::copy_ifchanged $buildfolder/$targetkit.resources.toml $deployment_folder/$targetkit.resources.toml] eq "copied"} { + puts stdout " kit icon (G-057): refreshed deployed sidecar $deployment_folder/$targetkit.resources.toml" + } lappend skipped_kit_installs [list kit $targetkit reason "no change detected"] $bin_event targetset_end SKIPPED } diff --git a/src/modules/punkboot/utils-999999.0a1.0.tm b/src/modules/punkboot/utils-999999.0a1.0.tm index 5b188262..1073b1d5 100644 --- a/src/modules/punkboot/utils-999999.0a1.0.tm +++ b/src/modules/punkboot/utils-999999.0a1.0.tm @@ -23,7 +23,7 @@ package require Tcl 8.6- # ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ namespace eval punkboot::utils { variable version 0.1.0 - namespace export binary_arch_classify parse_punkproject_version read_punkproject_version read_changelog_latest_version vcs_dirty_warnings vfs_binary_arch_report vfs_boot_library_report + namespace export binary_arch_classify kit_offsetstyle_report parse_punkproject_version read_punkproject_version read_changelog_latest_version vcs_dirty_warnings vfs_binary_arch_report vfs_boot_library_report namespace eval argdoc { @@ -736,6 +736,65 @@ namespace eval punkboot::utils { dict set report ok [expr {[llength $mismatches] == 0}] return $report } + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::kit_offsetstyle_report + @cmd -name "::punkboot::utils::kit_offsetstyle_report"\ + -summary\ + "Advisory zip offset-style probe of an assembled kit image (G-134)"\ + -help\ + "Probes a finished kit image file with punk::zip::archive_info and + reports the offset convention of any attached zip payload. The + punkshell bake pipeline emits ARCHIVE-relative payloads by + construction; this probe makes that a checked contract - a + 'file' result is the pipeline-regression signal make.tcl + surfaces as a recapped BUILD-WARNING (advisory: the kit still + builds and deploys). 'plain' (the file is a bare zip), 'none' + (no zip attached - e.g the metakit kit shape, or any non-zip + file) and 'unreadable' are silence, not warnings: the pin + covers the offset convention of an attached zip, never the + presence of one. Purely structural: one EOCD scan plus a + central-directory walk, nothing executed, so cross-target kit + images are covered. + + Returned dict keys: + offsetstyle archive | file | plain | none | unreadable + dataoffset payload base offset when archive_info supplies + one (\"\" otherwise) + detail diagnostic text for unreadable (missing file, + punk::zip unavailable, archive_info error); + empty otherwise" + @leaders + kitpath -type string -optional 0 -help\ + "Path of the assembled kit image file to probe" + }] + } + proc kit_offsetstyle_report {kitpath} { + set report [dict create offsetstyle unreadable dataoffset "" detail ""] + if {![file isfile $kitpath]} { + dict set report detail "no such file: $kitpath" + return $report + } + if {[catch {package require punk::zip} errM]} { + dict set report detail "punk::zip not available: $errM" + return $report + } + if {[catch {punk::zip::archive_info $kitpath} zinfo]} { + dict set report detail "archive_info error: $zinfo" + return $report + } + if {[dict exists $zinfo offsetstyle]} { + dict set report offsetstyle [dict get $zinfo offsetstyle] + } else { + dict set report detail "archive_info returned no offsetstyle" + return $report + } + if {[dict exists $zinfo dataoffset]} { + dict set report dataoffset [dict get $zinfo dataoffset] + } + return $report + } } namespace eval ::punk::args::register { diff --git a/src/modules/punkboot/utils-buildversion.txt b/src/modules/punkboot/utils-buildversion.txt index c85f47cb..02323dd1 100644 --- a/src/modules/punkboot/utils-buildversion.txt +++ b/src/modules/punkboot/utils-buildversion.txt @@ -1,6 +1,7 @@ -0.5.0 +0.6.0 #First line must be a semantic version number #all other lines are ignored. +#0.6.0 - added kit_offsetstyle_report (advisory zip offset-style probe of an assembled kit image via punk::zip::archive_info; backs make.tcl's G-134 archive-relative output pin) #0.5.0 - added binary_arch_classify (PE/ELF/Mach-O header classifier, honest unknowns), platform_expected_binary, platform_discriminated_segment and vfs_binary_arch_report (advisory payload/target binary-arch scan of a merged .vfs tree with platform-subdir exemption; backs make.tcl's G-133 payload/target consistency checks) #0.4.0 - vfs_boot_library_report recognises a third tcl-library convention: tcl./ at the vfs root, used by runtimes whose archive mounts at the executable's own path rather than //zipfs:/app (the androwish/undroidwish zipfs backport for 8.6). Such a runtime was being refused as unbootable. 'checked' gains the new location. #0.3.0 - added vfs_boot_library_report (structural boot-precondition check of an assembled .vfs tree; backs make.tcl's G-125 unbootable-kit deploy gate) diff --git a/src/project_layouts/vendor/punk/basic/src/make.tcl b/src/project_layouts/vendor/punk/basic/src/make.tcl index 0658f3c4..1a4aafe3 100644 --- a/src/project_layouts/vendor/punk/basic/src/make.tcl +++ b/src/project_layouts/vendor/punk/basic/src/make.tcl @@ -2300,15 +2300,24 @@ DIAGRAM 2 - KIT ASSEMBLY DETAIL (the 'make.tcl bake' stage; incl. vfslibs phase) (gate) --> refused: kit listed under FAILED KITS, nothing | built, nothing deployed, bin/ untouched | - | zip image appended to the runtime exe: tcl::zipfs::mkimg, - | or (driving tcl without zipfs, e.g 8.6) raw-runtime split - | + punk::zip::mkzip + concatenation - both mount the same + | kit icon step (G-057): .resources.toml sidecar records + | the icon choice for every target (default src/runtime/ + | punkshell.ico; override = punkshell.ico in the kit's own .vfs + | folder, pre-merge); win32 targets on a twapi-capable host get + | the icon stamped into a per-kit copy of the raw runtime stub + | BEFORE the payload attach (non-PE target: not applicable; + | incapable host: distinct notice - sidecar written either way) + | + | zip image appended to the (stamped) runtime exe: tcl::zipfs:: + | mkimg, or (driving tcl without zipfs, e.g 8.6) raw-runtime + | split + punk::zip::mkzip + concatenation - both mount the same v - src/_build/.exe + src/_build/.exe (+ .exe.resources.toml) | | smoke-require probe (host-runnable kits with declared | packages): plain 'package require' inside the artifact [K11] | deploy step: delete old bin/.exe, copy new one in + | (the resource sidecar deploys beside the kit) v bin/.exe <-- FAILS (kit listed under FAILED KITS) if a running shell still holds the old exe [K5] @@ -3469,6 +3478,20 @@ proc ::punkboot::get_vfs_binary_arch_report {vfsfolder targetplatform} { } return [list 1 [::punkboot::utils::vfs_binary_arch_report $vfsfolder $targetplatform]] } +#Availability probe + advisory zip offset-style check of an assembled kit image +#(G-134), shared by the bake loop and the 'check' command report. Same guarded- +#require treatment as the checks above: a stale bootsupport snapshot degrades +#the pin to a NOTE. Returns {available report}. +proc ::punkboot::get_kit_offsetstyle_report {kitpath} { + set available [expr {\ + ![catch {package require punkboot::utils}]\ + && [llength [info commands ::punkboot::utils::kit_offsetstyle_report]]\ + }] + if {!$available} { + return [list 0 [dict create]] + } + return [list 1 [::punkboot::utils::kit_offsetstyle_report $kitpath]] +} #G-133 smoke-require probe: execute a freshly built kit artifact via its 'tclsh' #subcommand and plain-'package require' each declared package inside it. This is the #only check that observes actual package RESOLUTION in the artifact - the punkluck86 @@ -3814,6 +3837,20 @@ if {$::punkboot::command eq "check"} { puts stdout "payload/target arch scan (G-133): UNAVAILABLE (punkboot::utils vfs_binary_arch_report not loadable from bootsupport)" puts stdout " bake will proceed with a NOTE and cannot flag wrong-arch payload libraries - run 'make.tcl modules' then 'make.tcl bootsupport'." } + # Kit offset-style pin (G-134) - advisory archive-relative output contract + puts stdout $sep + #availability probe only - the path deliberately does not exist + lassign [::punkboot::get_kit_offsetstyle_report [file join $projectroot __punkboot_offsetstyle_probe__]] _off_available _off_report + if {$_off_available} { + puts stdout "kit offset-style pin (G-134): ACTIVE (advisory)" + puts stdout " bake probes each assembled kit image with punk::zip::archive_info and emits a recapped" + puts stdout " BUILD-WARNING when an attached zip payload records FILE-relative offsets (the pipeline" + puts stdout " emits archive-relative by construction; the G-128 stamper refuses file-relative by default)." + puts stdout " plain/none results (no attached zip - e.g the metakit kit shape) are silence, not warnings." + } else { + puts stdout "kit offset-style pin (G-134): UNAVAILABLE (punkboot::utils kit_offsetstyle_report not loadable from bootsupport)" + puts stdout " bake will proceed with a NOTE and cannot flag a file-relative kit payload - run 'make.tcl modules' then 'make.tcl bootsupport'." + } set _smoke_declared [list] if {[file exists $sourcefolder/runtime/mapvfs.config]} { set _smokemodel [punkboot::lib::mapvfs_parse $sourcefolder/runtime/mapvfs.config [file dirname $sourcefolder]/bin/runtime $sourcefolder $::punkboot::target_platform] @@ -6296,6 +6333,472 @@ proc ::punkboot::assemble_zipcat_image {raw_runtime wrapvfs outfile zipfile} { return $zipbytes } +# -- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- +#G-057 kit icon step. Every built kit gets a .resources.toml sidecar +#recording the build-time icon choice (default src/runtime/punkshell.ico, +#overridable by a root-level punkshell.ico in the kit's own custom .vfs folder, +#consulted PRE-merge so the _vfscommon copy never reads as an override), and +#win32-target kits get that icon embedded as PE RT_ICON/RT_GROUP_ICON resources +#when this host can write them. Two mechanisms share one semantic (delete ALL +#icon/group entries, write the .ico images as ids 1..N; the RT_GROUP_ICON is +#NAMED from the icon file - uppercased rootname, so punkshell.ico gives +#PUNKSHELL (user decision 2026-07-29, RC uppercase convention) - with language +#adopted from the first replaced group; idempotent by construction, parity +#recorded in the G-128 detail file): the vendored punkres portable stamper +#(G-128, src/tools/punkres, built by 'make.tcl tool build punkres') is +#selected when bin/punkres(.exe) exists and works from ANY build host; +#otherwise the twapi arm (tcl-sfe sfe-0.2.tm ReplaceIconInStub lineage; Ashok +#P. Nadkarni) serves windows hosts with nothing built. Ordering is stub-first either way: a per-kit +#copy of the payload-free raw runtime prefix is stamped BEFORE any payload is +#appended (punkres could also stamp post-hoc - the bake keeps stub-first so +#both arms stay interchangeable). kit_icon_process is the single internal +#entry point - mechanism selection lives inside it. Non-PE targets skip as NOT +#APPLICABLE; a win32 target on an incapable host skips with a distinct notice; +#both still write the sidecar. +#Decisions and skip taxonomy: goals G-057 detail file. Sidecar format doc: +#bin/AGENTS.md. +#sha256 is self-contained (same algorithm as src/assets/logo/make-ico.tcl and +#scriptlib/developer/assetorigin_check.tcl - each stays standalone: make.tcl +#must not depend on scriptlib, and this step must not depend on bootsupport +#freshness; bootsupport carries only sha1/md5). Memoized per path per run. +namespace eval ::punkboot::kiticon { + variable sha256_cache + if {![info exists sha256_cache]} {set sha256_cache [dict create]} + variable twapi_state "" + variable punkres_state "" + variable K { + 0x428a2f98 0x71374491 0xb5c0fbcf 0xe9b5dba5 0x3956c25b 0x59f111f1 0x923f82a4 0xab1c5ed5 + 0xd807aa98 0x12835b01 0x243185be 0x550c7dc3 0x72be5d74 0x80deb1fe 0x9bdc06a7 0xc19bf174 + 0xe49b69c1 0xefbe4786 0x0fc19dc6 0x240ca1cc 0x2de92c6f 0x4a7484aa 0x5cb0a9dc 0x76f988da + 0x983e5152 0xa831c66d 0xb00327c8 0xbf597fc7 0xc6e00bf3 0xd5a79147 0x06ca6351 0x14292967 + 0x27b70a85 0x2e1b2138 0x4d2c6dfc 0x53380d13 0x650a7354 0x766a0abb 0x81c2c92e 0x92722c85 + 0xa2bfe8a1 0xa81a664b 0xc24b8b70 0xc76c51a3 0xd192e819 0xd6990624 0xf40e3585 0x106aa070 + 0x19a4c116 0x1e376c08 0x2748774c 0x34b0bcb5 0x391c0cb3 0x4ed8aa4a 0x5b9cca4f 0x682e6ff3 + 0x748f82ee 0x78a5636f 0x84c87814 0x8cc70208 0x90befffa 0xa4506ceb 0xbef9a3f7 0xc67178f2 + } +} +proc ::punkboot::kiticon::sha256_data {data} { + variable K + set bitlen [expr {wide([string length $data]) * 8}] + append data \x80 + set pad [expr {(56 - [string length $data] % 64 + 64) % 64}] + append data [string repeat \x00 $pad] [binary format W $bitlen] + set h0 0x6a09e667; set h1 0xbb67ae85; set h2 0x3c6ef372; set h3 0xa54ff53a + set h4 0x510e527f; set h5 0x9b05688c; set h6 0x1f83d9ab; set h7 0x5be0cd19 + set n [string length $data] + for {set off 0} {$off < $n} {incr off 64} { + binary scan [string range $data $off [expr {$off + 63}]] Iu16 w + for {set t 16} {$t < 64} {incr t} { + set x [lindex $w [expr {$t - 15}]] + set s0 [expr {((($x >> 7) | ($x << 25)) ^ (($x >> 18) | ($x << 14)) ^ ($x >> 3)) & 0xffffffff}] + set x [lindex $w [expr {$t - 2}]] + set s1 [expr {((($x >> 17) | ($x << 15)) ^ (($x >> 19) | ($x << 13)) ^ ($x >> 10)) & 0xffffffff}] + lappend w [expr {([lindex $w [expr {$t - 16}]] + $s0 + [lindex $w [expr {$t - 7}]] + $s1) & 0xffffffff}] + } + set a $h0; set b $h1; set c $h2; set d $h3 + set e $h4; set f $h5; set g $h6; set h $h7 + for {set t 0} {$t < 64} {incr t} { + set S1 [expr {((($e >> 6) | ($e << 26)) ^ (($e >> 11) | ($e << 21)) ^ (($e >> 25) | ($e << 7))) & 0xffffffff}] + set ch [expr {(($e & $f) ^ (~$e & $g)) & 0xffffffff}] + set T1 [expr {($h + $S1 + $ch + [lindex $K $t] + [lindex $w $t]) & 0xffffffff}] + set S0 [expr {((($a >> 2) | ($a << 30)) ^ (($a >> 13) | ($a << 19)) ^ (($a >> 22) | ($a << 10))) & 0xffffffff}] + set maj [expr {($a & $b) ^ ($a & $c) ^ ($b & $c)}] + set T2 [expr {($S0 + $maj) & 0xffffffff}] + set h $g; set g $f; set f $e; set e [expr {($d + $T1) & 0xffffffff}] + set d $c; set c $b; set b $a; set a [expr {($T1 + $T2) & 0xffffffff}] + } + set h0 [expr {($h0 + $a) & 0xffffffff}]; set h1 [expr {($h1 + $b) & 0xffffffff}] + set h2 [expr {($h2 + $c) & 0xffffffff}]; set h3 [expr {($h3 + $d) & 0xffffffff}] + set h4 [expr {($h4 + $e) & 0xffffffff}]; set h5 [expr {($h5 + $f) & 0xffffffff}] + set h6 [expr {($h6 + $g) & 0xffffffff}]; set h7 [expr {($h7 + $h) & 0xffffffff}] + } + return [format %08x%08x%08x%08x%08x%08x%08x%08x $h0 $h1 $h2 $h3 $h4 $h5 $h6 $h7] +} +proc ::punkboot::kiticon::sha256_file {path} { + variable sha256_cache + set key [file normalize $path] + if {[dict exists $sha256_cache $key]} { + return [dict get $sha256_cache $key] + } + set f [open $path rb] + set data [read $f] + close $f + set hex [sha256_data $data] + dict set sha256_cache $key $hex + return $hex +} +proc ::punkboot::kiticon::toml_escape {s} { + return [string map {\\ \\\\ \" \\\"} $s] +} +#Tolerant subset reader for the chosen icon's G-135 assetorigin sidecar - lifts +#source/source_hash so the kit record reaches back to the SVG-derived master. +#Missing sidecar, unknown schema or malformed content simply yields no +#provenance fields (never an error). +proc ::punkboot::kiticon::assetorigin_read {assetpath} { + set sc $assetpath.assetorigin.toml + set out [dict create] + if {![file isfile $sc]} { + return $out + } + if {[catch { + set f [open $sc rb] + set raw [read $f] + close $f + }]} { + return $out + } + foreach line [split [encoding convertfrom utf-8 $raw] \n] { + set line [string trim [string map [list \r {}] $line]] + if {$line eq "" || [string index $line 0] eq "#"} continue + if {[string index $line 0] eq "\["} break + set eq [string first = $line] + if {$eq < 1} continue + set key [string trim [string range $line 0 [expr {$eq - 1}]]] + if {$key ni {schema source source_hash}} continue + set val [string trim [string range $line [expr {$eq + 1}] end]] + if {[string index $val 0] eq "\""} { + set parsed "" + set ok 0 + set len [string length $val] + for {set i 1} {$i < $len} {incr i} { + set chr [string index $val $i] + if {$chr eq "\\"} { + incr i + append parsed [string index $val $i] + } elseif {$chr eq "\""} { + set ok 1 + break + } else { + append parsed $chr + } + } + if {!$ok} continue + set val $parsed + } else { + set cmt [string first # $val] + if {$cmt >= 0} { + set val [string trim [string range $val 0 [expr {$cmt - 1}]]] + } + } + dict set out $key $val + } + if {![dict exists $out schema] || [dict get $out schema] ne "1"} { + return [dict create] + } + return $out +} +proc ::punkboot::kiticon::writefile_ifchanged {path content} { + if {[file exists $path]} { + set f [open $path rb] + set existing [read $f] + close $f + if {$existing eq $content} { + return unchanged + } + } + set f [open $path wb] + puts -nonewline $f $content + close $f + return written +} +proc ::punkboot::kiticon::copy_ifchanged {from to} { + if {![file isfile $from]} { + return absent + } + set f [open $from rb] + set fromdata [read $f] + close $f + if {[file exists $to]} { + set f [open $to rb] + set todata [read $f] + close $f + if {$todata eq $fromdata} { + return unchanged + } + } + file copy -force $from $to + return copied +} +#Memoized once per run: can this host's tclsh write PE resources? Returns +#{1 {}} or {0 reason} with the reason distinguishing cross-host from +#twapi-unavailable (the acceptance requires distinct notices). +proc ::punkboot::kiticon::twapi_available {} { + variable twapi_state + if {$twapi_state eq "ok"} { + return [list 1 {}] + } + if {$twapi_state ne ""} { + return [list 0 $twapi_state] + } + if {[punkboot::lib::platform_process_family $::punkboot::host_platform] ne "windows"} { + set twapi_state "cross-host: win32 target baked on a $::punkboot::host_platform host cannot run the twapi resource APIs (portable post-hoc stamping is the G-128 remedy)" + return [list 0 $twapi_state] + } + if {[catch {package require twapi_resource}] && [catch {package require twapi}]} { + set twapi_state "twapi resource APIs not loadable in this tclsh ([info nameofexecutable]) - the vendored twapi under vendorlib_tcl/win32-x86_64 serves native windows tclsh builds" + return [list 0 $twapi_state] + } + if {![llength [info commands ::twapi::begin_resource_update]]} { + set twapi_state "twapi loaded but its resource-update APIs are absent" + return [list 0 $twapi_state] + } + set twapi_state ok + return [list 1 {}] +} +#Memoized once per run: locate the built punkres portable stamper (G-128). +#Returns {1 } or {0 }. Presence of the binary IS the +#mechanism-selection signal: with no tool built the twapi arm and its skip +#taxonomy behave exactly as they did before G-128 (zig stays optional). +proc ::punkboot::kiticon::punkres_available {repo_root} { + variable punkres_state + if {$punkres_state ne ""} { + return $punkres_state + } + if {[punkboot::lib::platform_process_family $::punkboot::host_platform] eq "windows"} { + set exe $repo_root/bin/punkres.exe + } else { + set exe $repo_root/bin/punkres + } + if {[file isfile $exe]} { + set punkres_state [list 1 $exe] + } else { + set punkres_state [list 0 "portable stamper not present at $exe - 'tclsh src/make.tcl tool build punkres' builds it from vendored source, or fetch the prebuilt punkbin artifact (win32-x86_64/tools/punkres-*; route: src/tools/punkres/PROVENANCE.md) (G-128)"] + } + return $punkres_state +} +#G-128 punkres arm: exec the vendored portable stamper on the payload-free stub +#copy. punkres itself deletes all icon/group entries, writes the images as ids +#1..N under the first pre-existing group's name+lang (a non-empty +#group_override renames the group via 'set-icon -group' - the seam's naming +#policy; language and codepage adoption unchanged), and re-reads its own +#output (resources AND any overlay) before reporting success - equivalent +#resource content to the twapi arm from the same input (parity evidence in the +#G-128 detail file). Returns the number of images embedded; raises an error +#carrying punkres's output on any nonzero exit. +proc ::punkboot::kit_icon_embed_punkres {punkres_exe exepath icopath {group_override {}}} { + set f [open $icopath rb] + set icondata [read $f] + close $f + binary scan $icondata ttt ico_reserved ico_type ico_count + if {$ico_reserved != 0 || $ico_type != 1} { + error "$icopath is not recognisable as a .ico file" + } + if {$ico_count == 0} { + error "no images in $icopath" + } + set cmd [list exec [file nativename $punkres_exe] set-icon] + if {$group_override ne ""} { + lappend cmd -group $group_override + } + #-drop-opaque-overlay: the stub contract is a payload-free prefix, so any + #non-zip trailing bytes are build detritus - concretely the COFF + #symbol/debug tables mingw-built runtimes carry after their sections, + #which ride into the extraction head. The twapi arm's EndUpdateResource + #has always silently stripped exactly those bytes (measured 2026-07-29, + #G-128 detail); punkres drops them deliberately and zeroes the dangling + #symbol-table header pointer. A REAL zip payload on a stub is unaffected + #(the flag is inert for zip-classified overlays, which punkres preserves). + lappend cmd -drop-opaque-overlay + lappend cmd [file nativename $exepath] [file nativename $icopath] 2>@1 + if {[catch $cmd output]} { + error "punkres set-icon failed: $output" + } + return $ico_count +} +#Replace RT_ICON (type 3) and RT_GROUP_ICON (type 14) in the PE at exepath with +#the images of icopath. Follows sfe-0.2.tm ReplaceIconInStub generalized: all +#existing icon/group entries (any name, any lang) are deleted and the new set +#written as ids 1..N under the first pre-existing group's name+lang (fallback +#name 1, lang 1033), in one resource-update transaction. A non-empty +#group_override replaces the group NAME only (language adoption unchanged) - +#the same override punkres's 'set-icon -group' applies, so the seam's naming +#policy keeps the two arms in parity (G-128). Raises an error on failure +#(after -discard); returns the number of images embedded. The file at exepath +#must carry NO appended payload - a resource update rewrites the image. +proc ::punkboot::kit_icon_embed_twapi {exepath icopath {group_override {}}} { + set f [open $icopath rb] + set icondata [read $f] + close $f + binary scan $icondata ttt ico_reserved ico_type ico_count + if {$ico_reserved != 0 || $ico_type != 1} { + error "$icopath is not recognisable as a .ico file" + } + if {$ico_count == 0} { + error "no images in $icopath" + } + set old_icons [list] + set old_groups [list] + set libh [twapi::load_library $exepath -datafile] + try { + set resources [twapi::extract_resources $libh] + foreach {restype var} {3 old_icons 14 old_groups} { + if {[dict exists $resources $restype]} { + foreach rname [dict keys [dict get $resources $restype]] { + foreach rlang [dict keys [dict get $resources $restype $rname]] { + lappend $var [list $rname $rlang] + } + } + } + } + } trap {TWAPI_WIN32 1812} {} { + #no resource section at all - nothing to enumerate + } finally { + twapi::free_library $libh + } + set group_name 1 + set group_lang 1033 + if {[llength $old_groups]} { + lassign [lindex $old_groups 0] group_name group_lang + } + if {$group_override ne ""} { + set group_name $group_override + } + set update_h [twapi::begin_resource_update $exepath] + try { + foreach entry $old_icons { + lassign $entry rname rlang + twapi::delete_resource $update_h 3 $rname $rlang + } + foreach entry $old_groups { + lassign $entry rname rlang + twapi::delete_resource $update_h 14 $rname $rlang + } + set grouphdr [binary format ttt 0 1 $ico_count] + for {set i 0} {$i < $ico_count} {incr i} { + #.ico ICONDIRENTRY is 16 bytes; GRPICONDIRENTRY is 14 - the trailing + #4-byte image offset becomes a 2-byte icon resource id. Raw width and + #height bytes are carried as-is (0 means 256 in both formats). + set off [expr {6 + 16 * $i}] + binary scan $icondata "@${off} cu cu cu cu tu tu nu nu" w h cc rsv planes bits bytesinres imgoff + set iconid [expr {$i + 1}] + append grouphdr [binary format "cu cu cu cu tu tu nu tu" $w $h $cc $rsv $planes $bits $bytesinres $iconid] + twapi::update_resource $update_h 3 $iconid $group_lang [string range $icondata $imgoff [expr {$imgoff + $bytesinres - 1}]] + } + twapi::update_resource $update_h 14 $group_name $group_lang $grouphdr + } on error {msg ropts} { + catch {twapi::end_resource_update $update_h -discard} + return -options $ropts $msg + } + twapi::end_resource_update $update_h + return $ico_count +} +#G-057 single internal entry point. Decides the kit's icon (override: root +#punkshell.ico in the kit's own custom .vfs folder, pre-merge; else the project +#default src/runtime/punkshell.ico), writes/refreshes the kit's +#.resources.toml sidecar in the build folder, and - when the target +#has PE resources and this host can write them - stamps a per-kit copy of the +#payload-free raw runtime prefix. Returns {wrap_runtime sidecarpath}: +#wrap_runtime is the runtime prefix the assembly step must consume (the stamped +#copy when embedding happened, the untouched raw prefix otherwise). +proc ::punkboot::kit_icon_process {targetkit rt_target rtname kit_type sourcefolder vfstail raw_runtime buildfolder} { + set repo_root [file dirname $sourcefolder] + set override_icon $sourcefolder/vfs/$vfstail/punkshell.ico + if {[file isfile $override_icon]} { + set icon_origin override + set icon_path $override_icon + } else { + set icon_origin default + set icon_path $sourcefolder/runtime/punkshell.ico + } + set have_icon [file isfile $icon_path] + #RT_GROUP_ICON name policy (G-128, user decision 2026-07-29): derived from + #the icon FILE's rootname, uppercased per the RC convention - punkshell.ico + #gives PUNKSHELL for the default icon and for per-kit overrides alike + #(overrides are by convention also named punkshell.ico). Applied by + #whichever mechanism embeds; language stays adopted from the replaced group. + set icon_group "" + if {$have_icon} { + set icon_group [string toupper [file rootname [file tail $icon_path]]] + } + set embedding none + set status "" + set reason "" + if {![string match "win32-*" $rt_target]} { + set status not-applicable + set reason "target $rt_target has no PE resources" + } elseif {$rtname eq "-"} { + set status not-applicable + set reason "runtimeless .kit artifact has no PE container" + } elseif {$kit_type in {cookit cookfs}} { + set status unavailable + set reason "kit type $kit_type edits the payload in place inside the mounted runtime - no payload-free stub moment to stamp" + } elseif {!$have_icon} { + set status unavailable + set reason "icon file not found at $icon_path" + } elseif {$raw_runtime in {{} -} || ![file isfile $raw_runtime]} { + set status unavailable + set reason "extraction produced no raw runtime prefix to stamp" + } else { + #mechanism selection (G-128): the portable stamper when built, else the + #twapi arm; only when neither serves does the step skip - the combined + #reason names both gaps and the punkres build remedy + lassign [::punkboot::kiticon::punkres_available $repo_root] punkres_ok punkres_info + if {!$punkres_ok} { + lassign [::punkboot::kiticon::twapi_available] twapi_ok twapi_reason + if {!$twapi_ok} { + set status unavailable + set reason "$twapi_reason; $punkres_info" + } + } + } + set wrap_runtime $raw_runtime + if {$status eq ""} { + set stamped $buildfolder/iconed_$targetkit + file copy -force $raw_runtime $stamped + catch {exec chmod +w $stamped} + if {$punkres_ok} { + set embedding punkres + set embed_cmd [list ::punkboot::kit_icon_embed_punkres $punkres_info $stamped $icon_path $icon_group] + } else { + set embedding twapi + set embed_cmd [list ::punkboot::kit_icon_embed_twapi $stamped $icon_path $icon_group] + } + if {[catch $embed_cmd embed_result]} { + ::punkboot::print_build_warnings [list "kit icon embedding FAILED for $targetkit ($icon_origin icon $icon_path via $embedding): $embed_result - kit keeps its runtime's own icon"] + set status failed + set reason $embed_result + catch {file delete $stamped} + } else { + set status embedded + set wrap_runtime $stamped + puts stdout " kit icon (G-057): embedded $icon_origin icon into $targetkit stub via $embedding ($embed_result images from [file tail $icon_path])" + } + } elseif {$status eq "not-applicable"} { + puts stdout " kit icon (G-057): embedding NOT APPLICABLE for $targetkit - $reason (sidecar still written)" + } else { + puts stdout " kit icon (G-057): embedding UNAVAILABLE for $targetkit - $reason (sidecar still written)" + } + set esc ::punkboot::kiticon::toml_escape + set lines [list] + lappend lines "# kit resource record (schema 1) for the kit artifact named by this file" + lappend lines "# with the .resources.toml suffix stripped. Emitted by the make.tcl bake" + lappend lines "# icon step (G-057). Optional and advisory; format: bin/AGENTS.md." + lappend lines "schema = 1" + lappend lines "kit = \"[$esc $targetkit]\"" + lappend lines "target = \"[$esc $rt_target]\"" + lappend lines "kit_type = \"[$esc $kit_type]\"" + lappend lines "icon_origin = \"$icon_origin\"" + lappend lines "icon_source = \"[$esc [punkcheck::lib::path_relative $repo_root $icon_path]]\"" + if {$have_icon} { + lappend lines "icon_hash = \"sha256:[::punkboot::kiticon::sha256_file $icon_path]\"" + set ao [::punkboot::kiticon::assetorigin_read $icon_path] + if {[dict exists $ao source]} { + lappend lines "icon_provenance_source = \"[$esc [dict get $ao source]]\"" + } + if {[dict exists $ao source_hash]} { + lappend lines "icon_provenance_source_hash = \"[$esc [dict get $ao source_hash]]\"" + } + lappend lines "icon_group = \"[$esc $icon_group]\"" + } + lappend lines "embedding = \"$embedding\"" + lappend lines "embedding_status = \"$status\"" + lappend lines "embedding_reason = \"[$esc $reason]\"" + set sidecar $buildfolder/$targetkit.resources.toml + ::punkboot::kiticon::writefile_ifchanged $sidecar "[join $lines \n]\n" + return [list $wrap_runtime $sidecar] +} +# -- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- + set startdir [pwd] puts stdout "Found [llength $vfs_tails] .vfs folders - checking each for executables that may need to be built" cd [file dirname $buildfolder] @@ -6461,6 +6964,11 @@ foreach vfstail $vfs_tails { $vfs_event targetset_addsource $sourcefolder/vfs/_config ;#some files linked via fauxlink - need to detect change $vfs_event targetset_addsource $sourcefolder/vfs/_vfscommon.vfs $vfs_event targetset_addsource $sourcefolder/vfs/$vfstail + if {[file isfile $sourcefolder/runtime/punkshell.ico]} { + #G-057: the default kit icon is a build input - a changed icon rebuilds + #kits (an override icon lives inside the .vfs folder, already a source) + $vfs_event targetset_addsource $sourcefolder/runtime/punkshell.ico + } if {$rtname ne "-"} { set building_runtime $buildfolder/build_$runtime_fullname ;#working copy of runtime executable - (possibly with kit/zipfs/cookfs etc attached!) $vfs_event targetset_addsource $building_runtime @@ -6857,6 +7365,13 @@ foreach vfstail $vfs_tails { continue } + #G-057 kit icon step: sidecar for every kit; PE icon embedding where + #the target has PE resources and this host can write them. Stub-first: + #the assemblers below consume wrap_runtime - the stamped per-kit copy + #of the payload-free raw prefix when embedding happened, the untouched + #raw prefix otherwise. Runtime store originals are never modified. + lassign [::punkboot::kit_icon_process $targetkit $rt_target $rtname $target_kit_type $sourcefolder $vfstail $raw_runtime $buildfolder] wrap_runtime kiticon_sidecar + set wrapvfs $targetvfs switch -- $target_kit_type { zip { @@ -6886,14 +7401,14 @@ foreach vfstail $vfs_tails { } if {[info commands ::tcl::zipfs::mkimg] ne ""} { #note - as at 2024-08 - there is some discussion about the interface to mkimg - it is considered unstable (may change to -option value syntax) - puts stderr "calling: tcl::zipfs::mkimg $buildfolder/$vfsname.new $wrapvfs $wrapvfs \"\" $raw_runtime" - tcl::zipfs::mkimg $buildfolder/$vfsname.new $wrapvfs $wrapvfs "" $raw_runtime + puts stderr "calling: tcl::zipfs::mkimg $buildfolder/$vfsname.new $wrapvfs $wrapvfs \"\" $wrap_runtime" + tcl::zipfs::mkimg $buildfolder/$vfsname.new $wrapvfs $wrapvfs "" $wrap_runtime } else { #G-122: the driving tcl has no zipfs (8.6) - assemble the same #kind of image by concatenation. The result mounts on any #zipfs-capable runtime (archive-start-relative offsets). puts stderr "WARNING: tcl shell '[info nameofexecutable]' has no zipfs - assembling zip kit $targetkit by concatenation (raw runtime + mkzip)" - ::punkboot::assemble_zipcat_image $raw_runtime $wrapvfs $buildfolder/$vfsname.new $buildfolder/$vfsname.zip + ::punkboot::assemble_zipcat_image $wrap_runtime $wrapvfs $buildfolder/$vfsname.new $buildfolder/$vfsname.zip } } result ]} { set failmsg "zipfs mkimg failed with msg: $result" @@ -6930,7 +7445,7 @@ foreach vfstail $vfs_tails { } #'archive' based zip offsets - editable in 7z,peazip - ::punkboot::assemble_zipcat_image $raw_runtime $wrapvfs $buildfolder/$vfsname.new $buildfolder/$vfsname.zip + ::punkboot::assemble_zipcat_image $wrap_runtime $wrapvfs $buildfolder/$vfsname.new $buildfolder/$vfsname.zip } result ]} { set failmsg "creating zipcat image failed with msg: $result" puts stderr "creating image (zipcat) $targetkit failed" @@ -7005,13 +7520,13 @@ foreach vfstail $vfs_tails { cd [file dirname $building_runtime] ;#make sure SDX is called with the same working dir as the files we're working on. if {[catch { if {$rtname ne "-"} { - exec {*}$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs -runtime $raw_runtime {*}$verbose + exec {*}$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs -runtime $wrap_runtime {*}$verbose } else { exec {*}$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs {*}$verbose } } result]} { if {$rtname ne "-"} { - set sdxmsg "$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs -runtime $raw_runtime {*}$verbose failed with msg: $result" + set sdxmsg "$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs -runtime $wrap_runtime {*}$verbose failed with msg: $result" } else { set sdxmsg "$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs {*}$verbose failed with msg: $result" } @@ -7175,6 +7690,21 @@ foreach vfstail $vfs_tails { # -- --- --- --- --- --- $vfs_event targetset_end OK + #G-134 post-assembly offset-style pin: the pipeline emits + #ARCHIVE-relative zip payloads by construction - this probe makes + #that a checked contract. Advisory per the G-133 posture: a + #file-relative image earns a recapped BUILD-WARNING (the G-128 + #stamper would refuse it by default) and the kit still builds and + #deploys; plain/none (no attached zip - the metakit kit shape) and + #unreadable results are silence. One EOCD scan + CD walk per + #REBUILT kit only. + lassign [::punkboot::get_kit_offsetstyle_report $buildfolder/$targetkit] offprobe_available offprobe + if {!$offprobe_available} { + puts stderr "NOTE: kit offset-style pin unavailable (punkboot::utils kit_offsetstyle_report not loadable from bootsupport) - continuing without it" + } elseif {[dict get $offprobe offsetstyle] eq "file"} { + ::punkboot::print_build_warnings [list "kit $targetkit assembled with a FILE-relative zip payload (G-134 pin: the pipeline emits archive-relative by construction; the G-128 stamper refuses file-relative by default) - investigate this kit's assembly path"] + } + #G-133 post-build smoke-require probe. Only an actual 'package require' #inside the built artifact observes package RESOLUTION - the wrong-arch #version-shadowing class is invisible to every structural check because @@ -7249,6 +7779,10 @@ foreach vfstail $vfs_tails { puts stdout "$deployment_folder/$targetkit" after 300 file copy $buildfolder/$targetkit $deployment_folder/$targetkit + #G-057: the kit resource sidecar ships with the kit + if {[file isfile $buildfolder/$targetkit.resources.toml]} { + file copy -force $buildfolder/$targetkit.resources.toml $deployment_folder/$targetkit.resources.toml + } lappend installed_kits $targetkit # -- ---------- $bin_event targetset_end OK @@ -7257,6 +7791,12 @@ foreach vfstail $vfs_tails { set skipped_kit_install 1 puts stderr "." puts stdout "Skipping kit install for $targetkit with vfs $vfstail runtime $rtname - no change detected" + #G-057: keep the deployed resource sidecar current even when the kit + #itself is unchanged (the record can be newer than the kit rebuild - + #e.g the sidecar feature arriving, or a host-capability change) + if {[::punkboot::kiticon::copy_ifchanged $buildfolder/$targetkit.resources.toml $deployment_folder/$targetkit.resources.toml] eq "copied"} { + puts stdout " kit icon (G-057): refreshed deployed sidecar $deployment_folder/$targetkit.resources.toml" + } lappend skipped_kit_installs [list kit $targetkit reason "no change detected"] $bin_event targetset_end SKIPPED } diff --git a/src/project_layouts/vendor/punk/project-0.1/src/make.tcl b/src/project_layouts/vendor/punk/project-0.1/src/make.tcl index 0658f3c4..1a4aafe3 100644 --- a/src/project_layouts/vendor/punk/project-0.1/src/make.tcl +++ b/src/project_layouts/vendor/punk/project-0.1/src/make.tcl @@ -2300,15 +2300,24 @@ DIAGRAM 2 - KIT ASSEMBLY DETAIL (the 'make.tcl bake' stage; incl. vfslibs phase) (gate) --> refused: kit listed under FAILED KITS, nothing | built, nothing deployed, bin/ untouched | - | zip image appended to the runtime exe: tcl::zipfs::mkimg, - | or (driving tcl without zipfs, e.g 8.6) raw-runtime split - | + punk::zip::mkzip + concatenation - both mount the same + | kit icon step (G-057): .resources.toml sidecar records + | the icon choice for every target (default src/runtime/ + | punkshell.ico; override = punkshell.ico in the kit's own .vfs + | folder, pre-merge); win32 targets on a twapi-capable host get + | the icon stamped into a per-kit copy of the raw runtime stub + | BEFORE the payload attach (non-PE target: not applicable; + | incapable host: distinct notice - sidecar written either way) + | + | zip image appended to the (stamped) runtime exe: tcl::zipfs:: + | mkimg, or (driving tcl without zipfs, e.g 8.6) raw-runtime + | split + punk::zip::mkzip + concatenation - both mount the same v - src/_build/.exe + src/_build/.exe (+ .exe.resources.toml) | | smoke-require probe (host-runnable kits with declared | packages): plain 'package require' inside the artifact [K11] | deploy step: delete old bin/.exe, copy new one in + | (the resource sidecar deploys beside the kit) v bin/.exe <-- FAILS (kit listed under FAILED KITS) if a running shell still holds the old exe [K5] @@ -3469,6 +3478,20 @@ proc ::punkboot::get_vfs_binary_arch_report {vfsfolder targetplatform} { } return [list 1 [::punkboot::utils::vfs_binary_arch_report $vfsfolder $targetplatform]] } +#Availability probe + advisory zip offset-style check of an assembled kit image +#(G-134), shared by the bake loop and the 'check' command report. Same guarded- +#require treatment as the checks above: a stale bootsupport snapshot degrades +#the pin to a NOTE. Returns {available report}. +proc ::punkboot::get_kit_offsetstyle_report {kitpath} { + set available [expr {\ + ![catch {package require punkboot::utils}]\ + && [llength [info commands ::punkboot::utils::kit_offsetstyle_report]]\ + }] + if {!$available} { + return [list 0 [dict create]] + } + return [list 1 [::punkboot::utils::kit_offsetstyle_report $kitpath]] +} #G-133 smoke-require probe: execute a freshly built kit artifact via its 'tclsh' #subcommand and plain-'package require' each declared package inside it. This is the #only check that observes actual package RESOLUTION in the artifact - the punkluck86 @@ -3814,6 +3837,20 @@ if {$::punkboot::command eq "check"} { puts stdout "payload/target arch scan (G-133): UNAVAILABLE (punkboot::utils vfs_binary_arch_report not loadable from bootsupport)" puts stdout " bake will proceed with a NOTE and cannot flag wrong-arch payload libraries - run 'make.tcl modules' then 'make.tcl bootsupport'." } + # Kit offset-style pin (G-134) - advisory archive-relative output contract + puts stdout $sep + #availability probe only - the path deliberately does not exist + lassign [::punkboot::get_kit_offsetstyle_report [file join $projectroot __punkboot_offsetstyle_probe__]] _off_available _off_report + if {$_off_available} { + puts stdout "kit offset-style pin (G-134): ACTIVE (advisory)" + puts stdout " bake probes each assembled kit image with punk::zip::archive_info and emits a recapped" + puts stdout " BUILD-WARNING when an attached zip payload records FILE-relative offsets (the pipeline" + puts stdout " emits archive-relative by construction; the G-128 stamper refuses file-relative by default)." + puts stdout " plain/none results (no attached zip - e.g the metakit kit shape) are silence, not warnings." + } else { + puts stdout "kit offset-style pin (G-134): UNAVAILABLE (punkboot::utils kit_offsetstyle_report not loadable from bootsupport)" + puts stdout " bake will proceed with a NOTE and cannot flag a file-relative kit payload - run 'make.tcl modules' then 'make.tcl bootsupport'." + } set _smoke_declared [list] if {[file exists $sourcefolder/runtime/mapvfs.config]} { set _smokemodel [punkboot::lib::mapvfs_parse $sourcefolder/runtime/mapvfs.config [file dirname $sourcefolder]/bin/runtime $sourcefolder $::punkboot::target_platform] @@ -6296,6 +6333,472 @@ proc ::punkboot::assemble_zipcat_image {raw_runtime wrapvfs outfile zipfile} { return $zipbytes } +# -- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- +#G-057 kit icon step. Every built kit gets a .resources.toml sidecar +#recording the build-time icon choice (default src/runtime/punkshell.ico, +#overridable by a root-level punkshell.ico in the kit's own custom .vfs folder, +#consulted PRE-merge so the _vfscommon copy never reads as an override), and +#win32-target kits get that icon embedded as PE RT_ICON/RT_GROUP_ICON resources +#when this host can write them. Two mechanisms share one semantic (delete ALL +#icon/group entries, write the .ico images as ids 1..N; the RT_GROUP_ICON is +#NAMED from the icon file - uppercased rootname, so punkshell.ico gives +#PUNKSHELL (user decision 2026-07-29, RC uppercase convention) - with language +#adopted from the first replaced group; idempotent by construction, parity +#recorded in the G-128 detail file): the vendored punkres portable stamper +#(G-128, src/tools/punkres, built by 'make.tcl tool build punkres') is +#selected when bin/punkres(.exe) exists and works from ANY build host; +#otherwise the twapi arm (tcl-sfe sfe-0.2.tm ReplaceIconInStub lineage; Ashok +#P. Nadkarni) serves windows hosts with nothing built. Ordering is stub-first either way: a per-kit +#copy of the payload-free raw runtime prefix is stamped BEFORE any payload is +#appended (punkres could also stamp post-hoc - the bake keeps stub-first so +#both arms stay interchangeable). kit_icon_process is the single internal +#entry point - mechanism selection lives inside it. Non-PE targets skip as NOT +#APPLICABLE; a win32 target on an incapable host skips with a distinct notice; +#both still write the sidecar. +#Decisions and skip taxonomy: goals G-057 detail file. Sidecar format doc: +#bin/AGENTS.md. +#sha256 is self-contained (same algorithm as src/assets/logo/make-ico.tcl and +#scriptlib/developer/assetorigin_check.tcl - each stays standalone: make.tcl +#must not depend on scriptlib, and this step must not depend on bootsupport +#freshness; bootsupport carries only sha1/md5). Memoized per path per run. +namespace eval ::punkboot::kiticon { + variable sha256_cache + if {![info exists sha256_cache]} {set sha256_cache [dict create]} + variable twapi_state "" + variable punkres_state "" + variable K { + 0x428a2f98 0x71374491 0xb5c0fbcf 0xe9b5dba5 0x3956c25b 0x59f111f1 0x923f82a4 0xab1c5ed5 + 0xd807aa98 0x12835b01 0x243185be 0x550c7dc3 0x72be5d74 0x80deb1fe 0x9bdc06a7 0xc19bf174 + 0xe49b69c1 0xefbe4786 0x0fc19dc6 0x240ca1cc 0x2de92c6f 0x4a7484aa 0x5cb0a9dc 0x76f988da + 0x983e5152 0xa831c66d 0xb00327c8 0xbf597fc7 0xc6e00bf3 0xd5a79147 0x06ca6351 0x14292967 + 0x27b70a85 0x2e1b2138 0x4d2c6dfc 0x53380d13 0x650a7354 0x766a0abb 0x81c2c92e 0x92722c85 + 0xa2bfe8a1 0xa81a664b 0xc24b8b70 0xc76c51a3 0xd192e819 0xd6990624 0xf40e3585 0x106aa070 + 0x19a4c116 0x1e376c08 0x2748774c 0x34b0bcb5 0x391c0cb3 0x4ed8aa4a 0x5b9cca4f 0x682e6ff3 + 0x748f82ee 0x78a5636f 0x84c87814 0x8cc70208 0x90befffa 0xa4506ceb 0xbef9a3f7 0xc67178f2 + } +} +proc ::punkboot::kiticon::sha256_data {data} { + variable K + set bitlen [expr {wide([string length $data]) * 8}] + append data \x80 + set pad [expr {(56 - [string length $data] % 64 + 64) % 64}] + append data [string repeat \x00 $pad] [binary format W $bitlen] + set h0 0x6a09e667; set h1 0xbb67ae85; set h2 0x3c6ef372; set h3 0xa54ff53a + set h4 0x510e527f; set h5 0x9b05688c; set h6 0x1f83d9ab; set h7 0x5be0cd19 + set n [string length $data] + for {set off 0} {$off < $n} {incr off 64} { + binary scan [string range $data $off [expr {$off + 63}]] Iu16 w + for {set t 16} {$t < 64} {incr t} { + set x [lindex $w [expr {$t - 15}]] + set s0 [expr {((($x >> 7) | ($x << 25)) ^ (($x >> 18) | ($x << 14)) ^ ($x >> 3)) & 0xffffffff}] + set x [lindex $w [expr {$t - 2}]] + set s1 [expr {((($x >> 17) | ($x << 15)) ^ (($x >> 19) | ($x << 13)) ^ ($x >> 10)) & 0xffffffff}] + lappend w [expr {([lindex $w [expr {$t - 16}]] + $s0 + [lindex $w [expr {$t - 7}]] + $s1) & 0xffffffff}] + } + set a $h0; set b $h1; set c $h2; set d $h3 + set e $h4; set f $h5; set g $h6; set h $h7 + for {set t 0} {$t < 64} {incr t} { + set S1 [expr {((($e >> 6) | ($e << 26)) ^ (($e >> 11) | ($e << 21)) ^ (($e >> 25) | ($e << 7))) & 0xffffffff}] + set ch [expr {(($e & $f) ^ (~$e & $g)) & 0xffffffff}] + set T1 [expr {($h + $S1 + $ch + [lindex $K $t] + [lindex $w $t]) & 0xffffffff}] + set S0 [expr {((($a >> 2) | ($a << 30)) ^ (($a >> 13) | ($a << 19)) ^ (($a >> 22) | ($a << 10))) & 0xffffffff}] + set maj [expr {($a & $b) ^ ($a & $c) ^ ($b & $c)}] + set T2 [expr {($S0 + $maj) & 0xffffffff}] + set h $g; set g $f; set f $e; set e [expr {($d + $T1) & 0xffffffff}] + set d $c; set c $b; set b $a; set a [expr {($T1 + $T2) & 0xffffffff}] + } + set h0 [expr {($h0 + $a) & 0xffffffff}]; set h1 [expr {($h1 + $b) & 0xffffffff}] + set h2 [expr {($h2 + $c) & 0xffffffff}]; set h3 [expr {($h3 + $d) & 0xffffffff}] + set h4 [expr {($h4 + $e) & 0xffffffff}]; set h5 [expr {($h5 + $f) & 0xffffffff}] + set h6 [expr {($h6 + $g) & 0xffffffff}]; set h7 [expr {($h7 + $h) & 0xffffffff}] + } + return [format %08x%08x%08x%08x%08x%08x%08x%08x $h0 $h1 $h2 $h3 $h4 $h5 $h6 $h7] +} +proc ::punkboot::kiticon::sha256_file {path} { + variable sha256_cache + set key [file normalize $path] + if {[dict exists $sha256_cache $key]} { + return [dict get $sha256_cache $key] + } + set f [open $path rb] + set data [read $f] + close $f + set hex [sha256_data $data] + dict set sha256_cache $key $hex + return $hex +} +proc ::punkboot::kiticon::toml_escape {s} { + return [string map {\\ \\\\ \" \\\"} $s] +} +#Tolerant subset reader for the chosen icon's G-135 assetorigin sidecar - lifts +#source/source_hash so the kit record reaches back to the SVG-derived master. +#Missing sidecar, unknown schema or malformed content simply yields no +#provenance fields (never an error). +proc ::punkboot::kiticon::assetorigin_read {assetpath} { + set sc $assetpath.assetorigin.toml + set out [dict create] + if {![file isfile $sc]} { + return $out + } + if {[catch { + set f [open $sc rb] + set raw [read $f] + close $f + }]} { + return $out + } + foreach line [split [encoding convertfrom utf-8 $raw] \n] { + set line [string trim [string map [list \r {}] $line]] + if {$line eq "" || [string index $line 0] eq "#"} continue + if {[string index $line 0] eq "\["} break + set eq [string first = $line] + if {$eq < 1} continue + set key [string trim [string range $line 0 [expr {$eq - 1}]]] + if {$key ni {schema source source_hash}} continue + set val [string trim [string range $line [expr {$eq + 1}] end]] + if {[string index $val 0] eq "\""} { + set parsed "" + set ok 0 + set len [string length $val] + for {set i 1} {$i < $len} {incr i} { + set chr [string index $val $i] + if {$chr eq "\\"} { + incr i + append parsed [string index $val $i] + } elseif {$chr eq "\""} { + set ok 1 + break + } else { + append parsed $chr + } + } + if {!$ok} continue + set val $parsed + } else { + set cmt [string first # $val] + if {$cmt >= 0} { + set val [string trim [string range $val 0 [expr {$cmt - 1}]]] + } + } + dict set out $key $val + } + if {![dict exists $out schema] || [dict get $out schema] ne "1"} { + return [dict create] + } + return $out +} +proc ::punkboot::kiticon::writefile_ifchanged {path content} { + if {[file exists $path]} { + set f [open $path rb] + set existing [read $f] + close $f + if {$existing eq $content} { + return unchanged + } + } + set f [open $path wb] + puts -nonewline $f $content + close $f + return written +} +proc ::punkboot::kiticon::copy_ifchanged {from to} { + if {![file isfile $from]} { + return absent + } + set f [open $from rb] + set fromdata [read $f] + close $f + if {[file exists $to]} { + set f [open $to rb] + set todata [read $f] + close $f + if {$todata eq $fromdata} { + return unchanged + } + } + file copy -force $from $to + return copied +} +#Memoized once per run: can this host's tclsh write PE resources? Returns +#{1 {}} or {0 reason} with the reason distinguishing cross-host from +#twapi-unavailable (the acceptance requires distinct notices). +proc ::punkboot::kiticon::twapi_available {} { + variable twapi_state + if {$twapi_state eq "ok"} { + return [list 1 {}] + } + if {$twapi_state ne ""} { + return [list 0 $twapi_state] + } + if {[punkboot::lib::platform_process_family $::punkboot::host_platform] ne "windows"} { + set twapi_state "cross-host: win32 target baked on a $::punkboot::host_platform host cannot run the twapi resource APIs (portable post-hoc stamping is the G-128 remedy)" + return [list 0 $twapi_state] + } + if {[catch {package require twapi_resource}] && [catch {package require twapi}]} { + set twapi_state "twapi resource APIs not loadable in this tclsh ([info nameofexecutable]) - the vendored twapi under vendorlib_tcl/win32-x86_64 serves native windows tclsh builds" + return [list 0 $twapi_state] + } + if {![llength [info commands ::twapi::begin_resource_update]]} { + set twapi_state "twapi loaded but its resource-update APIs are absent" + return [list 0 $twapi_state] + } + set twapi_state ok + return [list 1 {}] +} +#Memoized once per run: locate the built punkres portable stamper (G-128). +#Returns {1 } or {0 }. Presence of the binary IS the +#mechanism-selection signal: with no tool built the twapi arm and its skip +#taxonomy behave exactly as they did before G-128 (zig stays optional). +proc ::punkboot::kiticon::punkres_available {repo_root} { + variable punkres_state + if {$punkres_state ne ""} { + return $punkres_state + } + if {[punkboot::lib::platform_process_family $::punkboot::host_platform] eq "windows"} { + set exe $repo_root/bin/punkres.exe + } else { + set exe $repo_root/bin/punkres + } + if {[file isfile $exe]} { + set punkres_state [list 1 $exe] + } else { + set punkres_state [list 0 "portable stamper not present at $exe - 'tclsh src/make.tcl tool build punkres' builds it from vendored source, or fetch the prebuilt punkbin artifact (win32-x86_64/tools/punkres-*; route: src/tools/punkres/PROVENANCE.md) (G-128)"] + } + return $punkres_state +} +#G-128 punkres arm: exec the vendored portable stamper on the payload-free stub +#copy. punkres itself deletes all icon/group entries, writes the images as ids +#1..N under the first pre-existing group's name+lang (a non-empty +#group_override renames the group via 'set-icon -group' - the seam's naming +#policy; language and codepage adoption unchanged), and re-reads its own +#output (resources AND any overlay) before reporting success - equivalent +#resource content to the twapi arm from the same input (parity evidence in the +#G-128 detail file). Returns the number of images embedded; raises an error +#carrying punkres's output on any nonzero exit. +proc ::punkboot::kit_icon_embed_punkres {punkres_exe exepath icopath {group_override {}}} { + set f [open $icopath rb] + set icondata [read $f] + close $f + binary scan $icondata ttt ico_reserved ico_type ico_count + if {$ico_reserved != 0 || $ico_type != 1} { + error "$icopath is not recognisable as a .ico file" + } + if {$ico_count == 0} { + error "no images in $icopath" + } + set cmd [list exec [file nativename $punkres_exe] set-icon] + if {$group_override ne ""} { + lappend cmd -group $group_override + } + #-drop-opaque-overlay: the stub contract is a payload-free prefix, so any + #non-zip trailing bytes are build detritus - concretely the COFF + #symbol/debug tables mingw-built runtimes carry after their sections, + #which ride into the extraction head. The twapi arm's EndUpdateResource + #has always silently stripped exactly those bytes (measured 2026-07-29, + #G-128 detail); punkres drops them deliberately and zeroes the dangling + #symbol-table header pointer. A REAL zip payload on a stub is unaffected + #(the flag is inert for zip-classified overlays, which punkres preserves). + lappend cmd -drop-opaque-overlay + lappend cmd [file nativename $exepath] [file nativename $icopath] 2>@1 + if {[catch $cmd output]} { + error "punkres set-icon failed: $output" + } + return $ico_count +} +#Replace RT_ICON (type 3) and RT_GROUP_ICON (type 14) in the PE at exepath with +#the images of icopath. Follows sfe-0.2.tm ReplaceIconInStub generalized: all +#existing icon/group entries (any name, any lang) are deleted and the new set +#written as ids 1..N under the first pre-existing group's name+lang (fallback +#name 1, lang 1033), in one resource-update transaction. A non-empty +#group_override replaces the group NAME only (language adoption unchanged) - +#the same override punkres's 'set-icon -group' applies, so the seam's naming +#policy keeps the two arms in parity (G-128). Raises an error on failure +#(after -discard); returns the number of images embedded. The file at exepath +#must carry NO appended payload - a resource update rewrites the image. +proc ::punkboot::kit_icon_embed_twapi {exepath icopath {group_override {}}} { + set f [open $icopath rb] + set icondata [read $f] + close $f + binary scan $icondata ttt ico_reserved ico_type ico_count + if {$ico_reserved != 0 || $ico_type != 1} { + error "$icopath is not recognisable as a .ico file" + } + if {$ico_count == 0} { + error "no images in $icopath" + } + set old_icons [list] + set old_groups [list] + set libh [twapi::load_library $exepath -datafile] + try { + set resources [twapi::extract_resources $libh] + foreach {restype var} {3 old_icons 14 old_groups} { + if {[dict exists $resources $restype]} { + foreach rname [dict keys [dict get $resources $restype]] { + foreach rlang [dict keys [dict get $resources $restype $rname]] { + lappend $var [list $rname $rlang] + } + } + } + } + } trap {TWAPI_WIN32 1812} {} { + #no resource section at all - nothing to enumerate + } finally { + twapi::free_library $libh + } + set group_name 1 + set group_lang 1033 + if {[llength $old_groups]} { + lassign [lindex $old_groups 0] group_name group_lang + } + if {$group_override ne ""} { + set group_name $group_override + } + set update_h [twapi::begin_resource_update $exepath] + try { + foreach entry $old_icons { + lassign $entry rname rlang + twapi::delete_resource $update_h 3 $rname $rlang + } + foreach entry $old_groups { + lassign $entry rname rlang + twapi::delete_resource $update_h 14 $rname $rlang + } + set grouphdr [binary format ttt 0 1 $ico_count] + for {set i 0} {$i < $ico_count} {incr i} { + #.ico ICONDIRENTRY is 16 bytes; GRPICONDIRENTRY is 14 - the trailing + #4-byte image offset becomes a 2-byte icon resource id. Raw width and + #height bytes are carried as-is (0 means 256 in both formats). + set off [expr {6 + 16 * $i}] + binary scan $icondata "@${off} cu cu cu cu tu tu nu nu" w h cc rsv planes bits bytesinres imgoff + set iconid [expr {$i + 1}] + append grouphdr [binary format "cu cu cu cu tu tu nu tu" $w $h $cc $rsv $planes $bits $bytesinres $iconid] + twapi::update_resource $update_h 3 $iconid $group_lang [string range $icondata $imgoff [expr {$imgoff + $bytesinres - 1}]] + } + twapi::update_resource $update_h 14 $group_name $group_lang $grouphdr + } on error {msg ropts} { + catch {twapi::end_resource_update $update_h -discard} + return -options $ropts $msg + } + twapi::end_resource_update $update_h + return $ico_count +} +#G-057 single internal entry point. Decides the kit's icon (override: root +#punkshell.ico in the kit's own custom .vfs folder, pre-merge; else the project +#default src/runtime/punkshell.ico), writes/refreshes the kit's +#.resources.toml sidecar in the build folder, and - when the target +#has PE resources and this host can write them - stamps a per-kit copy of the +#payload-free raw runtime prefix. Returns {wrap_runtime sidecarpath}: +#wrap_runtime is the runtime prefix the assembly step must consume (the stamped +#copy when embedding happened, the untouched raw prefix otherwise). +proc ::punkboot::kit_icon_process {targetkit rt_target rtname kit_type sourcefolder vfstail raw_runtime buildfolder} { + set repo_root [file dirname $sourcefolder] + set override_icon $sourcefolder/vfs/$vfstail/punkshell.ico + if {[file isfile $override_icon]} { + set icon_origin override + set icon_path $override_icon + } else { + set icon_origin default + set icon_path $sourcefolder/runtime/punkshell.ico + } + set have_icon [file isfile $icon_path] + #RT_GROUP_ICON name policy (G-128, user decision 2026-07-29): derived from + #the icon FILE's rootname, uppercased per the RC convention - punkshell.ico + #gives PUNKSHELL for the default icon and for per-kit overrides alike + #(overrides are by convention also named punkshell.ico). Applied by + #whichever mechanism embeds; language stays adopted from the replaced group. + set icon_group "" + if {$have_icon} { + set icon_group [string toupper [file rootname [file tail $icon_path]]] + } + set embedding none + set status "" + set reason "" + if {![string match "win32-*" $rt_target]} { + set status not-applicable + set reason "target $rt_target has no PE resources" + } elseif {$rtname eq "-"} { + set status not-applicable + set reason "runtimeless .kit artifact has no PE container" + } elseif {$kit_type in {cookit cookfs}} { + set status unavailable + set reason "kit type $kit_type edits the payload in place inside the mounted runtime - no payload-free stub moment to stamp" + } elseif {!$have_icon} { + set status unavailable + set reason "icon file not found at $icon_path" + } elseif {$raw_runtime in {{} -} || ![file isfile $raw_runtime]} { + set status unavailable + set reason "extraction produced no raw runtime prefix to stamp" + } else { + #mechanism selection (G-128): the portable stamper when built, else the + #twapi arm; only when neither serves does the step skip - the combined + #reason names both gaps and the punkres build remedy + lassign [::punkboot::kiticon::punkres_available $repo_root] punkres_ok punkres_info + if {!$punkres_ok} { + lassign [::punkboot::kiticon::twapi_available] twapi_ok twapi_reason + if {!$twapi_ok} { + set status unavailable + set reason "$twapi_reason; $punkres_info" + } + } + } + set wrap_runtime $raw_runtime + if {$status eq ""} { + set stamped $buildfolder/iconed_$targetkit + file copy -force $raw_runtime $stamped + catch {exec chmod +w $stamped} + if {$punkres_ok} { + set embedding punkres + set embed_cmd [list ::punkboot::kit_icon_embed_punkres $punkres_info $stamped $icon_path $icon_group] + } else { + set embedding twapi + set embed_cmd [list ::punkboot::kit_icon_embed_twapi $stamped $icon_path $icon_group] + } + if {[catch $embed_cmd embed_result]} { + ::punkboot::print_build_warnings [list "kit icon embedding FAILED for $targetkit ($icon_origin icon $icon_path via $embedding): $embed_result - kit keeps its runtime's own icon"] + set status failed + set reason $embed_result + catch {file delete $stamped} + } else { + set status embedded + set wrap_runtime $stamped + puts stdout " kit icon (G-057): embedded $icon_origin icon into $targetkit stub via $embedding ($embed_result images from [file tail $icon_path])" + } + } elseif {$status eq "not-applicable"} { + puts stdout " kit icon (G-057): embedding NOT APPLICABLE for $targetkit - $reason (sidecar still written)" + } else { + puts stdout " kit icon (G-057): embedding UNAVAILABLE for $targetkit - $reason (sidecar still written)" + } + set esc ::punkboot::kiticon::toml_escape + set lines [list] + lappend lines "# kit resource record (schema 1) for the kit artifact named by this file" + lappend lines "# with the .resources.toml suffix stripped. Emitted by the make.tcl bake" + lappend lines "# icon step (G-057). Optional and advisory; format: bin/AGENTS.md." + lappend lines "schema = 1" + lappend lines "kit = \"[$esc $targetkit]\"" + lappend lines "target = \"[$esc $rt_target]\"" + lappend lines "kit_type = \"[$esc $kit_type]\"" + lappend lines "icon_origin = \"$icon_origin\"" + lappend lines "icon_source = \"[$esc [punkcheck::lib::path_relative $repo_root $icon_path]]\"" + if {$have_icon} { + lappend lines "icon_hash = \"sha256:[::punkboot::kiticon::sha256_file $icon_path]\"" + set ao [::punkboot::kiticon::assetorigin_read $icon_path] + if {[dict exists $ao source]} { + lappend lines "icon_provenance_source = \"[$esc [dict get $ao source]]\"" + } + if {[dict exists $ao source_hash]} { + lappend lines "icon_provenance_source_hash = \"[$esc [dict get $ao source_hash]]\"" + } + lappend lines "icon_group = \"[$esc $icon_group]\"" + } + lappend lines "embedding = \"$embedding\"" + lappend lines "embedding_status = \"$status\"" + lappend lines "embedding_reason = \"[$esc $reason]\"" + set sidecar $buildfolder/$targetkit.resources.toml + ::punkboot::kiticon::writefile_ifchanged $sidecar "[join $lines \n]\n" + return [list $wrap_runtime $sidecar] +} +# -- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- + set startdir [pwd] puts stdout "Found [llength $vfs_tails] .vfs folders - checking each for executables that may need to be built" cd [file dirname $buildfolder] @@ -6461,6 +6964,11 @@ foreach vfstail $vfs_tails { $vfs_event targetset_addsource $sourcefolder/vfs/_config ;#some files linked via fauxlink - need to detect change $vfs_event targetset_addsource $sourcefolder/vfs/_vfscommon.vfs $vfs_event targetset_addsource $sourcefolder/vfs/$vfstail + if {[file isfile $sourcefolder/runtime/punkshell.ico]} { + #G-057: the default kit icon is a build input - a changed icon rebuilds + #kits (an override icon lives inside the .vfs folder, already a source) + $vfs_event targetset_addsource $sourcefolder/runtime/punkshell.ico + } if {$rtname ne "-"} { set building_runtime $buildfolder/build_$runtime_fullname ;#working copy of runtime executable - (possibly with kit/zipfs/cookfs etc attached!) $vfs_event targetset_addsource $building_runtime @@ -6857,6 +7365,13 @@ foreach vfstail $vfs_tails { continue } + #G-057 kit icon step: sidecar for every kit; PE icon embedding where + #the target has PE resources and this host can write them. Stub-first: + #the assemblers below consume wrap_runtime - the stamped per-kit copy + #of the payload-free raw prefix when embedding happened, the untouched + #raw prefix otherwise. Runtime store originals are never modified. + lassign [::punkboot::kit_icon_process $targetkit $rt_target $rtname $target_kit_type $sourcefolder $vfstail $raw_runtime $buildfolder] wrap_runtime kiticon_sidecar + set wrapvfs $targetvfs switch -- $target_kit_type { zip { @@ -6886,14 +7401,14 @@ foreach vfstail $vfs_tails { } if {[info commands ::tcl::zipfs::mkimg] ne ""} { #note - as at 2024-08 - there is some discussion about the interface to mkimg - it is considered unstable (may change to -option value syntax) - puts stderr "calling: tcl::zipfs::mkimg $buildfolder/$vfsname.new $wrapvfs $wrapvfs \"\" $raw_runtime" - tcl::zipfs::mkimg $buildfolder/$vfsname.new $wrapvfs $wrapvfs "" $raw_runtime + puts stderr "calling: tcl::zipfs::mkimg $buildfolder/$vfsname.new $wrapvfs $wrapvfs \"\" $wrap_runtime" + tcl::zipfs::mkimg $buildfolder/$vfsname.new $wrapvfs $wrapvfs "" $wrap_runtime } else { #G-122: the driving tcl has no zipfs (8.6) - assemble the same #kind of image by concatenation. The result mounts on any #zipfs-capable runtime (archive-start-relative offsets). puts stderr "WARNING: tcl shell '[info nameofexecutable]' has no zipfs - assembling zip kit $targetkit by concatenation (raw runtime + mkzip)" - ::punkboot::assemble_zipcat_image $raw_runtime $wrapvfs $buildfolder/$vfsname.new $buildfolder/$vfsname.zip + ::punkboot::assemble_zipcat_image $wrap_runtime $wrapvfs $buildfolder/$vfsname.new $buildfolder/$vfsname.zip } } result ]} { set failmsg "zipfs mkimg failed with msg: $result" @@ -6930,7 +7445,7 @@ foreach vfstail $vfs_tails { } #'archive' based zip offsets - editable in 7z,peazip - ::punkboot::assemble_zipcat_image $raw_runtime $wrapvfs $buildfolder/$vfsname.new $buildfolder/$vfsname.zip + ::punkboot::assemble_zipcat_image $wrap_runtime $wrapvfs $buildfolder/$vfsname.new $buildfolder/$vfsname.zip } result ]} { set failmsg "creating zipcat image failed with msg: $result" puts stderr "creating image (zipcat) $targetkit failed" @@ -7005,13 +7520,13 @@ foreach vfstail $vfs_tails { cd [file dirname $building_runtime] ;#make sure SDX is called with the same working dir as the files we're working on. if {[catch { if {$rtname ne "-"} { - exec {*}$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs -runtime $raw_runtime {*}$verbose + exec {*}$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs -runtime $wrap_runtime {*}$verbose } else { exec {*}$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs {*}$verbose } } result]} { if {$rtname ne "-"} { - set sdxmsg "$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs -runtime $raw_runtime {*}$verbose failed with msg: $result" + set sdxmsg "$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs -runtime $wrap_runtime {*}$verbose failed with msg: $result" } else { set sdxmsg "$::sdxpath wrap $buildfolder/$vfsname.new -vfs $wrapvfs {*}$verbose failed with msg: $result" } @@ -7175,6 +7690,21 @@ foreach vfstail $vfs_tails { # -- --- --- --- --- --- $vfs_event targetset_end OK + #G-134 post-assembly offset-style pin: the pipeline emits + #ARCHIVE-relative zip payloads by construction - this probe makes + #that a checked contract. Advisory per the G-133 posture: a + #file-relative image earns a recapped BUILD-WARNING (the G-128 + #stamper would refuse it by default) and the kit still builds and + #deploys; plain/none (no attached zip - the metakit kit shape) and + #unreadable results are silence. One EOCD scan + CD walk per + #REBUILT kit only. + lassign [::punkboot::get_kit_offsetstyle_report $buildfolder/$targetkit] offprobe_available offprobe + if {!$offprobe_available} { + puts stderr "NOTE: kit offset-style pin unavailable (punkboot::utils kit_offsetstyle_report not loadable from bootsupport) - continuing without it" + } elseif {[dict get $offprobe offsetstyle] eq "file"} { + ::punkboot::print_build_warnings [list "kit $targetkit assembled with a FILE-relative zip payload (G-134 pin: the pipeline emits archive-relative by construction; the G-128 stamper refuses file-relative by default) - investigate this kit's assembly path"] + } + #G-133 post-build smoke-require probe. Only an actual 'package require' #inside the built artifact observes package RESOLUTION - the wrong-arch #version-shadowing class is invisible to every structural check because @@ -7249,6 +7779,10 @@ foreach vfstail $vfs_tails { puts stdout "$deployment_folder/$targetkit" after 300 file copy $buildfolder/$targetkit $deployment_folder/$targetkit + #G-057: the kit resource sidecar ships with the kit + if {[file isfile $buildfolder/$targetkit.resources.toml]} { + file copy -force $buildfolder/$targetkit.resources.toml $deployment_folder/$targetkit.resources.toml + } lappend installed_kits $targetkit # -- ---------- $bin_event targetset_end OK @@ -7257,6 +7791,12 @@ foreach vfstail $vfs_tails { set skipped_kit_install 1 puts stderr "." puts stdout "Skipping kit install for $targetkit with vfs $vfstail runtime $rtname - no change detected" + #G-057: keep the deployed resource sidecar current even when the kit + #itself is unchanged (the record can be newer than the kit rebuild - + #e.g the sidecar feature arriving, or a host-capability change) + if {[::punkboot::kiticon::copy_ifchanged $buildfolder/$targetkit.resources.toml $deployment_folder/$targetkit.resources.toml] eq "copied"} { + puts stdout " kit icon (G-057): refreshed deployed sidecar $deployment_folder/$targetkit.resources.toml" + } lappend skipped_kit_installs [list kit $targetkit reason "no change detected"] $bin_event targetset_end SKIPPED } diff --git a/src/tests/modules/punkboot/utils/testsuites/utils/offsetstyle.test b/src/tests/modules/punkboot/utils/testsuites/utils/offsetstyle.test new file mode 100644 index 00000000..87b991c4 --- /dev/null +++ b/src/tests/modules/punkboot/utils/testsuites/utils/offsetstyle.test @@ -0,0 +1,119 @@ +# -*- tcl -*- +# Tests for punkboot::utils::kit_offsetstyle_report - the G-134 advisory +# archive-relative output pin's probe predicate (a thin classification wrapper +# over punk::zip::archive_info, in punkboot::utils precisely so it is testable +# without a bake): +# - plain zip (no prefix) -> plain +# - runtime-prefixed zip, archive-relative offsets (the pipeline's shape) -> archive +# - runtime-prefixed zip, FILE-relative offsets (mkzip -offsettype file - the +# deliberately-available manual convention; the shape that earns the bake's +# BUILD-WARNING) -> file +# - non-zip files (text, binary junk - the metakit kit shape's class) -> none +# - missing path / unusable input -> unreadable with a detail message +# - baseline: every assembled kit image in src/_build (when a build has run) +# probes archive or none, never file - the G-124-measured property the pin +# asserts +# All fixtures are GENERATED here with punk::zip::mkzip / binary writes - no +# committed binaries, nothing executed. +# Run: tclsh src/tests/runtests.tcl -report compact -show-passes 0 -include-paths modules/punkboot/utils/*** offsetstyle.test + +package require tcltest +package require punkboot::utils +package require punk::zip + +#added 2026-07-29 (agent, G-134) + +namespace eval ::testspace { + namespace import ::tcltest::* + + variable BASE [makeDirectory g134_offsetstyle] + + #/src/tests/modules/punkboot/utils/testsuites/utils -> 7 levels up + variable projectroot [file normalize [file join [file dirname [info script]] .. .. .. .. .. .. ..]] + variable buildfolder [file join $projectroot src _build] + testConstraint builtkitsavailable [expr {[llength [glob -nocomplain -type f -directory $buildfolder *.exe]] > 0}] + + proc writefile {path content} { + set f [open $path wb] + puts -nonewline $f $content + close $f + return $path + } + + #shared fixture set: a tiny payload tree, a fake runtime prefix, and the + #three zip shapes built from them + variable payloaddir [file join $BASE payload] + file mkdir $payloaddir + writefile [file join $payloaddir main.tcl] "puts {offsetstyle fixture payload}\n" + writefile [file join $payloaddir data.txt] [string repeat "0123456789" 20] + variable stub [writefile [file join $BASE fakestub.bin] "FAKE-RUNTIME-PREFIX-[string repeat X 200]"] + + variable zip_plain [file join $BASE plain.zip] + punk::zip::mkzip -directory $payloaddir -base $payloaddir $zip_plain * + variable kit_archive [file join $BASE kit_archive.exe] + punk::zip::mkzip -runtime $stub -directory $payloaddir -base $payloaddir $kit_archive * + variable kit_file [file join $BASE kit_file.exe] + punk::zip::mkzip -runtime $stub -offsettype file -directory $payloaddir -base $payloaddir $kit_file * + + test kit_offsetstyle_plain {a bare zip probes as plain} -body { + variable zip_plain + set r [punkboot::utils::kit_offsetstyle_report $zip_plain] + list offsetstyle [dict get $r offsetstyle] detail [dict get $r detail] + } -result {offsetstyle plain detail {}} + + test kit_offsetstyle_archive {a runtime-prefixed archive-relative image (the pipeline shape) probes as archive} -body { + variable kit_archive + set r [punkboot::utils::kit_offsetstyle_report $kit_archive] + list offsetstyle [dict get $r offsetstyle] dataoffset_positive [expr {[dict get $r dataoffset] > 0}] + } -result {offsetstyle archive dataoffset_positive 1} + + test kit_offsetstyle_file {a runtime-prefixed FILE-relative image (mkzip -offsettype file) probes as file - the warning shape} -body { + variable kit_file + set r [punkboot::utils::kit_offsetstyle_report $kit_file] + dict get $r offsetstyle + } -result {file} + + test kit_offsetstyle_none_text {a non-zip text file probes as none (silence - the pin covers offset convention, not zip presence)} -body { + variable BASE + set f [writefile [file join $BASE not_a_zip.txt] "just text, no archive here\n"] + set r [punkboot::utils::kit_offsetstyle_report $f] + dict get $r offsetstyle + } -result {none} + + test kit_offsetstyle_none_binary {a non-zip binary file (the metakit kit shape's class) probes as none} -body { + variable BASE + set f [file join $BASE not_a_zip.bin] + set fd [open $f wb] + puts -nonewline $fd [binary format a4c* "JL\x1a\x00" {1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16}] + close $fd + set r [punkboot::utils::kit_offsetstyle_report $f] + dict get $r offsetstyle + } -result {none} + + test kit_offsetstyle_missing {a missing path probes as unreadable with a detail message} -body { + variable BASE + set r [punkboot::utils::kit_offsetstyle_report [file join $BASE no_such_file.exe]] + list offsetstyle [dict get $r offsetstyle] has_detail [expr {[dict get $r detail] ne ""}] + } -result {offsetstyle unreadable has_detail 1} + + test kit_offsetstyle_build_baseline {every assembled kit image in src/_build probes archive or none - never file (the G-124 baseline the pin asserts)} -constraints {builtkitsavailable} -body { + variable buildfolder + set bad [list] + foreach kitimage [lsort [glob -nocomplain -type f -directory $buildfolder *.exe]] { + #kit images only: skip runtime prefixes and helper artifacts the + #build folder also holds (raw_/iconed_/build_ prefixes) + set tail [file tail $kitimage] + if {[string match "raw_*" $tail] || [string match "iconed_*" $tail] || [string match "build_*" $tail]} { + continue + } + set r [punkboot::utils::kit_offsetstyle_report $kitimage] + if {[dict get $r offsetstyle] eq "file"} { + lappend bad $tail + } + } + set bad + } -result {} + + cleanupTests +} +namespace delete ::testspace diff --git a/src/tests/shell/testsuites/punkexe/maketclpayloadcheck.test b/src/tests/shell/testsuites/punkexe/maketclpayloadcheck.test index 751cd6a4..6532f3d4 100644 --- a/src/tests/shell/testsuites/punkexe/maketclpayloadcheck.test +++ b/src/tests/shell/testsuites/punkexe/maketclpayloadcheck.test @@ -129,6 +129,27 @@ namespace eval ::testspace { }\ -result {active 1 crosstarget 1 recapped 1 exemption 1 seesresolution 1 skipstated 1 undeclared 1} + #added 2026-07-29 (agent, G-134) + test maketcl_check_offsetstyle_pin {make.tcl check reports the kit offset-style pin with one of the two documented statuses and states its contract (advisory, file-relative warning, plain/none silence)}\ + -constraints {punkexeavailable} -body { + set r [maketcl_run {check}] + set out [dict get $r output] + set result [list] + lappend result timedout [dict get $r timedout] exitcode [dict get $r exitcode] + lappend result pinline [regexp -line {^kit offset-style pin \(G-134\): (ACTIVE \(advisory\)|UNAVAILABLE)} $out] + #contract lines shown when ACTIVE (the current expected state; an + #UNAVAILABLE snapshot legitimately omits them - gate on the status) + if {[regexp -line {^kit offset-style pin \(G-134\): ACTIVE \(advisory\)\s*$} $out]} { + lappend result probe [regexp {punk::zip::archive_info} $out] + lappend result warnshape [regexp {FILE-relative offsets} $out] + lappend result silence [regexp {plain/none results.*are silence} $out] + } else { + lappend result probe 1 warnshape 1 silence 1 + } + set result + }\ + -result {timedout 0 exitcode 0 pinline 1 probe 1 warnshape 1 silence 1} + #added 2026-07-27 (agent, G-133) - the declared list characterizes the current #src/runtime/mapvfs.config smoke-require matrix (deliberate config changes update it) test maketcl_check_payloadchecks_declared_kits {check lists the kits currently declaring smoke-require packages}\ diff --git a/src/vfs/_vfscommon.vfs/modules/punk/mix/templates-0.2.0.tm b/src/vfs/_vfscommon.vfs/modules/punk/mix/templates-0.2.0.tm index 664ca6879af9f46f27dbef528e42944231862b57..132f49d43dcce722ac60c3ce9252a0ff78b6fd57 100644 GIT binary patch delta 111092 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 diff --git a/src/vfs/_vfscommon.vfs/modules/punkboot/utils-0.5.0.tm b/src/vfs/_vfscommon.vfs/modules/punkboot/utils-0.6.0.tm similarity index 91% rename from src/vfs/_vfscommon.vfs/modules/punkboot/utils-0.5.0.tm rename to src/vfs/_vfscommon.vfs/modules/punkboot/utils-0.6.0.tm index 1cd5324c..43372880 100644 --- a/src/vfs/_vfscommon.vfs/modules/punkboot/utils-0.5.0.tm +++ b/src/vfs/_vfscommon.vfs/modules/punkboot/utils-0.6.0.tm @@ -7,7 +7,7 @@ # (C) 2023 # # @@ Meta Begin -# Application punkboot::utils 0.5.0 +# Application punkboot::utils 0.6.0 # Meta platform tcl # Meta license BSD # @@ Meta End @@ -23,7 +23,7 @@ package require Tcl 8.6- # ++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ namespace eval punkboot::utils { variable version 0.1.0 - namespace export binary_arch_classify parse_punkproject_version read_punkproject_version read_changelog_latest_version vcs_dirty_warnings vfs_binary_arch_report vfs_boot_library_report + namespace export binary_arch_classify kit_offsetstyle_report parse_punkproject_version read_punkproject_version read_changelog_latest_version vcs_dirty_warnings vfs_binary_arch_report vfs_boot_library_report namespace eval argdoc { @@ -736,6 +736,65 @@ namespace eval punkboot::utils { dict set report ok [expr {[llength $mismatches] == 0}] return $report } + + namespace eval argdoc { + lappend PUNKARGS [list { + @id -id ::punkboot::utils::kit_offsetstyle_report + @cmd -name "::punkboot::utils::kit_offsetstyle_report"\ + -summary\ + "Advisory zip offset-style probe of an assembled kit image (G-134)"\ + -help\ + "Probes a finished kit image file with punk::zip::archive_info and + reports the offset convention of any attached zip payload. The + punkshell bake pipeline emits ARCHIVE-relative payloads by + construction; this probe makes that a checked contract - a + 'file' result is the pipeline-regression signal make.tcl + surfaces as a recapped BUILD-WARNING (advisory: the kit still + builds and deploys). 'plain' (the file is a bare zip), 'none' + (no zip attached - e.g the metakit kit shape, or any non-zip + file) and 'unreadable' are silence, not warnings: the pin + covers the offset convention of an attached zip, never the + presence of one. Purely structural: one EOCD scan plus a + central-directory walk, nothing executed, so cross-target kit + images are covered. + + Returned dict keys: + offsetstyle archive | file | plain | none | unreadable + dataoffset payload base offset when archive_info supplies + one (\"\" otherwise) + detail diagnostic text for unreadable (missing file, + punk::zip unavailable, archive_info error); + empty otherwise" + @leaders + kitpath -type string -optional 0 -help\ + "Path of the assembled kit image file to probe" + }] + } + proc kit_offsetstyle_report {kitpath} { + set report [dict create offsetstyle unreadable dataoffset "" detail ""] + if {![file isfile $kitpath]} { + dict set report detail "no such file: $kitpath" + return $report + } + if {[catch {package require punk::zip} errM]} { + dict set report detail "punk::zip not available: $errM" + return $report + } + if {[catch {punk::zip::archive_info $kitpath} zinfo]} { + dict set report detail "archive_info error: $zinfo" + return $report + } + if {[dict exists $zinfo offsetstyle]} { + dict set report offsetstyle [dict get $zinfo offsetstyle] + } else { + dict set report detail "archive_info returned no offsetstyle" + return $report + } + if {[dict exists $zinfo dataoffset]} { + dict set report dataoffset [dict get $zinfo dataoffset] + } + return $report + } } namespace eval ::punk::args::register { @@ -746,8 +805,8 @@ namespace eval ::punk::args::register { ## Ready package provide punkboot::utils [tcl::namespace::eval punkboot::utils { variable version - #- this version number, exactly 0.5.0, is a literal used in src module folders + #- this version number, exactly 0.6.0, is a literal used in src module folders #- we refer to this sometimes as the magic version number - set version 0.5.0 + set version 0.6.0 }] return