From 3a6e5dff5bce71b1ed70e13721c20a4cd578071e Mon Sep 17 00:00:00 2001 From: Nikholas Pcenicni <82239765+nikpcenicni@users.noreply.github.com> Date: Mon, 30 Mar 2026 22:42:52 -0400 Subject: [PATCH] Update Ansible configuration to integrate SOPS for managing secrets. Enhance README.md with SOPS usage instructions and prerequisites. Remove External Secrets Operator references and related configurations from the bootstrap process, streamlining the deployment. Adjust playbooks and roles to apply SOPS-encrypted secrets automatically, improving security and clarity in secret management. --- .sops.yaml | 7 + ansible/README.md | 8 +- ansible/group_vars/all.yml | 5 +- ansible/playbooks/post_deploy.yml | 11 +- ansible/roles/helm_repos/defaults/main.yml | 3 - .../noble_landing_urls/defaults/main.yml | 5 - .../templates/noble-lab-ui-urls.md.j2 | 3 +- .../roles/noble_platform/defaults/main.yml | 5 +- ansible/roles/noble_platform/tasks/main.yml | 87 ++------- .../roles/noble_post_deploy/tasks/main.yml | 22 +-- branding/nikflix/logo.png | Bin 0 -> 284078 bytes clusters/noble/apps/README.md | 2 +- clusters/noble/apps/homepage/values.yaml | 6 - clusters/noble/bootstrap/argocd/README.md | 2 +- .../bootstrap/external-secrets/README.md | 60 ------- .../examples/vault-cluster-secret-store.yaml | 31 ---- .../bootstrap/external-secrets/namespace.yaml | 5 - .../bootstrap/external-secrets/values.yaml | 10 -- clusters/noble/bootstrap/kustomization.yaml | 6 +- .../bootstrap/kyverno/policies-values.yaml | 3 - clusters/noble/bootstrap/newt/README.md | 18 +- .../noble/bootstrap/sealed-secrets/README.md | 50 ------ .../examples/kubeseal-newt-pangolin-auth.sh | 19 -- .../bootstrap/sealed-secrets/namespace.yaml | 5 - .../bootstrap/sealed-secrets/values.yaml | 18 -- clusters/noble/bootstrap/vault/README.md | 162 ----------------- .../vault/cilium-network-policy.yaml | 40 ----- .../vault/configure-kubernetes-auth.sh | 77 -------- clusters/noble/bootstrap/vault/namespace.yaml | 5 - .../noble/bootstrap/vault/unseal-cronjob.yaml | 63 ------- clusters/noble/bootstrap/vault/values.yaml | 62 ------- clusters/noble/secrets/README.md | 38 ++++ .../secrets/newt-pangolin-auth.secret.yaml | 30 ++++ docs/Racks.md | 169 ++++++++++++++++++ docs/architecture.md | 30 ++-- docs/homelab-network.md | 100 +++++++++++ docs/migration-vm-to-noble.md | 121 +++++++++++++ docs/shared-data-services.md | 90 ++++++++++ komodo/monitor/tracearr/compose.yaml | 2 +- talos/CLUSTER-BUILD.md | 41 ++--- talos/README.md | 2 +- talos/runbooks/README.md | 2 +- talos/runbooks/sops.md | 13 ++ talos/runbooks/vault.md | 15 -- 44 files changed, 644 insertions(+), 809 deletions(-) create mode 100644 .sops.yaml create mode 100644 branding/nikflix/logo.png delete mode 100644 clusters/noble/bootstrap/external-secrets/README.md delete mode 100644 clusters/noble/bootstrap/external-secrets/examples/vault-cluster-secret-store.yaml delete mode 100644 clusters/noble/bootstrap/external-secrets/namespace.yaml delete mode 100644 clusters/noble/bootstrap/external-secrets/values.yaml delete mode 100644 clusters/noble/bootstrap/sealed-secrets/README.md delete mode 100755 clusters/noble/bootstrap/sealed-secrets/examples/kubeseal-newt-pangolin-auth.sh delete mode 100644 clusters/noble/bootstrap/sealed-secrets/namespace.yaml delete mode 100644 clusters/noble/bootstrap/sealed-secrets/values.yaml delete mode 100644 clusters/noble/bootstrap/vault/README.md delete mode 100644 clusters/noble/bootstrap/vault/cilium-network-policy.yaml delete mode 100755 clusters/noble/bootstrap/vault/configure-kubernetes-auth.sh delete mode 100644 clusters/noble/bootstrap/vault/namespace.yaml delete mode 100644 clusters/noble/bootstrap/vault/unseal-cronjob.yaml delete mode 100644 clusters/noble/bootstrap/vault/values.yaml create mode 100644 clusters/noble/secrets/README.md create mode 100644 clusters/noble/secrets/newt-pangolin-auth.secret.yaml create mode 100644 docs/Racks.md create mode 100644 docs/homelab-network.md create mode 100644 docs/migration-vm-to-noble.md create mode 100644 docs/shared-data-services.md create mode 100644 talos/runbooks/sops.md delete mode 100644 talos/runbooks/vault.md diff --git a/.sops.yaml b/.sops.yaml new file mode 100644 index 0000000..0f67da1 --- /dev/null +++ b/.sops.yaml @@ -0,0 +1,7 @@ +# Mozilla SOPS — encrypt/decrypt Kubernetes Secret manifests under clusters/noble/secrets/ +# Generate a key: age-keygen -o age-key.txt (age-key.txt is gitignored) +# Add the printed public key below (one recipient per line is supported). +creation_rules: + - path_regex: clusters/noble/secrets/.*\.yaml$ + age: >- + age1juym5p3ez3dkt0dxlznydgfgqvaujfnyk9hpdsssf50hsxeh3p4sjpf3gn diff --git a/ansible/README.md b/ansible/README.md index de4078e..8766a74 100644 --- a/ansible/README.md +++ b/ansible/README.md @@ -24,6 +24,7 @@ Copy **`.env.sample`** to **`.env`** at the repository root (`.env` is gitignore ## Prerequisites - `talosctl` (matches node Talos version), `talhelper`, `helm`, `kubectl`. +- **SOPS secrets:** `sops` and `age` on the control host if you use **`clusters/noble/secrets/`** with **`age-key.txt`** (see **`clusters/noble/secrets/README.md`**). - **Phase A:** same LAN/VPN as nodes so **Talos :50000** and **Kubernetes :6443** are reachable (see [`talos/README.md`](../talos/README.md) §3). - **noble.yml:** bootstrapped cluster and **`talos/kubeconfig`** (or `KUBECONFIG`). @@ -34,7 +35,7 @@ Copy **`.env.sample`** to **`.env`** at the repository root (`.env` is gitignore | [`playbooks/deploy.yml`](playbooks/deploy.yml) | **Talos Phase A** then **`noble.yml`** (full automation). | | [`playbooks/talos_phase_a.yml`](playbooks/talos_phase_a.yml) | `genconfig` → `apply-config` → `bootstrap` → `kubeconfig` only. | | [`playbooks/noble.yml`](playbooks/noble.yml) | Helm + `kubectl` platform (after Phase A). | -| [`playbooks/post_deploy.yml`](playbooks/post_deploy.yml) | Vault / ESO reminders (`noble_apply_vault_cluster_secret_store`). | +| [`playbooks/post_deploy.yml`](playbooks/post_deploy.yml) | SOPS reminders and optional Argo root Application note. | | [`playbooks/talos_bootstrap.yml`](playbooks/talos_bootstrap.yml) | **`talhelper genconfig` only** (legacy shortcut; prefer **`talos_phase_a.yml`**). | ```bash @@ -68,9 +69,10 @@ ansible-playbook playbooks/noble.yml --skip-tags newt ansible-playbook playbooks/noble.yml --tags velero -e noble_velero_install=true -e noble_velero_s3_bucket=... -e noble_velero_s3_url=... ``` -### Variables — `group_vars/all.yml` +### Variables — `group_vars/all.yml` and role defaults -- **`noble_newt_install`**, **`noble_velero_install`**, **`noble_cert_manager_require_cloudflare_secret`**, **`noble_apply_vault_cluster_secret_store`**, **`noble_k8s_api_server_override`**, **`noble_k8s_api_server_auto_fallback`**, **`noble_k8s_api_server_fallback`**, **`noble_skip_k8s_health_check`**. +- **`group_vars/all.yml`:** **`noble_newt_install`**, **`noble_velero_install`**, **`noble_cert_manager_require_cloudflare_secret`**, **`noble_k8s_api_server_override`**, **`noble_k8s_api_server_auto_fallback`**, **`noble_k8s_api_server_fallback`**, **`noble_skip_k8s_health_check`** +- **`roles/noble_platform/defaults/main.yml`:** **`noble_apply_sops_secrets`**, **`noble_sops_age_key_file`** (SOPS secrets under **`clusters/noble/secrets/`**) ## Roles diff --git a/ansible/group_vars/all.yml b/ansible/group_vars/all.yml index 6dff5ef..bf33f25 100644 --- a/ansible/group_vars/all.yml +++ b/ansible/group_vars/all.yml @@ -13,14 +13,11 @@ noble_k8s_api_server_fallback: "https://192.168.50.20:6443" # Only if you must skip the kubectl /healthz preflight (not recommended). noble_skip_k8s_health_check: false -# Pangolin / Newt — set true only after creating newt-pangolin-auth Secret (see clusters/noble/bootstrap/newt/README.md) +# Pangolin / Newt — set true only after newt-pangolin-auth Secret exists (SOPS: clusters/noble/secrets/ or imperative — see clusters/noble/bootstrap/newt/README.md) noble_newt_install: false # cert-manager needs Secret cloudflare-dns-api-token in cert-manager namespace before ClusterIssuers work noble_cert_manager_require_cloudflare_secret: true -# post_deploy.yml — apply Vault ClusterSecretStore only after Vault is initialized and K8s auth is configured -noble_apply_vault_cluster_secret_store: false - # Velero — set **noble_velero_install: true** plus S3 bucket/URL (and credentials — see clusters/noble/bootstrap/velero/README.md) noble_velero_install: false diff --git a/ansible/playbooks/post_deploy.yml b/ansible/playbooks/post_deploy.yml index 90d1a6c..b9450d2 100644 --- a/ansible/playbooks/post_deploy.yml +++ b/ansible/playbooks/post_deploy.yml @@ -1,12 +1,7 @@ --- -# Manual follow-ups after **noble.yml**: Vault init/unseal, Kubernetes auth for Vault, ESO ClusterSecretStore. -# Run: ansible-playbook playbooks/post_deploy.yml -- name: Noble cluster — post-install reminders - hosts: localhost +# Manual follow-ups after **noble.yml**: SOPS key backup, optional Argo root Application. +- hosts: localhost connection: local gather_facts: false - vars: - noble_repo_root: "{{ playbook_dir | dirname | dirname }}" - noble_kubeconfig: "{{ lookup('env', 'KUBECONFIG') | default(noble_repo_root + '/talos/kubeconfig', true) }}" roles: - - role: noble_post_deploy + - noble_post_deploy diff --git a/ansible/roles/helm_repos/defaults/main.yml b/ansible/roles/helm_repos/defaults/main.yml index d635baa..f543ed3 100644 --- a/ansible/roles/helm_repos/defaults/main.yml +++ b/ansible/roles/helm_repos/defaults/main.yml @@ -8,9 +8,6 @@ noble_helm_repos: - { name: fossorial, url: "https://charts.fossorial.io" } - { name: argo, url: "https://argoproj.github.io/argo-helm" } - { name: metrics-server, url: "https://kubernetes-sigs.github.io/metrics-server/" } - - { name: sealed-secrets, url: "https://bitnami-labs.github.io/sealed-secrets" } - - { name: external-secrets, url: "https://charts.external-secrets.io" } - - { name: hashicorp, url: "https://helm.releases.hashicorp.com" } - { name: prometheus-community, url: "https://prometheus-community.github.io/helm-charts" } - { name: grafana, url: "https://grafana.github.io/helm-charts" } - { name: fluent, url: "https://fluent.github.io/helm-charts" } diff --git a/ansible/roles/noble_landing_urls/defaults/main.yml b/ansible/roles/noble_landing_urls/defaults/main.yml index 313798d..1da1332 100644 --- a/ansible/roles/noble_landing_urls/defaults/main.yml +++ b/ansible/roles/noble_landing_urls/defaults/main.yml @@ -39,11 +39,6 @@ noble_lab_ui_entries: namespace: longhorn-system service: longhorn-frontend url: https://longhorn.apps.noble.lab.pcenicni.dev - - name: Vault - description: Secrets engine UI (after init/unseal) - namespace: vault - service: vault - url: https://vault.apps.noble.lab.pcenicni.dev - name: Velero description: Cluster backups — no web UI (velero CLI / kubectl CRDs) namespace: velero diff --git a/ansible/roles/noble_landing_urls/templates/noble-lab-ui-urls.md.j2 b/ansible/roles/noble_landing_urls/templates/noble-lab-ui-urls.md.j2 index 78cd42c..777b95a 100644 --- a/ansible/roles/noble_landing_urls/templates/noble-lab-ui-urls.md.j2 +++ b/ansible/roles/noble_landing_urls/templates/noble-lab-ui-urls.md.j2 @@ -24,7 +24,6 @@ This file is **generated** by Ansible (`noble_landing_urls` role). Use it as a t | **Prometheus** | — | No auth in default install (lab). | | **Alertmanager** | — | No auth in default install (lab). | | **Longhorn** | — | No default login unless you enable access control in the UI settings. | -| **Vault** | Token | Root token is only from **`vault operator init`** (not stored in git). See `clusters/noble/bootstrap/vault/README.md`. | ### Commands to retrieve passwords (if not filled above) @@ -46,7 +45,7 @@ To generate this file **without** calling kubectl, run Ansible with **`-e noble_ - **Argo CD** `argocd-initial-admin-secret` disappears after you change the admin password. - **Grafana** password is random unless you set `grafana.adminPassword` in chart values. -- **Vault** UI needs **unsealed** Vault; tokens come from your chosen auth method. - **Prometheus / Alertmanager** UIs are unauthenticated by default — restrict when hardening (`talos/CLUSTER-BUILD.md` Phase G). +- **SOPS:** cluster secrets in git under **`clusters/noble/secrets/`** are encrypted; decrypt with **`age-key.txt`** (not in git). See **`clusters/noble/secrets/README.md`**. - **Headlamp** token above expires after the configured duration; re-run Ansible or `kubectl create token` to refresh. - **Velero** has **no web UI** — use **`velero`** CLI or **`kubectl -n velero get backup,schedule,backupstoragelocation`**. Metrics: **`velero`** Service in **`velero`** (Prometheus scrape). See `clusters/noble/bootstrap/velero/README.md`. diff --git a/ansible/roles/noble_platform/defaults/main.yml b/ansible/roles/noble_platform/defaults/main.yml index 0e72b05..a53fc0c 100644 --- a/ansible/roles/noble_platform/defaults/main.yml +++ b/ansible/roles/noble_platform/defaults/main.yml @@ -4,5 +4,6 @@ noble_platform_kubectl_request_timeout: 120s noble_platform_kustomize_retries: 5 noble_platform_kustomize_delay: 20 -# Vault: injector (vault-k8s) owns MutatingWebhookConfiguration.caBundle; Helm upgrade can SSA-conflict. Delete webhook so Helm can recreate it. -noble_vault_delete_injector_webhook_before_helm: true +# Decrypt **clusters/noble/secrets/*.yaml** with SOPS and kubectl apply (requires **sops**, **age**, and **age-key.txt**). +noble_apply_sops_secrets: true +noble_sops_age_key_file: "{{ noble_repo_root }}/age-key.txt" diff --git a/ansible/roles/noble_platform/tasks/main.yml b/ansible/roles/noble_platform/tasks/main.yml index fb856cb..f21545b 100644 --- a/ansible/roles/noble_platform/tasks/main.yml +++ b/ansible/roles/noble_platform/tasks/main.yml @@ -1,6 +1,6 @@ --- # Mirrors former **noble-platform** Argo Application: Helm releases + plain manifests under clusters/noble/bootstrap. -- name: Apply clusters/noble/bootstrap kustomize (namespaces, Grafana Loki datasource, Vault extras) +- name: Apply clusters/noble/bootstrap kustomize (namespaces, Grafana Loki datasource) ansible.builtin.command: argv: - kubectl @@ -16,77 +16,26 @@ until: noble_platform_kustomize.rc == 0 changed_when: true -- name: Install Sealed Secrets - ansible.builtin.command: - argv: - - helm - - upgrade - - --install - - sealed-secrets - - sealed-secrets/sealed-secrets - - --namespace - - sealed-secrets - - --version - - "2.18.4" - - -f - - "{{ noble_repo_root }}/clusters/noble/bootstrap/sealed-secrets/values.yaml" - - --wait - environment: - KUBECONFIG: "{{ noble_kubeconfig }}" - changed_when: true +- name: Stat SOPS age private key (age-key.txt) + ansible.builtin.stat: + path: "{{ noble_sops_age_key_file }}" + register: noble_sops_age_key_stat -- name: Install External Secrets Operator - ansible.builtin.command: - argv: - - helm - - upgrade - - --install - - external-secrets - - external-secrets/external-secrets - - --namespace - - external-secrets - - --version - - "2.2.0" - - -f - - "{{ noble_repo_root }}/clusters/noble/bootstrap/external-secrets/values.yaml" - - --wait +- name: Apply SOPS-encrypted cluster secrets (clusters/noble/secrets/*.yaml) + ansible.builtin.shell: | + set -euo pipefail + shopt -s nullglob + for f in "{{ noble_repo_root }}/clusters/noble/secrets"/*.yaml; do + sops -d "$f" | kubectl apply -f - + done + args: + executable: /bin/bash environment: KUBECONFIG: "{{ noble_kubeconfig }}" - changed_when: true - -# vault-k8s patches webhook CA after install; Helm 3/4 SSA then conflicts on upgrade. Removing the MWC lets Helm re-apply cleanly; injector repopulates caBundle. -- name: Delete Vault agent injector MutatingWebhookConfiguration before Helm (avoids caBundle field conflict) - ansible.builtin.command: - argv: - - kubectl - - delete - - mutatingwebhookconfiguration - - vault-agent-injector-cfg - - --ignore-not-found - environment: - KUBECONFIG: "{{ noble_kubeconfig }}" - register: noble_vault_mwc_delete - when: noble_vault_delete_injector_webhook_before_helm | default(true) | bool - changed_when: "'deleted' in (noble_vault_mwc_delete.stdout | default(''))" - -- name: Install Vault - ansible.builtin.command: - argv: - - helm - - upgrade - - --install - - vault - - hashicorp/vault - - --namespace - - vault - - --version - - "0.32.0" - - -f - - "{{ noble_repo_root }}/clusters/noble/bootstrap/vault/values.yaml" - - --wait - environment: - KUBECONFIG: "{{ noble_kubeconfig }}" - HELM_SERVER_SIDE_APPLY: "false" + SOPS_AGE_KEY_FILE: "{{ noble_sops_age_key_file }}" + when: + - noble_apply_sops_secrets | default(true) | bool + - noble_sops_age_key_stat.stat.exists changed_when: true - name: Install kube-prometheus-stack diff --git a/ansible/roles/noble_post_deploy/tasks/main.yml b/ansible/roles/noble_post_deploy/tasks/main.yml index ff08dba..a0b7808 100644 --- a/ansible/roles/noble_post_deploy/tasks/main.yml +++ b/ansible/roles/noble_post_deploy/tasks/main.yml @@ -1,24 +1,10 @@ --- -- name: Vault — manual steps (not automated) +- name: SOPS secrets (workstation) ansible.builtin.debug: msg: | - 1. kubectl -n vault get pods (wait for Running) - 2. kubectl -n vault exec -it vault-0 -- vault operator init (once; save keys) - 3. Unseal per clusters/noble/bootstrap/vault/README.md - 4. ./clusters/noble/bootstrap/vault/configure-kubernetes-auth.sh - 5. kubectl apply -f clusters/noble/bootstrap/external-secrets/examples/vault-cluster-secret-store.yaml - -- name: Optional — apply Vault ClusterSecretStore for External Secrets - ansible.builtin.command: - argv: - - kubectl - - apply - - -f - - "{{ noble_repo_root }}/clusters/noble/bootstrap/external-secrets/examples/vault-cluster-secret-store.yaml" - environment: - KUBECONFIG: "{{ noble_kubeconfig }}" - when: noble_apply_vault_cluster_secret_store | default(false) | bool - changed_when: true + Encrypted Kubernetes Secrets live under clusters/noble/secrets/ (Mozilla SOPS + age). + Private key: age-key.txt at repo root (gitignored). See clusters/noble/secrets/README.md + and .sops.yaml. noble.yml decrypt-applies these when age-key.txt exists. - name: Argo CD optional root Application (empty app-of-apps) ansible.builtin.debug: diff --git a/branding/nikflix/logo.png b/branding/nikflix/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ad8e7a901d6a0b0bd90b855cd5b9c8739d642763 GIT binary patch literal 284078 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

8nFhkMpSN}>*hr({`NYufNoIhMpL zZPPzA8g-szUHR<1&6`e(uJ=D=$n#yGRZXNCjx6b8iF@Sd6-i&9bm1=eQP7b8U+B5O zA|`SBlvASubEMdis%-|;Y%`8^u2u8_FL>2_4jO5vl)v9ng)%bgC^tB?L9%n~l=TPOU(a=!gN&))lVzP`SxYbljS0U8=*Mg>OLQS*hO`S>FQ z@vhR0FdmsOlSV=qIWI2A8s=BVj;36^4_uelf5eRA+Pvyd9UGr6i}1vFi0ap8m<|!1 z)Delo*&5N}Ydp=sZFt>^pKh$h`BGf-J4e%*JgSM{W@QycL0NfeADPy7;kP?(*yr>x zZn=I|q^eLO1H*V=MbqkHe%|M!Fs{49b)bNN&AF;|+T4`o(H)m)rCj9TD}VBH0Qz`qthn|Fd}YxEnomsJEb(P@3Bi4VYhI!1XZ zI@52)S(~I zXoYDs*pBd|dW`#~`nzHc^@h$CM6_WY#)bV2rGwfNwnZH#oB8m?i&yo74}R6dH?KbY zTd*C&UICmxL9+Ya5^v@4vmf3%mhtA*$FN4!zv1Tf^FQ+JQ=fbP=H^`Tve;U-&BDqa zsX!aW0YL3bsW&FES&#?ed<4Ef=3uIq5T?J61m!5C__k2AIua8C10!-|s3HSu$WyqM z>zezk26b=bkNVB9d5LJHeK_jx)W;e-23*t`j&|EWGBDBiqdvR9s)AQI_1z+6V|m|2IXZqY4l^Mo;etKaR11j{s?celQa^p)zQ2p`U0+0t&>v(^?(jZ$geR_@Z%&3`$z z>ub5xhxhKM55M-)|K)?nAN;=ca{H&(Qeo+Y`wt%C<%fUbu-&w>Zd3(Szu=iA?T z@8LV|-`-weDOo86Ih}T+jVNq;mvf?#0`@rllOq#>1uFqR$TYXpaJ8Nqxch>=5eKg8_w=--#SPy~pq9W{xaZ3|o|UrhW5$ zvLdD0`E^_Tz_O>fiVSCJS@N*m^xpPN1wdOb1e-?<_v>ioPt-rU#iCR&8B=aG@a$oPvKy`u#+k^H(tq)FTwWy)%!RH1}>}19cZuN61%(=jV?K!xtGHpN{m;Nf`tqwbrKBu}?nN z;@8!=@}1$io?W}%UfMea-X~t!p-u_IrTC6;$Sd^toe1w*Ph`~new(>z{J?l&I7=x# z37hv_QF!*Fq|pw4MouWx+Mi{9Rl|DBpL?aIqvcv_j}+{1U;Ubl@bA!-X4Xf7+*WLe zM+AAsi8mnAtu~yDQszB#=Kj0!-}Hs&M;W(Kpw3T3>mh3$N#Nvk--#XL35=9Azp_QR zYKu^LvUYPSM%1d;KdSGrObUIA(2PYB@f3;klJb7nSCu9(4ZFyYM+{VV@-xja`J#&` zf`h$aurkMc&)z(9JkF-o@VSX{&dyw~p+Izt{RPrw7Ds%y?p57xi6r72{HM zq~d7Ud%?T=BQoJs&8HT(=)djtyZQqzd(mJ-SbSQfwAE`VCEQ+atKnkTFJJ%f?mv3; z53cL^Whn&@9zE+m&a039Fqc+TDNsG~LQKmY0V@qHh;;?cC? ziAX(tl`O;jssL%Uckkj8vr8hsvvaGaqI=C~%8)-&^EOiDV{i?L`=%gMwG917Cd6nAcUfug@!5#JbeWSjnO~VEM|wjYJ#O0_CT>G{BhuSy3-!C|I>zbX`#p?|zayti@jnIt zb42s5J}|8mey&$-E5ne}g0j|$)=UTPC+~~szqt*aiSYW=wnaLxlu|Ectxf-40eJpb zrM&!_);{d!&DW4D1F$fP)ilu7#N3c=hc4#|OZnx;Kl|Uj|M1zv^Z8tAUE40p7((Z{ zSehT?45LvYCCm{6@;h!MyfBj0If~lQC!%HHC!$QV`uGs zlwiV9^1cCSTY0;#=Mc|*6V<@U@4U3F2I{!jc3MwMhHo1&tCels+rISAf-xE`YXKj<vjT>e#)VX+Ar5Bg!4=tkEamp?{wa!1$P8B>TgC zjqF^s0Ik*vSeq?~96!YofbLMUo{5~AA$Oy0jyO48hkoAnY%3R7FmB%w^X7 zJbTdfZ9?@3d(I~yKmN?RuD`9fQQGbbMRi8Ow6|9Ps7e`SiU{kA= zc~m)^1t`aQi~FGcPEQ(wvJ|me0?8ulzM>ud@vvcEni3~%+;oNBY zPz9Ei7WbjG>t3+;sr_aTzwbGM!K9Isa>TTeXI`G2WR{!eR8{b( z8a?N#_>nng+u_i4I8eSF!{(KB+QHwS`A!`ghSQMSo5-8i!ch(IKr$>SMtOAYPJrcy5#ST7cpZ!Z;LkDx@ZKX%9Sv~6xf6^7$O&js}BI{&UwEpLPO4vN}mp>_ddUh`*tj$WNocJTR=>)^aUrnSPP zQyzYwa|U!2=l9*oQTRlje>Exvtuwqtx92ryka6fb!Uh&Cr>+*3n z#KYs(uQa1n<>o#Xqu{mMY^+t0+J>^vei3gcb!;C=A-=R<&J z!{X5_pDuIUM*2hf&D-I^c=dYy8IBYk;o9G2zKv@!5f7^6?sg^^rp zbkOyN8e8Q@t=sYB-x)@Y3aTTZcv4yB?^jn>6Rk=qyA_FAuh*@*&2g=A!*zR6n6w{W zd?Qw;llEEdkmJee@JXVNkyFI)a9^YQTn9%%`FcbLZjbqfol52nZ_jgL)fV@9&FuE} zwx+B1p1!$$^V`r8?yaH#2YFbF?&0w0=@(#@aeI3MG!N}Fz^flR-TypZzqvIz2d|Fr zPU!t~79))rB{IMRq5BY~***`;5!OQ0Bfm!#1lOYqftg~jcpP4TC-pPDxQ*!K?ukh# z5w@&=t}^7+hzipTPaN?Z=O1o3t>IYw-yE94Hi9OsnchCjY~HW)mo&(3}%jJz#|_9e!-{^81Ky5)AA4(h@Q2+&_N;02bTY zZ4kCwWwenFqC8!u2?m}DikwR=k?dFnk{K?(j~=Z)Y{zwM5iYadm)5TLYi?&<3wqPF zIbV}PE(KL!Q={Y&pA9)%9|vaI!Pa@(IifjtTcp3Qit;?Y!AosAq&bbL*V~==ZQ9si zyXl)&$I(EjIiaP+C}D7C`P7VMD%%0t*6~_u0es6C8yu2zM%|p&wE``2=e@}&m(ul1 zsclcRwXQHr{kfrY0OJ*?P6sormldh%Zr&Ix#!_lL32du}+twBh&qHraxrydZ;Lxw< z^LaPjcez~pHFfCJa7Q*n9a|r?CL3pdvYi{c-0PnmIbQW<*77M0BdV;M%X)v+F^lvP z!`Y9pDw~eBebiP5vQfR!v(doZZ37Rq)&8WE;QQ9K>uu#QM;4V9`u>PU){PHsqLHO7 z@3BY6wxjLpy2EK{r`A}lwVuzH`t-eL_O+k+(huWwW!NoMzim8a755kz$Ij z9YtBptWRO;I}V%TPOoWw%1hiIb!7E@?Z1wI^&PXZ|CB~b8D4Hf9mL4dR^`dKh(@>E zf4|PktCRviXqcyEm`7B8^qC`Gc04KV^m$E+wk^l1+0*TN^DlOI$vL4P?LoV?!ySB! zckx%6>OIvRdOwl@)>#prqTgx^qWbrI=*jD`!Eqe>LD-ICm3c2LgPI2x!R*(#&&(&x z^D1Bd{d77V>KetZ@}lB{d5{gR_nV*7h)kqQj%=LLmk(%;^gzT{N>`O>mP?i&t^WuY zZ?n1F?^Z$LG_2}srksdw$0{qXqx19i-VL&=xzxgeBdGPr9=C%^S zYs*h*qjO&^BWOn(q5DX^W&iJ2;k8c|z6~Yd^WT`+xbwb3PETz=V&HM!+6Xg8;dze4 zu@ls~)AD~Zokhg3sbZa&u*YPNqLE!L=$Pf@D#GW60Wb3l*gMUDp-wgo=Drnuq$suLLLEpBh{4BNS* ztftiUoSET#o{zCPvZEc&RI%2$5BzBrxV^dHv@E~j=KAJ$!?sgW%Vpbe*%gmNH8r{C4JLdYYK5l)m&{=QBD>w5)t2d6rKQGXpq zx1$lCGfs}8(nqp!m+g-FqIOQ7XFl=b_EqI3f?3--lAQ=X0B)o-wr+i1m4;I66mm1a0fzVuv= zrto|Zp)qosM{tU8{$yrmhHMwhwrVfhOKBjRKW9d1BfDtsy4Pp(R94i6|2|?WKHc5x zEcG%82{THh)KoC}I~zV#_B;*vHigi!5`@UzQPAh7(atu)^_3q0km?xub_PF)piJ}R z)PB?l6+kVje7P+j@iXp^@`mmjAZRW`qeIJyo1(P7y04-~eU?Ov1UwQ$c$gJv%V8N# zb=x<{qi3$1he2+G4xS1-a=hG8;PbdTO$|L7SxV`VI-kmQxH}H40Eu{WizaxT1#P99 zS;Lb@8j$Mt*CK!$fT)hYTH5qhtpG*%+@W39^Y*>zo2GYYiN2-n&$d-+TO`|N+H+qz z9&Fyca59cdo_3{I{!jzh-wR}LmfNv0Xk_FgJ*0X|zc+v?QqS9J^_@;9l$CjWj^0ns zi?0-nelnusxv@vt1bug&Y)C7jB z;Sd0h+vC-(+HT};XsQc8r+lX~Op%j?o?77g0hso&tO>x)Z#1OOyAoM1m#(>hHr`9U z7AHW;ST8S;5>RXTZs5_ATCFlcHU{hO@d$`VTsqP^QY=acMQ9`dOc*np@(FaMVZ?~+ z@lOhbo?&7zM&GH!@zC$b5kzK)`z1J314HUP3gdGs+#ILAGHsiNV>)=wjJK;wdrxb1zpP`$zRI`8x9@}sDg!ZSHu zK}0=rV%Ra{dLnu#E+ZYT`rF$$8jMEmdp!}3xDVOVl#>}nGLQP;?M4wG)_L5n(op-N z?Q!2CK4jkT`goQ0+vvbF^uo_ac1~eooGNTgV^5Bs>mU5G+`A9p`d3@B@Aq{A=i4{H zz=;7Pgk;rF8H0^AG>J`%m7@rB-Vrmx7dGYdIrjn9gN4#_}DFQ(qyou5}{x zOqhf@_sf5e&*nXj=^SRR&Ybnqb9guu%EqI?>AN#)L}JC97uKR~eVc@BzY|NXt)4Tq z?ZY$(H|l6PWV4XC=iZ`bGm|)>c`A!>#m1hMwlcrj7%7cNqtjznDEym+iydWk3fY*d zb9X5#ET<8Y-lA9DR^QiVtFI@m%TWxBv;J&txb>Z^0iayg-AY8S!$0Q;VdGEE9b|{f z>Q<+XW%rX)wdE)IenFhqQtQY~>Jhu`PaUL={|c<<3(<9f@Bib8=Bz9_owi7VS?rLt)Wp+! z6j@`uv6IKL&SzdKpDRoX&v2efi(*4pB?B!Fe6GK(rXRXc9bbOd^(4c7b8}NIKY4U} zd-FvD%u=r3?Uel=%Mu?6iyiOh6L{CX1%Qj{4y3M58a>XUCt9oSM7xOO9x-N-tu1r5|78>&h33ca7F~jtJk=DAc5U z1K6X_qk1A5a)0=FE-G(cSeZxBReoP_p}1qidLae6Zh!o&x1rAZQQ-ju0R=B< zXKQtuiisqeI53rJct2%!yy|uH{L$7<8$ORIsWKK2yfr7 z`IM07Ix*~yV~>3KzEQ3;kEVsVKWjM?tqJej2)~V-=1ol7lL=OBtX>mk$VO8QX#4J? zS*J~lMqSDo9(`R>iyYOuB3nh`Rlv0%+sL)?h?~RXE6wy?T}#jPnxa7!K=t<i}U z2?>^R>+cqk0<7=t<$Dd)Z8c!u-^tr7b#}&F-PL*ZW=?w?Moua72`hLt$SwmK_2NHu zHZ|JF^1%9blwk}2cd(BKha=iLrf5Ct$#C$y+HXC5L7mOJoDVk8-k*s#w_L1gX)5K{ z_S~*bZ+U%X1(tj@MXa<>^Fhw8>*qnzT@KFM2B+LF#t+xu9Vwb&DBIp+9DP>YyZ-6F zOT2OE=-)gwcywR;rA|3Jrv9Gy!RrV1fe)^4#^*XkgH*26R<~V6Mnu+Uw8j~)+c~kD zW*GXLX+3Yr(%LlmA@J%%u|vLxFT<>@^M2>?y8wRnhjKoBwq3Jnunw@r0osf824=wZ zt5<*ha{uY+`ue)oTB|R6OlfE#CP3u%dSQl{cRHSh?8tLg##O?x6XxwPLwg&np!lyb zQ=SB4#>+lWC+cHwr))$dCrb&%jP31lA9OQIX56DqO=kxV;WG@2&Sgh*yo;Vu;Vm7a z-Obr>sPIL2iTHzY!S{Lyop@5~WL$AkC(CS%j)6JC#>zx-$aVo^~dK3ux{nxb@Mcr*3ZwWzGN5}PQ|rbjnj>vNzQ8Z8c5IJW|2drs}&$CLDk2kgyF>JI*CK zZGr1(u;i()+;?t^Ba{BQAIOZlx3;b6?57`;itpR@gt5!*o1VB(0i>57{RCcq^b=k2 z09MV?0(|WUo;-Pq^X-aM%Pt8{5w3;3(Dv!xYdk_?1E+N>k*4;sA}=%|%s|q7SW<>s zr;bAQ-uyOVPZfD#4|$u@-u6~e-1Ple#ISlh{ygJJr?HOkIXOYw{$Jy{5t-n3JAV56 zzOr*aLQg48t2iPDLHo;f_ADo8cnx9kGZnpN_!Q*{b7o%ISzP5 z>1@zxPqQ>f9crZrf=8nqKYo2Hst@*4Sq=8F_+*Q+Yy!%8a6sDjI2!WV6?an{tzM^J z-HhrM#WJLR4RuRy-y&2!bjAB=Z4s>8@+CTbmfVgvaSh;jS(asrP;x&Z&#G~Bx$cgk zI;#exC68!?ocY+#igbM?a>@Ks>)_Y!`1Z&vM=@Fdwcm*bWzLTc*IU$(c;CP4d56)# z$BZ8UQ;wql`D)r`*hWrHk7jQ9Vu|*V@;bb3jS{lF0T{Vd+h1zo)SV-xE7rNF1HpY& zJ$f|tco*Mvn$kVB5&WFnA=dZ9&iNUr9}QeuJKG`cli7$??{aAaKOh=RC>}-> zZp#JS;2v$#q0e{NiWw&yRb8gOvwrfO4O||YQ{3di;VmtxaH360ZT8@DDaG=G)A{!H zuP`$tGnBP$ING#LorlfqdO=DHa=v;BTt3KYK|S#7&1~0GC6;=NN24+I^u0t;A9jrV zFY2^HCciV3RJV?7T!}?6aDBQnF&Bm}V$g_TIfCPT zQ24bzjvjf!s-FF%ZK^;hJWOMy4Z{k|t5Kr<^Z9Rg^*^FZ)Q4U2JNDDh%76T>(#7A` zzNvE3I$g$;xAYk`j|E&quwbrrSOJJb+H%E(=Cd&VjPUm`@2O=kjpW&i7 z=9!F0ewBW}a55Aog+ud=ST||piKob1zpAZLnrXX{-QxHB9bmQ*ch$i&4B7{Vfo;0m zBA$8qxj3&ru;nQExL$X5bfcXy-?5!4rQpGXM>t+w3hR+LcBknw+R=jUk5_(H0R6l-e$H3ZG0dE6;Un!RG1JTdYf-;pWarYA--a`fcn!Ec61DV*RjswRtHRXJ z{t`vfoxYZ!Hccb>zFbkXPz{3a6Vr3m41K5ewH7SP6@339=X>6ym-n2Tcw)mh%Llj5 zyv?~6*%FqN!#=dKMPO-FYpb}e+VtnV4}2z@^MOaQ+QtNe zU)8l>Y0HpN*U}?n9643`PQ25VvH@sks5!2j<}(gP@pe7uDF%%-W;xJPcO4A$-lN>-Ujn2pL)oS z<-F^tEmGkT+m7FAaKD!O?Da&`ENrMav72e<{M6-2oB+ooJ6F-6@ci7Q*Zi3cA1Y_Q zO4v{A@RLHAmTGLd&+K?84{<-)VOrON%`B zt?18rzcu*7^k!Ul`v=&=$4>yw?4`2zew4$ZP7ymEYP9`1zo*ByM02JbJz|3N&I^<9cXbf;8rPwHP(1m&`rV^? z>g97gyef?0S3%>5g2Ktsv8Z2*&5jVp2)gH+d_aWjr#ToZoamc*HGRAU! zBy&f++`cO@!QA86p9&PMA`8;I>3MXP)wNXRFAT?TDhn*My8q*u|rPk?g; zP--{midZ*5rIcwE$&q7pB>XDqY!IRlD-!^~WEA~b6+*2?aiRiMR`gXS4Hs*Nt>JI% z3*~K(h(Qn~q(8GZdRB!6%+Z-?r*1OtYJewa!_SCB%&@+>VL#ikKi8sHYWx{bj%Q8W zJfe54Bj=;oxPZM;sfy z>w0Oc-?ow3Fofe&gI4$UXD$D!zwRd-pgUQm&?wOd*3%h<#<$wNinhv7+utHb-I3X%YMdkFt7211Ju<|3PAR4K%=RAV zsyV;0-eOtnbl&tEx9icZzRNkmHu9JX5^9eO`a8Z_v%j~eQ(F*jqQlekVHamRg#Y=D^!I6ECi9u-HT$M1|jj;OV_ z+xgGyk^Q`Q2Bx*+E8Am7O69qfOQW;HzVWL%|Ed>QzqUyD*!XsKRvZ0N!q(sUzSBYd zfiW<4y!dMJE&8<0G!0qY&T75XmhZRi$;dNgcR9T0^#b7Zd6@nBHtmwqqQ|pN8 zkBSPd<~nel`h1j6<4uBC?F%y9@^N)Ll-D z_MK_X@akYdud8xpTx&lkM^mP^8DIRV0yaCb zk2kAn z@<&c5j1wwkf5k28H4J-urqjs`Yw@iHIN~&aS6&%(_7h1w2Q$)zwV$@)GTe8}C%rNA zt?TiGoKHh`Q2Vh`Ob4~qypzA@*y(hnI$+#4w&xrXolh&6?Hv0bJKanX%~~r(9?@rc z{5^;3_VyNLhO4V9+}zyY>U2N9dGYa&!0e%=+@_p7uasIgpdwlN9I$)_XeURj_pgE) zDImSaiiABy9i4SVdNQ8PUL=o>I)Ye9QM()_RV48>{vIhIB?ucUHX<6y&^9B-lAlv1 zQ>V%68e1~V%Td*N^5?aG?x3pSyK5A|uzLLwE|uw7(MN45u9=QZ^QbSi)+xC)$|K=t zb<_{cr=&9-m@lKzn>ygy4~>$|JOt$IuNk;fpJadU~sg8$# zk4D>!gV;%&>7w~xoxis!L3Mz9s<67pide2ITEuIDA>bc%LK%Loo0q;seC+*Uqka^r zjGUy12K-KkL-?2ba^x6B_3j;+0hcEhtMjbyM!Hz>qU~x#&h-Y{8t>EFbZ7(%%QYK( z)df-X$?r$c>UaO+QWUDz4pmKZUBdA`CWRK~fy6-Og70tNtGis|ho~-xp-v@B{oFP2}5-KX% zqqI#!seOm`r$D{8F{F8;`=sPCXUl&~I8OG}=^bYfjld-2KJ^5kO${Vwj@dKcGg)I~ zV9beg1c(v&wrEsDTcnJo5DGL$K8Vv9i%{IrDMD zkM0vQWPu$fZZ9&-s-&U~AeEQ&Q=JcfpXqIcONE&jCFIjCcWQ(QW|ec^zm4lmDfL__ z{Zzi>5jyKY#)mqtN?U(!9t?SI(FMGx+0pb%N@FiFcD~)Y^iP$!{{EH&#;~{VWB)dW zG3gHeM5oEQ+O7JUr$|-Sq5)FF;fR<;dc&WMHn`@xJm=I)Lo!VU9|M*zmrG44RaesPjjPwnik2Cgk;cTFh(rRX#-i7W z{TBS6WR%g`m{+9@12;#(c%-0AtVmX7(g@#O^{|7cxKhUCden$Uqa1Y*_?j9mHJq&2 zbTrAdRVB@IQ0LUIG0!O7xLwAfE~n-1nlI%J84Hw--uZoYG8NYmeONHPJ~r~I?D#jo zKj3wE_As2!=ZWV2zUDe`gv()PcocW)pt?iJxsnRM**LmG=?3gadr`ESY4^5Ol-zbi z6K=Dt>x6SJikDhz(`!L#if|u+J(69oU+JJQa(&7}OsA+00J}Z2YMuAdVq7b)L) zmT9KbKhYBQNZ)dwBHbV9Hq{%dkC<1E3|pjYRMvDlD&j*OG%Ei`4jH$lu(Wq7=7l;m z1xk@OrZunLETtTtsi)uf`ee32+6ShIIvZ+V8t!8nX&;^-Y6GQlFI_x|ZfoZDa=?&01$ zB>J6k9Np*NDsX)#`E4aj$7yPNLiKauun&1h^)sHdkN#Z+&CI&f5cNUvtOwjGo_v(W z{LvLyGNfgUV0j1Zu4HT+ilMWVePk4_&s_?~Msbke-Sb#GJJzEC=o!Zctbz93$6(qph<2je5*lvbq7_RoSht3AMI?&}=K$hp6>g!==^Mo*|`_TbOIT zfu(fs_I&%jr>pyI6=fNldnpolBo-;d87VU(srSqX;V8?bfW;g2q9YIg-nVTKCxz?e z<3zmZuH_N&y?*uXUFoUQso&M%a%N+r$2fLD<@_l%;wz2nQ;rRT;vg~r+y{R~1?$KV zF#f!pPNyA?m`=>3cO|V)2A1kz<*kOT=Ur@y+Uh)SA36BkH*ZsuhSfnVWj=V7??pzJ zKlM8sP>)i{B4>u%@NznxCfr45tEp}P<_&fk z7Y?((6K%xnPSvt3&AE~&jhO+YbL`-|(oOg2ayV6gd5QYK`j2tR@HyU9<|0}sUqFZ0S6N$>14Bx-ouN~1 zu`KyrtgnCFa{mERT2R4?#772W<2f#_lpHYL7%>_tt1@+h^*U&W=hng2uGXc>ZiGwy z{Ij8uSQy!;FhL>*Co1ZB`?bExG1a!3(dXc)u;NpN%Qz~fOgsEW8*wr&0QB9{w;K11 zQvs9;Uv0@}%=I=m{Kxz5w7=1ZZRMIJq~)|5T}4x;8q#+PNhoVP$7E z&Bl(~VA#5#QDjdYJB7iYVTHqj%#LN`(C~ehhuKlLf#be{YT$}T$!dW4dWVntq|-y{ zG^tE54t3DP^i(|fGpcN(X@_j7ug+w+)Tx^4-wdDy2C&mirUAhG4S~_EpL${pnC(tcv6{*oG<3qLU;dc_rJ`vmSu?zcQE-)}M5GDVgccM<=qzEDS@`T5gu5dri8wedQ^tY6`1Xv zXFh2{^%B#M@i_5m*Fl$#Po{qnz2WC#%9OgnPRm-#rz&7TY6r*Lmc!UiCtR^C%Ll;g z&)vIv5DHpU_@3^W6+Nqh8+qH&GY$_&3YdY|d*=3-sU1mN-%$jNm68^9%GfxnlH%w5 zdldarJn8gIZ5^enLHExHPu?HLnVv(&ymTac%-76IJT0zt)pvPRr^ZR~9PMS~ zMGd+3L3uWEw3H4iFYG*W-TggskQg_;javKe?*MwfX@|v~yKPYD?P)Yl^%OtD5t7KD zF}#ceH3&*Oeb%30XOH>mh+ovu>A=qWv)_(qKcy74p*qm()#(|=nQsT7x>q9(3NJq! z$!!#MQJurToyU$GBE<*yAsQg@`;4EvB3jBbQGR5v8+)hH+dQH_f2vcbGY8CXsvA_7 z_;cES?}OiuN)+wX_Ks|*_DBC1UVc|?iPyt{8vf0^IQcYX(zg{k=@!V~dkV|)Vd z-l`+){w%?*1W?7M1W<)Sg%3JA8W^%*XvaJE8+C8m5IRPdC_%58g5$QtV0#=QEB7M2gCd zu{v(5876+8c{Zw# z`N@B)-7stV-J?;_)aAOKQOX5|GDWiZS=|RKl4!$Ab`d*Pzf2Tjt_B@n9G-!(% zo^p2k!S+LOR&NWlJu6UXqE5KLh zGETiuX@h%N7A$G_5vS8V)UtkeGJ606>UwKthBO$u0<}H_PWRm)>Bu}13}>8383E|I zQ0fh{gQ3dIk;5bMBhS;FH8tEUxT+L2+3yGrFV2wa6!Ol%{+zbUicpzUog>}Wg1za; zF^L389Vs?yJfc*g=f0|fW4L|PIXN0O6h&l+IFuhbpUmJ&W9_Fu8!2BMDX9Tf=S-ag z=Zz@(8l4oN#)o-Sr?nXV5gy<7fpMt)SC}JS^`bap9^!iaj~zB{Q)$CSpEnm}n0R!o zbcp)FpA65DlQQwQ*Gt!WKh?2n4FTIWf~+^R57Fpab)4eb@yz&SyfL3d&Lz`B>t|k4 zIZ~W>i6TKN1Agsj6|_b=C+D{AS0qQYQy8?UGsiHo!B_cXTsj{7n$t*edW2&wJ>@|3 z84qgJ&glZ2S}WE|96?r|)<}6|yHZNK6{Sii)xE5X)FITue4tZ}yzNed-RqiHpez2l zZpYJ+?N=G%YqhpN=D#R%7DeV+cDN1I4JwyMI`*{bK9-5o=>)7VKbvxTHyKdsxtbZ$ z#xNByRN!48r&?<@Gb^R^v*OgKcy7@Vq5N5OzK$5&Jy2gk($9$M8?d>T>)5a@f|7B$ z?DJo|EhPY~U@hmJf{BEe874xuMj^PbI`tSC`o;{iKzW3anSq7PPeqSls&$M=d?$O4 zhWTp3-p`u)2%lFR_6XUAC;vV6Z)rlsE51BuXRQ^! zP9h7{O8axi!q30!?KWp*@O8^oh<3R5w$A7Cgkx6NDi2C8rWxbd3l9{y4Rt`^^{IZ^ zjDuOi%2QP2SRv3`S~xnv4vQM5Zg}XdJ5AvBQtMbv=lsfbPdd2gPL5Sj?U}UoZ$Guj zaCL)&@z?m>S7UFVrJ`Kck)xD=ih`64u!^$%LoLmM2;Ch{pQ7*mEh8%6`h#)dk%+pM zE{h&9uC>BfGwvO)vEtpV_Gk$2SYArgb$MxR`?-xA>GnRmT{?<7`txf!cfHAckaMQZ zp)qi~=~}N#9V(CJaHMP67@5w@Q@!d%^%BF&Wx_i>+n#IosI2VN0Tqc>Y1e`C+;qxX zFYOG93mMGU>7gXFK%y&AU10hn5W3wunk)EhuXNEMr~EyFkwCTI=RyZCD@Sc}Bop3oCft4yslFTKizr;m18i_r(76r86FXr1JSzuZbo_=9nz(chysR7Q{Jb(id_bE5+y z$BBisn`Vv>9v@jpkHqx-w5mOGqH z{~qzH!tCGGQJr<`Ue_v~yguKLNgYGSGe;)4XrH`aT0i4TVd2Qix~@AJErk}?91L1? zwP$1-ROY-5A0()w97Q=;XQcy8VGFPmf&fjquVD%fzyr z`hF{Sg(UfRguH%cAw9?KL@S5*z7l}p@$brPvvQo7VeIQQJbW#V(^n0DTt^E@OH`8~jmD`qnQ+~(@tsGX`l@8?r(M+H z@_tSyEYy+X!aKmbgV3YlZj@_5UFX%$t=$X8Cce$SHQV8<&oA)V0-)*rWXojiYpqCD zQOi8&`19RO!y3B4FJ-Tdt2xALbC^~H|{+G@YI0zU#-KzGRruh*Y{Jtm-->S<{`#7r04>q zo~VzCcqG7%mokgi%bg52d93raOh-a6dWuFI+6KSN_f)z0J@1d^rW|?Vn%@u=H?=#F1zv{DI*Ca#k@T}{|+Y0c((H5nH_gVYE zxMaP+154H!nll(hY@-MV!@4ubqKBFzAIlRLrb`2+b{>cZaQ>Zfq)spMSrnOd*xUhO z`1$*OhG5QF9k2{ohraQFOdKWT!E>+Q_USCjbCI(e&AN1SvW>t#0>#hGIGQ8d5q@^{ z2l_*KO!Ff-ipV(PYY~4&I^=vlhkVO>h&c=j=Y9YtQ~uzl zH0wBRH;O1Tof`aC_iC-*0kdk>HXB{~Q4*H0uImTOX_+EP?M3_lQ}!>xx-DCIAoh)% z|Jr+>b1(N^ikA>oAPFQS5RyPhfFvZK1mYz?m#26MR2AiVD59F~xa*Ev?zvGNx7=|! z+_D>vaMKZX!<`EE%8sg%BODIkp4Z;{?8o|NrW+$i=9gcNxz6?6vG)I(Gjrs~@y?MW zQARzXI4OD$?}d?&5hW9gG6N%(U-fxLLNJI5X+?q(^d<~&hOya+AnL^I1wk`qmBGAx z7e^?dF8J|XgI+JgnS0&E6mUedEX;x_7>~-_&eY#tuBo&x7-RC;c(ZwMsOH8L-{G>PUmmO2h~h{8DZdEq=XbP-U{YT&8BjOlTHcKP8IkS8v~P*@LTrL4FPrIGM0)AFq_r*`QD%xNtH@iYmI(P=ii;-dt0veK#u({4GebM4acd-}*`YX&1E|4=>R?5lXE-jQ55&-Go?BQ7 zdYca&AK}ROya$)geC^X}T z*MI_8KQKGCI+jvyI3K_I@WJy1!K~03ajMYcJ$p?WBG$>`0qVqN1`{xqhAvq!fwQ5a z7QEggt&e-ncCYL>4&3keZ9Sjylzk4uTnr+tyIvR;#`%?nt?lc4XsABJ3p1BS7Yzrj z9Io)o0lOVti5;lz>;mxw>=@gK8QueKSeO^s##w=KD|2H+EX#&r*4zMO!4bwt9CkY9 zxI{5mSDNu$t##zp^t@0Uw?gO9%~kW$PlWdS+GK2dIL2HB?wAq>uIs(y@z(pkyUsog z=qIW>T&*9uP?n>0O7KB5obB%0e`)^Dv#;AV$+sg|SYY#aamCK2jTYO!TatH8#eK2# z;-3$3XaJ7zsWGQs@VqBiJ`4*R)!dHq7e8+n%ZqdC_J$L3^5$1=Fa#CaMmz_8>#`Nk>UqBjmF$K z?cxY}IdL3bMEIf0K-dAedE`seXAPoo#dLO_Du!}{FRz-xZr!jngFU=(Lk|FN$zP*B zeZFlvw#S1n6_w_Zx?(oUb<~h)N5R>3M2t0P>FE4b=>Frzbk=Yj1?L$~VxI?;E>|jQ zt3bQM;LDagrw;Gxe2;nT1|Q2grf);OtgMkLHN1j8ImteAK$)hdQMSU$MjUK)FoQnh zzDyU!94>8>1GMs1$Oxyi=`7~UnOoo2_F^w*>~P|c>lA`N1W2m6X*AxSiSXK2#-FBx4DJFNzbg|?mZ7J#;UOB zm>wP;eCHolkAA&R$}G_Pkq}xQa5kXX1KRCNu-gZC*Y%bS!5ZF&E8)_Yox@;it-)@q zQLXP6gRe8fvxgg)G@JnI%zHARg;#r0VxtvT2wq5cwhu!y8mD=y*7}?UW0mPaHzT_b zo(yep!E)R>PJ6AD;UOPb>9y}Xiaf!?qE?aTcoi6MR@`m{xW9vyM_A9z@;T^XB150E zzSIQw(v_CuV!C-Me^BX_&ngUq+y&Ibpbw{08}oor=v`^KG3r8@jT-LP?7G0If4?qu z&Im@ngc6ai$#W`qbg61z#%V1g7@=gTIBcA|2Upm~P(EE*AFBiE&!Ep076r7*M~~=f z6rRVP;VAfY;4~uS-N1+lL9>Et4=5jg6?Z&CL-8EHn42CsuWfZ0>-|J&7!FFvLUg{W zoz|lUUIXy1RUAi;Siqx2N9T_d9yKcm8LK@CQLH;6246mlU5LjyB5oFusz_@oWRSFq z`SiTTBVYN*)rf0iPqW@AagDtn=M1j*s+!l1gM_O<}@1&D9?;2Hk!|F{1O{?Gr1 z{~bPf_5xPl;%2Te19uL?I&P*N#&`6a@fFXpKBI3ftP| zY{&U;zmNOSh!*2v&`lU2^sMK_)FGJTxuGPQMtxUVq&auxb`0KTcrv*da0IRy&pglk z{3b^RzPe*p49#4?KYZ{N{OP~@p90Umf_pc{#*)WKfS-nTM4|S6Tp_jQ%GT+*M=81- z7-_nNlG%r`Gb2$e%xxIsgHJ~LYYyqaiA{OPvU6D}{n+umZ!`$S>*MP9 zjAF{exbpnc7Z1Sy`2YNG@qhf^{;zQqpxFwm8W@VxhP6Pg(u&dxJK;+Is-qYNZg(|c zR+`-P-1n&VrSy1Yh|jhZDWD-5xVWZ(s>09AN- zY?&g>nB{i6jj{{VkPTry4aDPk!2Pj~b?MgeT~B|76`(xeZZB|r>AUdo!MEYD9=P3} zgN=#F^y_z#V-dz0P+dT^)9a_O;zQ)%xTkC*a6?kL0YmUnZq)wjK2kG}P?@cUvwIxV z6KbvJf}p$XL2I@e-r4a>!6)2*D9hEbac|bfPF1fPWL99c;k>`cPyF0(;Q#gC|9kwu z|GWPdFG@u{-{KZ@ZUtuptW9_U-_@ea@r)0i4;5r8a05<{+{AO?k(TWlrqeLOs?cXe zML7y;uTfVAO;3-~d1)qmUnwNcKjQB>KZj+-@}3yEh;s-4wcR~>S}~WGdjI#>6w%Qa zOE?VQ#FODT3hw9GgL@&fW^(aXBy};|cHURnr$)1X*PlI#^H(=o%pPF34{`hO+wkmL z|1xSjP^rDry5Uo1j!SF4o3FOH$zhKBSn8#<6Ek0M;AGNV7{xkP#@(tz_#kf#Ssb5Z z60YcQw%K8+k?w#Yy8)n?I34|gLh`6e?h@UGW(SH@Jlsy$vwx2h2Ws8xzUf?VN@K-xSAcsBv;W_rbD4d5&pe!HadN+YQ)*#<0Rc?q?FgPDsG@@hOuz_nIdx$Uy>cv4)_topj-55um zuK+yx9H;l!SfTS04!R>-$1BfAYvvJS7>eEe;9a;e?G^MYxTHbwl*4-9te)_`rkfno zc*PwzoM`2_%bQ#AhM04p4>=a+$Y0PWuD9k(FPqu>TSKKCu~C}!4J5bzNxF-Wzp zdBWo!Hmke?6f+YRS}kK}ZqV zs-3v|E=I37jC6Z+Mo?qi7CSThSQ{%!HgH#16lZ+ZT2cEh#K*@++@9O8+;8Q;QEtvi z-H>nXaIZa_hvr6FKTv!as|J^Q4gDFzsMw5|LNWtacl0F(ue(#vFmk&G4)pvD|6FTv z;oco18)rpzq3<#mH()wW0bk_k_Im?}G7PldPC;KPMPH8eF^xScVVDnGb{q{j9{en~ zZp3(0?HP{SSMYoP>3@y?)&JsuhA$rtrJTN*prPjhIB?CT5zlkUf=dmTtH{umviEW3 znL!cF}S%SLaGCm^=vti)w#%VSW8u?`9%<@2A%pg{1t8*P0qDm*G50gFIG>GU&@0C5!L`3hV8nYI-W;6@#Qanh==D7sHfp=Gkonk z{v-Ux@B9h=_y3#!248vp9PR#kgwn%6Wh6Q}lnk-SGJSzQIvSK|N%(+acwc-|Y)8I+tcHpy5 zU*gT1M_BFnu)ZU#U6&V_^726KyJtB^B~ygx+h7pJV$W}Eqnt$d{*P{41AzHaPG=Mh zE-VW>|Fu0DdA2&DP-f=472BE@6mmSCbpvxZ22{^^=76{R)vtaPFFt&MNLeT_v{(i$ z<_4NLz$~xl#*zJ;Lp9ceUNzt7IF1qJRDM;Nqr4lA1@rEp8lf+xGuD|Awed03<#*M4 zx7)2R;jPiBn4iHjRK%Kbz-KS=@9KQa@kj6_=&}cWM81z84bB`-gcl8X1Z+KrxwY2N zYU^t2@j$HFw0k$v0hpKFw&sbBtsENS3}nx0%Ssf$dhl*$fwRE3Zc)}6%m%O1J@K92{cUJ)q51CdJ^uDj{2cy=|M9=a|KtDq zf5MlK=VUBM1>2X&$SyVT8sPtu2>-Z?QZaC4>Z;Wf; zDTxTh_|WTqMH06iJzbz10p-?}UW4cQ!IcFx;wN)oD{vfhS8_NH3Wt|O2wBMU;F0!y z=_r!2V-$Yf%7Fv!C;?powu<-fE8e`myXC+&n3n3)7`){Dgj~7P?`yq$$H$-9h>BNr-UE&uW{iGWKGYidz-<|KT&q#KUsIPqjy7Em zcfAxebJ!RIkAJ`$`m(1Z-5zeZ-`BC-A3g9R~-It+kU4EI*rti7Wv2My3UsRa@rC z=1Cp{#6(7XuY|&v3fasm=X>>>CKjlSi1?kW%c`-YM5orR66BSK??P?e{SozK=F-!O zCv9VX)==iU^rI0y4c!KT&A#@t499qIc#ch7J)P*^?7%S$lZu-?xB?0M_Wy?I(p(W8 zwgg6DR{Byy-&!2X#|(8Gv(sq-@!EVWJx9a8H{ismJ#&}=QGkvZyTDL89Urkv(Ym1Q z9&JR~$|w-q>*7S|hvtdjWq8Dqi&uKsI2Wc3p5JvGj_YR+4|wLmw z(d@vhwd30AMkJ(tiHdjzoyZH!6TG3Jg1>85oCum6y>C|yxmnm z0tPQ36?1M2e=CfJa9p~e>$C-;b6+xF72yPa8s#w-l@HuEJ77VBt26 z*b9KpxaaiV<9%r}cFM->)yWN+B2(D|#2l|n7SXOMs+h+p2jXyaKJF2Q(yBW^{qSI* zpcG%Kj%!5sIzNPB36LA*<$6CDbm4HUQ3U5l=aPFjJi0#!^h~I@dNr56s@LUJloN=R z1;W?S9R^q|{Wml_U=i`gjMP|oZAQ`7Zg?78F`9WzE#KGMhLze{>*Jm!B+NW3O^=TW z8N1WUzO$O6SsR^#d2WB@cDTJOy``mErjA+pW|awRPMgBTm$u9OhhEk;7QFR2dwhH+ z0gB+ibJ3$2ESysf>~bNT5bZzUzTfYDpg50-9B|&7vfLFBK_rRr#twk4a`DNR!Mnqb?Ir8X@3&Szu-1PmL_-J$x_sr%Gx>=IjPe zl;rk(8N#5()e@QiHw*qZh+_`Pt`q^XfgkfNMcJ9`N2? z;CKJz-{DRB5Vbr5tblj*`LJy!2m|x%!Ul{4WTJcP#*7_?W}ciHM-%zIQ)&7@JVFz7 zpqe!_i}ygoTCWONm(*Z$`MR}+v(75^uEh%)R^C}?w^`4nb9u$I9PfGAb{IYlfb1@e z@mCL(FZ45IiW?JgzMgeMV7AwH74_c-JZM03rCvH-O2={FuvtU771W++=&gAqxg56+ zE-SCH(UltPjEh-wf^Ul|NT`AeXFCuon z$lYCzEXG7P6iYYyd|F7})Y`vqm}iCBcBW_GX;GGNN6qDd8>X%F+Ffymp?Ru9ChK^^ zPwT5Mf%Dc*+-^NbQ^x4O8#sR`bClGHQ2EUlf1km+>CJwI;YJtYsO!0;R}uP(wp2Yw z^&P1?r>*tXnLLytvQv%BvHTuW~%$M(G zSPiv+ZiN^C;`|MX`YP> zkiD&^1cF{u5a-4qx1G(S3i8c}l<&BGe${Adh9@2uKc|eh2wv$s`wg(MO!M)_pY)u# z16H2l-fsBdtKW^U|G|HX&)x#9eBg)3+CFZjN5w@JF%E--YcDB|R8T8^;yHFgvUz7C z$e%9&Rw1oX;46AnyzBX6*`;%!c+mDU1(wkpKX=tP!*GSCRc_?tme#iZS!U`O#)$#u z2IQb;I(#_r_Y^O(92)qtm8X`u6Qd-Pr993nIh@^-(d&XCkqglt)1u-w?qi2=?ekdf z1Z^_vOfWvm1IBqtn-#Y+ zeSD{$R5p++LIQH{C{uoBwprcr{dt~S_?}@~6k|V~T$QZ8jxqJq&m(fBL_Zmc7}I)` zq~~2IOsd$J;70_ldm=Mw8Q`#V5P%Y`3taEptfBNjhS~8_S5M*#t^sc|FO^UX)yP<> zEG#G915Uk^jy&0w=AnoAVLf6p;55{PLA31?Z6vA!t~6RPR1{QvF>R|M6_KunvMhu| zWUz(-co=+#8-M2~@sED)*YNs0V7Cv)^Psti@kg{L z=DHeyqi-}gR{CzO!46+m3eR(lp?myHgRH;@9Wh<_^_G*lCfKXo;O`@HqB1Gqwc^J& zMY*{_cjOoZy`a;#|CMo1M7)4qagWsjf?>efBL-&Hm$}MDzw_QY@+I{$vr*}Nz@8YU zY_ybS9xW1?ZOulcBQv0~YjJFVeqi9BzsbI|TePz5U!|M3sxycU)-o1Uq#~;5$DL33tz{(4J{to!LU;0ga&-ecb z-rNhCJ$O5IJr0gUFrL(j$b_cCo8g(0JA-Cgv*|59A;4qqSOM@oX_Ta{0$2OEn!ik8 z@UzO-(btNbc)!Z6%$U%=c#4?+luo~yYd*8?YE-$Xb3OWKUiYf6q;EW{_*Xi(G9mzs zWnVR%_&$~UM(7(7plYP5!KjqmybvkWXVqRo>IEn_Gt!?@z!(+@5 zL>8^}Fm48_m^B6K( z;(PegDDxFQv#1_HjK$tWI7^pE=r=|L3MXJSjksuMYK3M(GGkgrR(!`xjm#`6gs+U6 zEDvi;MBiO;Wu(k8`7+v2G$%%+Ygs?;o^Y(eGr_giX0!{rag+C*ABV6C?zsfhTI=bY z#}1zesEDvQ*tQVVCJ>s^h({e5?*pa^-$|xK84-oZvFVWv4@MLUY|M4^FzCzSBoDdH(0qhuPt^Z=xz9>WtpF&-1=P4DAn4=jEn+wY(~$Oi_kpt?UgaDV^TWI zmgQA}sd34X^q>pQg^5UD@B^%%95*z0jiiWx#qP|AejUdR5nc7f@4gYD)3@)WT$hqy@R@?lG@SS8$#3&neIN6( z>ad`1pVzCJZn{jb@>-3kfahM%9`RlK@pBssecw0A4Fi^K0mkc|`*k%3Iv);m$l$g( zgNn0wKIUoS`bKhXO(|j=^Lx2xZaZ{nhA3Hp)`pa+82BYgj3#5xzrfZH4_y1yzGDXz z3(w3N=e8L(&9CC9QD)I*43)i)&zS|BS;85iWMc?I=Oq!2Z~@qM7AY>Xkfv7YRs!a+ zXUcDk0cGu{<%G}P#FcjzW4iKobzE0Wru5_A9aFHiJpUjw#&v$ez~htHy~#WuEBlV& z9P`kXu-So6KKT@HKEI<@;H(Ar@&eDk{O$PdKmMQK)3-o7Uf{7h99e`gi_r4#YM>~e z>G#ST8QyqKG%BE8C+}*?yIz6Q=y>}S(z2t`K6m2)ga)p~r?pzrJVUVe=)wWqD*Lp|P zF5}V~8f@U_pE4>`ZfEi)jGGLPLHEjYtRq<0tIkkZudXYd%I~x2nd(OESNqT?DNwcu z*1!)x%mc`ll&&H@F^H>hvl={ClbXSz%2$i_Ww2;c9t-9Lkv%duk>Q`Y@34>;SX&$T z%%W~X@$@y{iZ*tYC?3=xigq|zGQN+od(b8^G<&pV8VWPA#qErU8qOuxN+S!)yc;PA zJAihTSh+HU3(8@K4Z$nH9HE`{{J~7g&i)#j9jNf4rXJEiP|?HsF%}%tW0kq%wmkA8 zfBngT_iPl2v}+j0cRdou zeg!^mmOIpg#;KTd@F#l2FK8^}WTSPJ)*4FiofuYIA48_PW95d{8reGAG%#+Zz}gx~ z8gfEtimzJfT+@-;yzKtz#&sPBOlzB&%u#*VaQ0ld$k)vsf(-BDee4eHGCpKkS%diEjn;KFnZ!w7S;@yT9a462O{>)S5Jb8H}f>qI?kdraqm+|=l0d8OOo}GE=l{#OeC@Rr{E%q=M4oV9-Hz=M2Z-X+(u>u@ffo9 zGugrIYa5wY&FyBnIsDsI-i)Rua9 ze$3Y7WaWXUA{_CV$F90TW$1~V*L03E`eR(OF_6&@x0B)3%+h*taYZ`El}rT?D~)4g z(-+PAH$$&k1XIVzdWieUboF@O(|L5m0^?Jc2N}+2zgQe@vyb!2AbLta$F2kpLEe84twLV$92k zFeL)`;o&(x|NK2(y}aXQJ*Uf_;m!Sq-}yKHC62FrC))8Gc6c=CX6#}6{S9-+;c>go z-Hkm$RgPnswOt`a-8-*`HwBGjiz8Ga{7T^xEHg%^2GkXxpu=j(2vlN!-hZHutM35W^_8 z+sHG$9nXeL@Po3?goj9O*tL_;tn}rUT~9NNLnc>0_ckI%v5c;Bq07~ZTh-;ct5DAs z;Mzwf5EMsDB-!NiD?j`A__%lw+J2OiU|4y~Y&d;0^T3ANH!}tnE-_c`4Pon_mkZSM z&*n(!Df7G-#^mb_1{Ks_^qUGJr3r;!m8|0aif5SKl`e^N8`S27!>YQi&0$u0S z)%duQ1K}8Cv~)Et#TD}hE9(q*+&|M0(}w2#1x#^qtw-gDY#B}Ggn5?bH^UmZyV7&n zJTP7}gGFVA&cl_i*7>-KP%@s(=7}vletjm3j0H@AXP$4Ct%>X#K-yBMr(e?;vcB%W z3Lyqcm&`JR$HA1kl%|ZTiJD9}nI)eghZSCCc<6ga!ZFS{QlgC4SZ6PG!!W6_mV?L) zjHRCjw6nsRpA)9-^LUhLo*Ksx8d5oa{1wlyih1Cu&x}%VK3zpbjE0gmKb*QzB+1(b zs%NlF!kq~oV9$=3xilaut;ctB2TI_M8OnD?SB zWB1$G0owf7o_eD1ri%Qb)i{swUKwyR^3#QL-<_rPq6Xe7fO_E5k6!|(8(rmij<@xO z@BV8)j9>oxAK8KG-5_h@a2Y_YMH%7Nz5Dr*Jk=Z3nN zw6Uu;?m=ry{VGS~gQlZWeDoL5rhbBfE-3=LQ)c8a z4a1|&d!xkU;3|`E zwcS0s6u*@={-W|Zx1}_z#!T=W>;B9!$!I;=$#ADeIrC#`Xj|kfpFnAw!8zw(&87|7 zR(m4ukH{vs6*_oX{pvLWb-cUWU-5{fOv8c)w#L}1&#XYrSI`c_kcvU`r8x*{q%A@~ zELTPJo@>ySsF@O!-mA-&3qov01**84Jc%0qy&7AVyTN$Qa>OzNmcQei4!u9#^KL`F zFD0CVlKyU#I88-EGdwcRGPqfwD1+t(^uCW%tfcUFNRTRU1d!Ct`S3q zLEF8O8Old`W%CEXORET68N7h|i=~vIZ~?#?88WSnW3hPbv3r^4nCB+?%+hf(dgb5Z zvo4WcjXh-3RkSgF3x|g1>5Dd#@o!hD6#;`rS@{`lpCd&qUl}$XOVFzZKVtPJlTpBG zN9eL2)1=D0=y%bdh;%hARSmRVnYnka3XBD(3cC1<^~-G8j+t2vC{=K}hO7f(Ar#1A zL-7hez%BmT=850gr1_h^ONzF;WlDV*BR$t4D%fs9BXSxNgF}fRGgeeEsgY%Vs2(^M zskh$$8171yq-SOB<2Zb)cUbl3njCy!M%%dW%z$BdeQpdUb(sA5hN$+5Mi0q!H9gQ_o#4>%Heb=jUXT}=08}}(*6pjktajZFHd`NnxLzwT_ zU}in$ul|=M+H=~*7@yEz$UWUXuDjqfy|)_1J@Pj0?Q(aVJvlebIPI*k^0*l1nenpV zE25Bs`+35{gv)<(85SpwoaZBIy)VIyOusV>i{nDO>6d3q^W55_;9k$M+7xmj=qD<$ z@tBe^_bk|)Czl7=BGrhN4o;Dpo^|p`sEwEe)WiAZbZCq z2W}sH4Zr_y{~bPi)6mKbFG(ReaT$Fq{Ly9}5G&)WXczBP1aQaRaB++~B*i=fpDEQph>?<)n#h+tr|r8|Dr(40;LBZenDTdvcK zm4L#LMdISV*3h>>@5$T@%T<4hzibS%ubDfL;g{RamP<$5-RtLeODQ-GKWw@bPFglhko(3z=@a8=5-GB9m@h^Y( zPw?5B6XkdTJ05&kL8I-&?O?pD6_;mDS>%@qE%#7c{C*q{2*2z&W`t?rsT@E#IM6G6 zX$TrxiuxHvRF3KKk6k-aFYOBy3*%b_uVcRrFS;3U+@5&^ZQyM6aK|pu5qWs?!7_ySw8j!Y%aJ+nkqgEZ ztm8Y5a#ar>`X6$cuRIr@qpp`O4-ObHYi!Nute;~Dxa_@NmAJZMc@Kb};xLqELrczD z-0Jbk?=0s6Cv$miIt&Wq9QPd|17faK#;eh$#v>a+napIvKy#xeT$9dSM>t>esuQmu z@jN#_o@2vBrqB5`;Pah*Hu@X5PxbtXA!)#hYjh5{KURGF z(Mte^^K2-`GrWG+@ZFH6 z4EL&3`C{Ri@pNX?UX3TCC2gPiJMPJ%PTG#kgLRV%k1_t3Z!#ImePl|T=|`2Q!?m9k z39OZkCkw$||Y=sR!1`_AZPj;AfZGhKLpk#CVJ zvq5taWx7!2S-L8Xl$19JHvx<#}jz$;mS8f;>7HyW+-} zBdRd_L2s8K^nFE$R?VbRqj09)O|ryN>^JyLA~@AdRm3C?kh`QW+m=gZb! zlR9VIzw(;ux!LYK0!evgmz}%u9l4)ZHU#HFM?Un`{KhNSsf;UI4rTnrdjPEsLXc7` z0em)4GcUl&Ve6-qYDSPcc%FEERy`~azwXCs(4dB;pXFlceQb3r>}IwQSRJ)vtYgR- zoe71P^P;es_7TLVgrji8XJ!VDAPfSa=hQ3K_A`9xT*PlNAM7P^9-0>3VdB8Yxuo?`(NO*_YHRYGVFMczKL)NZ*$*S)R)J{bf@@Wx?c^o9dBA` zI+HJ1$^l34VjTRO&VxD?+J-uPI-W05PJRe+USo*)liOupst66%A@@OW{^fMP5Ron#6@%VY%Sq@mV&pK%E?lSI(j^}j1Cxh_!%qQH( zm3^Rkj_Fom&*UrPoiBwei#%S@q<&_-HyeN-b%wsY-KaMeAUqgN&eciPiwTGcQ=e1e z%Em=}4gtk&E0T2SM+Hf1d*M00YONz`6>U2q^>fFhTQxEn z&a3yzkc+~Jd?aAQ^YQj#y#N6K07*naRF%QmTASW??7+fm;0`!i$3Z($ZJxz9>qo5w zu1f(7Qy6Kg^wjvs4Ix`{MxuUEFh%SL<(gD}t#!Hhx-v9ZCSD_1rOZ5n7$eWgd@j!H z+l{$wEuVKgDXjor0leXczxeZyQ7cetK{-4h>pQ>iZ{XK|_fPQg=Z|RRVLb0)|J8F= z#XZj$jPX5v=q#+_e!d^OaAV7Qc#DjCPZ2Qi&ZMB5D?>V9-1^nui;c?4i)Z_U0tTix z+s-;X+Sb~ZJJx)=BWk-xA?lT8fsudJfN`=zL~SFASx zuvuvy0B*O~QPn;F%A1cI7bAhY%^lSY^FoWA?+3oDqS?AS5HiQi#}p2z|289U{Y!vl z-%(O}=19zfPmB9Xr%8<6bnN(Yq`9>jF+LkmVZ#V4#h1*vAEt|_1aB=V3JENEscQW4 z#d-|D*oDT1)fz?h@u_Uij3Snyp&YXy@H`>`61r5?$XdKgI&gxPO@iWO;7R^BfWA z4Soy5eCEnAeq&4=(OQe256;CB!Lt5s7G;T7Re=0HGZ=Uh*=o-$XC26urCxm z;#C!3M&O}{CIL(srvZ^$-Rfm$r;4jGVVq>=A!+-}81daxmb((V;zfTir5~0|5iG_7 z!=z(V!(=fIZJh&#fj{e5bXnJ7ybXgX+SAP$QHSPgoY|EL;Z(5$8-90#Xtv4pu1i=M ze2m+T0JK0$zwcVX<72~L{P|~n+y;~fyz2Q_fB&ESbG&+g0>=wfl#OOGzSA*e@bd4R zU!i#6ds&`5)qh3@+4p*n!jR2DCdWHZy;c6rn)GuqwL&6I~uY`p3rvy2Q@lG$MRUIthJ zS7Kv$xDPcvxb5tHhV<2PWrhIaj4);FOv$$9ONPu~nMVmsLs7TEheyl!;kKRN zJtU4~wC0|7;hh{~cTpFBp3O+OH)?+-Iggy9_@f-Bb)Iagi<9B(O4&xgeqXONUfb9u zWo9GK!{OKk+n%$tMy4|6THBb>h%6Uw&)Mop#^!ldQTM6hM8&#UB>wz-v{^kna*@oe z*KzW3zJB!l-nR!-I^iDJQvgP#ZCbuqcs2e6 zk0WAReP`KO;kB-0SLXBt=MJ^N2j4egill7ECGT*|{y3sJW!DY0Vxi-JdB_jLsG6-C zH5SFy>*81`0P|VY&8isi1{|%=Z!=wDZ?M{t)6>V$~Zeu4MvvVusSM)_fuG*^j?bBF+(dO0x{%c{B^u<5!|}UF#T@SNE5}W z;~zSr`LRQs^A^9?T1S1ov-!yoe3@CV4Y=!zg^$|m;4aPFrHIlh&g!8C zg80g;XB7rK*=#6Xd8d4?p0=Icuf|9G9{FAR+*H_nMSDo^&DzkVOSP&qgM!DSI{@SR z@ThqV@f)|Fc@f&jmG`Q-aD}}WTNRPcQ#Q|l!9 zm^7=YQQG!|wE`5C;Uu07=q!}S3=;-GWM?~Tg7;e@5^xvFY4MLnGvJ-JB|meyE6>26C{Jt z+gp!aScD@gyi%|nO%xtMESq(YRhf1!-?d)gp|{_6bwobQDD=a)FViz(n9XcNV4}b5 z=m-rP2i#Y6m6%4Do->7%J+J+{K=yndN0*IUrO^(JVa65K_QD9eSI;4+j{xiefA;4e z;d}&IJpjAmZ7ull+x|oR?w|gb`1sX(;CM0eP?Sy&c$M*qr?Suy<8a|QZv>pXwetOp zGDTgb$Xkog@ybyrR?b&OznOd5aZCwEytC+cA3^U=>k2jKu13bw+%QJyD$#CkcSwyfZO4-M{Lh0h<3uT;y(=Wh!AQ%aYoNt78tmx_fMiWc{Nshi-^fCDn7;Gn%W);}06xb$=VLq@km)J!+*& zC4l0N7$BX5XhRu|qh$fC?l|K9!UE3@pNxByP!-mA&AcQ=aIGFT_wVPkeq78R6=4Ms zwWrkRW5FM%bn_UvZ^ow@D=eh0#t?#)$4!%*&TFmfQUn{T89}M=X523VoxXcYU{57U z4BB@5WI|ZmVZ2`5%bz!c2)lCAws=0DYLmT2eQvbf_IXu!b-s?{!FLkgfj|GVPk;v0 z=1K3LzpMCxzx|{5xnKS|K6!ITEw`<>!nJ^yzh^YbQH6B^lTA z*|ktM>&q+J(Y{)1t8pc;E3R5=X@F!IAJ%!9Jd~%=@OWbknQT_RazkyO*Ds4p36c?})C&hwl(O8sxt&61^EL&H(#QcLjNt<2qCwf0QDkyFz7uEBGU z611_AtK&7Z^lVjCz-As{T>kofhq+uepjYVH@fmPjz0ZuYhlRdnIxHO8OsY^(P+igRzeve)Sf`K~gE+g8JI!B@Xxw;n23hMw2nlRGv7wAWxI2?LO#a$~VT@tgz0PHQ=z~oLb}bkXb6{ zQa%hk+AwYvPcfgF;g*eI!sgs-$x%5wfr=1Q?`tAt_hK>&@A2_*2;-|9Bt03PEnQt& z;|Yy+mLoXC`c(pCV}{@R+VWghgD6mq(D1sg!lq-apa!oHaz(Fo<=YxNn8wDOkP;CmEc| zXaE1SoBhVL%J(a-7apb0x@@UD>HJlO-20;W30hx`i}m+ij@dTOn9Gd+`FG{x3{ScW zp$?1kYCIF|$Fs}W&BDSW;O5)tBPzqkI5e8CdPwQ$DZLWyT(!X)b{MX2M!p7K^&}L1 zCgy=;z8R76=AyAR7Qkl!W`vf7>Y1o&t$28N*h2dwe@6tRUK`=}ON|?bLB|vA#H)JN zd&Sm<W{l zdOnekgYi*O{I7EKZO-FiWieXW2+;_%zlH~TF7JUb&X{Jo^hz6%tTj|$J@L*j5qq3pV!^D8@{&XZ(g3-bHC!!R02KWAee&Z!1^vOvw~s=S_P~b z+Uc??@DeK)8MRvLk*o{nNY7-;3=oxbbG&Ypj4JIQ`D}!zb}jE!o@R=W=OHS|$LEEo z4C6$H%8}(|Wng}9W~gWD^$*+D-?q$1yBd$faKFD_6f@I^?jFt@JC!%_n?@Ejs+-H( zxkBM|;n&!u7xP4YhOS5*K!=+htaXUW3a?Ev3ts|oK{t4Z9>YCJjbk9&vCXoxIe zUP9|sA*pT7x^>vw0 zf|YU3@8eYs)n%Q!FEboe#h&|!`CFAm?sa;pi`8J__v&4Z-zeW9TgHfJ2lshpw5zeC z@Twz`8SPi?b6Y%Lab@{woaD{|fj=v*R?qYpk*q)evrkb^;Jh2k@eJ?ohVT7>zl~q~ zSN|HHys4<>heE4?$)RxNIqmx@?}?Z1IReW(7rzCcuNC9hyofAX%?d#0`U*!pH}T2> zo$2>>yA8N>N0G{=1^-*Qk5zH;YtWFU5@n*T8RE=5CKfC_Z+Dw)2DX zrMAV-Dz4DVR%#)8Hk->#X7KM^u0nC8JQvPP#)$(yxJ^i(S|WPm(du>YzV~nA?VmpP$jSLS*XNcL{!FlY~&Tx zxnu3BI&8+ItOWQ{glO{N8oo5CXn~%OHT&W|G@&j_==U?-^1Pi*m~_iL)`}U=t+kP_ zds6~V&4qpy3PZSN0SHH)6n@F{nc3?D?AE4+&~4l;?PJKHwkzvtPvb|L{M+J3QchZR1dAZ!_vR_3@#ioqh)4Jg<@r=;P)U$%VhU zsxJ#P#PL?12%9omXM8U{6wH^p||GeC#u1mz30d> z&vQf))d2AM#=uQxoa=bT^GThrtiPz;lo@5U(%g@nt2IZGPaxQEgFR}+$~fcOnDZ%* zJc6{s6*U#lao;AtMvmZ=hs+nM@W-4~!+Gb83pVf&@}yPLGcv9)g4rkxnCT0+R-E~L z4#$1t>v+u!8P%hV$NRk^cEj_1Gh!6Ezn(p8M;Y=^oVr1=bpIO=*}E|bm-i$ z>V57CdN#&H&Oqw#Y^dlGTp%Z&VZ(|ifCr$Kxe~G>jwhGf&b%T3;z83DZMwbX_d89Y zb%RRF0xwg(`$qz?mOB0sw+Kc$W%SUEqsnu*ab3` zAY%-f7qjAWWmdiCiz0e)uPVIE`x`iraqwqtQ@>Ms=I0ppY%Ubvt_ZK|5yg_%?RbGt zKlvQ5UY;-*?x*42p5a}4j$i%F-v^$573KCNoDFEUN1zpM9k;`BcH?XJ7_(Cwv>lF? z#c%n1PhpuwNOz^$5JwZKfaUg9qi)|}#Bi#U8GQ#&b4i;WSL;rsEDub_%$L&hhMzGX zljrY!`DcNv#3r3QKUVRi{pf0djx~c{qjCJ4%6e78K}U+$tiM%hyYW@)JoZfG)m8Lc zom8b)?)z+Q7BvF29+8SS(H7_64o|(oJ{Lxwi$e`1KZS% z^Ox~E)9aOP)<5P~o)5+sk45!e;E_Kw&KTc3J~r$W=Q>|HKa8tP?*V%bR%3$T2~y(Y zC`bUx%%F%mX8aO47LX}F~JEv|MpxKt*j5t()F^&MB+zhaWa-gr-7ql}x_B|PN%z2Lp zZQeqUw1oE*R~B(o!;oob6;#)eM5cu+VX21875y>{8BSx4T5DssQs6aHDw$UlXTcec z8Kt6Shq0W}3X1ipYF#~N0A97ec+{db;C6d~Z+znuyuZWuvsl6VTJWXs_+I?#Z~rkq zd;N%q7vF+fz1%~1tGkeAgKkEo%o>hkDzxJ`#?qQcJ?|)GrANjk)2l9%@w|@l4SMyR zLMmG(f6sbSwN~7$j7tC7w%N=HiMi*B)M2Qx67wq6`w~RtbTNHQBW#|T_w3mV@a`z4 zAs?T&Goy8Pc{4ibJSa`GbXsUUdhZS>MOU@=_ zr(ccEpl>#)IWo<2Z|0FSZfh|rZ7vh4Y#kNsdwY>H$~v2KwAlD!Bm63`lsO}d>01Hc6iu5JGcOf#pHCT48YxpFKnu2ADPQli_g9>lkO-YBI~B7r zTty{#8HJhfD*ChMu|=Pg;Bq5u_xyPL5gO%-mw*9`d(?o_rD26t=fQtl`%)ul;8vC- zGlNDiW@cS`zj_UrGh<9~p5d0qz@M+Y88z~*+T`z+zU%cfTf5DGcEdOR;!~gNYOwMQ zFW)@khyLDA;vfF(FXNNfC(6SII2$<{Nt@iKMylh!^E?-iJuCPMtWi_OH9wb)ouB1) z|q@{H1x%2w|4ik4Tyv_IdM{Ng#4O&Psx%1ipXl11O_rOK0KWZ?2h^kFM2p43Ro z^eFRAyt0zdX#XkvX82KDXaaVvYb{BhN2R;-Jn`_*^EC_4Q|S&jfWAx^r5iGt8F^08 zKljV?o<(YvZ{mB-ebUt_jr7%8A%4v=?X0Q@}Qz$EQsIpe0 zgo(j-a~V($H1m9^ILKJn-{-k(F@`-cKiX$&Tn*5;SHrDl=Iinmw1cdT1Z>C0>Sg-Q z9AX^FWr#~@$^FiJ+p{hUFvF@RsblAHW%GR%=~7rX4^Nb*;xfF->t&X8x0?!;A)Il# z_b=mXR>#?PEAOq5mJ`f(1&{A5KK|$piUDT>ZZE!s&+ov`|JuLC_x_C^#k=~@>sW&(`ASEV%XZv%h+-K?tg?=V8+H+3Gm+u?Ro&Gtuvw zsPB=xfMblm?+WI=6i5C!_&ea5xm$kUjKoDd-tR#&bT`CRZnxH`vbFcqnk|*HLtbP? zNoME`9438dbC=PIo_VK6Yh2Hco7d#)*g0$-pqoXOD~j)uZN95amv=oCY|W7iqgrXP zwFbkQ!lL7h=v?X$B}#j?Gb4=pT-HZsK&o!J(m}c$53Ea`j-xeK*Gd~Zx7VYsc%1%c zCE^gRf3?fNum^OGGb4S$AJ*EJe3fI}IKXqTwOdFohoTe}OR@ zlnTqtYf(%5DFAfvaeokYmW8iYw=Nm#{c4P=Qp--MKKcjS|Le=}Y2vrvYtf1I4yn6WtuU>hC z=YBSzJV$%@5`OJ>{}>Nn`Zl!kA@0@sp~p`NmrrqcZV=&JhWrM(Bih0VS%B!cZV`sUd zeZ;Fir?kxT*6MDADSvU_y7G`+8GkCA{5wYoH8p_ykM|i}wAOIgzM+ffDaL&j9gO}N zw^zAXI-UUoA8Se@sLGr zRUX&sr?V(L89tsee03#GU|k+47#ZBYqmTjKh54>HzsLgB`#GW#p+}uOUTAdmt=z_h7vOG>V75VSSm`fdW^DR#=#b@Ad48dN(9nYu&?K1&q$y)pccn z@OMhHcF=l$>uE~oUU@kae%i;CFlw!#_P-6*9@+XLcrzR@Kb#Oa>V*HK8cC&vaEPcU zaFplx?4y@>`=$#MD|l=NzWQC?hhP8K{}wOr54e5!6`U;+y30Z<-0zIo&T|FVGcWUH z+#Pr8uDDEo`1pKWZO|YP26~W=_dU-=oJ;6zyz&mbDF;rpaW!Gk?0ZXi5E_l$Q=>KKSg9tjHOfMW&NxM3tyWdRM&`4;0dkZF!S19=+r~YJ=&fc zR4V8A{-7_W7gpH33srd_=Knm~sLK@3MJ+%c`*9qo_crQWu}&F!xMAdOscv3$agX4R zwS-a@!$`-NwG(|bG}JSqa==;7QU5HXhX|}ZWoWV-?>#LtfO(1aTLvTJJd;bgt_Jkv zjesd?d8!e)v>kKM&8u#U!hkxKC^ChvITSnzSIosmQG}zj$Vv3Yy9~9j=xrd-zwl(0RFvn5p5x z#`aT}j%DF7t0}Ft);w9;Y?%ILF2EYW%KUh*wHxZT7+LiZo=|T$ym?pg*MIo$0xlNfN5%4hI zt>X>2X0kT7H6u7VpYi)l9x#vO3Nqixt+-QO&iGelOZFQ_jTfV(?X?7Nv>ED(_p=CE z7QNvet{jC6oU0MRe7O8p_HpuDg?wb)sm3q*--O9yH5m>A29~=#2h0;0UU^PAIFjAV zvgwPQ1|IVj%&bGA{i~h8*;T@<0;~YAD}kXx^va@N8YiPFv-lV(Jh{;i6Oam7o)isJ z11oVYQJ3Ni#!+Q>Z#O2t^}o)XwtMBHJr)2saokpAmo0COF%`qvDsH!eTJI>R9(wL) zrSWbEZbKO`Jf8St1?EhC?|o=EKXSZij_bOd+1iP6+n0d-y`N%k){xm2^M3d2BZp!{ zlW2~v1Zf;BI+Ya*J#U-mFklAiFc@1qQLUm{#fe!-oO65PKK@>XqZ+znXPsHMyJv(3 z@W?_%LDb)|Ua_UN9w&`6D3?QH+sGlY;xsjQ0jKZyxezen>Gg2*P(ZB#^(^@08?Of5 zkB4V?`L^Pp{`|kh_y5q3;q%9W$2Q_SV3wMmvBv;(7qQ~TS^+rEhjvAUvYk1FWxPft zs#f&ZRR*ZQd(cMo zq0UqA!;Bt)UV|U7;Afrz*>T=BK%|x5k&>|8YfjfB+ou z@Tdx5y+@-R%5+y}{P7y-RTcEOpN&TKX7@2PGEfW=(Q2{mHRy{XHR9zwm6M=jV&(ynOL+rrH0Nl@YAGw#p^QphF0bc9c9vhoiN>2M@ zPd4+2)T@bS8Mdb!j4Lll@6B);Mf&(MGZZtR?a{alE`8sz0W&W``q`)NZ~!>(4Y)nS zS)SpSzW#go;H%$_W-rii>qm z2Ns@M9bo;F;c4txExViyV+9NUt@&mg0MY1D#vckFUzsfBF+}7orRBQIZ~n{DkJL7a z?=n1PGJ!L*THJJ=XH%wCg$K+D)WKXEFSD&|iH0X7E;T%2a9LtJGxf&kaV}OXqh8bU z>`~|h`(OY!p12ZnM!@lX#$W-9CjNzhp90oB>w=?u+H<_xcg8R(Ao=X5)hPBIimSni zjo>G&-TOH^(b6(jU5>8tc3Cm3p?eOix6zIY%?!_GYr)xQJO0$@`l9*KB^gx+*|MP0 zX4c=t#mMyVc?oZ*MTBf$=A1m^c|?&fk||Igj|%KYfkQUjxMs z)Mj{p7JTbp`YZUw-~0o7em(J`W#$96~O3wXuB2 z=Y1U`)2s4fJ3TKdA~YjvL|!~f8{z$Xt0VWy=X*wqxRU&Y+aqAN+cUq9c7gdA=CfHY zk}eO<-)Dtxp0|j=My)X}pvqg;qaKptZ03G3jTzj**$oqwUxC*d*<0y<@(|;!3^^OM zm&S9w!nV$PmJ4-dL^G^UeaGi}s-bh0769xHV?3`*W$}7tOgb(Nal%I2ukxQ|_&lV$ z%eyWwG+jo=eI?^Y1gg_*oM>@S+p*g_(=lwgEhTz-WNJhj42V+zRsXT0w6$+H7>;c| z7@t>8PPW54qHc_bQoO=D%D#(|X+GvF>T_jtI-}5rSmkPh_r);l$SH`emIKyFSfv!p zh%p-+6L2P67(uInv4>zYqm28`q7M43{yxVM;r4X`&+{C{RO$7v8a>Qw{`QIv<&l#$oNJc=%9mFW(z*e1NkZILgD|8$GC1`_IPA{F>40RnD3kQ2SVDRAsIH zpBe4UbGtM0)O^i8c&ynNGJ4>g8HOpNOTEGy*VKuJhldnL84o1b+WO7#q`zPBl8$v# zG;Pgu(JR9V8xAU8mG+r`uP&9BSNCL5(YVe zJ7PIETW_#x9(|Qv+a!MyUX64TlJaps(dDM>@N(p`g|WeB&FR`#2g`HuzAj5)!KZ=q z7;n1su)wOpCT9-{Ds&~b64v!kGSB_4$q!jZUIYh^C;3WAH zH4PPS(cP7CpuaH=W?F2n`mE+t1Jo_ z?^Q=kUA-QD%=PC64I6quf&vxP+G4Hvk2aOJ0Q4l&-N4XxSO_Yd6Q>2O0q@^eeD>)(6!TEJJv_%F zp5a%2`w#K0-}QYs%Liz&8N}B9xepf3EZ`X~rC%K@&j;h3odcbxj86jZtgy2pg#kyv znx!J>IJA#=Wt?Ypoh_Bb70Z1}hx(T-rTM+?Gy)ih$)8kcCaR75y*!8clG8WC+fPND zb?iC@V4e4j@08E99iEr?d?oXql7%W$RIdTK^VV7$yQvj-8J%-m(HGM->j-tGvvxv$ z>)3e7Qu#01RC%<}cX#HPUUh!9T;Y&0WA7 zW5DJ1!D@gp{ESDX&!=ig0-m7|%s56>Yi%9qrUa)}G82^w&Hze3>lJONkkSN2Wq?dD z#My1x{qY@pJmG28+MHHeTX)9{V=LfnzP|0-w5IUr5i?cBoIDtR-p;H~)v*q(=dt4O zK&<^TP8%xDdIzj6n+kSZuelyNkAR$^h+~`sg+-9;m2*}2>72y)m;rPS)lk(Xf-9w^ zG>|cJJbz`_`tv>CtVgu6Qv_6~o7r*{it~Z>E&iPu0km32glfXGDmjL+wKjGS#^2ct zXWN%f^kQR#VVyXo69HPmXRqGjaweNC6-lAvP|dp zGkzMmR>@qC=9@(|H({o}YC5Gi{t#iluc)qbA zp-Z~!rXT>mssV!)cn(%8K#y7hYeG2SQS)-lrR{oR(U*!Nmgg$-**M*e>(HZpS1Sd7 zRDQ=bqouxE_&gsGb+$62Rc(l;z-=%tm6n*1GNr=( zD^n@$avMsg+Lpq=?Ol!K%9zP${z?$E2DEzMo zUGYh#Z}>HnM_2fmS9ho|6ZiQ(En#vsw;cUw&Cl!Oq;{1D@tWlWasL_5#dpki$`_2^ zDBhjPlMZqJ-i6>u}ovT-WSs2=6?lGfb7jQ2;fNkVxk z=HaPmF5tzj8G7rAc6=AWb4WY}8I3Zb=+f=%nn6Er6KO=~9 zzHcby@cLLEzv}r(hH^Z|XKyQh>>vLee)Ok)4xhX+;P!yl=hNE0grSDc{60drs{bzm<_6a2yAsZeq}{ z=72Ij*>H+$l*nipIlrn001P9D@nU8eQRQB`=vHoC!7Jvbx`aZD>A9e3yCQ3>zD! zeDn_s4{krR+WG##Bfqjxe9E9uMS&>3NQNsPFnk5uc&)34bT!Wt)hkVCv?IGO+F%8v zIL`3(6wa8w6<6FpD^C>)%h)b<170oZUCnXi6)kf_R~Bj3{>I!@17LXjSn(Ghy~a_1 zdj*bXAK>$Q!7qLN5AYq|``7VUp8-^qQ3a105OJv&oZ*)pj;nc4{Ewo#GzSZP*FB=7 zxL0|RRe)yslF=H|2lvD8c|Nj8ygtLfKP6jvE?unq7!DY2g`+4tpD^CDsK4@S2A}e5 zrVQiasDs{fMW69pra;wz+8xsMQuuisi{V5v(BBXrmo<;gpWWp?FmvmM;inN38UqIu z0HAHe^h7c>Q&6Enxqy(ud=8@5Sv+tdFmb}Ae)b?#JzZqmlX$d+6@p~@tkY>+OEF8x-uqE zMZo>?p}P8fCM5VwJ1rOCSKoC-m7=c%0k|P}X<+yf_yl zAr7P74L+86u_Ko^3*@;{0eeK3$C%~p#-PEtrVN?C@i&s|n7UvA~+HPyYJr|$d zbiB+l!^CwRJQso%!{};_qcMT3m5~D;9(yTk zUktB$GHSHO_biy75+d4GjEgP&Y#wx;7)L{af<46D3sn5G5y9>2`|LjcoJC^BpB%vu zW7g+^)$oh&Gu-L#OMyL7z&ftf&|-S6mfo*4ktv0^SA|AqMDn#R`|h3|KU;ca?I_Rj z*{84Z{vF)uvIFmH!GG|V{|dhT`~L=?zBzGw@gZ9A1ZRz6DSXji;PE()xz)bybFJb2 zjMv$~cDa%5c3S5o6x4a1IE9Cl7dSe&;i;5GDJb4|IA$Mwj-1X5zcSx34x&viGO9A{ zstvw(!68=JqnG}sG_LJ34u_I#YkT^qZD=&3h`~4&>;8Q_qZi9)hA)20&hd+}7v%D4 zwmBnJ8pYCk18$}{UCy8VpBpX!jEGO6_Jdv-hfIrCdV+O9CPP_?LZE8DF+G>^HPGVTtd%M^+V zcfDBYDbg~_R0)uU3Janvq7Y}`W!5iS_7x{8&R&DLjdkou^G7!%h9~2l5~6HiC%&y{ ze*Tpak;WNNAi~029zBlmBK;m~wb#m6^E0Mp-@x^Z2JypiKHh=qX93P!sECM_ng4>F zQ8K3HJ`Nag)?VMM_4akHnK|84vR231zIWtjSq;K$Z78`_x#d;=`C`IXgS1vGcv5`s zZ3SL@E_P)UINgmJrfrTO0GK=fdL64c?{XC~T&2Q>^$)CpMQoLyOE9uy!`wfe&|Pk3P1Zx{|cXe{)prD46Uq3 zxs-n9*SzMgRaaCI-ReBkY5%Z>qgVE~;)hg6ZdQ2cI{&RrkJE8G`D>m**>EE-yhOyg z-BEjA9=Y-7xoyvdsUydYWr`}U85tB~iRwi0T#b3DkK>FKI={&&61)^Ut60 z$ZX_dh75@IxW?8&^g6~A?byuyz0%PDwurkrj9QVOCL3PvrI#-1+R*3r#1Rf*vfI@0 zwytVr=XJ*K%gF_oW0`f)+|XGg^@HAJ95IJyeWdSwt|DR^?dwVtFe8$i9__qVqF^Qv z^(C*DeKKVn7aIiu6kB_WxXfB*>p$-0&zVKaUW|I}6FI9FbEU`~21XA>*}Md{3p2w= z{MLRn&xYX)qc2+u4Mxdu81td|2z;+DU&MQU)rd|u*Nms3P?B5>o-2maKVN&4Iv)&Q z;4i}+(@l69W62iSXzI#vA`JSQCVev8d~eVc^MLj-Kd&BQh9lh}srXZzsCW4k zzLh4{dp&veeg{7N7Y0Q4-HshdkzuD00^spB` zpyHkD9Iz}}`&C+vKI3s<4=Pl~Q8 zOp32eUdKIL193B0u2ag-=n88Wyi# zvCGl>oV9RP5C0guZuktV0dsgc+ZZ@MVqJE)%F%H_FavZxKQotv`4DO)Oi2oiwGm$(Go>{SzFC z)U)kYVMh)_E3j%fsJ_flsMSzf!C{tQTdr2{^7UK1es%XEq^H3iKERuL!>|0-AL01$ z+hGr1!r3sq)1cc{ZCw&QyjE4Y1+5$-f@WspCTHs8h zyty-zU94!?`I^S<#Jno(*7lq`Rgl{Ej8+{u+nn10nhl-`g$xkrvcrw5PK9E#4m9|fsUQ~^|_i68#Pvyry`=n^q}b_{G5+> zbrvHpIqG4xb}f@b#*O(9-eO(Nc131T?Y6|k7q?$wUQAgGQl+Cgu8F^uK4uUB$fC_Q zf-rDMrs4#EgYpkFdIaoVx4s52O5|a^XVH_%q*#9Ab~PcG30%EEUb9ten6JeEo3)SO zO0fbpbC)~aosPR1Go_UVj<^mWeeb!5t%Ca$E;f2Sgc)6leHBK|wGyE!y3{S=fn$I?j*AoEt z?f%)R7*}##%WlLKxj~^PwLLXD;u*yw)6r9>4RHJMx6x7(edInytt$h7hE|n+*EwZ+ z%j^g>O0(ZH{AwPVj)gCVMI*n_R>p@sZk1hQa~PE7r!yPBSR+Av#b95=h%DseV&Y+B zU3rF?cb^$3718X;Y^wDRyKLTimI|@E| zbKH4>cH2mMBluguqM!%ydk+^Q)DcVi;H zyWj6)CBslq&)orK$AERLe&+G`_g=v~VAUhtCf#(**$OM5o4M8q8SAjjP~o<&9Mmg) zqdFr-qSg4qcn%#(mC8;n|QilFE`%ZNB*pu#YsR=v^KJLqE(A++p13c(c&6+5-0%CEwoDSIYR zeO|q9VE61ZBUL?!*8Go!$W(5Xl#qC3wzr)L!b}Kk!jUe~I|iHp|~I6~0QnZm1jjoS&FY<KqhGz2_TYI~4udJKgAOh{M8a>rZlgF$|7{BQn?C$ z76iI+W8$L?!@IRMcCn7C%W`GB6wg(Pe1#zd?8b*04|=I_yWUeeUBb0cBYbH|p^r?f`IjK4P)k=;!Q-u;C9zMebWE zOD;|1*YMwAw&aXOJMsNt4yS)tmK|9!##<>%pV2nsD^vW;YZ^^ojMYxZitmZz9vy5a zj)D=fm^`+6#JgOW^Aiy{0Hc!q29J#4urih|m?Z|y_T8=#dF4o%!#8ttg1#MwJvVSQ zUgkM?5s|$z@&Uk)Qrry*r5(*#i++dP@4F6{-)-%yb$YPYW<9jFFH5;zSmouAzpY2k z`>s8fFJ=bRhI(IfT3JUl^ZlJ?t3676z|ZQeINKeu!#zkk;2CWdpd5QNYT|k3>19iv zsq7Qkq0hyH+A)#P@s; zuN!C9EE8b1#=Nv0ajIc#5e|UGvSoZ}(%kxaHx@HvhbJzJ-Yv@=ZH+8499OwJN)*{V zGEBZ@z2mvAd0q@B!yjW)0_FMA_i=wV*V&bMXW8#OCdD_8BLJ#ERlj2(g((ixj%T&s zr)ZU56<1GPAq8mrN*M8AnRr`hDQ`N|36Ox;pcX zaj7t7j!i~m{M*CB!}gp$lPV{y3V#?9Wg3FD#*(iE8*e%J+Sc&k;0Mbd}K6J-d7LJYQnSqDrD}s!- zIgftKu~b_G|Mr4_1Llqk4fkFd62p+{UeUl?KYMVV(%wD8*u}_mvEb6Mb}=nQHEI~o zyYO`{HY2uxF;g_!-qrie@L8Yl9&pdCn{BwKePz^S#-7f@<+2$Yn|(f55OBL!LaX(P zYZ*RTb9yTo?Z_@6_T1bM!Pus)wDgps=cNap?}P9kubi7Qc+sBW)yp?{{~kbjK*J5M z-!**S-}rm@nP2=ZeBOcrS0{n5MP{LS1hju2k)G*G2Tk^zLDg3ooXjVDpX0rN&#-Il963#ye69D25&d5x(xtc6b(A%)F-7gN+{^Ub zN}KZp64enp4u&t<;gSb)<5rtV+i`F4z(niS-GOTdSfh}UpUp5Rt`(2V943YwM_60) zDAld3edu!wkJZVWjrtzBwqn!FCGb^|Z5kj3p4F96B&jfr)1@=xA?}T8r#!%`wfRiI z#p&5sOu&6GjM@ha=T*6L(Z~_fTcTK@7>7}0wh#!z!(qc=)X}}ma$B^2I~Kvg%%Ss< zg-Bx_)L3AqVxh$+xN{%zs!N~Te`Xl@y=#7q!p<-}bupZJKYJ|vU3O*6^c3@7T?~gl z$Ni`>_@;j3I_jV%e|ae!sCkXV(g5gjIY&@SK47Er3RtWSY}j* zj8T5%`BSG=VQ1Jf<9|7dNBW4iZV`>B`+Wdtxv*_>f5p#?KORRGaZp8fr7RVX`YhlM z<(U`}F;4J!-_VRH#l)rjR+n@rX+ZP(LNLNd7c9? zF>sDtF-!wiv!2Y@mdOSp_Co@ejFi{~qX%(L3;KXJU%V9|rcv>?!xTq)wALu(xF35n z1g&8#?eIKg#KZ>#$M0FO#!Yz}6A*|Vo)*TDTXH3^G#aV2#@`J`d9-0$|N5LVsv18E zN39jG1GVK!C|;F5mN5q{6(Brkg(u@H{{9MQnUNU$qswwxRB@pj8CT>AMXpPHt{nAf z1?T&Q*Pp%x8gQ?M^87=5{N|2d`ugwVE8q23@Q52u^Sp{h@hoTit%}O&)uXeAl@X{66ya^Eq6=d<#YfMbi9ggfmn}sx>71zIiFtT@d`z6hS)=Yeoo9~Yfnc1G zCN+$C-hhhpd`y4K>A>f3K+!Pzvxaecg|=~JOfYPj@wd~{?x-<7M{Ze<&PRkka*}us zo50pu!@UA$Tj4gd@%*@-a`IYh+b;7(2MGK+j<|H0y?;9li`E+6zrTYcN1^*z7dl@U zj!uPW`_VuQ6XQhdRWe*EPgqZ}K@<7AYP6`)H}Mn4%-Hx_aKmp)!&zth8P1qq*;s6? zAy$Bt*0~K`jfyJ^U~mqsrXV@bt}7yoy|KXEsTNZ)Sor%lyV`BR=gwsvv^?S~qlasYKpJj%*uCc*mGPAKn zsfwBJdrCkAv8oc#zGI823f34`DFs&Me5w%Ui=zw-3$S{ty3U;mlPiJ!MZ!*n(N$ZS zAmZIOSIZ~i*~RCpxm4Wi@7Z_!o{c}IYkt2hWs0KtqVZ>NWaIVk!WjaJJ>cED6Q6&6 zhrxOg(dWRkZ^f_t<{#pIdIw}h4Cq+n0da6XXT&FfXLd` z@r6^z`5oMMmXq^EeK1b4h_KS`cqW|5O7cnixRSdHhsq$um-0&nxBjMd7kwlBKUII~mR^89tXF$TRd9Ll47zmEUPU{HDwxvadE>z_TRIg_`1 zub!!w)q(3!Z}abIG%Ymz((8n{hT`m!b1&Y#Qhur zGoY{Iw{a$6;LUfPy5-(lgArWWvI}51&pUvIwvZwy}$`@RIcC+v^k+X>LY zs;yW*@2uB5>br;L73Zcs?U9aMgAE?V=sO$l_3ZO7qZU5i`!au-(RPBr>y@>8En&Vd z74+e8cX-TtbhMi9wh6}WQ65$DqkXBU9^=-7PUo|d`!TYf0*{otQVlOZ`y7vtfYk%{ zJMiXS@I8O^Z{eT);&0;P&ns@vzeEwM0<;swf);H=s^Tn2rT?f47x)ejGtTnl`v=e1 zpm{KSb$MRwzvEjNX7FPHJO*8e&` zP!8FuP|qd5G+-%VfJHlkqo}VocK-&=cAN*lK#u8Q18(KTo?F)Gyui@Tih6(ax@@iI z+*O0gu3~R9KP!}@I13EcBV%A05BNEMp3=Y(XT7pM<~){Vu95TE#dZN}7h6c2X zqZAyaz?#7vsXztgl${HF?Yz&k2`eW4#%|-f$mePN`Kk)%W~q_AM6Ph+xP|Nye2^Ti zJuGN2faMXDD+)S_V$!X-&EV(VI$f#3ml@E^pRr;v;i$`40{6Fa4Bm-yFlJM36dcPE z$*>37v>}!=B|~3O1e$D!9-&zcEYm?{LPme*ldG8!<2_s3F<@Y~DC0dRmquS~IAwV_ z9GT+DU<5O4`pWm~=P*_VirPTcxQ`8pEF$DlyvMY^nCNWH{VBLKs_|6r5DRIw*t7L_ zCgjKqbS0TDQ)SoH_XMzz_fEKf=qm4efY_ zirdDUV+>`LC+hugMz&q&YOo?xWvAnf_IY_+`9krPeXlZ4f6tZ@bx!y*%f9#=DHV!` z?7g<9{nm!Xc?+J{mo@j?&nuWGZLBbH-x;4|(N~_E0&H?Y^^($QCg1s9UbffgRj={) z@jhf#w0U+T-i~rP$5*_1wfRYLs66`=j2W%5etBvY=&1N&qUe(hWFe3dK7ZOsCv^L67aW}{5$D5H&Kq=dn) za(WbC0K-Gcl#)(9D=1wn=E+e8;c+M&W;!`#R@e@sY6$;Eh}wy162TnzaXf(YG5Fq0 zSYI*DoDcug0*zcTIr`vvU<=>-@LVZnV)sb8KmlNN6{HUDwV|POqJk#s@2n@a?;dxI z-#6VHsO{c8o%p-%Q!ix_rv*Mokd~FlczW2rp`Ur_9!$W`d@-0YoVP^L6q_F2vP9}P zT^dA3>Gat8%6^X&WPK=4=*7n7_zWxw?z7#Vzfn1l!pGn4hS#6Ift`lO+HiaRWqkDN zj$i)mKgQR-^Lz2WJwxlc6p=GG#?)c2D5J7^D8bl$wHjVM=dRqwS%v^bfXHFXlHXOi zbChh<9J5_PGA=Uu;tK5yub+Sr_t&A^o!4eNqt;g|z_};vtMkM;mp*T8=2MyZt~m32 zHm-woQu48X>9iP;D>XQH35u27_^#tG?$7w}DH*mIF7&L=&w&%GqFZER|KsNt_(z5G zEZ1^RfyrbT>yS(rPFd*rR-s=VS1vm;BegZo<23(UWX`-M&JDHBxxu#hq(KMnJ z|JhMGz0MV+E1jijAWR>@!AjpOZk#ot}ysg zrVnKEQWp~px67|O25iEUh%mOLnxV#l%YsW5#A>ax!N73E_Ea?_0iWcI=&yue=AA^} z*&6c9H}c4Yj$@e%+oKx%OonG}=gRP5oH28#l2JvI32kM{D{t=#pB(J~XnIR#+_q6` zNR>}E-i)5v5Z8PPzF*;r_SJa_8en0V@g@rvHDq-eHxoVsw&q6(y?y&0uV25zv*U)x z_jk103)J!@{MzsS8@w-H2A+M0(+)J0E%iX1srXKFnLOBagO-0$T&d7x8q{Z)C*od~ zA=#Yk{Z|)nvT@^T=7nU-iVRo45!XhSW}ECRrHo~1qj^^YqqUqb*&t`WV8`}~uQK@@ zzg^)eVB)BPI;s9#zJ!&{wf3oSFuYgFP@hv-7Igsi-k=+%?@hl5+^k1q4isMgKH7eG zcv$3y%1vG7((;y%W}{jv_#CD6D( zo9j%j>b$UAypjQo*BHaT1m4Fy9`4}-O%7)USO}eKUUhFi{=zDaokXnAws2saUDnrX zGvUaJxY!Mb14nsSq91`^7G{c|ObL$X>2T*#=8nJC&mUyet;?Ic@evd5<6ckY=IZr} zAdS3{em$P&IKOSokr;8_rlB>Uz}N5N;+jXwbkP>i%lsjBdpRz$@NGu4Jnm)QT92rW zc4viQ6_61X;|kG}32hT7{(FxynJ=M7egPYfYA9qz{9Kw?!@jNcT~2)-OYuHibDG_Z zBVa@YIIl(fQJ5l{Fg?$?)*qF>mpSNspf%{W+^b$GdEDDCUb;8y)zTB8Gx{vNTt)@^ zaNzUTZ}9Hz39|>()9|hpe8+$EgZQPd|2|&6H5|{sgtGx>vWy*-+Dq|@<4Uik+)_n8 z#(^osGNX}&Eb~K_7sU$yN;q$DME)tJti0WBsBPv8F8tSXIe7Ol!y2+I=(!c^bS(-e z@<~GWb+BsfJb;xC{SRZuB#(t=DXY0oocQtxF9sJMw!&uUCTp6WE&J|Y^^ON zhXBx$aYRFR53Au)SlGqzO20n6$`-^)bioL;78c;lk4^%JBqwJCAwl3qhS)meT1h9G* zv=Uinkm$uoQ3aUgJ7mxCcY2Qs-LPU6nfjVppsHNs`&dr~fEEI1eR!x|4WDaYi^8Tg z@c1q8#Kg=>?d@*kI*#T2q4Xw;D&*+%(pyO8~H@oLji6f`wE4*rZ$|rH@W&?Ff^qKj-&rdHq zV6EV@PhZ1Vln=lj@bX>5kNo&Q!9V!NKabBoZ#bTRfNJ~J>*%-M&%W6sH{4Y&C=M4V zEQ!2K!FZkf$zxWdj(H}Nk*cH=zHCg{_0+vQh9OTIwsEh|gu%TVav4oU-x(eAv+;d~ z6P5#44h7>(`_TR~SX2h9p~d}VIMzf7NOwAh%Mdi$}=xhl;qI;!|kgD<}4K2?V@T&zPif~b6%jVqHEiYL|c znd}G9Hy2o&7%F=X7B3TINQe%{u0bLG@t%GM)@3rCut1C!D&^PP@oW>$+#W}-q8Mq$ zJRHtjtY@rVNo*gCe~$3kZ{$=cqPads7zJ^TpNBfVaqHn#K4UIIp|#d=Zd$ZksW&ZH z$JfqC{VX)(iNKgk#2W!Cb1+WlRfcDwFsZ=KmLYb*J0pIX5fXVk!%#I04_`fS7UasX zdhcMi;o(MZ7SC%wuJ}&JmwDMbS66L~@t0oPr?uGTyUoGX+-USMzPnPKoFmb_tqtDr zUeD%9>M%nyr-4sD`5cCVvlSfAKENk$PW<~iIlGGu5}|*Jkhfrm72VHl^)@3 zmZ5h-#tqnx1ECpIPpckX+uV&=HB!d!J;!k4iN4A++U<^(+gSx3D_g>V z0Ae*`oecK)cmi1qAYBtZsYpd~6YaU$+7&RA5>3=sS^LgNl z$DrfQU|?QkA)tnrwxh6KIXeAU8fTA?v>V>Nd&Jw~37-MI^cJxO6#)@$}RjDh&L579Cj)iyZEl6E$cU z_9LN#TC3}Za~jYYEIMaACXPzQGF#v}!x6*8beNS~;T0ZrB>7%#Kkm8G5z2F|HlWdp z0O`>-D!lLGcuIcq7-Af(t9cH%JVHFLGK+s>TGp{;eJIVV?BID?adzv`D>LB8xy>7? zFl!c;Uetq7;;HQpI^t*6#Y#McD`ViP-?Kq2im`ims=&EzRU)atu;!a{8vKywKvV1Q zb+X36xUnn2bAQ;<1@i5${sYh~XTSw#Z7QR_85VJd6^|tpaqKb*OWh-64x{G}1xDy^h z8NYeGs(JCV2Cvz3!)G7A!u_46F0=}qc)*LVeJ6hTcm4>UzB3%pzwE-Xw;$BK@VHT! z-VBgssBgxIRbwS~Ao)!`{$hPcV!45H*g~f8`FoMec6Ry*d~bPLJ=bIQFGiiz?V9z7 zJaVJCJF&}f+Z8sR_jX4<%^0&kb2b~h{lYy5n>BfLR;s z!f<82E2TuL3koU@n{*nH%LC>#6-qdEpZ1giUD8J@h&pnrh?%CJ+ z^0~GXIi>Si#=A$XIMTy?dQRfZF?F4D+YAlB^R>8Ae$Y#6ZPw80v={Uh&uh-zF2^0O z{+-(kF06XqY2PuwBWfyik*ZnkVB8u#}6>)4s-k>yz`>Nq+qg17m(^HJnh z_1)<6nkzn;)1mXue9_^IWbOtSiopg-KxSu0K;uR^gq|I-5XR5o>lxPeP;N{jK<8E$zaUz ztKVN4W;!M{Op9G79%pcB+Ziurm(o(;caPMF_ur3!`Q#g);k?6t$AQluE5844{wRLo z*MAQmefAE=vk%9z;#xd1-+lE(00QwWWoAq-EOzbYVf?v$$#@TWDRr2M6)p$1IvsjWi%xe{*A-( zOJPvL|3u(wSOv_gxS~CUVXH20HiY2A!^6l!S#e*7C#=gk!$|S+y;O~U^@JEMEvayo zM8Ax&9KH4wVhMSBhF_HszerJXf~$|qz4`E_S~*aS4d|$39JR#y_cX;BWBK`Q>ro5> z34DjjPAmMX1Zxt_gowE=;>L#X8orhzw+I;&0ysjK7DiIAN-Sljvx95KaG!GKjL`y!H85Y zIYzCav@&wESZVfblOA;{^xZTP)XBNmu5hER!%G@eD>y;R=a~6?C-ITWix~UNfmw~M zQO$hdI3g&=@~X;?+cq=Y@9z;&w>2VCdcG1xUrmhqE(@%-aUw8REK8O@ z190e(OMS@_2hMw}D#Wi9FreYY?ZI=TA|mCF&bfqDob?gqAlW2!F?q?5FCXiSl#Tj? zvYR^aJm(}$V z0=5ttNS)Ly6dgto6E){9C=9!CktaWA7C+#|L@W`4P*sYf>Nxy29fO8E$1`GiD+6SP zS{9z=aWDfY4l>IZpU$nnyKmwl14Y*w;$z0nZc|lO89Hc;sa&g;_tV zH5(rCz*n3BDLD-sf#qv6rl{g~;5EKi+_u)1yuvUNTWfxvU*ja%-LU2NEI@Qwi?8@? zMsufk$-99S_k6x)L>SFHH|Dd?KF7Pa{vFzZ6A!Q#U&C+z@qdQ1d*WM{nej_zt}`lxBmq8T*&oXUKH0xTMS>?h1&}AHZ92kiy_9;z|O-$j}0^G zRaf~P_p-tcy)k&DMLt)TWdRXIrkKt)xl9$mBR7lBN8I#MHNXzkX0S31pUf}`MZX%f z6Eh5p@>HkR1rM1q#OWW5tGIT)t>YZq)++p@k(r~#^R--&1K1<%nnN19EA1$_*K-*M zzw*jU%)d!pM8Cfh1qIzkIUT;g%Ltlh#@CpeB=U46=gj5Pv0vLC4wLGMRm3b`eZDh&VK<+6pL2JlX z@6800(UwyscA%{^Wc%0{>8w~8f84(^w2mWN56-Okr;N;~q_24;%KZ9$Tc;K^44qmL zTV*5RG#fvEcf}xAmyUy8RPdHZmX+Mfn#%)HA+UH_~CBH`=LNCjTPd@$>_eZ!=Xb0Zjfv{TXDX;9iMHVM>8T@+%mpV8; zmtPE9w3`_jDjQe15KC2glwE@hdav)wO*amnir&8Ne-VfY8JUpawhLAwpVko!0u8u0sf!8(-a25RP-#qP|=|h$NsM-%~ePxCX(*@In&TT2TWt=QTCv#_q zhx%{ZlHK^dM^PL6RCW4YJ%5E!uNc3THX~Y*qt!jl0YiB8NgDvXQa5e?e<~`O3Hd8N z9w#d>%!yE$ISVst8IfFIY|=rk1)qNMYLvV(D5BL`uifPaWYG8I zxy}c+Dz=DV=sAfG$KiQWiGq*Um_JsAybF-&y`IhsR(4uX`O)7bhF(O_B09O^WR)?y z13oIvH!S#!s{pXp@OYj>YD^il8)x%#Zj7*eZLM`3p*dbVzXaVzpH`bh=CSmpcu*rJ zqG7r$w$jM%h71P%35aB9CX(P>k!aGNPa=vtk}}8NN08?7jMPiP6IJ z$h!y?7aB-WJ)~_a{x^EIHTtG2Y8>2%XV&&(C1#ExD{2nRx}ALFU573-=2~7U5SMvS z6UkE;@hjxHKoq|QGBxv`D-&Na4-<)ogLQdB`{2H^@0LlbU3FSuBnA&y=@V9LBfiJS z$1N(QL=v!N%1~=@L|fPS7W=YNTydO&8Y9Dat2Kq=e!shb07aczn|Nq3K5W;FfLzzw z;`^Su;(3LSy)n)whqa6oE`m>3nD|S5}je|JV>=sl4Ytxu5vHlwy@itNcR?A$8F+zIrs`q68 zq=Z6i>cwt2?+tw3Q?woLqj0Ap1i*qo?k~$1W0)fWZx}a`vtT`n72S24Ycks^Bm-Ye z>>SC8XjW8NUf{6?D`cojj>GhL5AgcCe_s}lm~oa14{yI<6)y2?93-mqg>GlXl@@9x zBaS`AOyH?8aFv+Jw5LgiH!HwdakHCOy_O}L@q7Wwk%y3nQ3#51ao&o+xsGwg-OT0L z4V{cPVpq*Df_mhrwmY~E6puOJ&hV~+h=n+Rr;2UVsfoVyJkg-bt=?RCdx9efZB(G( z0k2=Z#p8RYoyW7HJbZ}z@d3X62mcA$!&hMsAL8CtpKr(_GoaS~I_WoPO_$-~{c#-g z95fm;fI&CFzT~bsnk-LRFGVpv+X0jt&Ss-X>bf*FbE()cEd{9cJ}Od2&#>&ZlVS`mzXFa`ZqJ%aZP0i`h5|P#51uky2R`U*QqLA* zBIx^e(mt4c^AN+jz4nONT8hn$#cDeJK#G6SA&#g>#i48eH}6;b_?pBS8an{!q_qxMq$?IpZek46^2W{ ztF=CvT$f#e->f}ehGjfmowdeoa->i39wBbPL-<-UqqRPktxi~sa~^zo<$dt0(vS)- zHe$2q1X=vX{b#vE8NT%UEGH%K6zwWr*%(kfZU#_- z2jxZnuGnqqH=>w2zpM~uq_e|Q0pNyj{KY4D{|+$Ra6f^!ci=1E{vYDke)o^@jaTn* zy!aAo>kFT)jc7U>m8{5g>62y062%nWyuvv@mqi$u$MpL!I(ZiqEYuodBcpxW&U|%9w z=FzLC4qL<0P>|&!#mu+?Y8VT3WS5EC}7>7;M=`EgZ^QfHheQ%&0 z$8`NQTo{062Q;!mQpB@C(_2P_z14UEFfH8>s(p8g5-B4-1Q^4sjKuwob##hY4FnGi z7z}alo-KqH?MK@S<93gGOm@%lP~``N!lqq7jlF2!tx+PvQVbR6GQo^DZgcVIup5?) z6CMv2);q8Z*VtXP^k-`%Z#)yx%FQ!d86jR(V5q^6;*aLFGyvy*Zq%q++;iWeay!gD zeQRZ;CI+3cr<0w^4%D4?qhk7?qdccd>6pjqm5pZvB2!LR%3Os=Cfqpka5azqu*@0l z<~o_DE9G#-&Yq}TUcJpvKYi7gTMiU^j+bu@Klpck0zdIHzlx7vo;V(!BNDO)cG&Tdtj0g+o zaPk=3f16H)Iz!wp=Oc|=IMcZ{c;q`@LWRt+VkOxS(q`04=>Px>6-UXO4@2l2O@hyi@7VSIMTQ~cb;a)*b zGsxn(X%vRp~T5Gegvcw|iL2&2Uu0J)n z;yI0AML|97gOQ~Mo+=~_A#(De=0D7ScVv5nD$s*4IXkgTdrJu|`qeSSckE?kcxGHLSeZv9h`M8G*Xf!Evwv#OO;Qi5LBsVydQmJhq$v)XXixQ~FW;+lsSeSljN5Qk7g@&g;VD>D7BGBEG&LEc&e6Q@T9)lm_I+1zMmvfF{*C#D z<-F=M#d|h()|0G*xJ}j(yiCSzDL<$V@{$oN4Z3b@BWyFj-*;WBZssxRPFcMe4;k-q zdm5EiT*XE+=5L+{<~g-B)Q}uF;5lg+MJu+>fnIP_wodzRp7WqfAf@LN@I>q2IdT&1 z`r3aVK$*)_THhkBAxI2kH=GK2RzRu@88Lc*>zp{Z$jfo`=w5j4z%aJHfWXIhhLP8^ z2%6^6rQ5BbwG$`}XS*-8ud=hk#(Z>-bMr7_tdfh6G4s_jR%;DsJ#i~DPl>BrGhPRL zefQ0_B-4uTfCNy?mNW3;d5%8va;NuWSSr!?$WtajloqaxF*5_KdDUh$FxqN_sxh-O z+IlYG*mV^VtHw#O`+PFanRZT>_UY1#!W+0X?8-!yGSj`{XYD7V7aAQykFo?E&L~%H zYnxNBl{t5I;N`2&@#b9x8u0jdqLdeSJU+xP{i{F1?ZvkN$A`GrhO<`RiCf8N?z>Po z&#^}qN3ABQt5j*8Z^iTXtTvqYnK#xEzea1Tlq89IfDPcn)I6siA;730ACV%U`uThm zIS3CscKh;Nr1TPJwS|F+1MNijww>pPyq+H7XydFEQE5Ks%thh`J6#`&(y zCpy;AU)g0|W?1R7JO2DH(?R@PCbRfrV>BXKcI-PB7sKAaL~W}K+~EjZ)yXe3{>(7R z@TPd@$h?ku!sxZpGGk121h2x)z(LqJZ5uxuhCFArR?w*k4F~|22-bqsmK`+7lcmvO{=FMFXDfJr-tg^z>967!e*Jgx>hS^P*@vjsmut(u90%lS z3865q@W*3UIi};*2nFLwpXD~P9a`ucQWVD-9(fEI{D9}As@%)uNIauPh>q6n$oMuW<2e7D;71>B>sRJDNtLvM}RG zZb$h#t~JWtz)npX!MfdUHVmXVNxseH69uA_k{(XVKr*mwy~nO8MFtb1nPHsOhMnQr zpwQd}hUbd8{k6b+%MmbRRTEh;kmrBJOa!^80mBR`;GBv*1B znPGXOIZh;usRYXNz`w`!aNKZz|G43V+t`F>%fq$)dz>eDbxn^oGvMO=Y`a&kj{a-I zLt#$>0CpkZ_wU6shtbAHR%;`26^52O*I#VdOx%ZH@4KR6JWJlyn#-c&*PIt-`q~VQ z_oQIugAf3LCw4^m-T`wl+}k>bDnK$pIB{E+oQdF??3qQ7dXf-Id4|tEedUG6+kxYF zj@OTdAN;%j7(e-Qzk-in-*G&9fodWo%fpBWnwjVE95VuQwlzXCgdgY`84K6_(s{YJ z>bZu+yfQjfxUcPw!`e7k?=Z^Q>XgvzSZZf6&6pWlX*h8%^T>3diee}n94MH(p~qN` zNqZ_oCy(i}&*Zzg6ua)uRKupCN8)Nj>!&bqBqx&{ncmnGTbwm02GE=!kKi?Uls6*z z^I8o@Z=c&JWBgM_oJ+-ihLMVj6Q2WsL30HaUNy8BCN<_(Soa`6X1uoMI^bUOKm!0+ zqm56s4PD8)U@Gearv z*NqZ>Z`ASIY18}Q<@O0vHZR`Bkj{V<8ny8?C7r9F=g0>W*Lm)q1#n$$mXUZxY|5M* zBIJ9c+yda99b35SG3t1h-)bxwITcyiiP}m*tuw+===?EmOASuOnND=vuMxRW3YxUY zMisC|Lzd-9!DlID?8f8>hbm*UzC=3mS8hwY+2(>&xY%)(Dd-s?-J??r+)^Jb zYooR1IdloE%qXql(y54XWg+YMZT&tsCWpdGqCy!S6o}O!Y#HIwzT&Q+XC}@~-HZ@2fnV z%-G@fSuQY6G~%jwnqys^+boj9bD8nG(hV!xc#iwN`r~vKelEtUFlq@1#aV`@`2CxS zOmbVBp@fzHvZxZ{Rh^;iQ0Os7umvwnBRsY&S81V>l(tv>Y!<->L*#3zKGt$dI=&1h z#tqXE(-7m8=?2(W#j^QTJ(baAtoUSgHdn-S_z8F2v|okU@F@B-amHNaM(|FKh)iUH zUK!23kTV4^W8TQG82vVku;=}L-*y+ol_^>krUQn77}u=+y^s8Cbsizp?=ee=uwOA* z$6;9O$DG2*9`QNP3a@o#vx|P+t5pKm{F4tZUNOE$beoNr^%Gin5W)&5)P$0khJ>KVxqptWKZAUKKlFwGbyA@TS zFs&Z2fmc;r8833==C~O=|D;ewdRsRLP$a_4(2SP)tigJu;oZ9vuU@{zVL&~B+ryXe zzCOnwn_gZnUbyS!iF{^0nC^#{5LMDCqF5?Q%+hpF1 zzoF>pes<7Bwz+5Tv?A3o2!C}i>=S6)_M72WM=EtnWw`MtQasWawT{* zz=m*|djzQu$4=qCEf*N^IrTImlu5#c+hEI{+v0I*+lsdg9v(j@Q4d3N3xP-UjFrx{ zw*}03y2?jTdRY=!F+EwPFO9sYfXVR9m8Wfjg013G3b;NCPoy$KL?#>^B(Mi&;*osJ#zZGHGB(@v>?CWRi8JYL;xBS6_}SK4uW{2{cqmiJG5~;n z9vul`zu{7WOo8AYQNe+F-y=jtC@yZ9$R`)m04^M>;5MURq}k(X7D84)Ug z?+y%{7T?JiXBD>UQ7|nLbBlZ_S$Z3De%2AOWcjAbR~6|H)&xUDx1!I(3}^orb2aFs z72J%^Xze*!4NDY1_?#8HNAhe&4k-FPD&d<)vQ*g@%wn3rlq;Dr(Ps~8IFGp}1;`3& zz(O<^uk0u&eJ}lz+=%;lb3wUPnv5@tNAh-jWY+&v z5iLaq8&5;gB?>-kpRHH^tk)J9i8BeYTH01@7-CxHK_e_|vFjRncozYa8lK9447-j= z+hAs4g_$XcD{nu>xIAx@kTOFegW*cZWkokR?5gc>A93%M5al^h+-$$~KbQ@Vi#p7O zJ9aNN`<>fjrz11QA~%lPQaa}6RH>`6qy6f$*}V$8&S$`*`8f*rMBg=x^PzaY;ImIZ zM{7XC4R*Z1t2e+;{>-o72maPS#OwD5nmt3TdR@s7hW(InvI6Ie`9bM6I|_{3$mrFT z%ZyAh&$02P?W&B+=HcpdDf8GYo*V8j<5|VsHa~*bFS_@t&5RDSXING}MNgUR%V<)s zj1E=tX5-gj0rSF@zKZ9r^x&2JW|%TP_f&AE`6~?+bI9KzowJ@(}j=#%jlcR5OWjS{vMGCG?fVNk1H#;O+(*=e3Ul4}w z6kvcdBF=|4MO1pJs-`4iw1^U?tDytui` zV#k9T5Ihb5Bcd;ydCa%UEppW;qp1` z9*s?#z}x6Cl(fS89s$TUj>Pu??`*fjRB4k*&-n^ZIR32MP}|OXx?J%^hGAU8u&P&{Hux2QB;PLUq>(Ae!nc?wXVYd(P`hLUD|Jv{3 z%isDvxR)0=2^O?6qCz8*6}cBQw%|i6yCX9UklJu7$09E>ImM1z?RivKa(_gTMnthk zu$d2m$vxKEtSQ#7p!=x$Zg$X;ey_rQ-VuTDIL1tsS8J{3HQAu!k;m#CEhkJUtpM;E zN$_V&-!&Q4zBs3pFEh`tiu!mPf62YkFGr#jADc|6)(hJ5VY_nNP@G4HRSugONv{GaaS6h{vB9Nje5~c&>~%0BGkO)@EI{E2B$wEX=wyY8_)n z-YNLa@=QcrnXWWf6_|3bo>MoN?2_$>1?OZ&UzrV}c0=ZnMR;lAAT~y@u2~%!faNua zKX;>zOlU`!7Pri-C>g*YBsC_kmNKq9R)#Uck*vVf7}Q;PACBUNQGhc8Au16!tVER)QSm=6>qllQW+-`K=GSiOvFW$0spQZRXKKn%l&6-`?1W( z1g>MfQtDT*2aRO;SBe|H2GiF4#QP;*C;DY39W?mO=fW^9r}$0Bq>(vxX3T8c z7!vJV<$~!vWpFC4bzBO2e8=}GEW;oZ+G54wc1;8Ndqct7x9{=x%^k;a!~Hbe?Kz%( z(H^rAAZaaq9OhvlKT=l51)l=`zjCiOKMy z{K0(7ZPsqE>UpqQ2FBZ&^XwaGa>rQV&hV7|uJg}u$7eMd6pzX$YP2gIUKt>ow>Hk~ zTaFakjU}BUg-w5BIQe;|iHzs84wK4r#c!rtxvkJ8EFUvNCX>ZiG!XhRo7b4jFiSj$ zB~C5#+!J!%%y7HiHhHLhU+Hk2Yrd4f6yICWg=mRsl<7C#bLvItYNf+zwynl{nENO= zObMF-jQ2cv6$UzZ22dF=v&exdFgVFi2}UP_Ps?ttZJxx~^+f$SfgZ4uSo6S0_&(3G zM|Rf9iQjbGt@+NCsALeGN z2=?UPRvczV1o!73REbe;90_6N+iDn9<^xuZLij7tS{)v1RFZxuhkMyE#x^8`f5+n$ z&sy#vuxS9eH+KcU zDx%nNX!Trjm?~`UC_D<9%^V599g^3t-{9T*J5UZ(7~bCt{@UOAas2o{`4@QguHbn7 zCBHXz1(vczg2ot&=Mx>aIt~DqT}Q2X{j4~uDwAa)bI#V#2roCg!6F(PwSFoI_uDb@ z|4yuhlD*AY=WQ`SdJdU~i>9GB>gE+gxgF!=hpiHO%vqafv9;D_C3ge(OvhbG%;Am3hXi?t8K++2nQ^RyKG5x%pHzd!o_muQsp+c zF^yF$w5Vq{@;LN8Un*^DZ?thk@jeTmbK_UaI133f(~Pjbc<*|&PG)V#YfO$Z;}tCG z9n>0=-H8Dn$@2fjL#Fyz(bk%)G0_{9+QSgiaISg>8^PGxSKP;iRrT=ZX^dP)Te3)& z;#Gyge63gx0}j~h?u9#USEKsss1`QZ)jMQ(R)b>q__CanD_mZVIqu=PqDUA3uYtx9 zUdgG;jOL69WA3h)RmaP;o88Me&x8x#r*y!u^B7hmcNIw482L9usmG!SU?a+TyW9RQ#p=P-=e2>yA zw-JWbq}_=NGXwfT+MKolU`tD3*i>GJLBhZ5vl))Eyd7XJ?Xn!tc>1Y!f|m7Ol@HOj z(v!lS@m1(Hx1l_Z1cS$T9(JC~`pAA)8-xE;HZe`8eBt)AzYI@4hLzX6bkT0$kF=8{ zvaQz`O>>!Hwf0K6Bv2Q{6_wq$oFWVav)~GV;$9UTOrV)k1+eT8xI!35a;_#a`VAoz zMuN9%-MH$E?j|N0n*SegmVM2e-vbOgkH;f29AU^|!+^zXMn3pVL*9C;yAEUQx7!0+ z!#HD#=RyrVy%hghRC3t6MU#T8yuVC>=iJWM-0XzAZyJ+~ru$OOK7F93PWa~$pk z@)%q5T(c2jY7OZ1ix%NPd|;)Zo@cMNzYBq=mo+Zg)vAI(58fX5iyV`h3n*p&`F)&i z=MfA&drgfwo*(9=X=FrHV&22^yBRsB|FOV|U7&8P_S~}OJ1gf&4aMp9-th9%&rz%Z z?FKtOz~}dZ|M*va3t#!pzlM8zhI=(MJ3J4H#xzh~%BX-pmX&CiCCj&4AxDmOc`1IF zX6|)8ME*FAQStrk`!Ayo+X1JEh?qpqSkx6%_@h47j0DWxfoEHn=4-7(PN>n)+FVj} z`8{*53>dj*<9Dib&Yr&VOXvZXX-r#7Zc~eM0n4DnF;=PDmN{2C2d%XwQt0>P&W7U2 zFy~&=U83AccB#=7_cQHhdXArQy!2>bB3~nN-P#(=@cw+|B!eRxYka5pn@0ByrQEhi z7VFu|)hPdv;%T%4r`h<-5g=aeQ68&3_i56j>KiQjD;qc9b90o3B+xMHps_u}c+3pI z6?bLn|7wRMc)zs4Gs@!dW$j3F1#;tJWs(diUgqPqboLgna&34*qRpq2lfuq@GrWGk zD_?YBRJw&etaTdKm8THzU1+ZYnR8Qg^2}^oIvi0y!?MJg;VBbB3@4BIIF1oj%Z%fQ zj%9*%j;9QP#{F|%9nVW<#Brbcni=2mn~%edD{f!s{EPZqoQ4=%@;g1~$|>e3mN00% zIu{n2gfQCRXLa0}K+5pIaA-agJ3=}Jof96n!m=Y5Ean;?ewI%nA=b3Slt!Sy79^>V` zR*6ls(2UqBG1qFh1V(g;(C*c(Pi1ZmBWFuYI?>8FI%pp3C=%BrA<+j5dSg{Qi)sX zgWG3@*zdp2Rm+6eZqUvo&4^ZV8>7wEq&}Rvp-mni0JM4^N`?PU&`rf7KvBg%azI$9 z^J`qpb6juEA3ot3BsO+`sbH?vcZ;2m_g;A$OC7B+`WcrKA2SBQ{I}1E?Ixxwkp|?D@EgFxqGt$oNE-o%(n4HTZ@vZtgI&8$0`YI zKk_R}Cz-G&8*vEM?Dx1rzi5hxSCZc&vpm;*;=nchoMy1VKE_5miH+fvKc@^jj$1ce zrVMx4G-Xw-b(IG)9}NF$w8mL`z8f`*knyuIHl-yqLp^KPg)wf%Qy^ykEt^YgTOzF7 z2RohPqyoVg8#V*~37yn-M{W1bUYYzm&mOF`^VHB&EE9Slf$}t?tyt2H`Ss_;f$Ohj z#A*BqJNoV%^tqc~mzMvgibD>(1WA?p>-st3XX zFWTb@%gnTkf@^zU{Cj-n?-`D(OP8cIQWNcEv|<#A?KduPWC|eOFA+#lvRMuV^PG-7 z!;SX47=1DprW9?6S@h5N~(?)WjSGA+m8A$XS=ViFD{blMlMcYQ-`6!aF8HAE+%up zO8AS2Ri*@L^~&Fch&EGdrIaPdi+}gStk>9(yV~bWgo~IC+Mi0P>D$ds2&v*mRHCBPv zTHER_dBn|7?``SxJS$$le2vl!Xa{c3KEUgD1;6y`zlX1V*Z1Mg{ct|AW1LgB@C$q= zV?<)i3{e;BUVUfaJX5hpS2}Jua%g5a`oDqS9&zV-Pu#ycJ(K1RI%Cs!8a~!@Irk5k zhDrf&-me{zFv@~QN&(EU%|~1_XA97yuvBTX5j4-`oXV`VhSG}frfh9Q++vp}w{zA< zm*=D(uF@4UgC=k@<+n!QX09u+m-5);-_20zoXst@rSqsq)eleQnfm`+N<&^|Md2G3a>AW`ul^Gi2DSL%G70>xc7voX?o=e4cI3{J)9o8Qm*k za`qsf1)#d6G_K6rlzHFk(eBGvWcVkcZtaT&n<_fR-_?>C)2cGI;!Ve^LYwiL!Ng7j^Bcppz@E@R z1`D^%ZN$?3Q`e@LWbPLwL$CV0%7Tnn)aW)dynFK=Z(hH{0Yg0taC?Dv`w(CMy+1{H z{#D@NLo^iJ8^Al{SVkz`*kfh6lF@5Ur}LhS4%x}j_S_gYfDU9njstcaBZ55v_BL*U ztKB(SOO{}4&e*96aTNOa@*VOpH&JJIbTFvzFVr`Yq$jY)k`RLiY+| zv|DT*N^P;kz0CVsr!Q-Vui)#I)-V)y7{@veT_FLomuyK8@YDj$rBc{4y~UePxDSn_k2Z!b)_lCWwS9%BIl%e0&{qcdu5+8E zd2I|T{-PXwLz?@+h+yTk^e?|Nv8e|bS1_bL8v|!y8ODH*f&`rDBvNR$3nN7PJ&VtO zr}1G|lKy$tZAz6@k6evo1Ard!;&AyM0*!OWbmvJ#oSYF?JoQHASS}0-GXtNVzF70v znFiM(4e?X9 z6n*qMS)<)#soY=Z?#0z;>bnqw4kcox@QwDU!oAPKId=61o;=T>p^9;4W=mgf@uc0$ zG^)+TM#GqUtiHwMYZv_d9pg*+;V5Nn8psr2YaVq`qt29K;(%9j7R%oP<&s+oMIfk>(1Lrv%)PtNsv(n>jZpc~lIa!x&F8Hy- zWTm0D`>yzg;kfR`zP_&;v{C6la3s4r<9mKpI?aq_rWwY!(w5#IxpZv!uDj|0H1iW6 z;1L{d*F|%OPsBdMs{FC(H|ysV_TT)Z2B4wBRew zW8Q|_59i~omlo}Ej##vqClvJuJHXFEJFVC3lim;eS!y;6I-1}aU zqW5twkusuM?h3;KpSi(>_dbzUf@CJ zUEx$18P+QtUMZO?9JuFpLU;A3;r*1b&Yt7vHR5*#pVFt|PWfqm@5kwU_US7;KDuMl z>=|CYHT> z-)${p5la65$JoDr+qNuaf#?_6$Cz`iwaTszN*nM-UZ7DHR1vP#${rUXS@0J>&k68JS;xJ^I`y_a1AG(I1(Sk&*Gr z$VjGbg(+)K$KZ^AXM8mR=~W@kc)hlxb+Oz$!%+^m9lxEBaz=Y+F=A~Ac=jVZ6O`Z6 z{%L#qj;{1%{6W3jT6f%=^CVW$rgMX4p?g%&Uoalt2Z@xu9smNt?T*i{f@Lf~vdkBOgnzZND)43z6>3}nVSs9>4Do5tUAAkA2q zfF(S1qfLuEZ0)_k8^>lXu6V5Tna{}MG1l)c-%6+XKB*^pJ2I+i#_0HuW0 zdlbsHJOamT+%2Ox@bQ281ORZ`4Ys|)m)=$U*}wGv#_#-wKY)k5 z?Zm1!6W^M({g%7;gb(K96XR43u*=roE8F3O0OlK93O0bQM=ap*0NK&2^^y`g;K9+9 z%@hXZt4B+^E(*iZsBAkD3o6X_;ol37-+Z<`$8c_lx_r`X?K?VqezOBlA)4a+SHPNH zfS=Fgi=nQ&)LtmH&J!FWMr_ELz*XdTgfE)~GTbx%0*zxF%wX_Cs)YIO-sjDHcj;GO z3E{DC?hnUyDf5H~2QFnj6+o4{W8Kr^$S}9k&c+ST&yk-4W~?qWUeass4hTEct40o= zHWI&ETM;|g>TDrAD_@;BBrhWE3T_QG`pT9(`Ta_}znO22xoH({b;xdhH)3kzvu#&s zuEvNnI{40pYpqO$Yq6Hfxo099>`d@-Tk*Uq6fbGbivnP4(7V>F^{F<@gD{?pXBX|f zxrebV9j**+v3f)S(mu_;tV^TuHw&V|&jVeaTwk9rcz)jTrT_H4;j(V9 z%WHh;L&cx_EB^zoAAL1$QCaPgPx=X;qK zoyTdxQ$1d5eV8i|L32tU*%)WfWOM}_Q*mfOc1Ald{mlyF|G2>@+M3Uoa-6G#m<30` zF&raX$~&Wd#htdPd_Rj9R~VyRrk(hm(Lg5WB5lK@2^)V|!Eyk;RM4$x0ArV%yQdz& zF9#8=)NcJAPt{gI#C7o`T@e}Cyw9`es-S0N#e409?ry0q+GxA(oZw^WPV++WgaW3b zszUv2GQ@L}$l9dcy)GV-8I;#PW(Bp1Vi3VU1aoU9SB%~Luu~3bF$J8Hc`zdD<4qZG zGmD+;kG}5krlm`1-n}`&N(&-F;tCpdMvt6+b1YtiWrI79dBjJR0ng2|?YT3y!hOxk z-WSke9nHS80GTl@E5na`Q4*U)zKVvYDYTeAmRJF+Bi^IY4Yl7rfXbY8KCw{Kws_3K zT1KDu!;{s2p9(+mJoiCp-Y~zx0qnJo@!Q2S8=go$H!o7U#i7t2-rr!w@LUbg$7&dK!u_p2qZOIH2R^rQ z$dAS2qA@RX9yeYTp10#Bp7rE{f(_;c+ja#IhnSZEH@B<&Gh%PfVpSAwj+qUw5Z|wD zS)q+9oec}%5KA-PYyCYKR(+frW4 z^IgYS`P`fYG$-^fO4zDMMjoc_$qGKu<;ds*CXGOjX5)UTVhS7s;q^OTdr8q|uPA!# zYOVd$lgQ7t1Hk+p{WY@@x0UGvY5*!d>!~bC|6{%gJ?SpOOqt|yV7#q-vC-GyIfuC$ zt1{{(o61#Juo9)Am&pGR+gFR_1I-B2jxa)^u!WLoqAw9d)}Csb+O9G$wE$8$+=o(C z$4-eOgJdFPOGt$d!=P|75oT-SY=Np0nVrArwOu<8?K}2C1#+~##1dG(8!LlL3->u& z=FAjdyd<>h`qcMURZ7}>9-N$q4)zsJzg(Va6 z+3$c;Ex^nuIGcO=4A*_Q-;bAh38r}<_y)rTZ{NPh)6))Y7gWFElLyB)f7|!qTmH!R z;{8*>cJ~I@F3TC2IxjVkTflR63W4@n$9FjfCh13v*%>agIRTt(oJq!7rT=XF&-i>ibH-n_ zE`=={hYUy2Miw)~&j(zYSLY@9&3$d6(GjVEu)t}6HZ^yutwkjfQLcTMF>0l>SeaPMZt$(U-pqQ|;ch`Sk55Z9T5CnMzT;|m ztLAr((NOC*b3E~mi;VemtQYUfjB#vZvJHC66qvyOfN3-AsKZmS!$ypavwM3h?KgQG z817}VdB=lfI*;!SZ%b&-GT9fQWCayA&WsG4OgtPJZM(6a85+9{GsR2WjCxz$5*rpJ z&Iv5-D4NkvblWVplcNH@!|M&jj-F?4Uxr8Hpy2iRiI!2D1e-VWCan9&TyM1F%q#H8 z#~)CinnhZ+d;I3x9Y6RZ|2@9yYkxo9_d}t*w7qo2=Z?MB9u`=cj$^#XaT<=6)g0^G z4|v)5jM$`1Sy3S!_3d!jW%AJtvmT($SR*SwGQr35D&)`FU%k7f?Vw}9(s}VX`*76R ztoDdui`bVT(Bi$M&6hm)6Ry_Fh=B_j)hoju#!NY*R>yPP@1b1C$r9@vZcoIH+jYF` zums9-j?0lZt5*m>v2j+cyDu?6iX$_dvCo7@m2Jm4zHWq2+^K^h8>b_Eg~yZd1_w}p zo{@eDu^~lMVT`|_R4sZ$nY;~FQT_I!+=-$Fvwpu^X1p2WF7N9xWMy7!pIJ@y?wtX$ z7%V4(j=u~nA32~Cne&>c=E_BP!ki(2I~nz`hRQJ!9K#esPTj|h9IZS0GAu>oWkD=| z9Y+StZD^W)Rscco>I704&)oKErD;8_568geELP3kDXHwle`K%ccQj5cv#1nK?K`&% ztoZK@A8?>`Mq&Enm}uYVDl0@e=N`-`ZAYX=M{Xn3du@>t_a& z!pq(h#j*BP@vr#E{yO#!@4nzOgJlh@FL-{w;oaLuzzeEx*sdSp{nLgY{mcIYF0a2D zUS6Ym!L1&ZKkhsCO=C1OJZ1Fe2|ZsUdRUW5ozML7_XL5k+on?JCo5Onjj3+P; zWw^P7oXf_6-{U^9+&eYOu+pWD5kI4zaK7imO9dd7!b(@D7Nar`*~#V{%Ym%zOqtB+ zknyiPQkA(<%5v@OCFZL_2M&9TH-plOBSJ;(rK zEmqr9VV4i=R0dRdvR6u(XM=g3mlkWU9Q-;hCGwJG!UStzUrhS#dg<%64OgQ--SQ4N z0#7skOqbTT+I_^;8_=%(cP%w|S5APN}vZ zc-I|BGnpRYV5e9V2O>6vcd0V2*i+dEyn8Vuu<-y7dH;qHSxU0yc^h~#Ys*&=t7B%v z3z7*D{#^>dJ1LpAd7S6<*rB3Aqplf+qmI7Yi)kl{3cg(Utuc0)fYo@2fOFE)Wq7*0 zw)m_OLl>VoOHY*afro8=cY42_l2BV5O1IuCNVs^xhj$cevtMU_>v=Aql@Q0TZma!}bC z#2a<6hb&?kc`O2+@hp4Te8L{%xtS_bp$x8}5)FsPR0d2>Koc2}_%t&NGi8T)Q;WBo zJdAgdH5^RX+?_mk?UUg^@ey2A-;u za%BJ<+qRyTvdkB(a!RuZ1TR9TjL-h?G9t(c&ANV8qj_>_5c>jDswQFALe~^0&8JqgLw*%EqmM;PuvFc_)M8$+-B`Fo|s27 z&8Tcpg@bXU^)pC_5MR0j!cgn#m1Ot>A2E*VFyMEV@ssc&rVFi~>ti{Z9fzZHJacd; zT>uzzc3o+jUaWD|!q+FrXn#58#R)-JEXrU83_KrilOcwQYL3+!sLanZV>@F?SsxU6 zy7VTS?&#fSowiK60Bl;(VOfVYXy%8wj=k2gn_>-AZ4D_=vqp`&2K!}8IgOZ)idP7p z`CQvgH^-sC9oYAyOWCXk9MkR<^RHJTD(`^y)oc) zjJ#qQGY0gq)b9D}F(d3LGc&{ixKjb#G2_zWkl-?cu7}678mz9KEADIC+!r1pQqa(? zX;Hie{d!m2)Y@3BJRK6lKhlBEKT8Ed9!XG_e=jMLx1h@}dp2$p5oZXSr{ z(6X`1t={$)S6FY&vl}M~L>@U*I31cgEc_me7`shbnABQlLtTkBTU`SQ#-++qNxd2@Yki@7QDyVVubtZSQ@rb>z*853nkc zT-aKV9f};Yr^;uoEsxX2f+OIG_`vRcZhVQ9m>N839q%??jV5iMCS9I2eZ5xFo@z7bkn>N^Q^sip63A1oB7Nf164S= zO<>M9_M8J4yU&iB6V|+fnG$M7yLT~ZqQAZDY75+|(l`Iw0_UWk9d7lIX~JofCyPRXuo@)15c_LvVt?^1MME{hTMw(0Ou$dmN+hJD{k3l7u6YFs+Zx5 z6_ew;wIjXr0Me@#fZRPjG;y_Bj=Pw2p!K{d26h#6nUXM-A-Sg!>#G%h65l9_Of z|F(lnQSt!f}Sl4X86dI$xJap{*NY#QyEr(XmjJkatxw@#i*gZkSS@bF zC*$uZIC86xVN#rAbB5sy1>hyineTH_V4j=DIkQ@z6G#31*cgMRz?ro}qCff4TL3K{ zt6V?AyGO&H`E!32+x=Hz$2}aEMd)+C)bKi^ji9-qm3S-;6%hqc?~D>JkUj z@GiKUV_3$VP?{aePB#`WUwt_$VJwCK%6z0DHiAz-RkM;i7~S@2*H{aBkbwj&tV3NbA=OZB1!`wPk~4 zSehl>Gjos9mf&u;9fK&Tz0u#TAo86sj@sE*1s=IZx@i_?y)A8Xp)&^Cz_&OpWeTyA zQ+EIrqpjpV$8Nq~4xdsk!xO-96%(ZX z-{-t)8NKn&z@gyz^x&~4(`t(;;pZ2)7TZ6(Tpicl0@k)Tvvp=@=rSU3z9g~Ki=3G# z9x}YB*Fl%UN-1c&5;4ve=cadQJlEqvA0M9Z;oU=H=G9>3BV1np zHvH)y{VRCz*TCft&-=`mG-Cu?+1=)@SvfS?%vyXUc7WzWc*CO9z9X<2fUWNkR3(Om zMyJn<6~HRWhOu*smov-^o7tFg8wv0^?yEvx%zBQy2H&-8xL6q;vk6mpSljO9QGc}6 zW20gmZned2YJ6pkr=g?0eD<>X!HD-*GxkVdOwHPwqF#fTbC8r_nOj~Y*EW|Q$;7DqFMPd9errys(qd*Gfd=}$BUV+ z5+c9D&*)ZKRqVK4087l#th@Kw9qtuQTT)?1!4>_!-CFP_3k)V;#c62vnebCw=zEI4 zOfzS%7#D_X*3${jW#cv2FXc_K##zu_B-(uU_C21Tb^ryp9eCagzU~|UApYSu$=prjVbRzvo!1kYFLs{bpsX z)xQd5#*^}WzMsLYG?dZ3{?6nI!^?21S0-yGQv$i|jNb#tUE^FwcFF_8m$j{JvW$qa zRhU$EoXH36cf6-ELS?K=e5@_F>&hl<$$=H`YMkRT)`_yjhc;*OL*-o1Yo?zl4%8c` ze0OX*Npza{eT-9o!F!A8-g5vRI}6&|d5($I-8OfDaEEKHV;2GsyzWvQNKL+Hip5z` zFBU6ZXNrYRZe=n7dy9c6gLq0QDBW@jYbmty$Y-QWlz~qs$|}1-IQAk_w4$_UfXih& zz^;?%cDtnqWe&xqYxZk^u_!H;jYSbb6AY?|E!nn3sE)Cyby(F&Ml3$#?CK!-W-Gerctz$ zz?i$M0n8kQgD1xFY^SGw$O0>50Or|nl&@*_gXjBHpVU#(oi&y9vTkNW&8&GG3WHq;zR#^ogY~r zRLPx7nyUg9LLuHc^I)FQPr#w@4rPR%&Ab~r7FmD!`q>=$a^3@uo`sALl(A$dNA&or z5WUnkfMu)!jLkMt#xj~64U)6it$UW92J8nY>zdOB!!Hns`u}W_Y3xEK67K<#9<=`A%I(p>(SHaZLH$YjK7&6&Au~Yl`->D9H83kL{5BH#=;&9 zAIoC>Z^fh|5yS_jr|*Os7S?8PbBawfp!mpa-5e2)cA#Azz&T-QF;~r!Gwiox`Ue$8 zXA_+J!0ola(b?MKFUWH;pKTK$`kX48w5-Cr5t)f+urobW_i;YmBK+y>uyM`34^I-f zjqd#->n(B)wE*=N(-UVBMuzWIS#B{Uyk9E35#jmZzUX9aI4X31?yj5oUzcroY?vOx z%H_GCfuo97#uMZJY!2!>ZTSr&rqA7nMauPLsX<0PWRZ_{NqLO-Znr1YdK=?XO80)% z_TfG(LcUEXl$PlX#SG6+Pk4HIYW4dDFRxH9pU0p4vwsy&_6Bx+4U`RDLOGf_+X9D6 zR(7+41wELo9|Q82@4*MKdP4@@gH9vEIAt0K8b7W3Q2}QdRB5TT_St;gq!9ZZ&G#Os zSb=>CyXwdE5zJGEC#b)FD00?d(0DdKtmD-mY`H zRtMZr_aj}5b`~;jI&rt$!>}p8&TomqSP-zPs@(w zM0WHOVv1ds`VNZXpqF!Uw9Ud_RSm1*~j;5%8;;AfRt^E$G= z$IM8DEq9g^uN@JzDqbw;6tN5oUpJhj-8TT?a&?EDDHT+|5>?z&4}%U$b_4@YOjaT_ zP9^ZHOB33LTA_*`9eXYZq8gszf@SOW30-KN8Xv-a=QfooYs`a|qw>`mTC!a^Q&z8dyBMWaUo~@2zuqZxxKUN2mB^pY3@%v!v;?l zTziJ!`0%w_E9xzF#`$4BynpwhFXb0hFL?5Me9hPY=lEma`)Ba>c>^wY*sCAB?K}o% z$E7zOyDYvko{PB}u*Ng&jaMA$*k|#ijJsutT42yI$l%vG5sED@tuQ>R2Q56jd5jao ztu)9*y>eW*UgfWRpZmb{)LS^6Ywxi=)B74LTS<6 z4{}aRDeS%K_xJ%r7g@2vyJ3#w96RYE zR}kONyjP8sj#l%)7b4z8cP}+MJ}{?cJHLZtKVr8Ze*%v~X!fM4A$+5~pxIK&c(2jr z^ny$;Rbx8aw&8NQ49`f!q&1rK0oQ_Wn~JP5W2I%qnKFe`;jM%tpD`Iq&wQ%9`}+G# zAZlBx%;{2FE8U}9ZSa(~OR4WX?DKBMq}6T_JFsO&j^UG!-*-3+)vkDdEBLnW{8RYG zZ~k^X+^(?g9*`YcoZG4zuu2=wFWwEQTEw8#%4cJG@2UfdVrkgg zsTqV%RpJ&Q;@txvD-8N>@q&%KWdTR&-s?$AZO#nE!7XHXgW$96==eVkZWtXN+r7nDPhdy)Wn)eD8 z!R|qG`SKilC`X2Uf+60CV{A$(GsE1%%Z{;Cj3ecL@r=fAW-+S6P#gGLV}_X)l)r|? z5O4KPuSUwjqi}%2>MRImbKHKSp)ISjC9XXc5DXu zQDNj}6G3sBDWPX^9Z|pHQiYh-k$JLIb3e0An8?oh31BE$I_bIYGfOC&2n?^%KsH&l zP5rJgpE2tU#~G8&XeaU*@zN~!IqGO$i1yC)dOg5$7LO4@q6bAZfl~$Vr_p8BwpUw% zbr~<&IAl0yc(k6(2vA(l_wz&K_1O%z_GQL`zI*!~p?H+-4xfAg{_DT+-{aNie;1zd z3T{^v+B&ZN2s~x?zWW#YjUzpCb zG!7a6&hE3U*8XW|$)}Y`6P-sGmUv_jP0iwYu2YS#Nf&2rkL>Z~x`cv69|P|3T(VTk zebswsb1tLHj4!c=Qgxd7zIz~~EIGokE)nYPs#+_ya&1hi9JRRsiYM?H5oB5;0}fzu z!)d1vh>A6QDp??GEwJ~qcgryyLaulGfL<~&NPUI(1;#5ULJw*|b$Mw4VILmJQ zO_YN6{4r)pC)ql2rh@U3r%wfS;5|G}qttbLrce#5599jcZtkw1Sn{^o&YLSI3 zE`hcrjQBS%jWO(5pz1^GC&a4w%aYw<&{`F^K0>kysdaua|k>GKXXLY%ixmqcmQ`CvKoN&uZ*? zTT0(SJYo;KN1^r|nBjp6FK2aYJV8BG$mYVj1fwvwzjKAbjCM6sKQjUNsR~ku`JkY6 zxVavUUCd-ud#+b)@tNbJu|BzCSjK12YZB@azt8%%c+%y$i1k~%@MZ{a!JtE+#kltQ zF_f3?8CE%K+cskeVd!qP{!EuE@t?QVmf(YDN-}_P)-2OK_p#Vz@Eg`Q*h{TAXFL_V z;HA`4z~rwwr_YqYMPAWoK2J&>)=Rb$@e1(RH9?g#L9%wr$W&&_MF*0f+4p_1rZeR$ z5RzFpXOlVS>#lJ`p6y=Kd@Kj<)JEaj0^Z)srb+j7P3F7{pn=l~rNR zW5a->!pm)BLV-2-jQKI+(pW3~sDNiU6i=CO=6ZFqDc!xqK-DVY_Z2tVFNK?7I%M&; zsTc>-KVzmFY%Ec7AAt3kjF;$N@pTBsAMrE7c9q02I{SaPvES<}1Gr-}i%m4iEJX*j~4zjS{*FeDn1$ z#{-ag46~whPS1Aa=Yn6UL8g7SddwuxZJqs%y0bCQ#!ctH(tp+mrHxEBC`_56m0io) z(smd|9!HLsi}U{4XEi9aU&rnJc^@*^0*1^XkcCkI=dw0Di%J`3^m-;Y&ic}nv%uf< z&hWW|FoTgY#QZPtq~S73GZ~GjoY(KHAVuN#mACV}j<(F!B(Tx$nWrp~fi&2*1i24K z-$5gcbEr6TG7TsrM*)d}RlvD}ftc)IV+}fu=R=F-PG&AauAlqHf>sY)Ridh~ozT2( z`a?x{ydp*<@-!9dx1p_dhd0Imz$=if{Qt--~blw(rKf+Z9$`0d6xdR^Kf;W9DX# zu67>TYVk=s~7wZ(46pVjPBb1Op(Zz zrX#kkVCJJj-;TdoE(!)y^hN7MH|YDtoNXV!7NsJ%K*n&x*dE!O-qE zuT^6R;SUB%tSh^ZjJ9TLo-p>-6tlxX4up4x!1+md!o?(0SeZ#J!GDQ$67ZaP_JT15 z!(sffMKlN~`q9DJY`T$kY%?!Zz|tidW#cYmL8a|Cjgc z>WNe(Rq>+Ck>_c~KcYXX7-sY3Y|Lt{c=yTMrexV2+^_hLpWN`Le(1l!@A%qp!joTN z)}icmp}A}v87IN}7`NH#fO;#Gjx)Z%W1uDTq%cjX zqWBWssAoJAvdYsG)_CriN9|~&YajXA8NcEF0qDnnt;?<|KF@d{j}wozwh{P?{<9N- z@si=6>(Az?t~3D{^vdsM8QtBxu>xSPI}r8T@X0g>f^nZ#FZ;yzYWOHj+`pi8jXmUk ztGwhs+-^??{=@aGCyyMTV?0G+x>TC6i4PBdRpR4bb5~@7?Q9_39aenoG%VY^-iP_X zK(YyQCII4@EHk+xX~H|tmWu&k#bm(E1BlqU&=mj*@B$F8@I`*G@g_h#t({5LS%jwlJ*IF3KRqck#< z=I()r-7UOJay~biX@LX&jQcyszx_AAh|Qj0{scp_xa@Lmu|19v_fx!}05JC%^Va*# z`N^2^4kcu-hd41EL;lT~tQY1Q`H})Z-IFpsC2QWIV4`O@%>FXYBPK(~BI>%7hLgj% zxcA*}eK(mGpdR^yyW{ck5g$H$=y)(}*VlOaQ1C;4@vp(|KaVHB0(QlQxtS(*{0&;^ zo~^-G`tG$b5aX=1YC!Fwt`JP7u`{Mlx*m-v)mosCH$8#tuzSC~r z<7O82urWQI(c-u!+1f{a%al6unaj2{d;lY3KY$rqSRKJ1wC%t>C#>cAnHQy=TCT@t zn|t4dUYCs%&f5Z`ihD3@bmg>JzP_p-IeKYOUkmUce%NvyN*=V{(Te zJ(hXGyK3d?3RI1LcJ^o?Fk!J~sc>_hYGuy94l8YqxwX;U{cYK=Jy*63weG3=GMl8@ zHqbl-nHMhl5JECjB(upFgRYh!6ATju2la(=6>!D-Lm7n)1xwq`+B;inVC9zE;Cc^C z%-8jAt&8!i0*2vJuZR2e`lz6e`d(su{5ykd)~U;l6&JhV-~YRRiC_A~e}Mbz4XBTB z-*K@x8m8mZeQc`W@mQ27!PNnmmg6+)(EKu54=%eeiWz zGt!<6JiRbJijVoc;oZA;cz%BF?-bbOGuZCG3jfuQ{`YwB*Qn)++S8Wu*dB09bgg*W z#b8oP8<@tD_D2mKV4nPN6o#{n5X=Bt`=;?|=P_ogNSx7KHg8zyXJf&2W=6E~Z@#Y2 zX5)Tl5M_Af=dwCqn)gR3xYirrk{)BeQKXlg;C~t z+~2lsD)2T#TNrAi4`B_qEOCm=E=L)k$!wlanFl$(YafBWQN(Yj@lzS?D-E-f%VWUT zLPoW^=3!5%2aANH!J5jbf7vhCsf1XO;2D&dW zG$FTIM@J$IPt~fZ=yG6K?0k)%-(X`Ih5Mz;4CCE?`h4JIc(?i)X@h34Egp`Sl&vT_ z$=busvKqUv5Nkp^3>C$?r5@w3KjJfQ3_tUee+wV}<1YjL*q3U7`^$CG?uM~TX@zg@ zR%!_K#TyW`6jp7-U1;2ZGU|hnp}EXsc$lB$Q4D-!JAC+^R?m#f3+AbFXW#cF1Nu;y z;XSXu4bN$9`N$W1Eu~g?#FV)M6?pf_`{wEMg6AE$`5k`u@BJ_E?ceoZ;r-JEDEA}L z!G^Mg4hG$_61c=^kT;X(+^u$xR`=NM6|i!d^%%y<09tq{c<>L(bJW_H3Td1xTPrE6 z!17U=P&ydbi{a)Z@cVpHUYi-OgEZVnek#6pRus0l#@>cFY9gxjDp9 z0o!r6Rn&*y#NYqI-^4vW0M8$WL3g>_wZ5F}+RK(|&Tur~IuR;a%%YhMC6VbZ6HYwm z7I^GgV|@k-#fnN2Yv)! z`=5Oa9_j^dS9o2Of2K8!rvU(LLC32A=I>{UP0)?bpRAsY7Tw#TZn<0$%RCJyxkq1> zmu#FEw|p<--|<_=PkFG;Pkx`3G*(kT&>Hyeic2UFptKFy zxG|kGT=AX%@_WjQ_;<)2epYv&9+Vr%oJ#nt^7+!2c(eG-HTKG2IF8L|FIkReTG3cB zjmeI)j?e06y3sLLxzG4x+;HXstvizuD=fitJKkREY{pb|X)E%UaAON$VQPtb`uj`D zg-&{%Tv^a%DeF$VY#AsJ%M6VF0ui7WniKamSHQocov*gyTA3Qx zp{XcTyVb*iW82sI`G_MYNltRwrtJ>d+E<^ z*zx*)$CrNnm+MNcKs^2U4gPSk5Ao4+6-*K zPG`?~*|4L>YV9-b699I<0b6N`Phw0i<49THmvaz>{;HwX={`JBt*y!Xb`i(`T09@k zxtrJFZ3}#!g&OdD3lA`GOka^@xmNzcN{`9`zQ-^yEvg4`zTe`-GDYib&Mikryyw`q++ghk0Q8d)ICe^d%oRpe#zMyN%EMWB29Imz^=Xyb@D%g?jp)^^ z$50s-x#;SNLq^+E4+t-J6h59uW4~E81Yc3(lX0ZKS+QbT7-kmq{2|CwT`^=ArOtA9Sn?Xjh^PP(oTtqzc} zY}k%1$r=Aqz#Y9Fp$K!obv(1>US*1WpDj>j+%MIW6@`WSlzG|IDB)*=p$wY04JeMy zpYiH$$G`r?FXGpK<)7icJOOAy@1V$GMm%HbVQZ#U!eY#uUR zGeI{L0=mcJ5k&>8&hw~`WrQjV{4RgEWN@#rkoU*ex`TGjI7j1<5M4mm!!E$6@62<> ze4gP~+-NQ-eJ}8$igG6ZxTx1x<rJZm$Ug$N=x&jbeJi# zG3R2}ebl3TKzRmx%d{}xV;OU%^Kj5YY40E1^Xv_Z%-vR24V^o|MH^PdO#$Z)E0WK) zqx1WtV+G*dgApJ)+m7?!XhK$pjkqRq_o2~}4_!UWkrMf0f^ZxF_a}1a^!Tf`J?xZW zqZ%&dcsMjK+3503ru1;Nt6*-H*8ClPSp&fLy<7ctF6n5TMOI;hA7&2BFXJ-@`b%H)Y(mW#>!?^=;c=^$~Y?kALvf ze+%{TH&E*PPLnM_^m4r}c+_%sPZeo>hG_;k?jUk^#O}blWA#8$hU`Yi-Wgt-Bf6xz z*XPBvH}3Uu8!+_flo2B`a$HqJUaZZ4%`kFd%{*BdewrsEVkI^+Y-T8EyY|fYL9K=j zpM2>pe0TWnxZQx=KEm(#&%OnJ@Y}y1@1Cx(>nnH(hCI)(#25pI)frnk=jI0U_3TM^ zANj7Z6?i|GR}&rsSd>;X8>b-5u`MX&LgT`D?&e(Gy|$gM0B*I8-KpvcQXUc+?Fan8 z$o0pC=g66`NfoC~KWB%XwT4ZojrV0#u^}aW*^*i8Y zSXz3cqnth4)MjSG;~n~h>IKV=W_ow^qNPR$bX`-4Ne6_Hr4wBhuK_$+0t_o7PycdJi#x7GR@zc*xULpO#q1zR zjta#(h_TehgIH@lSQU#Unk?&OeTZkco`5BDYi8@y^Euk>>8sUL$L_GBwV-qm*HR1U zgpnL33(jd`Jm=+rpG+x=e&`ZS_O8;T(v-rJ(W~|qeT(yarefO+m-2x3AOAo2*`NO3 z@wwL(*xzHL9lV!~b7bZ1DO~I&R=AYL`2Clb7=YE4p4A;ivsyE}xpJU>p2dGx7!P67^hAM=E1M(3=~LvEMpCF93@jq3{>pYbQRJ^>Fka)CV>m$QAnROG+EcwGlPwwjaf$i@PwMyy ze70+$FaXvP&@P@DXQVUWTEZidm6#lgNJXk5oC$tpMHYs@burR;*)g7bDPWMFH8V^{ zXSi^I+Fkr190%rRN7G3Vec_3h1?HIqucA_*3J1iodP|?|T3J&TZLM7u^iuai(Y=@Zq=N z&Eh1w857E`pE0^&#=@HlX8vv0i=s@NTMX-VJ)8T}6;F&z6~0c+49u7Arh~%-|N9jZE)jz*f&B(2W{z zOIy4vwY}4FrWG%+YH-`&luf<%-8czW%6o^B@L@1F6!z@b_KEyox@;On;mSNxtjuM7*ZW*w^s8)!>N~}R z#cIpM`NYBOTh!=X$s!$Ml#R}?W&AH=5wWF7Y@*6)?xWJjsFPxN+l4jl3tx{|uF!YR zlu=gBSpM?-X}^yi=(4C+U3<7(F1X!p&MzyWGa#(RYhgt2yBV`#0*PSyxW*o_OqgpM zs%T|>SP+JWh$aN1Zglr2V~H4^#QiY5z^W8}nqXFZ0aMWMbJ`xKxZtsPsSUk8(?+bz zp3$Ca{Tb6|!e=zZnj=pUb_v_Cs-zDVSWB z&Sg~;viW{krU_ha$Fa!X)pnG5ySF8=_1PmW>w9J`Ki1RJ6Y37^UQq27_U-fd(|`7_ z;KAPjQdJ)H{2XQTd% zCkLK1UY9-oQFQmB_J?7LXIdR$K(s&nwgK2+BRJ0(P|hErOqACqmC3V5#=ExPF0{4M z0z&qbGM zGUnG1Zp-ejh?6L#EbGg+N*+Mk-Jz3bGPDNs!Sz3fJZIq5Te8DJsB@>5*@jX!*mAa9 zWMR+Ynf-1PAa*&qS@#+kcB+3CIbx*xP;^y+XxG|tM#?nxd9$PCrwV#ZRz4GvGnB7= z?3uz_1pwwQ7bXe9huxI(ByyukhPDyt%vKi+|^D;Qg0=1y_6SONGrd6=!;> z5>(8Vvnxkz&|y5*`!gQMS~hOM(O6Ei+Pr?fE%*+vw`CVuJgW+fDq#Fqm7D7A*p7BW z!8ER-jva;_5f`{FRcd=YZ$`d0@7@OkDwxqWPeeoznr-;_<93uzvxYZVd5zEgj&H)yIL58F5qYQv{(7G-Ru->S zww%V}u=NAHz0X6=P~Y%Ou=2Y-rj5s1KhZu5G=+nWsSHQq-JJ254oIFt4eQA2&uC(S zJ9u!Sl(1sNPI))Re8|y;=<1!_&}n_9pi-O_k&W_^9OR< zt2Z(viOL^C-JjR~hb*O&2txj6vN~uX^Xlq2%)YOlr12h|QMk~9Rcsf+ch?^l9QdlZ z$NM@Cm&RVNQ+=OC=2ax=>hUg0Pc>xpXHQU2vO8~mRaDXlqINd>4#xy))7C$?sqO3 z{^OawPZ9QtX&spooQ=QMo%Nx8ITz4sd2suR3&lwUW-DXPn4~Hj3Qs)4w8hH9Y!f4Q zPE&%W#aT)LXEWZcV#6bD55Ivg{2%`lF7^q0e+Tn^9+$P9g|WoOFscx1gLkBR7Bmgj zxuDZNAC$Cm%vqx)qw|aoj`McTWgY7%+INL3f9JU5rUEHSDFtuez8%YeH{bB=Z}11c z?R)SI-}Hy@W1NZS$=Ny$G z^yrxgYTvL5Lf$Es)pHj3t7EHkNBer#|Fb^mJWZFlvGNzi(HT4|4m-Wk1}FB)=-gt% zhhfZOdbl0sfqEavmpqqELnrmAJm)s}y~y6)Xrs4V9ks?z$#b0{%82cicr2CGTr$sA zh9_1kS>NFCkCM>=&rN~)AV;%A;qw^|CprdE*|O7z2PEQFKvriWu=%}-ka9RMk+*?! zr#bpxmp_)a=nSn)0aGFwe|yGx7SI#1p>3}Hh<-jlKQHZcmpQ6SeL2r?tkolEt65l4zgHWX z!C5JZ-DzViy2TWk#N+Hf2$OH#--3O=buSQle`qHocD%km;p1QbCH(YH{IB@j>l^Cr z1Gb3AvkNx6%)C2R;r%lhR%yAc01PFI=`YUE+Y#Q1mY*#w`bp3;R;uo3IlcObj^(x( z2b<%fb5Rw$flF^5k`eq9nVoySD^_0Hdwo-lVeahe-y?ox_hYbrjBBH}Xs4|GAU?L4 z!+gi>@d+Q^zH44r0MEYR;daIM{=i?r>(6~HZneO+3w&7ph7ht%NHtH=9ZNj2^?csi35>3op)ChE0OYfn#2w zGoHwFG5A}FIo#-LaFFg9j(9`nx0y1}bg=LHa$f10+p5vQ!SmI<(81HPe(LXH7u@#g zrwTsqUSV)Jj`I<~VaJ>*{$>W>9h+_N-C<5%kz~B1ey%f=Kdu+R#EVViS>vZm>9W=h zgM8|`J1~|Ab$KwxukD~G{?PLVo+&m*!)x6^ugWj?KMb1*n-BVlyq&C&MVWJV=INV# zVA^Fbmr)=2oi_G|o~d=n9njzG?$bKj3k8uBkngDmtAbtsDm<%FByFC&b2c$nrGptk z{L?OnC&%G{SW=l*&E?F}Pi`Pi~9<9+YO_ zuuh)!OWz%J#xXTGx}Z4&Fe|3Lf>}@hWOG0TM$jQMc*gN)zaGa{OS5n*>i&TH`-*?_ zFMbaHADb zn7?bB&S5+fTrxg0*fT3#;fn7s8HW7a!@~ofpPyman()L0`{i@^zCZov@r=));vTzO zi^VJxPiOH%G1s&9vT`=BRd_NzM!Q4#$4ZatvDLY%!fR3DMCkG}%A0ijvwLUvxeet3 z8E?uwRLoajl4)mf#P_izc{?t5s^XR5lzCz~@$$rdRv;8Eg)Qp?-(#gUaLGoC!lwA- z-)p-T{~us5GgQy#aE!;P0q{bf6tDbF_B{7JXdv^-Db7Y8;{Cez?Ipf5@2?7vDpjVDr&-@?wt$+V7akYo$AF~P+!`-X<_MRW-UDU%g8F`ad9M$m& zk6f*F#-?EX45ftH*}a{$XlOAFVIA`Bumb~YHwfnLK?|524TckCZFoxeia395=FB2G zse8|p)$jKYYQ<(YGp4)aN|~fbo86Q0;oZA#(Hq<@*vl(?)$jcM`1bGoukl!4W4pYD zJ76eF{8D`4Y(X9m9-pz?3LBmT9?y18+&b?UL1}Hl=AZ;e8^GeRiJg~m#wXJrf6o*R zRd%^A3^OY>S69< z1NUk13&6TA&4j#AKU!P}<07B*e7(DW_ljab1Sg{QYbBmJ(#e@;QLmqQ+%g)-U{-6d zDS}5uNtt`*ZOSaip>QM%`a5tLZL~Ve z_`BGV5(2^RDsF-{-oJg@1CBmhp+dnkT+o@l)QMlLb#XEt{-fzEh2<5QU&IIB+; zK7B3`ifb88hLzrwPBO(Zp3C@wzN<#@r+Kh|)wz)I)a-fg=h-qF%OH*u9q$gsh|7`x zWl9RiY;s$SGyctElPzs#r|&*cqoWYHbiLH02hXQ`)(B9Gs`b z7%(woH+LY;4|EZR!y+a{qk9qRZSOH-4)&7Ndc(>OdhQ?*-UCNY-l?8-dysHfA~v%* z?m&kbV1a6=@Oqoxm0nm;h)m73w%8BvR4}Yv_r;sDm3&De6HxlSjoqA6r4-zJwW2o| zwqm%mXMFhN-{EKf-v5TLcvEnD{J43H%y7Bf9Ws9}41!Kv$od_MN9-sIi~G!A2plk8 z(LG;_aV3^zz+(U^CFoS9&vUWOO)Rk>s_-%X+k9_%ubNY5=D-?t!baTL&UxE<=IG#S z!{gm!(6(|#-GR3~390QHcE94`_8Q;y1AiWu*I$ELK5AzcB4VYc0@LD7dV)e(@(Ugn z-=m+Zcv|(tJ3~Pa4^i&}^O#C?gtt6AR}qUEW6QJ-@7})s=%qS~ePp5ilJat<{4m_^ zJ~GGidn;}3hz${0Tk5$Q?^*?-?{tRl@VrW{y;Zm-3UZl>=dC`EUA^jYXBaxyX&>sl zDuH}04F5PIu@r0ZoK)}GvTcl;mQ{Inm_Iuh zf54~SJg$TBdzK$3`jOSM^Z~2p&3IQ&nZlCgQ*n1V>VXcpFifLvVUFD2j7AiPJg#SW z%SuL{j6@b~bQ zpDn2S14>WK_v+Of#72>kKY?sh%|E1WIS}PtNT2kP$-C?)aD0g3tAN=9Jf@l9MYT;NcV&y($ zqxLJ4DOq0`_Hf{+(xacKBl-|Kb%Sn0cC8BI+=!9!Fy%cwM-Fp^U_Qa0&*#?wi-PIG zssLPtLIA6~2nX^cBlEm*bP+Ou+2r8Ae0E@@NYHg_9t8Fvt$o-KS;#X+HIv;%z;lNa zYbj=(#$KK{+CNn)bcY7NpD|1>%#g#<2)vukEwI)1kvoT4f!WHObTTx;>cYRDHPx(! z^(6L+m4UG!-zfPf=T+f0TD!3`EO4+d90IKce_}J zH!Cdo)>iZ6zF#c%!EFXHv}hJx-Tbi=Frd-z^^Op=XQI38oA`6vtX@zQcziDxlzJeYN>Xo-K~ zI4JnuKiv}oq-WPnSo&FdW@G1A>>iu6danGA`G6f2`=FC!jM>Z}B7JdSzAhY#=Y zTzBklxYdH2-{Et={rBRJe$Nl%!|e{f-D7v4QgAshhqSEktD<+N)UgoaWuXbr#9^EB zbLVVkfbnw+AMJS84NI}PGc5P)|?i zQGQqJG_$c|Hp6kYQjo#Lb3O~`Rwbv^72cz^OMQ%W-z7W#9@;c)+okjCb?J?Z!mYH^ zk07Q#H1F7jT%^P)`a`<~_S+xEb#1${c^5LfuR;K;2X84juduD-TL28V! z>>RK7y)X``hu2QMBO$z2v#r=#zD^Rg@ZxWL&zPKA6N(46g3hc`wG>KnB*7WuW1*_` zsQXiyiz*EnA%|i$VOyDsdMXxWT?ks~i51igPlHZR+~GPF{5!K~m|h_oubX^IF?uUUF8)+4s!L&fiOE`LO_C+pefy@VMXMo4@rt z@D0E3598Ti19p$UjxOo;z+B&q{C9?Mmg?Z z{ADFb6>gmqN}D>iT=%Dq1ItH_ui|=mtk-%h(yO9-u%c)4m>dRXXr1MH5JYD}auxoQ z@v|GApUZ@`-p~Fc(#)ih@EAEF0Dp+Brk6PZj5xUCj=(N(Nsg2&%R<6~Bhd<%(K4 zk!-Kq3gABAZG1%xCO(A#M_QU=ODirrNN%)w&hfx8-!r309RSgP9`8(%WE?Jhm(D0$ zaW-RT^@yK!tj)RObBVCyB-NmYMYbwVs!6X1Stn#%%RDS+g#kaSA2?b~+K0mg5vH-$ zkB*NRtUj=Y;r8SK*4QzfyxBl!7D$`ixfR9}MPsxw!92?mHg1!d4;S^m=x*QRhh;q`0a-~OAQ z$ItxakKuD473}*56g2P1-St)Xvi8^=TaU1cy0bo>(NQK?<9pN{mU=dB?!KfVQCxDp zM({?_M3!d;7GFEydp}PdqGQ7S;jw1?xjUYppYi_v+o5Dtdj(uSk01P@{}#S|9*)<5 zU0ckB=N`c`UJylhMe7*EHRXNLR!PRr-KP>Kb5&_Ud8E=X<1piA+}G?qF6>cITFS;c zqXm9P`5Di*qi69LYsbZ`E%|F(v!5-5B8--JKZ~VRd_+;cr+kLz8rPAn>SXk$_=`4m z?yHQcb%oOt-uC6laqb(>=~CwI_EqW0X<*wnv?SEWcqko1_2y;rUi+X%bf#=8Pvbs~ z`Uw?Ng(j_QQBrK~R5Du`Dl-c1gj%(kBEuG`4ssAwxGH&RF@9&rYYfl3>y}-d$7Rdb zmcV2Nbb&P>c1N*-VoeteW&h8EWVU>xa@ zxs0QYF_sC#)N$oWp%bFT2F-d$9E@fPALz{wlU~p8V|aXt)nbOWTEFYKXF?-jH*@eB zzgbHPSYRWsisD1R$Ngm)+zV#v@zpcRTaP1){PUmx zas2YX_&L1VZa~i=wQU=&*K7Ak^c}xmM!yC#Z~$d`=mLj3nxdEO+-m~6WpX|$Vg`;7$E3 zMvgh;awagd`}|zN2JtpA!nNntBZYX#owDi-dOT64fACm_!-(~bz@v^`;EU6)D4y5n_XPp0>JLl@ z!{$b`L#jn{$=r~cqLodSs6UXV-U^<~(ZQudGML()3ddDgbix^Zo_c3>aUY9<$?$3a zf=E;tvzD#aI}afL=5{iLiR(}cCsWF}p2b26W`5Zgyy=)K+^T#Hi(1Bl@st(5u1r|* z#1l7T`l@_#J^CE?Q~Q_Ufa{(8I&K>Vuqc>nsKlJ(abddIwhdN*`us7jQ-ea?thGHvMTrQWz(o{TdR)$wcg=>tHGJ1wr@vk^$1-IQ><0TX>e)mk+GEK1p z!tX>qtUMLZ1An#8+TKuheKjCM>4~=9zWW&azT@Tq?1~-t_@;09!;Zv`g@-P4+ z1mUc%>@U;O0^3M2veJROV+&PzZ*XL>lR9@YITt099noeeNPLaqWS*KOD9z^F*$R#- zA`|xcY*QYa;yD})u;z5=X@h(yediuE^-{)nHN^PXr{L}F_c6DndhE2HjIX6XSe4^a z%9_4}aC7GEW14Q`P+N-z0LPPKe^ai@5PRv?FgVGDK<_8V~9 zpO%Rh?=5S~d^8A{VaE=l7_6Sli3V>9G8U430GTI+E`_f7#tk!o7`_fFFT-fj$-vLF z{`vBWGx;1CIhq`x3D_))F`=-v-C(|>7&8{@eVoCz@y_jbn*<-&v$kWz-A4?I3Zpqu zXmS)g>@tjgx;uQojWMdmf}V0R^&nD?xrs6-X2h9wPgO_b?v84`?s8lP)Ze4sz^_c8 z0>IqIZrMyBbazy1xt1W_f-#|kmbxp#tTB=HE&x>Q`}4q6MSM8~1J`%asTKl2UtxtR1@Nm1scYpt%$7jFt>rn9uwOj$8LC>*EE|jiC_-`U)Y{n7> ze9BW|u0*N(QBllF;D2c=S^Ce4Dl7oz*`D!UtuS9>t-@0q@6LL7*Js?DIqulgdVsA? zI?iJJLQaH7IOee`Zo?o5hck_ND;+h{AT(BAWo*f64PbQY;(q$cE}A)6$Qp= zwgMav78e~r{(cl(N9|9oMka)zsPv;txX!E|b=9qFyT_n5C3uA&q7)2mceq09c#iv~ z#9T@_xNMmr=vjN21@ux;=9a~B=s4-U3}$_9uXCq|QD2k^pTWnL*1=-xXl4elaA&l} zC8MQ`W?%9EDlT;*ay#0_OMeHgmZ_8sk4Sq6yo{!na@3>V!B#4^a>M=hh~N0Ne~zE} z!r#Q_KdRWDKcINaF#OT0*Zn}_RY=4n%=e|N) z4lvI04tTNlabG-Jq0F7pFvF)_M!uJYBk25NTxq|ey`uv1>2pzeYv$2e`!|)MOc7KV znLjPhNk4czbxtYoV>oAHWq7jqnNgS3Lti5ZJ6_4?JmViR_f-xAjM@*Cb2@L8mt^$B zOJPh)+^0D=992A~j+IB58Q_kViXiUg@nPC`Zd-W-!;|qwmFqfIfg{F~^7aMy9!r;V z7v&kC zWtYFz9k!L`?Xlwoob^qYS~b8f+lxdCt8F(_HQ55|%O_JX+C-^sryf?^-~8yBKNDO4 zPyT}8edoz8M}SOE%FKb|?wFn`dX*T+tyWY3JL(83ZWbnn$0p))I3xB*v=}hCH!OGj z&8*I0x#Y`@13sIXvy~1e6IvN}SWs*1*irDi`-rJ)9<>Uu4|wys;$Q#bPvKwu!cXGO zs~g;(n&oR7?yj%k-B{UgKJr(MWd(TOg&1DIT+!10sQX=+UKkj$Yc66;mK|ezSh$Ij z*T*50tkG|u-Y)ivT+22*308f0+b8aC%lIh`XW<8p3|f7$i%)SA7JWg*dA{_=98ag0+#F`#b?RVA%JTn=oL?<`RH;w&p<*D&W&b*zjOlQ2y(l?Ot#Y3GqA`(~Qk5y0+D6vSnZ6Ob zvGbz&8-2uj*M`5PQjV-P0Jd$LDI*0iVjHxRXNYNfgcUfQ@jowEKFw=hA(-- zxIKQ4VapUmGee|bVBD&J;`@td^02hw;6rGE<5^$&e6*S2S7Bz{EPbG&-VYVR?cIGa zX2ySf&y;F~yWweGi{qc=ucX4=(1C#ZGQ$8)3VB)rv zp0edf{{6`(pEQfN8hpFr;da6A|CT?7Kln$!4^Q30<(QCjMm z)qBW-DN4o@GG5AUC=ZReBYu|W0^?6{s(9wY$^(xxkNa8OJQg}<_&3XeGuXm_&l~_9 zV~B&v0aA>6Iv02u_~(O$qb^mBGa0Ji`8iDnt7AN%lyOyDpZ(_cBDr_8vy1`B$N1jO zc7SHE<0u0-ep|;Ro?-bBOO32ZfIM-`zC8wa?*@h!BxpMnsX{xXFvv6wLCg-_hwc-$ap~T7v z8-qaqH3cRHwgQe(e+zr+o&{@~|Jb2%+18k)Vz6!90irJcAZS3d)UE^+mO6Fd*snNC z4M(dg`ZI)CT^U=0D_H^*!XDSFFS`Z-v>hO^G2lc2VZwIz!KhgAWzR!rx}J3^Aj-{DpUy878?{EAH!yA|5*qXv&FLG!ZhYScXy%hn7Qqgd4KGLE5M$+ zv`cB8tjlJw{Q-FX7(e-U{yMJq7SB)b#(9NzcXzmKTXXT74SE6QeA@ax$%_HS>+;#) z6bnUo;Uy%Sncf?W;Z5%Fwp99UOuIK|Z~La^j=E-w0ow)D!ecV$GEjip_TzEfU5xP| zF2a**9iAPAY6aDrS9ZV?o~jNLd#<9ek~m`bdYs6C3l7Ve?&1%HT~Zc8kWue>NzzSJnty4T;w z7${htd0%Ci%G8hrdQIDny45IZ*Bvc~VmJhBd^GmyrO=tEGj?Hes0*wvG&!6!KKsz2 zUfKn%_C$MnC_68Q296eQeph()@N{;f1gy-Dc{~sOqh1Y_NL#Fj4Y)CwC;%o}-?4mXW{$H?vNHaL+VW9Z1zwwGRyQ_{28UzMHV+ zk||T^LM$TzR%Y<6nc?Z_=^%Kyukp$9+i?HScH3oIeU!5?$kymH?O*XUaOfCW+2gmn z59(QPmoQ}=j|}f@8L9P>DeD<+#CL6<@$(X{viEsQe?~Kzmxtl2wPK`cKt4ByP$GH- zu&n)OV>UfmJGSE3wr70lH~%&M@z4G^K6>SNetr+@p0`)`Z(tOMz&O> z$|H1aGojUi@8f(~+BKU?Vhawsj&K%t(%Q|JVtAg7@#{8r;l^Uf^&F>&~aK9fUp4 zb>+9}m3&F)XY-!h$aWEC_+9C3&GQuaIh*qe%M^IG)MIz%Ay-+VaB16_!jdT~{m!BU z=s0Ro`O5QB;pCn6EcnmrXStK%@YC?&Ag^@S;~MVK47g!f@9idz{o|6!DdqneKB92= zk;XLhoMPU`bw=AqPp+MggW_kvJCrtCKF3{z#1M5kZ}lj&hA)@PK^coqYvE^fkkch3 z=}fy&7i}}#df6axI|`pNp4o0~>&oN57H8FK>uykMfxF{7y+;u zGXajw6+rhBwV=wT1onJQ#hMk3y?GaaB}jc?+_oxIy@mGOeciRRuedU6-Z>P9^Qq%L z)pzyAHTVs&Luhy-c3^rXLYSc|u&bwPGTwGS!`b@j7VU_wXr71IO%`td(Xa7s#y%Wz z!~(DmfyQub*xK&HgpNar@H&-N7MktZ8T$oHk4o$=jNMGNR+vBI^?k)J{=!e<*M9lu z@zMPazCZSE81C*`64FA1$B66;<{Hu+jO!JQcTAQ2_pR1)2T~*Ea0LZ{@(Zm%^#cbn7os& zeSCZ(-NizB^F*^)2Pqs6K zC;Q6-!0+oIDSY~j?!*bJb3t-ww4s#@SEvw)d-Gt4HLdHtv9k&|&t1dHmIf#4QX(t7 z{E0q9U(Yh&pIJgmz`nNtRVHTb!`T?~{oJCPf`gx9I8=$(cbOiv4aG|aW411T1~)&K z&4<9fPVzGb7RmrWf3dRQ1DFPb3MXLQy|--};1zy*hx^M7KmC(`3t#%pe}n7xjN`|R?lG4F&PS@T-SIvtz#;E zM+WWggIS(2X2*{A@84s8Y6`B~9d3S)kG|sT@Lk{cBY4IuRKMa@j|QLy^hP`J`*OJ~ zbi(mgtn9>*U|CTimc<1zZZk`s$3>Gf>f8$jDjVYzCY;9x@^!@#0BoBL#py^l$D^*! zcudqe;xDm|casrac2Ku;xv$t|$Qo91cwTFp@xI2HGOQU*-)^@NmUfz(2!l6=60EEAuv{YgKxf9(d{SOlRN{eOJDuJba0tVmwf~5q>UfN9QaT z?+R!nUZS!_$p?Y(?h93D*vg9g>QRbkbWKzz!C!X0^>*=%`3(5 zH5}Q9De7;-aSXN}@LM~liuX~3RPWjq_vQ;gls=LQnZzZ5Z9 zn{nUyT(0g7g2VUsz~gV=XMXa3MX6sx-QVJB&Dy_SukAchU?iIixb}U=R!ZXvLHE>G z{yTBq#(gM&%_TV*XM1TfO(!P1EGy1AJFUe~zQVg$`?Ak%T#siXpWe-Hs8%VSYKNEU z@ws{1S!{L3#pc*)jM*6L*kxL8-AjeOyD`pKoUubp|K`n0@$TKbnN8lWc&Kmijep>e z<70waneKDyyTdC5Ef# z`&1bmI7H_JDodv^XEs$TS|W@~nZ|Yo7Y}BFqf2-VB=_KJB{_vl0tyy*gppG7Zm{GLeh{#yfnyl+u#bjqAKz zvetj5@XiUj;!2gWOo<(nmW8VHGqcWWt*NJv30NoG*|=&QIu2Z4M$3#7y{_%?*y?lI z4;?ce_jRHseW}Mj&T(^We#2HC@mv4lU*cze`fuYaJ~BK%zwcQ@4EOi1#?l2%SW&RmnbO+0*^ z6+D&)I>#8Nd_0WK2kyfef1FE-M_w22hPRpNtJUvVL#*15F-8Lqe8~K|`!wnboUo#o z@f^hi?|M?@Cl5a){MB zFsY_Ewe{dRHu^rl%Suz^5z}#~s7of}KmzY@io9J5GaY9Qb`OK^V|;kR)Ou^@P05l} zcrDtlOb}C>uKL*??W(D_9xt=n|KaD@-LZQcD-LRojLL%!Xg8D!0RY28pn`{YEe)lT z6w9NcRr|P+GEyBEEA4Lq>g{R8KOotRXDX1|X{Y6Ya@hWW&%6Tu)j#`5{NMld@8L7A z0pA~C-P*ppyI!VQ%Wd~bA^G6%0cdfdJ+e^#qd?dYQTp{Cp->J+lwrw*gOs+%3y52 z8~=_rdfrfrkQx9RVlx~l(Wnu+VuwqXuuKJzx>vKwpIJM)cF#!UcbFg;!KySweL7H? zBDV-oYaet$%o;fNc@>oHpBhR`qT#Z25^%9*oLL5p6Sj`dn3rnj2c^en%7m<4hHqtv z6*ZFEb%*DfXNGagxaLVYwvZ=Yq&YS~ELkWsR||ssnbDTQ7!$EwFUw!0Cv7LIli^n- zcHmtYq`QwLgKX>$OW#;6KW!srMEk9sSGa$`XI@qO{h#{Z@E?Eum$2C*%%4$f?T13& zEyqMK9Nbsk`kdjLUH4gC?6qPl=KEal0nc3!7w?+{LK68ERyl@D;?`&k^Ft_&z&;(3wHQ(#S-#6~p3?p=9^GY8xI zHVmkS!eOc{cn;j~>I3s0P2~2`OHD?FuUm(cz9`S$FreG}Vv)%I%Yy5+GG!qH# zb!gV{DVL4Boee+MRZi=fsJ&ZOhB~ak%XV4XVt4mKlr%_TsTta->@XiOSQ@mqY&LLT zHh_kM#|<+^%nM>y(>T->W$4oioBKTcHwYrGyZekKv-RC|Y&w(eS^DSrm;Pxu-Ma#X zp3^Aut#IK9H^#SHiss$hh^R+PkF#(ep8~+#v57+CZXI`JSj-bAEe1$;r}6HoGsSG+ zsx(iPd)xQdP4-Fe^|sKiyU!hS?maVoZ@jLFFFRBwRa;J0_Uvj_a- z|MfrN0H8o$zgj;=t?yB`id)^WT`yw^InIs@x+>;_ej+Zbk!fj8NiQ%jsP6r2%!0jQ zdc6CNt@u55JqF#;C&sv}WN=W3toG-t506>BIRYux<8|t-Jy)z#g+c2x!)7HeC#_xg;F-+kQAXavkIcziPazHk0x_`2Ws zNAXy%@a=BUw1)>Oa8oWQ<>g5?m^EMX=tXRs~$wY zrnJs+Rc)+h?3`x0Zf*4WV9hhKd-G%uyyDzg(q&7%5A^sa^01C)z0A0-o+Gf>W&Ccd z5#5Vb>+qtn!mKbHVLbLXc6ArKjPoH?o~fdva*m$`a8NkgJ8e}aGk{f2o*fEZN?SFk zx9M>zm|p(j?N34!8j$m^#VU@?>uiACZns7D@4I&z&(rc~UdN$tglAH4dN9yCPtqi< zu94XCz5T|B_d$d)(_BHl>*plx&g zYJITgoe}SgFd6Xt{M=E8HAREB-*9ijW>x|tqE>DC(~c@o9L4~}wXEMSSsthFVYQ&n zCOIoMtrQf_jvq`cnZ!}lo0C}>XMG4l-gjTdh?O5MW#{)6z>;BtOS( zY21{;$aK2d(F>7TX?#!XdC7`z6Wy^DN5LZ=KK@mF;m7|MyuLo+`SD#lEE~I= z6zv@pM`CU|$6lIi@i!GNBq;bEw-ejttt)&PuPKQEky)SoPW1E4W4bC2+`r?wW@B7T z>e#zyq2BQB-6sHga$nrx{nG{C{U?3|uRr^{0KCR-O_3UXAQC+D9!F9}#j}o^e*bdr zt4BfSgnC>vUe3H_8L#dI;CpAXBicGsPIOh`B|aJV_+7rHbjsh=8Nfz>&QE<#>6`JS za46gi*Vzg|;Of(OZg!s)$fF!s$KJZ!(|4`?=eD&6)SD=rndhEq zkL8`>j}mr>$t8s=lozy5N#)5kvJX?L>|sUG&9uO4Y9+iJv(EKbS#>%EdA`m zna?T|C$y8UM(o8B*xEgA(*mAn)I}c~J~T(qR0d}p6rHf{Xr8ZORrg8W+*$}{SR|aB zG}z(qF&xU=t?n?2EvOX(F9&5VaN50h5%&-=N3Acb@*7K~ZK%T=z+35KX=WV<6-Mqm z%pdXU`iNis<$sKS`g1>y&))B-kMEmR>cIW|tB!=3r)tvO%s;lk=Qs4c>rMIbso=Q# z@TkVet>wPrvM6&lJxj3@F@CcG#$GW!4kuG8&V&^|!%Q;jk914nfgkUJmp({2pfd|c zUER~@?!)rGJwM{{;Q?MN+&4Jx@#Jst{r}Zp#sfYBl-I+{Yu54)S((SK418fjWGuh= z%tk+>4v$I&fazI``7KMDM+Ija22U1RF_mxw&%1*hNCYVJHXSQ{CStKhUaUkB3;q)) zi?AR))J>j`Qp%#hYx_($%`4jKy48yC7{aZe=NE0YPwZ;T6n)^R>|}<^isyVBCf-|6 zc~%G4f2Pdd>fYw7@RKQzY|^v?04W`!Tu&G(y?@-q#ENZ(`)nScDPCr4AiX}f%Elgl zSG?&ceq2^mqb81|;&D)TXM2+lCJB1F-IW!V}xuM4wg$qE^3o|#g2R+dgC z+mg8tS|@9vhsoC`i1&kyYfP**0}(q3<0t@)DdM)&0^<_Db;sN?p=n~BDUCc1nWYrM zJX7$_m|v7-Ob#0Qu`bo(Gi5{H%NS3_koetv`C+vJ*&17fDB*Hd&{jH+_f%nJ_?G~1 zoHO*gYaiAlA0h{qGEb%%7P1-haBr^n!<>Qx^#PxGRq@aM(HHP*zx?xfeeWp#gz7u4 zWyAg5>wz<_Pdy{thcgBfX1qkl zl-pvOP+H)4(RF?v75+@1$6xhCpTWlPz2r%c`#R3*ZH#))XhG+f_Lbq#^B-BMIHTLM zxfR#A?+iENEW@|{{c=`DYF*E;)ccyMARrCTRbZ;YI*@jFpY?&LE6Z=Cc+xysnL-wQ zi2Dn?OZ`d0Y~Ubob^Mh-^Ziv85N@(1!eP16t|6^h115PA>Gsh8@NC&3{?2>T665D$ zfZ_~9KJi*TKDE{vyq>fLVC?#vlQH6!dK!lA;B4_v=*m~rMZzy)w4`5WM8kxpiCHs- zz_?%V4lEg&Vf~D;zMG?OYrthIXzOBiB=K`^o`?v#jx~4=@N5=&S2S;HK9`lin{_kb z^}Xc|qAc)AFI>i?=^m%)$?A%7Kg%vM)6e&2%txh|ruZG6lgVI?9+}<<(06Qc;QMAh zzg00*n|Zug0gHNh@{TOiI^k&C!&BOXck^n^jOcke;IIdEN4=pCt;%}^ykdX)1b5{v z{{Bz>Ej+#d_kh30wmEJ+3F-BEO_@q-%a>0nSmS$o>`Qoj!t2HX&|K%3v(n!MKkhJW zBX%YN^0T6IEzUYUFiY}$#qUs-7>4jXjOTa`_VLQfP66eH(tyH+=`5{WU7Kwwti-bR^Y|%eG-FbG((mL|Ym=RE1s#yw%6qremW3 zba&uUamp05cE5cl?{A*1;pvgOL%wM2l(uoEc)tW=DFxfbhBqrbN$Gfr!o`1?es)sw z%ze-<2DqRQZYjvzfDl4RuxWj*7PEHlww` zmjJ|#ac9poLuTwRS-7lxDe!?PCVnPfZ7})$n~9YsZG-U}_*#OPeR9$)PfZ`+P%GWuZ# zq{3*@%Z^eUzQ4uu`~QHS{pr7rH`iy>+dEuJ>)ZX^>&0WD_+=b&8yb_vh2hQM;^&4k zK<)EbazC}+v$pkj=Ec%_`LFg_TRE#k-_ux)=jUgjz5i$ zKKJ$5E}uok1-8vF38m+lE9(6jG-Vscl6fqDzz+Dzelre^O4KpjLHTMn7H9J}o6r20 zJtsU*;yw26WMj_b^l8_#_75-?gVFqV_jV{dC0#uzZe$cT1^?)2(&bv_vC&8MCT1%z z2mYIQ2N?${Q@NguzUKJ%4PdcL5J%onBkhA7m3vksN1S3(bZmJp1zw^Lk@+C%&*Z%- zPAa=z3c(4zMrmojlN*54vsDO{p3H)QETt^&=4>!@5<~}B2q=*U;-Y>gxaj=lauLO- z3AG7xvzT|v<&jO`!OU;_;;}L70kz(CqMRl}bW)9rvV}Nk4w!7MR zfY*ULGJ_zjS}O%@H%svtVBg@2T`d`NYD$5PG!8S?9-K3|oPh%#z;_F=@3<&&y^z?zdc9Ru z{EL6`ck$U*j{Wu?mriD{@9sz5sW{t?caIIc7~oiyLZ;Ud)6zeK-rOmM31b&z#G3JV zl~RW1LHQ30kp|mp@EjDu?x`B@isvdk;(^~mm)^vN^**se*Z%g*>wO$J6TAC7FL7j8 z@4IX_^Ohg$=?Mi9xA+SC_IZ5Q_y2i3`Wx8x25~|~`)o_U0gO{88eZl&U2J*_#ycGq z1(dd;!#0$}fU_4?>N6py%GR9UGlp_CmbZytt79C-*?&F8MMFq3g^1x|`pi5;hnUa4 zD>-&i#<`l|`DUKo>R%0|Pvgs~_*eIFR_mOjWyF5ES6nW~ylQ9iG}_>!-cse(Y@8vf z^|fc)M`f~YrJX-G_~?vn9eBa?WHtG~21u@`FkaZG-nMPo#jQAGB~X`O8E0yoYr99< znLHt4l!GsX0-NEU@!4QCgT{jK{Q*n-_X*r`60vwjukI?u)j`R#ot*UGOL7fnK4aO zewd)$9hHte2%*h&grci$WF9)j^~#*3Q1;}P;0!ui^0-j&E#p69f{Jr)r`Gdvad+s_ zYkQ}*!-^Au;O>Kx4oop=BbF9)3~Q~jRB(&$lcxHXz=eeIsXBj-R z{naSlV0e0X=}aEH6~;QEy| z)GNj%>xbg^Z0TP;1hb8EFN==#nexE*_&xQk$6tLngPr@JW86L+wz|?}Ml190Dx(fE zg0}vLTvhmA3ag3l3X9@N`x3n?f;||vbcv;9`Ph3P^o|I)8daVR)BrxuNo7$_#mC|)Bx!IMV?Qy&1NLd$=qO@ zyIN9VwofJ8-C=b{v5NinFN zGo{M>!kBu7RZKHJH0C*{QM{D=#`06HngfPCicCwjB~*k7pJ-uZxm|F29C?Nj2*cqCB>7$K|` zXBsxAOi*C57!RE&Ot9JDa4_0gyjFHU>SRSM`U9*M+p#}JyqzU&j%$^ zXd=6RfTu5!wMugi&U#A-q=vlU0E@|24f~XF;mdr0}h*>t}$P| zVk95Y@r4+@W&!lg=4 z_N=aAgj~z!X(p`K-=WBp*BfhW@ucm&C9$TyC~kNzw~E)LRhAJ7Bjbl7BLX-P0dLT`po`@o7E^F@}UN=vcPiM)bH;EKT2c;AfeM6WoGw>9*W(yyfIE*h)6`@REwi}Q z9oTQf<1*?4P^{wq@`Qi)Z+{;DV|$6>v(%0IXdNm-JPsNxoV0b1V6ZM#x? z6{XC1J@W2JAAMWhPV`#zL9J5053HKF78cApUaGNY@95-Xdf>mIRAgQXov87g-d6%&70~0+L24!F z7%OcKC6K^TL8prQQ3xJm2RL{>E2Ez9oRub^AmgvNRZB|yrEtXjSQ*WloKnla?+$KWf_C!aZo%dznE|*)*s=6X?V12 zb$L$V$l?(d9-fCfPtX1`{AY193!I?C=;Mf^t{j*d9v(IgUXx?7Wbypgg1=aI9d7W zuG98Iqq9u2n$8BhCm~`L5_hSYEeQ{G0%T_!^81?5ERdm-nB8`a42EM8SDmn9-9-nGBwRTQd1*|mwW;PNX_R4UhliJN! zW;X`B?(n*va<4)mt~FdV%V+E7^DUFNY|CydcOMo;{2mtLAhiB0_7=+%N(Ol@7CiZ? z`H!&;LDXX?VtiWmAlk zlt*mVmOQT4J6tdK9fs*iC|=P*8+&(T)Q{}Zj3j|!0Ey(tjDbN_m^Bo z?Aera=L)v=u}h0{@q$aaPG;CCWzbv&(C4{hANK>V(T6!#YNy?x*`{b;47d>CK39jA zV^Y}gT!aUA2obcMst@np&M_=^xcMu5_1AnOzU|w80PmhQSh;WGNy{FiZko>{w^+wn zq)Ksb@scYqyp8X1a%kkkQ^jlY;h4XB`knE_#@C!LkrmvR>+@_!^^QgCUmaQh;Zspi zB_KTNb*Iw?fCHYQv@|9}r%_KuJHym{(oJkQ8T25^lsfRF4-xLC#TKi)%u*^Hyfbj1tYJ9wZ#2G5zSof5MGaEY;_kACV zDJ!S7V(>FoG&7lMX1MK7ZT=?8Gq1X_tPZ2J)*0KG(Ng@qC3zqljH^))a+C;S#$Zhc z)^Q0#g$VPH}@0BW0K<8*#{q%RoaK74SrVL*-P;6?AgfAg9JO)m^RcKhn|bn9LuT#k@&5Y$D!hP5 z`;o;E9TaP;!0i**RFd z(7XGR7b{zh356|_@mU|v=z;Z+Y^5veSDi$aF0EH#&%AA_=+T=7!@y2y>eVbf@q&ny zku4n{tFml4GD2gFfHsX6(l`?yG$j^xku$=y-fUSxCjr+RpKuMk`wZGM1LBM+YYM|a z`iVPov>P6iekyt3LInm7+*DwWnWnW3KXxZo-q`AA7ixhGEBD~ejZlAUo}oFOxBj<| z7>A$(_ApG#qM%yau@m`r20WDS2*9lG1;Wq9O>s2t8PbgY<`t+rIQB!w;?$LlnaGhn zXt3iXA2dkTaeKzFm21zva`f6BJ*{h|_J*rf(Kc%_eK3k?Di_qc(!^9ycWidUW)Jv{ zU;738)1Uo6@X`GZ`_nsIJ3U|T@8M-GZN)f7nfbfcI5{4NTI-u`+Vk4I|dQ zb9gktXC$QMti_c!S4AsRtm5Q_iJw*Zp7r(2{*K9O_ADN2dNqA0G*gkz;N-$QK$V6V zSNAnLcU*6~FfsDV0h6wG_v0bnn0(?)X^FWT@^zidvkWC!0`fDZA@Door5)c?dS zs8|y{8@y1|rt(<22P@vmk44BdV#NbLn=O?x6N_Lx9sJD2ofXc(#C=z|IOvc2&V=i} zkDyp(56XDCWQ5H);P3jEVLltTj2_zG7L3b^O~E>W`2FlU*TZ!OGuD1+2|CEeIh#+4 zKlS!%-Ri|+rlZfYOP{aR+KzI8RTO{1>+2K#$v^r#_?2J!$9Q#p!tLq9U{ZH?chJ!v z49}0_sO>RsGu)ryk%hJfteUNfF&6gqcQ`sEO zc=OqqsL`NGQ8r#@0$Op%beGAYtPk2x?nl~}Vk0cA-9Mh&7x1O@O8lJpqps?(lcK*p zaP;Ni`=!{W;49k384p^P3`72zJa4lOANoa;o7r6FKByNjaIZ0>jNAB~&CiAI>kK{O zabo_O^_|<&<;8%T-yL;sG#7i9OGinIsNZZ&OsN{OnYEM*?kHR0NlFNZCnonJzAu)I2m%yquG6se%+Ru+ zlZ9Z`gn}IdHksi?KN@iWyvwmD?7iK12RJHnb?oNr@AdQHyxQ2U756d$qD)Wo>dz;E8TZe<%Q3Nzmomtd?be7!%uULTBZ>{RMrD71NH zwskK;vz8~RRsm-l{S19t4~)Bv;L`C;!EXF%tS_3LfYTBM;3KgY8Y`tNlMN&jfEi@uT(d zZ*>zdbz%~Y;wqzy4CbH_zMc^wTN(#APUu2$$CGB643dCU>2A&bevI46#%X<~9@@?( z|DerkaOWUW9;;P3jiR)#DLOKI#I=e4%Yu8g8m(0L?H#WE34ZGD{B>CU68z~cHfymc z*UKGBxvXPUePM(;R(y@=mYKZbR0UKBB?sH*mSU#@ojYzyA+>2fqFr{vaOrdpzA794zimz5^A! zN%{};D^2n zey%5A$UI0{ALDtxpDkG_-Kd<)+S0mpZmJCCHg#!isgo_Xu4j4ZTkXL^AGs*KWZpjQ zOD2ahS-`Mn9zw+rKdaZYepOJl*gOPWz*bk;jW;y{!81ro=?!app|#i_~1T7y9{%&OUt-zSm0=xqrw+ri8XT>*QKk^&%R^RjO z5x2)Dm>Hfcux+pK?&*qe|Lz~c{bzqC%sy%n9z9NJdi#2gtnMwn^c{^x{JR9LG8K$yjwGqS4CAtJGK@3b#c#^<18BbEtca7fPPmmm>Rj+ zNgii1n>{`54)`j29cw)X>rA=d@AF{DXZOC5V>R{|PpqUyTP&+po@9zE>j_G0ZCv}= z8KRu6M(LXN=?vd1?!to?R2#wD{hcAXky{&Dxq3Dj*mzDg$VDjt4v1oA#RH+q-?UD( zqO~n1mVxMD#f2Lkhti&lWtqNo*o!KGnFYd2Mwx3itLscdKl6mCwGz*tSx$-vCg@w; z=dmsI=n>G^B6aWUask6|M(_-iGQ=KvIlUqN3duHIPD{ggz+dXdE=keWt@-N^Sui@n*xP^i->*1Vzx=5ik ztBObTD;uvf{;qtNWrEJXD4AE`Y<#meGx~Xn*Kr%%C*?VazJbIzA@DhWGL&+p zHvGIWCSU<9Ib9Ud z@mDogCXBO$n^}Uf(SG+lFrxaea0@jQ45Yp6hSiDA0*&*-s4JKSsSD2Ql11L(l0iG$ zImmELc;-YqgFP$!yjn0iDGk6ymf2LXdI^77jKnft=y78ZdK{By_5MuQOFVL*KmM*t z(S+FtToipbHAP-z0U&)`P*0?gYct3V0P8f8fz`Bd_Op%W0&SkHs4-LW+TT`JDHmP{TF13#lCQh)oid-R0B*Gc)^^o#JMIoE z=!uF~`Ux7U$+bmR=r~Cmz{<}QpUoS8H0+zhp{oxL08?I0ydC9SV~NM*-U#L3Sig)W z&lD@3)7&qvBTL#EW5l>pv<|;qva;kq^;_O98w-qxb{v>>Ymk z@BR&7|4pENz*Zc${TbKm71!(is+1*sBeRlKnK{EL<36)A6-V5M;0^P=@ZziRl{GUkr<10Q6V-tUOp{4EH^wJEb3u;X0F-*@ir>Kl89<;}&C{Eg@>*pbZD$q4Db= zYgt|I6TpF}ZrN_zwhV9_r2|a2t9q$|kd$x(nJ*D5!=!@>plzir26v#=RT*maH# znBAK)FocrXIB9;r9ff-Q&4LaUr){w7*tX6Ls#=c^s`Wr~?Jp59#bWK)X=he#IeBV$ zD#|$1F_j2lpvsuruiTHlA;^6`xfY@?_iheOPO?)|QhgJeoFl;RTbrJwK<) z1JJw<*pJKbL%DLGS{b|WMjhJ)cDW)f_vpv;EKuy0H!E`Mv1sN`c=+U3@Q=RuzvJ%m z0d;?e%cZ~_c=hT{TbiO6ImSVFaK|pq9_tjIGu|aQb_y1vx!#XM|3@Ay2lj-yQD*t# zWzDtK&zWPItrcU5O@$ASKhID1cDBHdb=h%@Nj(|@2W5tGK?R)xbQWp%1i>n9wvWXWn zqaCvIdc@kjWRQiD=1m9zb@e2g+2GH>s?c-X-{6n??J$1KL)cJ`d#XrJ`6r%U$IN*) z>Il9O^|xcdhT|s2DlrJ7-Wb!6b$gF5)4YY;2Yx@^>8yxZiI0H^20c@Jqk=_wnY{j=Dc! z>#;>|-h2kJvrzej#y_ZHsJPaCD9_;!Kc_HfMd?fVhw{7-;(T9eK>1b1pwGNPnSqkE z!{zz$5s#0LaNki;V0MS+{WZSx`+fx5>#xDhUt#xx=U9@C9hDZmq{W!E`twr_l(sWZ ziav9OW4+JMW#JM$uE*u5+!LS8Jr1DH>eoI;iDP4w2HVC9YKvn1Hmvi9;bUR0ahy@u z`JhWpihEU%V$KC$VIHA#MC(+K&)M^uI;mJ`$`n?f8ru-82jveuBs_~lG6Lsk@tcZQ zz8@d<+UxTwZldlXV%o}IQ6^tc6h)Rq24v{F+sMn z1hX>iEcASDC)leHa6^yD!YQt^HFOo6tUz&zlh<3ES59#HJDZIBo0Gmqxp^J=j8flHxPS8+*e;XdMNC)sLk&-qWNMEO$6GD2SFq(7_Gp>eI2B;>7gb~eFTC7b z=B~zgZ?x6oxWdyKe`f}H8`n2@_ma)nJdQP5mA*dD`x$wTeWaAAeml_Tco(I8h_0U> zAAmke)i$`j0`7i0{`mL(1?-p4VK1*>1Ix$MZ5W@9#6G80|ESZ0n)eWJ>mOR%VY) zJPQL^`+Zb)mr~m1Bi)@`VQ?!450GtTksIyYz@w8vWl7-<0f*b z&oM|%6ItR-GB^W1cOQeNcwm^;C9I>hoiUoglQJ<@WTI|f(#&wd3^K!crqrCZseR?& znId)e&RP6{jx|rFj8SE@sPJa@IPX)|z6uG2YYL{mWPx^+3*389=UTXZ9@Fqd>72`i zjw*7|m&_}pLNXMjcHLoqLw$aWHv7P@jJjzQ4n^^*YOSWO`rVLIho79zaYm zD$aN;81D=}e-GuWjY%IHI;x1hEfH+5?WjjaJu54X*3s7R9+3Az$4+5C0u z+6I2K!P_ZuBqnAaJ646*%xC-);s40281J1X!fLeRrUzvX43{$U@i#Kc_xmGrbdOn>&U(MPMJg+O>0_N3o zzr*YZ>wISQScgY6JfVkUu}0tPvLrOxv)Kk`jz5fT_b4g988~qpyAa(ShW61=icI<7 zv0y$002U`dQXO;La$cYD?kQW^oZ?=@UB)Ha$!Np6a^_SQ@5E+DLEJyX z3*$`Vkk87OBZmU#qi)(vwUlvxy<&!`X|i^x4e{^npkv^uMXJ|Ig;>0kAt;LO%E{_c zVW~n(1!*W#-ZZ3ky$^H5T?N5pgPRF!Eg3#Di}_5+V)#|~M$z*a6&Ffy!OXQSGef1+ z5Dc>_IfD^OJ=%}V;$%ETfAl?uliM9M0$moEjGh&Uu%4~nFWaZsy{jTUCys^}<8nWB^NhW33w zjD<4fjHX!`P@2;@p{WCu1|o*)`S}sg&(CPf`WxIYc=FfyLx1!K@R_gtdhGQcW-Wcd zco#>UDbLaVC@)c*#BcTlzJyc7Q|9qi9IE`ucs+m@$2uF&sWhJ-=Ib8I(k*-gz;g7I zyN~3!Tr!xIx1D*z6~3&$YEX0El>W42d`+K^xubGv9eW-p@1Z6qcla4CMa}C>i({t6%-7wA2jKuvx4;xZXImxDI;X^^ z+IH62<4NI+gl6ILAdNvcgN5}5gTqm*bd@@+fIPR97ITbA*=-^())>Ymv$0t_mvY%Tfyb-t{XschuwwsF#SsJi-SFk zXC?47$9KoJHBaDF(kFapf=T%sKeN#G4rrPP9uM|p^YsHSv__Lp4{zc7a}#Xa6}!Je zEuY7Ce9xbSU%m>pyoQxIKj%_686@?nbZQ==mjsCRBU21jXdlbOZz{|sLwq(K+MX_< zF^sX)9xz2aJG{j?63pAS!RorJbo7-#Dy8j;+{)avRp@(W)P;w3C|=%-d-t}RoBI=T zV#t*4osT%_IDrCnpZCoACiob`=2ePV+o*ra^tL-N@H*plJ3ku=%?6BkE{acUL6B(1 z;#9)o9xH9UDNRo{VS4GKjqQ3ljPc9{FrN>e$8DX-YNc&;oao$(=Q*Z4o0%%lnY^aU1g8@<6SDDLuc@-fnq?qLwOf9kVbck3nCfOISM0&E zPPFWi&_3wjfGKdu@Gx$pp8?e-@LZZDr$gPGHAm?My(O#hYx~hRrJc_6~3EcKp2`{~NgY$MD+&3L4|SUhi;s_X_*o z6t@_kC2a)3ZdHU%SGeNH9i??;l&oY;MItk*juvx_Yjn3IpFH<&X*-Pb45!)r=Q^_G z*?8~l`uN+GtcQp9K)p5Ptz2=lSGd0V8vGZ3@31R={I{&GY^;IQjM!jFfwgsbuo^H;w0yro{dL5!#E%OIPp^Pd(p;DaA*8M z`;#eNj2BiE^g8#E=QqomMNt*JFg(huwOuoVQQb{Q=F4f}DK%TYSUT3x2i7GRHttiz zsBv9Nx60?UamubSp0ejgzXUFxC$Y&cE4)Nlfwtaawr1K@jZGWW0jsqx`Ej&E+G+mI z^(gck;e_J0?G1^_D#)=4yXYv?2o!sUKw z|Kqn#lqfn5+3&h(m-VoppeeoA+-yJwEm>M@%ApP9y68#`9zXU2*|`(_*5Do_%SR`o^= zJxA9RI=A7SOUGa4y5efihaPhjyY#yErFh%z#@-k{D^L}d4UXdT1cnG@Yo*0Axf@zs z*$3P{{2KnjPyQ`@bobnj(g9E_aJ_#8lq;~KXIH0#b8VaeHs-o_FwFU4Qi``1Z zHg@vyM{(5t&NJ!8_>6JiMjMkK%-`#IcCFv~j#*1z!WMj{04mRFKYE@dyDT0pe$Kte zW9=lQo1VU&0ceJ&r>CC07O2>8!$l zw^FV`RyMrBIppY8hUYBgB)6*y%v0gi>&O^5TcIoR~Zn`a~_M>so3~vzC={;geyMa-~F4P$G`mNKZCpS0fr}((ggGU{p%k869PQ1 zN3G?Icg*)@5W3Qm()5{ksMYuKLAmqY3A@gnz!SHjAqVj{<83-_teh!sGQK^`ALF5E<=zxnM0mUFXLMz7qf1U^{P#&fcO{SQsk6{9E0H+$p`M zL_CsYq928TIY^(Dd~zbxhXU2q&{YdJ;EKbn1Akwg_hL8Qe!zt)Ib&=ggl!hSpZUIr;p$au1XGi^1ZDy zCT4Vu_rc`)^-Cx{QO`b?sCCTEY-V{6E7>sVcqv^t^eM6Ld!x-_0BoF-7^UqX^_C+F zT~MLG>=}2L2mHgI`7wO;SO0e0f9@OM*kE>Po~gSlo}a_J(qfx3h31fA_zkb!>yy9jb;hX=9@5El)QnaHC4|6lbX6`aG z>%rU6ci|g;!xD=J0B&e!(XGpRS&1Ndsaa9{WkeeqMT(4ni>h25)#On@|YY8T@mv-Ct{{BviutJzsvJjX7zev zM0uMTw;l`Kau3eBN84lP`%J0AJg3+Nb+6;O@ji}nlyN)p+xl=RTdyaIwg1OFUW=W% z$+De-XOs9N_ECh}VW0(|v?r*WxOA$=Jeb0AIMjwt^Ee_AC z!m8dQwIl+LY?DBS8?7VidC5!0{a7X-;eeSJ_lf%wF!1)~%o53Pqt7zqj(U|5WFC;r z`cZ~*M#pMUa2p4v~&r5uvNa($U+ zrH=}VRoMQB&)hxXC;qSh8Mc3d`uq;QKf&E`x!j=z>#lQ7$6l{9{5m$7hiJgulRGl5 z`5o>bFO@3u&EQkK>b!Z0p0jJ*SN7Z}J~WQ$90wKq{*0%G$JQ6y;CO}IuYldby#Qq{ zm&UT38W|a!$`=_I3=Bey6-n>xiYoybnBfVZ2Pm3ke;ajf2WFhKrBX zW1MiwR$2l_%&*Vpcg7P{Apns;ZokZM6?}6j`3r5Wh5+4Z7z+jBQnulR0j7tBl@;#v znQQTkLBw-agi_QM$XCXz?TmF{99^ucjAV(#6xNB*@Z2%+Hr!;B`k;K2RVm@3gw3!8 z?3{d#2QoYk+7E5ZotHh2j2Sbp>;b3hDvcd$V?2SLmndQx47+Dd=bTO$(EED{ipq^`N%ZGcs`C-gocq%V*T@XiT){->EyA2cXAxjon~vCa6{eSqSXI{pZYt01NZh8#h;qO=>@M|y=kdcX&BB7C%qm* z?N-rJvvT|p#Z~BdFipAp$k)cD3ANUr$SoBydAy4-K5Oo?T$y5l#=MOAlRiKDOE5!nKGpo?U;VcUs4&w*3Lkzo#= z0pYPx_I)2?sr5`eMP9SU7h;@Labksu`D|>wP#lIl8zCIs%f#cvOZ9WiawEFdev$!= zo0*MW&8pCGSjU1tv^mVzgI0ofw-pywgr=-kJaTC;m0rhc%<|u8mT|@-XIyvC3TXAp z1LsqY>2m1MEBf;49Iq*>%?!mZ*!n32wbms@k)IoI@*E+(V&d_*nS%9=jHhbd(e7IR zN{<}m4ggkrpqwtrF(ES0s%dIR0;tSVS_sgmC3#qG>xC@|wG>$SVx>+eLKZ8LY3ilS zV}N`tg{_m8k*ms%T3#7WG6nKX`BN=i2U=t2SRrLRY0*CLv)V?MRP9Xh<-a_pI{xaR z%9K)tBm1s`h#467FT*j@;OJ{&9ciCfdF4Jb?XBhsDE=!#YjttoBhO)oM$G`Ef@X!D07jUshz@OUA!fJSZcaP#(($B;w z5x5lJ`d7#DY>E4A#C28p zGJ%_US-6inF*8Or`?z2|hed2jynN zvYRflD>v(u$8}~-&&GOLs-tJdZnQXKF8bHLEIG6Q9L|!=6shHRCmi0rSZi&$!u+TV zw-g`BtdB~nmNSL#AdK9*r(k-l0;W=qyZYj9@q&w8;HBjRx;ap-&3liLKa(`nVmgV^tW!yAdT6 z>+nKG(E8154^Fn_6Ys|o+Q?i@&qV#+@mp(*-A2#n!QCoYSs=Lk*cCST4DFJtAOov= zdU$tj+tar9ShR|#r>FH0+~$rQ1`?leFlmWlXZoDGFT8GEB@iUBh z%2X)e;4C*Dl;?vNysn25981p&*Pt3 z8+(r`^-cqwHxc{M5;1>k{=jwKvm8}9#ri-dM>Af+bulfBK6TG__H1V8o-J=jwuN{O zBT)qa_`!n(jOCa%Sy>?pBuAqhCe2l)_b;bflC{=-VfigQ{c4*?zSb& zV?2sZaQ4t-b8uDeC(~1=7T-%LxOv6RS3^WCXT|fd1hK>FJG|OH;HQ4#ucO?46Pta2 z)myj1?{K-?bzH29Y6g>*Y|iO!F`oa7i!(YE2HmT@%;RV+tV{ZXDHTsBV5D*zU%zV4B*!8G^`j02gO5h&Gjf9E3Vsf z$GNKXk_kK=Po@spsHHyG719}&%^TAcp?QYh$_R!vZ)m%CLW7~_0nEgw!8DncZDst; z8${#bt0yMI<@Bob=faZrX5r3xsz zKI8fM`5@HW{qWRH5Aht6H3NM6&c@b-o{iYC+U4%vK60P&HS1dyW5qAObFt1NY)yYM z_>mimlafnkt-i!B6)vC~b^z@ppUR=m$B4ITU9ZD)HE>RO$AB(bDbL>CV-%}9cHdF^ zu0wa9$MY--TgWEBHm0{Y9pmWfjcy!vgHylwJL5LIU-PsDb(lEd6*D_Q|F<9hJmsPz zlR;%`-pjySTt6tws&CNsvaLLtod8k)^ze2*)8ja+-`4s9uI^w^zA&9UK+tOJ$UPQ6 zDp+g$!fJ)EBEcoo&Q)`aI++pi-vgtiLFD_Tl*Q`McQWsn!V%Zkz8$U4teBOtg*0YlKyLE38NWc4e)030&l@;jdvKe1S;zFLxOxf~hfv5a7A>OYr*(nI~u zm>PRoGli8ICM)%s7wAm!3OLzFQ1}?f1@{EFa_|k9uOZ>t={yVt8e!zxjl+O5Hy?Qeg$;7rxm7ABwjJ@O; zZn!^DhhF2p>e9ebxjOz;4@LHFR)^x8;Z~YgoSea^id4+=+wIop%I!d-XY(eT&nonI zOn5G2_x0XcANY4BPxPMBsrDgLvd)wc;7C&k-224u89$48J+52sshR>?eiI!~nE^wRG&oWuB z#djVrt|K#eg)h028|%R3=7V$KvyQ3|;OACm&@83sEN=^6U7fS&2IAR z`M^b6fR(meYm!PMoi-V6E%#0$pcfdzV(p(ZrW1cP*l^pf2zNa9LEWcW$tF!Hm$4on zf|v25e=k0qFDPJmOy#Z_Qlh9c&ZpWQZp;S!)UHjqCJ6JYk^wQd#o~1^s z&HKRTG6K_6Q_O$`_qvm6J@J9tXMWbQ{%;3<*Sy;Kk}@!3p5oq&Rb%hRF^$AfChB@> zf`%m&!!lP}-BS@Rjy9$dgC%kCDmxKF7SGCP7;EKbX4!fz1ERrcXM&h5Dn*uB04#u_ zUR6LCo>q4-0AK2fI@Ha_*P{KcF!5r6ABai8eYCOs!XNG%!^}%?sst`UshE>R`yJ14 zJ^bM|7_YkflL>59>On4oS6}LeLK|3+Nd|&Y%MJJcy zNAawdkutTTkXNtO;L%5X<9M(ze{{}qz1qGSGW;AfPXM^|fOc;8rJ(yp55XwsZlCR9 zsPzGFu21;cFaH0qKmG<#-woyCZo9+X-928kwgq>yy_Y?uSzS6F`kis3yken;I6NFk z@z3pN^q_y4NuTi#Gi%EyWu-wbx;r=KGh5)Hgsscc=k%hmR=+KHXL{E8o#BN&!8%si zoEypqd6U%Jps`ijPADKe))@>#5u$P6?*pe@(dYWO-#phePO8Da8nw))xUV|*8Rp!Z z&jNpyFL6C~B69oj%vm3J9Nc{**e-3WC-rT%32Pc**$PO9n{-r3dn-%B(Ogedu1TS}UIGn)51CfHLOg?lXa9U&D`W(LsAE^lJseS~Htx z?~VSTz{kWr=4qq3*T%{L^j&a#7;$)@20eCnWcf57G+<7dD4W4Pbm!|Eeo6?F$*U0*FUZD!Lu71zA9opj?jx);ow zx2qNu-(a=CYHQc`3iO?gG1fP)!vom*((dipQEhslI3HT(B_6rZurk*1yIKo9s*znf zcHZTRNxBqI3Qn~hUK&lFEwi}$u*wf~EA2+T`~D2}D5;R(b6bb7;mB@ZjZcP~`@$YQ z-V`-qTj?~$Bc5w{_U1fb!(8WycbHlZtLCi<&sxxN9%fJvt16>k-3rPSvsLIe4xjOK zR&3GpR!w?Bqn94D7VV(|1?-V&J{>oQZO2V4u$B>iz-gs@2v4zM;CpT7=CLDRXv)ZA z7JXQ-Ht=K!!)kVDj#ZN}D_sslzUvd}^^5wM|EtoMWi3!ypo*088V*|LI7B|HHq$Gj z4ldkAALphB#C=GKM$VKWMRZ1-FD?CL*SYi2E(==KD3yUU0P6uknbMLmszsyq{^?%N z`CPj(2kACoRWDx#9}^Ta+Drk`LC!RER*ue;w(R+{`p-1>O!47o6fS)}^Yol~BedP2 z0LZwq$Y`El_Bw1DlMPI zj%l4*Hw*nUfqta*Nr%zYWiyyPqweqV@o)Vy{`o)o0NGpaqa^RCcYvSgzg*7vmd-JyjYyE2d3uyrX*)Xa`S}*iZip#+Cfm54 zRgfRw<2ijM2b2bx1{fzgFSCBC=as)JJ{{)8f8*YIH4~;ci~F)*U^Q3T1kdLa$tr-I+m;e<;>+LygzV#=bvXF4yrc zE1T~9**bTD0CR_6g=4!?@;DgU5s04Rg!>)ec`~vBp^C;!3JfzxWrpsK%Qmw#k3Q^s z%D5U}K0drVYO@x1qC#%u59yx)Tf_=9z#0scxt&YUk}|~gd-GE8(FQ<|eXu-^O_j*7 zL>WhsM@1(bTh%NaM{G)+nV~rxbnJ8y0o&e>xTof|s)n%(@De)$qkZhS`HkW!nzt!D zX^Ub&LcG=+E|)T5Le7+|mUF1#wJh;+WuZ|Au$3FGlG?cdY%nY!$vz>R8X3JYVZX+hI^VNvy<6Z5Ir(FQ7H1JaW?LC8` zpmf==Du*F&fntrHn9RE|#^PCGWd&YP>@uJ0co=dc#sNDn*ENi2_HCtQHB#bQ^IooV zQwBs5nOWb}b6k7=G^>|! zpg8CE+0DxMRmPH84pHxIzb((SHnwFPxhzbHn2dT76?U~g;`&gg5(SZAV((H$D=#UT zy1P;F5`TFI9e|C``JIGtAl8 zpN(_o!BQIIIj2fV)~3>C#>@D99WTD0<&9f}lJsd+sMzavO!&DdH8N+i@j4r~4Ch)8 z<1Vi2@h@6uHb!Tj9+hQW#~D9TKFjqfPvr4X15oGMnU{;@qbkix9~s^lUm3m`H@XUw z(?q9hYsU$-I^wx8Qf;LW-j%E=bJ=J;^EfGN*;w%N9JkCyMCcfSv&<==I!*jm1(V-Z zSKo>ulmrot);8>5rvK=Jq;bxrnkJSL>l!3;uN{ry6r-Y zc4-qHe@AJ7M4MaZ)9s_RPcKEGlFvfjzl<(DIE{!}WTP>*ZA+&kK@6DHj12JMM<(iejT;{_}1js|DC?@hG`F zHfwD~Y)a(MQxELO$3>r!9JhuNGB??b7%#s8WmRa}==!=-5(U+5{H;4iA9&{^&qd~a z=)1kAAv1S>H=M;Y=Za0c7rO&n99s{JoSx+V37QNz);f+$c-rpP|KmJ$?$bl9{K=)w z5gUf?qzSKH0~BUG_NUYNpqm2h5ieDUs|$RS2ewZp{L41`9>$j{gxRv_qR{rwgmdQk zbKl#BD`4P%(5E@dmM4^EI7>SsBf%#CtRV;MQeAwqaDccLbt+AHmy*qMSjrVKH}q^l zvkkGc-QCB$=5bf0e)O#r>^E<+KEcCEFUQcAMVXYmdOF^vpnK|%3VXoPap;rRM+F?@ zJ}$yCOIQameosNPCSv0bb7wVqmm)JmFtBC_AIK36JdmK)Sx3Oq2OW?gy2iwP)ilvu zpzT|`G5SzjaH4w5crckUW)_IziJ1xuHpVr-qY5u;2y zV91!$s-TnNN58qBnWC=v)d|E_p7t~9y4`LmqtP}pWuH9?qkqNW{gB#b3wVd6Nn6iVN#}RC{t*1}{IzUNAm9mx4|w|UAO8Q8{b{!(yKW^2 zZqWS1bf2pG|No0#t5#Q6b!C=vP!6T}Y0jrPrBq6()bQRNBI39a{Q(5Ixea!%+T!|k zKkjB6KoHmfK@h+FtN#igUp~Y9>jaV?#!_Jg0JKh(8ZVdCh(-3iCLwR4T>x&s>dd$q*J_x3)3!SJNy^%(I`Y3VFW zZ=KClfv)+zEsvF%&G^2_u+|uf!OhXp%ZZ>%DD08p-x=JnAmDa#?A5H>m*w?VzxX

e+RX*Jzk8X11ks6-~}vi7Fu{3x<3IAtAmfm*(T9>U5?^@ad!928l6w;au|{d zgHD|9DDZF{0C}G0JhyO-+anb6*iE~5J@|+7Ud8yuuGBt`i8>2TS-SEwaZ`M4eJWI+8bBu?VYAX3*0rOHJ zKa=g_otulFkF6iE z1Tm*Z+)^6a4d^2#%+J1gGFfiu+^c|)D%#{7V9dE9ce9>Ma$m=yi`JX-@$q;}Z|l6z zhc}OxuMB{B83^*%5rT#{7OoU(pZ^xJ}hrQ+2w8Y==!}9+fyiM!L**RIF{{zH&VkIL+%WKiHM2SNSab z6ty!QE6actZlwrVsZ1}~m@EwmuC5?O$L1}1+<8ZJGUay}eEn8`^cl8Vm|ogeHU_Rj zboWSddDYlxKh`{2acxHfFoO55G;5pCpE=BkT~z^SJNPrVZMy0KGy(H@j|wBbvK;jo zs)u$yZw^17FudaZ@jZU$w|*I)zx^9D{D5Y$EY(`W`}ZF&{bOZa$s7KT|7O9w48_M* zmePp%x$@5By&SWW&t3uD)my`5si!^PIo|JXeA%$tl$BWM+`qeWnBHl4XgSOCQ3J+& zUgx#)kb*8QUunb7D-HSgw^mq^A6skSWT2{4tEC?X9rPYF3oxm+jYdcz zcb^AD^F8TFS>**d-~r|D!OZ6#mJl$krNP+bHc3wf_nigs925uk9d;J4aeuD0KiUHk z{?NDC^Ski3yY{VgL}Qa!c4C~tP*nk_r*or<>lw}G>s8} zdOa|_zsm!%^IP!6iQM>+ZD8Js{7*E`%;Lpyfg=|c@2c#h4G(M6+m~Q1+Y)ECVR{X+ zPCnZ+^J`T?ENB?174(qQdA8(5X{V3};IC-@1rPfkzw&SYUwGGkfqwo1VZArJd-;gt zc!?M!8lPGztbXa=cM7}r=QXoB7H>p*mq(VzC*w#XgkWtxsFrfJHd99Y(aPz;4T2k* zuT(cFFEUTmRXL<5F6GtQVVbcbd@+4e-tNF=?=L@-{MuS<*I%F?^SNnwjJ#EAx9@%u z$l}*)JF>o59=x8!uz$|_hnQ|HB}BXmedX?R7v1SSBC*_O{wOn>a=77`9y0gcbH!~n z%h<2o7*-j4QR*Yr1IwmunQH|4_3_UPL*^y882!f8!|U!7`xqLU9os1)9SoQv&MM^n zo@h1NqX2v?84q5A_aXD0UfB=;1o9Xd9mmU%k-KrMSH>acxNsi6rxh*NYaFPG22^Ei&lrxm|e zRv&+EhXu&8&*-mzk6-`K{|A2Z;fzC}hf@9c@#DO|%RJTcuCIEhq$)m@JJr4U9WObu z*Qh#Sf&Z>zLza@+mp#;YQs7a6A0F#FzE|E=BO52in(?fof%DQcc#Af&RLpVv6Ml({-? z*I2;?pmjdzoV)U9`+FM;4mTXm@3}Go6>uqU^HS^xD5^cT(Mos^xOxwfVl0Pv3|92U;lpVx>Kt8 z>{6chz+)-Ovz?@kJ(zT&a0Lo;`WK~;g`$bjsv;l#@4 zlx=2ys}wL_!IRO(9|Jb4Z!05rbmIih=kx-tbL~1B=b4$7JeQSYaBQD>m)MM7n;E*} z)v)HpiR)PFa&USOlkZMAzMjvS89#R=-p#$dC%hsHROvG6Y{R%eEnVIv1`N+wf~@`( zhkuK|`-eddN<>L6ebIUu|$1cu1 z>^SIS^SNC5y2MFVU}adu$;Z|lXMdf$Wb>Ixr{R%e1(4n^E}Pqxo+I~j@;R~{YsxZkeuErK)_L#ox(DA^6x1J$4=by>9OOO>UVd{vo-{z?fF2jNq_IcRP<_C z^9%rt1k84KHHle~@p^X(iFsc)aKPwW4XTJ;t?4tE)AsQ13JiDDD1i9xP%?~-^a{o zznD%HFkUp=UgtE?GRUX;aist&v7I$OUxTlL8@vB#g1vi(?ZDM)G<5AJHx|C@$;gid8(RwT2Cc6^qEQ?C_UF_x(5VM#!f=+gUW$SK%Jg+ z9gk|BC=GRKQ)QIWCyl7P{%-S#j`Y!xh#!@mgCc`N796bt`6`BHf-Vu~NbR(V1}2@3@B0*c)o-P&vq*P)YEmm|A{x5XZj zd+O=WI45nooDI2iNCkBWi(T=%`;3XYC_Xf_mq&P$#;NWVkm2K~w4J$IFUi9+48bsj zk~^@C&(-=%!n$#6&f2}Eo>H!73CIz9Bl*47@=thekLIxc86VoW_|O0Tf5p*$f&Th) z03By{y!-GGk9Qw~PyLv3CUa3m1N!oe+KCam6>W*N*y&kX^c=fBM?V)Yu5AWW=~2!YvNjV11&}E^$^B;LAR5D;3U5O%e0z!1StSdD;GX{TBgLEA${m}W08FBb!2_P`s? z9$a(TB%e(Y6?y?U68d(W^ zR8AV-LI`G>3J7IqBf+RmK&9o}A-+n;=YZ%*=WMAf(973d_FM)fl}9X>0N3i%=)W&S zzP7hs2gD%)Xtb@Sb?xj?G1&bBl&`18Clw0`FH zGd%3XatDf7y@-rBvwz={Qk0uD6*=6LxEe6Dr| zF|QuSvGIfQk!}ImThxZ>*ogR<^a2tyeJYE?DZ(ZC!_8e4vquIpu_iFA{ zU@YkV*uJ~S6RAUupX#2A@k{MeuekD^hTXTeW<5gqGv0Ge+>eNc6<#<${(;=NHk0M)=`d_%-7k;Pd6GbUaat?$N z`wpZjQOzhzGbwO)p9p_FGl*_>**&-NJ1tL9z6_WaR}&z`AWvguuEILj+H>&M@9`TC zv|5>!)yZ`wJ+`rn24BV?8BINs+OElP9*yiids1-~PAX!+-hR|9}rKPr$#7vJLM)e1nX>$x|hC`Nqs52iEYS&)4t@@)@Oz z0estGwdnc;$7;=fdn2XnYd7MkL;HO-a?)#+o}R)_y5a=Fe-TgFLY3^{{g^ zn;t&ZLmLo<&CNvGh6>Xp4>DL{er0~-W$mj0+LGG9Tp|o|HC%n9^6(nmJ7tj>R;y01 z7eG;`qIE`_x%;WIPWbr*1c^YEPzt{IiY2~8vVlU4+TjSfw1mNQk-SNtYEtqb-vL}D(@&A^ZOk0hc&<)y?@51cVF>`zxylrhrjz%H2(~EdhHs%`SicQ$1yT|Z9>)q zpwE*cgr0ZvQpZWhVk@K9X;E~1wxC=ozXID;NJGVodFdSC_VD?d`<%J%DAW41o=dn# zA$ygFczk(o>m1X*Gr#iR74PdfvTR|)R@-Z4b5%t9xh?NupWD%QpWFPio%4S4OFb)= zm*d^`lsN3&QsvG^%4y&A;CiOx-iCX*QOP8x?UqU=WzCkL)c2TV&+@swwa!vG$ls~V zx#QRDqaINQ;Iewe&#Gan^HINJPnEVk-`5UFV6D^)UBt9lWV!~XP31+gQB0(~N0+X+ zF;zlPcIWZ;Sue+*@b}yX&f~)bF|)agV%>iX_k8Zq!p1y+V;*9Ou+SQ1>s|C1gDev| zUypV~{D>g%O2~7&t3gyc=lJNDxcjtJ&hrU6b8@3Mp9__1$qMYa-0MVNeQxH+^ULyl zIgG5@xod;#zm#PL*z$O$qD)JB^3fsPd~bOEyTR@V9h zu%pP-PwhGy?H1hQOLXVdouW*htmbj{0a)JM1CC?FW&{{I@i>5fevkLZ7yR0P{C~rq ze-HD|@H2PW9{BM7o9I(|q#Vf1?|!bimw9s*AM9Y?+inebefH2BFcM~zvsL6 z<%!7hLkUFwpf&H8SEG^<>hV@ST6B)srrb3;%NuhtW6t70i|5K(L?;k%JqjS3N8IKC zoAWG#)`MmXyaAZMGmmh&%gDp5e~u052vw}PTduoLex7xbBAyBq`?%*l7acV6DXDIm zeCzvin*wvzb1@GrJW{g{!6%#16G`DNUOJvXI{!|0pta!!aX31TM;ItJSh1sna|Is9 zz5xjU`tuw*V#K87e9o8cjtbrdYq2f}*odj6e2%d)=IH&zI^h0lKrH7+tZL|TU(%KV zb7f2{y7U=yJavK?eHFM@9HDK<`;}jqp4rBimlw457=3Xt=aC01zSW7wgU=N(!K(Yz z5~!>_CY)LfcL-aNCvc68s02Mv2%Wqu*f4<8z~)m>XOQ)z%>ZPH;F;JeAaw#(KqmW; z->Y@90RS2wwFtCdTAvD1rS1AH$7Iw$CRn(W?ZP8GR$R9V>pS{aJW-Vu48LMFnAbKT zB9^yaY5*wjMA-mv?Gw`~o;$aGazC{GySb%SQ~q8ZoV^5jyOhPWJK=cxu0XX-`kAji zu3+cisyrQwd{w!4n4U4VPZ&;^eSyFJ1OD${`QP#G_yNG@xs&zrc!y>$$YjCH+v+h= z+TLB-_qXKHTRihtU8&TW-a0Q6bX2lV<)|84Y|!d_*Mn7+Eww9`-lhjeOdXgKPtcDO5-cNdMoHZ+ojHbMo^D&^w{ukov=p6Pq~b>}G4Q$a5SE(K1N3{YOxc2;vD zf6wnZE~}zfYi-LOkBqJz)y){JtU{M9)QfR9c=?{LO>VTJ)cmcrarW79O~A(l;EtK? zZb4Q!8zLRnt@f!3R`z6;Tp~2XVL_98Hatc&smDL1(_xXbh+~^{P`D3#sRx5;Pz^d? z%2d2edTHZGF2~Qh`?eGdGm58bn^$Ji`M3(j3)-Krl_!W9JLuta$&e>VYi)UG4iJwR zx{a6cV@1E-JFFY5ueJVsCM|A`x603HwOhYVz--^0Qpw$!7s1~a-)6S_cxJS%8SJrm zBXhn~iXpx`aU3?XXfGPPJ08)mi#Ia7C)xI+Jpf;pTD1hmeVy}scr|nxo0o-v<*{1A zF8FDdm3hQkgZV2S{vCet4}XsT@_YXgAKyRW7-u@3j*lO|LB{(iXwk9xmtO3Bf`E}7 z2#q{cqwa`7x(f9>prQsqF6F7LWcrr|iTlb4Re`1c1jwVLo}AfN_27@X(nFg3&+>+O zke``yddQ6MVdU@UY>&z%R$Q~aBJa~-fr20T4pqUTsn*m3n1t+833@4$A(rlr2UJ8DjKefB$biOTKD5Z#v{Ii~o! z)QoK}@P62H+(gQ)V!r%MFLuEy0)9&g=I^<5#Y~{6GznZ;_WGIY*U8C!n7>WI)ZGNQybyIO%oGd$SbL zy>-ZK$bjSuEavrmJ}*irX~f`L$9EGvST6pGZ|@a!fJ){Q73^t=nqB#8@{0z(j%CdA zJTF1G99PBT$b7)BJcFIP09tx)ls^eU+Cu+d8|}dpU2JU-im5V{85^ ztbf6yeTP5$*{|at|Mq8iv>)L86^8`~{q!-G3V9b^)!zSqUfg!=k9t}dPeCVrm8)Y6SCmR5}9K$46!UTY65v z2bO%LU(uhhR~<`rO?list&`}(PN}$G`cTr2`d#q=(@F17dZ@v!_vxHSJ;(gaPN2Lr z){VjP^G?>11o?9U+&1agvJGZj+`{@z*^THFI~V&-5kmMX=(Z}VV{ ztjfn@v;p;m)14gZGM*?Ry;3VV$ON4OmyiEN{++ODpX=8Znt}7&K|nHVcb{iyfdtUb z46)~62>~DjCsWWXP~vMUI&@?ZX2on#$5qhoe;W=8&P>mY`<~4lXYfGo@`_0ou~m-9 zYcegS!7Gzd5%<83ajxC~95Y5}S)HvdkdQm)p5Dg}xU{+sC-1e^_Or1p@>%7TUH}FlDoD+2o*j6?;O&@y=am`T zv%GK=+Vl)&3`g%L+}G}~xr>qnkh{ZjTly$BV{q8`*}O2;;O*GP>*;;Q(xoMTV0gt0 zIPewk@N@jefBxUl&VPXQU!WZsU-7`>ct2vr|`=rOphc$k)7|R7r z2fsF(-i-(u*k5Pw8-U)%tPsvKJG`IM3+4SeUznbt^mr_f8uM-Tj}0>1khLB zDw0?F?1lF>FJgFLZS3CMjA}DDwcYF*x0W$_dF8?GG1qK*?NWXy$lyM2JV73)X(*Z@ zZec(j@_Wj%q0h|QmN6_J|`^UTC-&$a}Y zySMXvU#xju0ZqOxI=}c$+plsrKWm)VI-MX+k4=7JB;o*E&;C=zo8K$LBrz&5)_qK3 za?Nr1>^j{7uyN0rY~AyBjC$GAQI*Go62D5;tnWCl z6N*9pRY_di!SC*VNg1L`YCA~VuWhr@*fMWK=PUTV0tao+C5}({B>|BxUuaB06->&s ztb&i@^S=Df&t8m+LS}GV24RNB>O1(?|A}AymH!PtdH;%jeuri!fQI+)<51`dJaD_U zF7_lVIfbj78d3LI)*)tYC%e``+Z{Lne0^kROP z_ljJyAuG@4^@yTMPw4Nw>s5J)pHmsHS3I-Fu$9YsMcM1R?rvlUfZ5vRn)F}~h%TjH z=v0ik(p>4J-*aDh%#;?agYvoF`&?>c`sgk_v;1ErpWkHi6iKb2mDT1 zDI?x}&+V9PallVrW?8|7JfX6sehy^3DK_fk_(QGGDVUD7ol%t+Pl$>cs(X1XRPdDw zyaJKFug$Nv+wiajsMIjPfhRLXJs#l`@9r_A-w$$>59g6fs|L zLq8pSwq&K;0L)-~uDAIBS?vpc{*Ql(-}%jdjgK#1f&OKzEjN7p_zCcacD#&O$CX)Pya2y3zYcqZlS;r?mebk; zPD@d5DTgf{rJs@4ErWF(Til`Uj%83-f*uO`-M~Tv;3wQVI_*wOeoXI^o++qxWZjvY zt^({Rp1*>lo}+yMMLP|{fXR2H|!08~V(ep7d;uD9y_Gh;l3h#C+<$v!+V{yq-;fQEAd@b~XO;XM78Kdbg)3Q8H9sta8&6@(>hcJut!T}nCe#6k=j4)gSM3oD3yOzeDmG>DD{_5 z57w#=Kv%F(DSz(B3VO3~sB<0Xkf^l#bL>PVaJZfeexY`v`xckk3zGWu& zO<*p-6!8`|EQ(Y%Gp@sIdh`GTy3MTD>HRbhODcB*1%X$rSv5x{PkQVut@w636D#LT zvyHF9%ez0v2F%Jh&GAF$jOm)OdJW{Ex-SnF8L%^Es{*Dxr_yVsONbLp_1&L4JzL#3 z4@xTP^K_UUz}ay$!+Cy(4=-QvyT9?T@%h{T3iR(_ExcIA;{)Em|2WSgOFHCBx53Xo zV&8z0V3Y5gsaZ~-`)&kmb1vn>IQMYoZ|j*4D`KgV-)1b4x4GGm!MSb_P~ooMmvKiP zd=UMQm4e(EsC=5TM$6}Ws`p9Pk(Vj2d18iR%0U3-PC(|R82iOTRk(@D@)&c#Ht$l% zh64=;8Ug8iE$_lr+_j(c@)#a{O**Vsj_Y*}-Qy9ZC(Dp^*;*pZxge9wvk;D(stT?UUlpLf zxtK>=PweZdiryKiGLe)Zm23O1%xoVM?qV6i;!LG112Gv5V`9=+u{VJ0R$Aze2t~nn z*8)nrRg;S_n3l^YiJ@t{rJBy0XyN7TKXs5cB zPRSP>ucvg~JJFW_C=U3&6Mk=%%O0D}lPlwJ$DjF1{#S1i*RM2TL9h3zg_}!^%%fG> z6)sEXypI3N%gc5@pC_tq+S_NbyoD1DKj846sF&# z=OCAx^(x&ogeS`1(-blPu*|7|pSF={x6yWNkF)hflzYTEzAa8o4*hssQawo94t=flO_zq78)+=tpFn#j-@WjA z7)*vt4+T2fh*3(9mix*8eL#Z0Z^L8l?%S4XAUtKOtu}YWO<_N1HqV6|pl~JSTT6dY zZuIA^Aa%@O{*&41+YvkUX1(F@ znz_AhfRDF0hw*3+7~0&NU_(H95BqC+6-I280+`&TI{!9AUOU6|_-%78W5ULjp0bA> zXue{=l19yeett#6clhBKe}zB%>A%OPcVBVf%kYRA-oN{VW)D1lA4i^Blh(+&-OE>I zKsWTuZa(-qcQ55w&T$*3Lok?MfF#Mc z_`{g9*VrPa-`($-4=GX<02u8Cu+G#w&kz>U-#PZ=6<5Xiu;9r%fRufna&7GPoAgMY zKTkAwG*54r4_d`DIybsMr=C(p3INaND_|YXDIB8h0CnRuIte8EJi)u~9!8G1r2Ax^u7w$Q!>QytN7J3aqNOF#uL9QGs8s7wNMabRc(#KrJE09e~k$67^{kFSTmi zLr?*0Lg;TAs5k^f&vE->H(SK&tjr z`^@E6{lC=f^czUXh)}v%Id=-Z7#qFrK(^s(<=t5ndg*-?FyEigGE(R-*LQWYyOziO zxZ^hcfJ^uPHejESoFMkIw#}_pFGMdov%{TwcSSq~6T5NQ`nQL##gf}kbyWjR2Z9QX`lNWpq4i49ME!^_Im6`Juk0uKb0JI0$$_GovsD1D(&y)ApfS`s>-wS z)>x@$GV9al=eSfGYw}1VTzAU8uzRpI=L+nN9nz)Z7oVCNZ@nMt=F8*AlH9upqd-dD;UZWqVB-O?A= zvEw%HZ3@T0C}CSX4mdH8n7VJZb5$^F3tn^ zot_sR*dKF=UYAJLa$AnkaU5`1yt0hpC8~CmMR|LAgN}yNxt?{k);7y>8|y)N6*TjH z%Y0+mr(rRtKXF)eZGHyKm!-c?@D+2>9Mi)J0%2T!#wfT0c?ux6CpxiqJKllnv~XK% zGsg>Z=ONMXF+8E{5kAL1_s9W-;?;d@5{l22 zCrmvy{JVPUs~DMv2qQ2{{lew16#%~U#E8`=Ou3#heNi{JZI3fFcYx01W20e~-+)G* z@8^h{%H46(u9r;~c8VnDtiQSC%&l!K%+yZD-}dR^AdAd#qr7UnR~xi~ujLf}Gn@34N_c z1zg_8R@A1@puYfE6fa!;~n0;dzXUlQb(n{xJ^6; zRh(i~PBqRt2Ko7}Jf)4hMe@jAr_AAYC~!$$sN{mS`ND6BRKPX&JlB!9s?i^ zA9!vwSA^Nr^Xk5PV?NiNyAO~XxT$fIwOk+Nrn(4$kZ;xZkY`%7|&~hA2 zFpg` z$TO7|_}FcRc}Cj0V*a=3@ZNz}cwRGRYr5ypK9|y??kIcFCgYx>{0SbJen$guw8)_M z$K#3DAO1Uj>sSB3`1s)~%)S64zUlqPPiV&rx*NJz0otqHsvWsZn&Y5zH|2+(QQ7-* z##qJt<6L`r&oyPm6#5qap5%AlVcC3NLIe=IHz#i_53d4k>kfa?@hVAUcebfVnSFXQ zx^?uNE8|{%ZU>LauOlvXZa7$=xl)uY<9Ih;dM?@XhI5@V5aWTlOPkAbj}tUzf5&Me zDW9_Zt3f~d?M^Zx_0$!}xvxmV4G00~=o3^K+VBXEqqn?mOJlSB(U935UCsseM9`ew zoW0Vy3pqXIv&}|vON|XlUbr^7cEr7m2;&)kKt4XYvD#w^yL?Bxzd9`&hRC=#;De{8wv3s+Wj?654 zFMr20tLT_lb;cq0Q@w?gR(S+L+!fFEJ?;j;6u_yRv`u<{d7T6vu!Ce(hzbJvUcNtL zS9Y4zF5Y#N&y`MdNk;h2uzOuAp3**WyHgPYfHlm#I?M|*c;6u)?7mL^p2t`diM~}% zv~TT9e9ME7LjxUuBm29cz;vF!k+Nnl@#?VyWv6&~Upv|2OQ^Shq&IMSG*91Evm+oX1 zL{@3NvyT+J)hWs6xZ##g{9bu&syRQ~223zyw$q;JaW_{>nVsNjlZRI)0GB`KJx)Ac z_IT07H!BgY%JnLgh3B%nZ>vgNf7VfriyBpxCpy2^@Et8@G_KI~7^=*`+r-K?oa&yg9KB-ew(oi11FZ6^oI5jPe(7f(2^! z!6IQPiJ);uI}Z3%x*^On9tZI3$3!BcK~fF`phjOLNFPWfdNnc)!Yzz z3tTZ8_puX?gpuVLfNM8sUfKrC2qhBoW4B*=v@SxLt#knWJokJhBSt6bqdTOiB%rbg z=~+JWk`)|)xx*;il60EmKy~FAis`*I3M%7qP@t8c^PYKLpY_r91NL}XZ9<3n2_sMP zip3hSTox}rb1(WAyVX*tWSKcWQ<-|lK_olRS44*Qc+WQTI0qnZIG-K4ZF6RC$5^gx z*mqU=I1*@h%5qGWQX1Cg>Dz8A_S_^tbOT=6fd)r^euoc_&-lHc{u})8i@yf^dmPq* z(Vm}t`lYEL&GseI_?!TYd4^*STjZ*`2-}b!ul*bzwkSvEZ~o0Y{MaMayw5D_*3Y@? zvk&?&IS}!g6>wreTZJb8n7jQtPMjk)HR!$O#5{R`z5mG{{fv-Zk|~=JHqJpZ2L8^O|ZKKsmL)q7uOnqrsxdFE(x%v8#G-tts#YdLSt_veh);W6TQI!|;M zD+#mA9{Qyn4?O$T7~X&~$iN+7cGHg|HH5XR{GMSWF|95Dy+6-5MS?&Gua3CKP{cWf zSTRYVz@~>e=OJgh-wa8|cD7;0h=rVbfPA1EpZPc%$C}O9J0l}9`^hUYsqa~4<~gwd zE~$7}ZYaLUG38aBjx|T-SPu{0)E5~;JMcrcrvjo`PtYsV7-jt#W4`Ml)%cc$T!0mI zDnF;C%tYk-)QYIe)J*V-NSSzgUsdLvg`~ev#WQ24XrPdYd@zjJ{GBbcP?CEcY6))4 zCCXM2@D;dRt=Fpsu`e}LR@>dUa8PAMyZF1_g{VSZ$AJZZ)vv9;{Yn>LfyFAOjQgp7 z@0Lu}?<)Yk<9D+K94im1jtP6YRzZt*Gsjn2%Dfcr;|L(GoB1T$uGZKr`(`x(0fI@~{_^`GN6e)a#vyW>0b{w-Qd%ksd7 z51(ehvU;eLC)i`DZO;3)_DbxB-k0OVWo0{NP&|6sNA;euQfE4b#Z@G_A?!rhP-5>^j4Wr&1v=CbNQ8=$}7V< z)al^vu!ElStKwfYwJ8fK@ABPh#hom#0uZr2(d&LaRGy-C2Y%-w%Zu?}v3)s)!vOcrp5+jn9=>!J$ zm>#fdtS<`QY>TZ(%T+VUKZf^)^IWMAiS`%{3Vgpi<4|{LX1#Mfyse#tWbv$%33jjJ zqLC=_1hu2Q>3Q_@pv7+$t(YE}Cus7B!~`w6hSi)N#Y>)`akgM2W)7u4cRr0ASNU5z zEVBAjzO&5#G}}8&@X22tGX^dCwuG$iiro2h?}yIUSk6E3u+RAXi~ok-{*8ZypL}@2 z`}atf+RMwk?N}^#$6*N1%=sK%q!s5E=^)mwLcS_5bI2S3=rh041Tv$%tKuL)LAw|4 zmXIWQx8pyzsJ=4HVZ_#*m#%2yr zPSPz`f>@XG8058<|1fxE4maI@x+O!)2>ZtN@uB2ML^4 zgBzMXZh?8$qd;A;#~cqXnhDB;nKw(vu7kda;2v4V)BVZ6X&n^-8IbUAv$4L%cRU`C zxg>JGJh*$V__yBAaBWWT5dvbBwG*?^nz%B7GACOneBbl=+;%DOF2Xxd$$xVnSST|{ zQ-)Rm#zE5D-U*OeY<@Mf38X5($0(lbP-{gm?q~0PE?uaS<@V=y6=PR?s1{UJe%@d4 z>swc4?eSPAm|otD1;X}tw)=|(9@9#}IFB!HN!EVqX9nk72G^CsN-f1q6Oo|2@}jZa zNRS1r15%^D70k{tWZ70t>5}~D{sk}X3;yQ6{sI2{XTOe*?@pM1nTp`kr=P%Z%oHe^ z3x`2D|6U2~Y7U?0If1RxjzMANjZwM5earipXZfnYp1V)akhXIayz$$VUE-aJF*+}X zW&S;lQFr>h+wQRwdjYq&W#{$tJU4?aX=Tz*?Q^!1zt=c2E^GD^*RYdG$6gpi>17&A zmo8qw30mgdSUU%~{7TVz$HD+{)a>ZZBqtN>Rj* zalVo&s5LQ@*kK_oK#}Fd4z(b~vUqb_ZuYZMegNia>Iovxug?hUL5rPTSnKJ4UHZ*5 z<3Q%U54%!R?+>^0(H>~1trcJh6~kN`pZ#ciFm$Yz9zW{B-^K7s9=I)y0hhYmeLKq# z(3Blg_OOK26|Vqxo(bu>F(c0CN>9(z!~2sNjb|R6@jivIlLw0GNqVqQvD~TWvWY`1 zcL0~zovFMnUk%qC6Mx#;%-6kE7w~6mUC~Tjuv-FO&Nhe0uj4fAstR3E%$HU&H(}9u0_C&xTK* zeu4wX+`$^kHoS8RBwyOG#rsWV=GZ(^x~okC>NAg2(vOw$HV#SS@#1;PpaW*x%*lC^ z`N=H4gr863o$ld9;(bB8INLBk_$HkSGa zczZpcKwG+64UfELKCIz^PhG`vc5wp6lKU)!Q*Y&XOg(JaVzAYS;c?Ji_B_ALf%Ekl z-d4xl8G8Yi!<*XuId_@PW76yj+_pLhfGVG`_YT-3LX5Cl5Y?KsD$U9YQRG@#V+wFs z`SAqgv)345vI4HI3g~D|(6R`YwH1OXKEtYsZNqxotoi_t+M*^uxFzqkM3x5 z*H0Y}{Vm30fX?E%x9GFcU|c%Z>L%y=lrH&9HC8HAm>1dmGw1bKI@ISYzRTZP@!j=Z z`+BcnJDPRi`~io5i=Y1bzrlyc4|u+Qi*`8R4af1ohxec0BPgGFS=*uQ)^@1norgQ~ z^ZdCQ69C&%t@d3(x|Xf?sL{I7F#A!-$nBZ>e9{Xj<2L$wzg{ct&1_53FgJPRouVKo zeP|x3$A!HY%*)4d%oGNyRJkp?hv~Xwck7AFAEh<(Qzakt9xgZaXQiuv`(5GOE{(<0 zxx#57_?=?}c@;&=;W=@oPtx>iq_eKLo4?xUYOd(Lxnys=OCpTM&uM4Q^Tf;XK!4WB zPZ_8v5KF@4=jCZy!KP6jwTH$j5%YyXL=kBpR;l|JhpaS`pY+^IU5LXcjq2D1ZZ*GW0O0OKseRUh~LytPO!f^6(6w8yb| zUUK(U-k-5q+5Y6EO^Dm_5*}!H4DSj5o@1%>%W+aZPulWt8~u7cDVb(lY}D|~<_<5L zW0$XdZu~twb}ED}0?Wd`G3Rvyc-NrPNtc`EF2Mn;a(*6<7S?fk|1yRP$-5zAGUNMd zjw5%??Mf-m<_yEqC?;-=74u8O6EFCJ?|=Rm`0d~LSNMN?1Dvnl0oHML;PL)F+T#N- ztok&W+2a=NT=Z>ioj{O%erd;M2=v%yMReXhS@XW+!RTPjB``n}4@N3{KW8TJ{JZ-( zGgVK4Kc43LdU~zQfC-=?W-9Wpt>Z%)cCTE%PB`2QZsUM;5Kmcxxb#{K3XC1tXVyLE zKn()U+Wx{B!c3RomR@3O=LJV&jAh6zy5Skk-E zb4e$zldro_h1}h!vbO?m8~y;$2peRsN%NH|hiRJkRbfWlrln^?hSqJ_kIDgn4b`$0 zpw=rlh|wdveX~-I%C88kjHblPWv;F1G7-2AEr$uGxkOeOL#Yf;2Cq2fQsD#$4#0N- zz)F=ZB<(j}6+M-rf$=!Q?9zJcKd)01fXW*VJySzo?b=<@POCC`+Gstonsi$OtUDxYz1 z^jtO{fQ@O*F+?#A*Z9WSuAGngqWT;@a$AY#Guw*g!Pv_Wd5U80sqDGVldG4O$D*3k z75!8`s^ZS?Dt_H*wCfVRl+QVMn&s=AKCI-1_C@=_ysOV_Iv4=YUN&&@S=N;*2NTIA zxZY(7X6YGYcb+wkm=4^|ik1rclxH}0Sf8ytO*)@cS5#$a`CJCmUX!2mwQYotRAz=-038UegRb4#`Ssd2e5Jo&HiD#f17*x zyr;}G`a1Y%#p8s>sky;=ydMY;Va7J?fNBLyXT9P1i1x0w*mfVccWXNc5DG7EV9bu; zbN88V@v_v2HSYO*v&WoY;ZU}bKP+B{wF!(>|EbPW1Cw>j8VjJcJv({TcaT9AdHftY zXMqm$cx7xYmt(C>`5$e>&`+xxL(0yUJ}vB5%qKpvg!MR&#l~kNf0+VorWN-)+h2v* zxI18dVFq2JPdeRzD*ij`$~m}r$~HVZOWNnn9#>T<5+w`+9A27H1gRD?|E>y@U5R?B z&|t*PLZtHi=vr%h?=wMKJnxfH<`(`NLB;LS$#J(-qkl81<~}G5xIY@dr8}=Gx@p~t z(z)(MCkhA`VNjJDbzgya)}`NT-3%Biw=G*K{44`h_QG+QS(f%;joI#@(DM1W3h?n5 z^0mH;CE!>}IKk(&@lL$T5YV~Ev{6B;2FgV_;>xqYm0v5x+IugKtO^jVyu|Iv@+%%t ze(fYw`FG`^?KyKiS_k|yUhG@^_OJgk@cbwA^E)(i*a*yh|M45F)w8P?LHn$2HCxMB zl{cBkgv+mtuWF37?z=gW0NMtSL-vEcOe#0{`)sfK3{qEl%yN9TXZ08uIk3`GmGj4d z$nHLAQX4uth72&6u7CtPQ(1RB^p@V>G0IElJb(z-XmMoIElue=ofoQ{xs5qjG#68r zt?gkNad|3(wC+3`bmygOX7lS@zbS?3>rR_BP)l#Py*PkJxw zM)m&j?-h-!IjMBH#)3QTA{=eW97MeHtRjq_fu@X84al9M+a}&XtVt|g=81{B=fcoI zRDhG;g;42nioGoco^e^!j@B9?Ys30i^`ncsmj@cS0xlkyyLDbJ=k+{+*5=YV->*lL zs0XhahbuTW|b=d^5f=`cmOHv?$b zjPmQ90^~7_E4?`LE&#h1ECgU!V4Q)T6Od-s`pm1Olly2`hr}Xwsw|!enw+Q4U5$Bl z>v+;mmnCfW*d?70ndv>to@Y8{oQ(*R9*2zK>`!oFRPM)Sn9PjOdp~p6<@%ny(Y}^F zTLawJIbJ!}bKF=VbF2&RsLWhoD>M3t`tnyi@B{qI|HMy!?O);3<1_l}x3Cs#kJMo4`f@M=Y7M@(o7mXLwdGYw3ca0TJWYo{J(zea}=Gc}9 z$AHXC_tX1SEO)|er3M*v3`&QG?-Z}Yu0%*ikLS@l&^vhnhj(I(pZke$#I^z6!jO%z z1rm($*?%#B!&orDTSK=!lY7!Gn$l-E!LRH2&DhLcV%TNuWm$6YQ+j@^`JCH%P!?yz!i8?>smN|c|s{t{0)Fn8ru{JrssG;@`=x22vd5^u|G_cY8GU_-{LB7s#O zM!{YO8w~(p$4J#N@$Qw^D%n%Xpz1lLPu1tR+Dsb+AdZHUC2lP*H;Yu|@m#C)qS8F| zV+E$F?BjW9nXLN~K%_^DkIv$&_XSqBx`%FzIOS1a#wG?K}<_!v{OS3RBmYV&sP_1-Atnk65SfPvmaF%&5x@G@luW za#KLSMg%4NaU3Jx@5)&*Gi%fNa1OGHDU*0q+~#+|EQoWch5%TWSFW-5X~`Ohp>t9% z-7>QQb2@>!=4>m@qghyzNlU|3fM=gu{?!sX0389Q+OV23 zAss82m!>C-_l<$0jn`Z+ZXF#bI5unNr4#IVxq>Z2<`4=@Lf$NTPfyH=uyUEt07P=Y zL31O{RY5m_x?y^bwjk{B{p^FBX=cNUw%+4hwWN^)4+h_qp*R#&?nK(Ji1jKAisGPbiPFp*~BgWSz97pU{1qR|fw)SUlkTH45n`viu z>*F=(-aJoXj2&%lc{B3w6OQ9}nRGb}IPHncN*E54Wasl5p5j4QEq8KWerF7x;+eT?)X9kN z2BSbVGXthE17yr@_8(Y)g=HwqrTp$V4#3yy$Si*hse4C9A7{r#UPdkl!1S=LXMM6m z=%oYbHocE|P-Sy&js27FHt7xe0oNm!MGedzdMZP0_oe0`4?c*K2rck7bsO`V& zH}jz?9krSgAOQ;UMqRe^Cx8$p1eWgRz}DABmdy}_G zM&wdW$}Ny#sO`XbrH8^1$2wJBJ(KP2mvVp+lQr5)_r!;5oL}~Vlgn0fQs4aU@E;+`_Vx61} zIiT~m;_SXG|89A3>QNd`Hn@2%sq79Kg>%N*HK{enh*mtrbidQpI>yR(OtZ{1UtKy= zjE}6)PHTgi5KPQFC7Xhli8sAYQ!y-Xv1M1yx)X^G&(+MZoo)2Cyi)~`%ZvNAZi-qr z(d4nd3?CMffVcdtp0~Uz#aLNj3Jll+nfI8K9Vh*jUZpy- zo$)I0T`5_9zZa0HARRyrrnuhb4l9(d4`l2B-1-DktGc)^I+1ECrqE4?uXoeE|(kW20@X=*0b* zG_mC!J+ae0`6Xjh_ zDF$oAMww1uAImLcCn5LQ-SIF3&dAZ#J7;nS0Fo_2H*0NyNnAlO^Cj1pF{9JS>BW-n zFeU@U2S1>Nw{_Azd1ch~e7?dqSrJ~HZLE-ex*8?Cq{nh&j%9i_t#*i1fC0dE_FtB5 z7Cg`Q9pfmt+}&;wkUZk-Y=TW69xa#+Cdv63-nG;FOuNPHWN^siqVq+^Yon9xan9Sa z;MgfRzZ<&;vu+9=9R}X44z`6njMSp4qsCVUVmq(V%sF)dE2^36y z4SKs%-qn^&zQ4Mve%{@m6T?~q{ECVhIBNasoya;i>(qCvE3FgF!Bh=&g~C-iGF_6+ zyaW`#wJm>%yT^glKuMDd`B#&p>N~&gn4HJr$0j3}r?EXdsM$9JFik4u7;#hAxTf>Y z<8|X*VLH37t;D%ANd+R0-xPrA!LX|ZrsJM{(B)sgc&sW=!_VlPi`eCzZrYFPZ|$FY z0eL?2JkYk^eLu(86R>~9qkWHm{`)_}@Bj9{!>13gIG8;_n#04Z$BO@z%|>+At2+oU9K8dP<|fG24&bk<|bi{`s$Q@!VvE?`>oyuOot6@OQ-kKAr=M2iCk(19Y1^$G)U~x5`q< zyUHlhw!6oYRW)DpVvnm{+6Lu2E|2BLoU_1OHU==4$T7aJE=_loa!+ZYxnA0@|i{7Y6`m|rw@OTCkMF5xzQ+2=j9eI1q4+E^Q(XAVUL=?-HB%>#2Mlo>>E zCw8Hg7Ah`fR^AmJjPzVF;WVKpPw@QRfw|nb`ZC%+#K@Tg(gT@CIcuqnfg^*0-GU9E zR?#Zy!-}R#7~0yh2xd75YlefM`CaM6vvr{1K)VQz zNvAFM(^@iYEkTVawXsZj90$->ezAN%#=qR1lXR)*o!&4#uw9phfQ;Ge@cxQVFHii% zAO9Nu<}ZGV_m5Y=pRs|&9{A?NPbR-+A~ttNgj`%fR%TM?i)G#puCBl++n(=p7pf?G zo&O35yg$Kt)K2d+7AVHRho>|H%`^5i4cRni_j3W$TV?QAFx1?DQ_+t4;7gB~ZSMw~ zUS8%4Gn<|$Zw*gUfSK8Sj-xDv=IILnO2&Gs=5YWovtcHi^E@wMdjq9LruE?t-= zMc-s#d`@rtRj#o-V!be0801Uuu;tPr;KPg9`wkjZr-VF@tm{ig20yfi!L4tJ-RGE6 zzBeBs$VYnVkGA#MZ~%Es&R8|LJ2ppkkm^g8<1DZ9v%Aj~tE&8@dj;5%9@WZFr889* z@z|+hcb{mq$mE_^KMA~GDGWx1$}pO3T`%p3HZTPM3n+HYEBaJoFoUIwvtsJ3Ps?8S z4UkoV+lgZLq=#D^1oepryz+AKXJ)KqE@r}tX>`ylAj@SZotSCwo;lBxT>JsF&oTMJ z;=gY3RVyLO;c;V-Q&}q9&-_~_hFU@uu;((f9?byEbg24~Wj&wIiwA+}$L&~ryBiak zj4%RVj~@lY8yIvtB0@aJ{Lb|;9k?uBez+5Y+$S9)rfUf7eMc^jgVtBg3$-#?=3IGV zdEfM&X(&DLae%Dce$9PXfV33oPCMqQ zE&TxXA!QKvmCH~WcsKv~dmW>T0U>p`hxcnGBkddb=QioJ%_-F9z|H%}i&c#&x0mOg zdR?E-=SG)HJE)Aj6s%U_{LbsM(KhK@J8CX;Qe&>Vhx^Tas&r@twz&?~$+O+kw;e!N zZQhSOW4STu(S6&L)yHl@Y~wNjy7WQidbXe2u4mlpxM*LP7Tiwu+_UVf^juXY^NoTn z1+qFed`%7*aKgEAR-me^a@SrvF!M|BeLCT|V^iq0b*QtoojG_SR*Llwz2jT^5@>MjaTm-hgqa%z!C8v)>e#EUoL7s z-!ZeH=aD}QP`IBgV02z{Kf~iV#%EZtS)MAjX!jGmqclA#y+3grHh<@B>=TqZpc^)J zIS^j0%%K(D4o?38Y)2i9n4)d~j<)SOwASJ0_dx$A{N7Lh4PM$m;XLEK!e?Yc0OvlecJ47g`J8^o%1xC5fX$=8N}7{ScUq!0_u+*LzG>(%KWFCfjJ`zg zBhx#b4N80v0E7Tw>>&dPnDjZ=K(?^I;kEXB549ua#qjy4hNEZeC7W-e!4T-aC3KrLbZo!|L$ zBjLqMZ56Xu;PcMPR7I)Z)%{fvb+v#hz^(jx9p3;DI$qXY=GIb5YLw`+%%8eMtZw#f z3kxbPGq)`(4PRbf=6tB?03zVlj$KGr01;NlGgixH`5S*f6}6o(`vL#-kAH&S|DAt} zZ$7@lpWg-W@P-c`zKJc~BS9a^Ce2g*`JH`WFQM`?&#P)2D!J?KGZjn5%`l(b z$&KxKnlBT`$WdV`Us={@e64#2 zjd~cjDnprPv)!!ME7`|7TV-FZPim0MwB)OzKevl@xsE^Ap7m%9kJi2!lT zWy9>Kc8uNsEcn@Vudd&`&Zm!9FWbthlo}H{PfM?a##F*I5Nlu?p3i-d96U%vv9)1A zg9olYKsN{M`Fy@PS@pOe{+|C%w>Z<0Kl69m_t}r5fpeRzD-$wizeWtl`CPecfD!Zc zmRD@I&?@&U3y=A1_h}&VGiy?YXN&6^EIMA~{`P%B?f30;;X3wy)c0|j%7-ivE5*B) zJz_Vuc$`HK7JB)enE~e$ZS3@W<+J5{DSwQ7S8KcQb@@t#8C!O}NA~sCey)63)_``v z(Q)=CGGh*V8iEI7euQ&l@dWQy>b+0TN$eE#*=Ek$we6( zrblbEultE+U-0SW761LOejoq!XTOP$FJI95SGYT#uN@ygd^7VVr98?d;_Q#|^xZO* z^3IwA>2a;*#g%Wn#eBs$H?EoE(EztNr}DznwEG&swD@PhJ7wmM--m)6JGaf_{Je|} z^AU~JF+g!X6K;*+VK;Qk`+UfooXdkVdn}P-#0KSAnUxXE#(FjPVjip|t7_gQA57)$ z*iLwu{TOFJ^7GZapWlzOU~|`R0IgjXt6XEi$V*sZ+}qfAIo`*vpLjU}+{avE50V<)G=^M1%c80+iVs-Nt-2!TX3{S`TPqfO z2a0OEr{|mN?!`RXc~N(-lbO@)owT^-|)qpx|eexs;CjywXwuUOr!W zW|*Ez?_7dBtaim~U$qZ9zG-#b2}uU6mDk~prdo&6RFxa|@d93O70h>it^o7Zvg5k1 z-ZwKFDM{Ay16$)&U({l)th4++=G@g|$>YG^SFr?@aM2hk?w9wl(}JJcg|1bd+ULfcbvq^&k7Z&1o77_qRhLxE$t}>fT)9ncyY+G~~lHU1Xei9AM+dIiAZvQ*T9n z*0!*6yaPIK^;64X(D4>+wH;<_GlL#Zyw8{OR(A22YdzdYzTa#a(F)YGojf0O4rkw3 z{&O9`6$q}Jbt;pFw@Sb+#u6>2eq4@-yc9s|r2ud*|4Og?JU5BRu1M9RN{338S2Sjs zrOu2>4zW@1*Z|fpjP8)Jc2K`pWtQcs!cPG+(dEd8#a4Z@6-chhysEWV{e2_&h!+Fp zE@5KtWuy{RAZaUA7Iw5u8_SFMUB7Ta*HE)e~Nq$`EO-#g15uol~bM z1omk4%&s_|KP)n&&;Dixcn^=tMR0YSnX>`Fdw83tpf_x1NoIf6uFSF9$@@HKFwUj~ z&hvGAw@wVm`&f~f_*Zy2zJs6Nq8;JgK8_c>dwGv2 z-lhkL^X%#PGfz~4oR!;}LpERO-3iva&RKUKJ9=rk)_uh7wdwr|UL8R?;;Gue3biBH z+mU&m=3L3P7{Hz=C(yN$Hmo+c;WcJ3>e)0hhx%pUg`ayP5C!#%vBoWa}7)|s|+scg`3KhKC4RWMY6&iq|dMsm@59O#%Xdaje>I+Q@^j;*Y$ryi0cH`nsIF}t=d6?4o@1~Jf?U$t+i?*> zG!gP*I^BVqyYHBH-vY&V%91Bp-lx}k&H(KEnDsgw$77Fu;`UzRJA^+OKmb>(isu7= zm-kkOrDna^Miw6YJdf?;@wlXcP<~|^R-Oy3xB6YjLzhyyk5j<)iGX77;^lmQY?^XE1 z9StjwWOY?@lIh1ff@KKv3432u2WY=}a~0RGp0NsOu})GMzsXyP6%DxWd2v57wzO*7Rxj9tRSZVOSm)Cx zVvIo#OPo8Sjn2PSpqCRm(W==+khZqYvdT5sb^x!>FC{8wOP1TTCGgDi_+~vaK(>TM zsZ_^qi`CZ=%ar-5CvR+VTmY}*uA&}_B=b0XmmaoFXfqfx%=w^5R=badcMYUZX?5c#4Tn_ zf%1|n4Lt)hubdM(FIzAv@pR7Fh?9El=k!3C*^G7ReZ@OP{UK&DHY)i;&y<`oQ#5}S z%yT_c_*;iJpZS#X+&Fh1dDV`0(b=k1fC^ORd>S$) z<;|3@kun__m#4cn?~I0dHY7m14Q=hxa~nGd1E}Tas7k>>lh2iBZ{=%Z*){oS#D?X2 zcc0nYVKzN*b;t*%=QgjUy!-TsH40m}0+bbx$78ux4VFAnfWY#50Z`y6J0+u^9lW7q zJ~!@fBX?u>NFTv~YS$^lvo!S1qDceqI-a1SFK=ZPxb3~iJ*orUVPloUlg4?E+04_J z{YxV+`@N6D^HTnl)4ng)M}ccDu&xh4xIh@|o(cr>Sl$_Wsn-EqKyLPh+CD#AHB51_ z(y35e6{n@Bx|%pzz9QB;VsO355bPzZ%HlReKjJ}ePGQ3T!~OXAuJi}@b?#H zEogIxoNom(DIVT}pZBr%D9cW-gVJ2<;tb;e<{6Dmg2{DE^f&EG&=Ubv%u8O<*esqP z`F(Zm0(;!=48(RX%w;0`wLN$Dad}mHmSJ+utAY`)bQiZ)T}%h{2(o2X@!6)Ngh%sY ze!Uu1yGPP&ofoHV(mt>kMS1wHpS}0ZBduPt%_BGfRPQ@bNHE8A(507n596Zu@A2vV z7yRsx{v-bRAN~}FeT#Oid}$v)d~?}=qOykhi^oL0z4{zqt+fF*DW0wIwnjLrqKrEs2|w}9-CsEuK=qehIU++=rS(q zPH0x3hZ%qyo|h_X{cYv&J#apKo*kxy(TS#$EMDgl<^XLuCOTx?4aFJcC!QShB=F%) z$X!tV@Z7bRY4Pl51fBZTwabDa&!X$Smw~XAV&*Y*&s{~=p!qv` z$F(m7Zey5?KhBDSIi>faT~6@;nlVrKd`&~fjK0r4jaHEG+IVi1ou083q$#!JcPTs? z;I{L0SilBQVEaWum{?euY;<^Uer)-%0g>k@JxrG8ft|zh3x2M~GRv!iU71F+uGYZr zIWvPdhdpe1HJR@=@Rqy(++biJxiYkC{mkE$6}c(5$FZHCnC+WF*j68S*KFj5s+MIt znnixB_s0+Tz2E%Tc!z%k&TnxXC;S9nju(7<_i>)r=D03X>gVoHILYO7Y0C7=b}3!%j6>Cn`!eXh)T$u}YEVu((NZ~3 z$-c){Hjnkv-8C>DWo|*s7uS%Z>@b{^(dHG0DK41K-c1(%F1ETB8aep2XyAxR_ z9zR$0Wf5_w!W^hf>M6mR)*8<9xhbvuo!iqKIC~sodpzo`vK2T4c5h3CrqxQ(yek#6 zDbTocsox2gil)_MukN{vso>wMWyLB4Vgikuc(76Wbm3=TfhAz?cv1VJpkLcv(IVT( zWwiEK_Yc1Ec5MR-1_cp1v6=5xXk{A|1abLUwi;4Z|2dm>m%ehj{M=hKRbFE6T)s4v z;F`61DM>CrPa)uE7r5nqkK>^1i34Bo{QN)g+rR#Q;nTY>=&#@6(L(Wj`t%bV$IAu+ zFZ_z@$q}u!%MuZL4lX=1>FC?i3e&ivQAOW)1&!R-l6Grt16SkWi%jGzmjJ&&K)<;c z4|M@FVW4C^4Ynm9oe6vs01)uJE^pP|eC`{+S8-g`+~oRnT$sknBX@j#iDj}~UhDkT zivgN?d$o>yo|leUho~G@52^wYen!u{)qc)Zo^3n^&`LUu6`rXlVKXHN_l@b3G&+^p=pEc~U0hh5}TO^FYSDK z6f*yonax0LV7JEaCZrNP+TQ>^5?}~}5E#>s2aL6F_Fw@RIY6?_*WlMI4}GC*>kdDk z=+ARnp9v1km*)k*=4n!o;T;I#XU&4=Gb?%}DBfBo##N=37IRwI%J2?; z?TjCaYY4q&z}Ssq?SRA9E+1p%w$o4lPRq5KP3si^4gx!At(z?iH+XNgd-Y+&kXVDW zCt=cTcpHT!?c-YucclPN4x-6BASC-3H$_fB8#wwRaa~EIk&dpbwr%4`I zJ36nsxli}Vb4M{sW=3Vjc$r(g7Q-R)SxpaFDyFrV6u%FzoRQ3~fQ9=yYjVvw8h`66 zribQd(kS$X!*E?5nmMM#$XNXB(}T3jwixeitWt(-8;ux5@5{8=4t_r6Qp%<|&KMcz z4g<{RyD-Fxqa+}bW%ImQV7CK(EqgaOUXJT{tTMv*nEmwx(S4jA(C4CIj&-KW3O

x7QI){!i=YuEV)tpC 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 literal 0 HcmV?d00001 diff --git a/clusters/noble/apps/README.md b/clusters/noble/apps/README.md index 8a3583d..57b1370 100644 --- a/clusters/noble/apps/README.md +++ b/clusters/noble/apps/README.md @@ -1,6 +1,6 @@ # Argo CD — optional applications (non-bootstrap) -**Base cluster configuration** (CNI, MetalLB, ingress, cert-manager, storage, observability stack, policy, Vault, etc.) is installed by **`ansible/playbooks/noble.yml`** from **`clusters/noble/bootstrap/`** — not from here. +**Base cluster configuration** (CNI, MetalLB, ingress, cert-manager, storage, observability stack, policy, SOPS secrets path, etc.) is installed by **`ansible/playbooks/noble.yml`** from **`clusters/noble/bootstrap/`** — not from here. **`noble-root`** (`clusters/noble/bootstrap/argocd/root-application.yaml`) points at **`clusters/noble/apps`**. Add **`Application`** manifests (and optional **`AppProject`** definitions) under this directory only for workloads that are additive and do not subsume the Ansible-managed platform. diff --git a/clusters/noble/apps/homepage/values.yaml b/clusters/noble/apps/homepage/values.yaml index 8014409..af7b06d 100644 --- a/clusters/noble/apps/homepage/values.yaml +++ b/clusters/noble/apps/homepage/values.yaml @@ -79,12 +79,6 @@ config: href: https://longhorn.apps.noble.lab.pcenicni.dev siteMonitor: http://longhorn-frontend.longhorn-system.svc.cluster.local:80 description: Storage volumes, nodes, backups - - Vault: - icon: si-vault - href: https://vault.apps.noble.lab.pcenicni.dev - # Unauthenticated health (HEAD/GET) — not the redirecting UI root - siteMonitor: http://vault.vault.svc.cluster.local:8200/v1/sys/health?standbyok=true&sealedcode=204&uninitcode=204 - description: Secrets engine UI (after init/unseal) - Velero: icon: mdi-backup-restore href: https://velero.io/docs/ diff --git a/clusters/noble/bootstrap/argocd/README.md b/clusters/noble/bootstrap/argocd/README.md index f8c9759..aa6338f 100644 --- a/clusters/noble/bootstrap/argocd/README.md +++ b/clusters/noble/bootstrap/argocd/README.md @@ -52,7 +52,7 @@ Use **Settings → Repositories** in the UI, or `argocd repo add` / a `Secret` o ## 4. App-of-apps (optional GitOps only) -Bootstrap **platform** workloads (CNI, ingress, cert-manager, Kyverno, observability, Vault, etc.) are installed by +Bootstrap **platform** workloads (CNI, ingress, cert-manager, Kyverno, observability, etc.) are installed by **`ansible/playbooks/noble.yml`** from **`clusters/noble/bootstrap/`** — not by Argo. **`clusters/noble/apps/kustomization.yaml`** is empty by default. 1. Edit **`root-application.yaml`**: set **`repoURL`** and **`targetRevision`** to this repository. The **`resources-finalizer.argocd.argoproj.io/background`** finalizer uses Argo’s path-qualified form so **`kubectl apply`** does not warn about finalizer names. diff --git a/clusters/noble/bootstrap/external-secrets/README.md b/clusters/noble/bootstrap/external-secrets/README.md deleted file mode 100644 index 8a4848b..0000000 --- a/clusters/noble/bootstrap/external-secrets/README.md +++ /dev/null @@ -1,60 +0,0 @@ -# External Secrets Operator (noble) - -Syncs secrets from external systems into Kubernetes **Secret** objects via **ExternalSecret** / **ClusterExternalSecret** CRDs. - -- **Chart:** `external-secrets/external-secrets` **2.2.0** (app **v2.2.0**) -- **Namespace:** `external-secrets` -- **Helm release name:** `external-secrets` (matches the operator **ServiceAccount** name `external-secrets`) - -## Install - -```bash -helm repo add external-secrets https://charts.external-secrets.io -helm repo update -kubectl apply -f clusters/noble/bootstrap/external-secrets/namespace.yaml -helm upgrade --install external-secrets external-secrets/external-secrets -n external-secrets \ - --version 2.2.0 -f clusters/noble/bootstrap/external-secrets/values.yaml --wait -``` - -Verify: - -```bash -kubectl -n external-secrets get deploy,pods -kubectl get crd | grep external-secrets -``` - -## Vault `ClusterSecretStore` (after Vault is deployed) - -The checklist expects a **Vault**-backed store. Install Vault first (`talos/CLUSTER-BUILD.md` Phase E — Vault on Longhorn + auto-unseal), then: - -1. Enable **KV v2** secrets engine and **Kubernetes** auth in Vault; create a **role** (e.g. `external-secrets`) that maps the cluster’s **`external-secrets` / `external-secrets`** service account to a policy that can read the paths you need. -2. Copy **`examples/vault-cluster-secret-store.yaml`**, set **`spec.provider.vault.server`** to your Vault URL. This repo’s Vault Helm values use **HTTP** on port **8200** (`global.tlsDisable: true`): **`http://vault.vault.svc.cluster.local:8200`**. Use **`https://`** if you enable TLS on the Vault listener. -3. If Vault uses a **private TLS CA**, configure **`caProvider`** or **`caBundle`** on the Vault provider — see [HashiCorp Vault provider](https://external-secrets.io/latest/provider/hashicorp-vault/). Do not commit private CA material to public git unless intended. -4. Apply: **`kubectl apply -f …/vault-cluster-secret-store.yaml`** -5. Confirm the store is ready: **`kubectl describe clustersecretstore vault`** - -Example **ExternalSecret** (after the store is healthy): - -```yaml -apiVersion: external-secrets.io/v1 -kind: ExternalSecret -metadata: - name: demo - namespace: default -spec: - refreshInterval: 1h - secretStoreRef: - name: vault - kind: ClusterSecretStore - target: - name: demo-synced - data: - - secretKey: password - remoteRef: - key: secret/data/myapp - property: password -``` - -## Upgrades - -Pin the chart version in `values.yaml` header comments; run the same **`helm upgrade --install`** with the new **`--version`** after reviewing [release notes](https://github.com/external-secrets/external-secrets/releases). diff --git a/clusters/noble/bootstrap/external-secrets/examples/vault-cluster-secret-store.yaml b/clusters/noble/bootstrap/external-secrets/examples/vault-cluster-secret-store.yaml deleted file mode 100644 index 159bea0..0000000 --- a/clusters/noble/bootstrap/external-secrets/examples/vault-cluster-secret-store.yaml +++ /dev/null @@ -1,31 +0,0 @@ -# ClusterSecretStore for HashiCorp Vault (KV v2) using Kubernetes auth. -# -# Do not apply until Vault is running, reachable from the cluster, and configured with: -# - Kubernetes auth at mountPath (default: kubernetes) -# - A role (below: external-secrets) bound to this service account: -# name: external-secrets -# namespace: external-secrets -# - A policy allowing read on the KV path used below (e.g. secret/data/* for path "secret") -# -# Adjust server, mountPath, role, and path to match your Vault deployment. If Vault uses TLS -# with a private CA, set provider.vault.caProvider or caBundle (see README). -# -# kubectl apply -f clusters/noble/bootstrap/external-secrets/examples/vault-cluster-secret-store.yaml ---- -apiVersion: external-secrets.io/v1 -kind: ClusterSecretStore -metadata: - name: vault -spec: - provider: - vault: - server: "http://vault.vault.svc.cluster.local:8200" - path: secret - version: v2 - auth: - kubernetes: - mountPath: kubernetes - role: external-secrets - serviceAccountRef: - name: external-secrets - namespace: external-secrets diff --git a/clusters/noble/bootstrap/external-secrets/namespace.yaml b/clusters/noble/bootstrap/external-secrets/namespace.yaml deleted file mode 100644 index eab4215..0000000 --- a/clusters/noble/bootstrap/external-secrets/namespace.yaml +++ /dev/null @@ -1,5 +0,0 @@ -# External Secrets Operator — apply before Helm. -apiVersion: v1 -kind: Namespace -metadata: - name: external-secrets diff --git a/clusters/noble/bootstrap/external-secrets/values.yaml b/clusters/noble/bootstrap/external-secrets/values.yaml deleted file mode 100644 index a630c8b..0000000 --- a/clusters/noble/bootstrap/external-secrets/values.yaml +++ /dev/null @@ -1,10 +0,0 @@ -# External Secrets Operator — noble -# -# helm repo add external-secrets https://charts.external-secrets.io -# helm repo update -# kubectl apply -f clusters/noble/bootstrap/external-secrets/namespace.yaml -# helm upgrade --install external-secrets external-secrets/external-secrets -n external-secrets \ -# --version 2.2.0 -f clusters/noble/bootstrap/external-secrets/values.yaml --wait -# -# CRDs are installed by the chart (installCRDs: true). Vault ClusterSecretStore: see README + examples/. -commonLabels: {} diff --git a/clusters/noble/bootstrap/kustomization.yaml b/clusters/noble/bootstrap/kustomization.yaml index 0882590..bebf821 100644 --- a/clusters/noble/bootstrap/kustomization.yaml +++ b/clusters/noble/bootstrap/kustomization.yaml @@ -8,13 +8,9 @@ resources: - kube-prometheus-stack/namespace.yaml - loki/namespace.yaml - fluent-bit/namespace.yaml - - sealed-secrets/namespace.yaml - - external-secrets/namespace.yaml - - vault/namespace.yaml + - newt/namespace.yaml - kyverno/namespace.yaml - velero/namespace.yaml - velero/longhorn-volumesnapshotclass.yaml - headlamp/namespace.yaml - grafana-loki-datasource/loki-datasource.yaml - - vault/unseal-cronjob.yaml - - vault/cilium-network-policy.yaml diff --git a/clusters/noble/bootstrap/kyverno/policies-values.yaml b/clusters/noble/bootstrap/kyverno/policies-values.yaml index e148211..6a6fe09 100644 --- a/clusters/noble/bootstrap/kyverno/policies-values.yaml +++ b/clusters/noble/bootstrap/kyverno/policies-values.yaml @@ -35,7 +35,6 @@ x-kyverno-exclude-infra: &kyverno_exclude_infra - kube-node-lease - argocd - cert-manager - - external-secrets - headlamp - kyverno - logging @@ -44,9 +43,7 @@ x-kyverno-exclude-infra: &kyverno_exclude_infra - metallb-system - monitoring - newt - - sealed-secrets - traefik - - vault policyExclude: disallow-capabilities: *kyverno_exclude_infra diff --git a/clusters/noble/bootstrap/newt/README.md b/clusters/noble/bootstrap/newt/README.md index 0fce92d..5d9d937 100644 --- a/clusters/noble/bootstrap/newt/README.md +++ b/clusters/noble/bootstrap/newt/README.md @@ -2,26 +2,24 @@ This is the **primary** automation path for **public** hostnames to workloads in this cluster (it **replaces** in-cluster ExternalDNS). [Newt](https://github.com/fosrl/newt) is the on-prem agent that connects your cluster to a **Pangolin** site (WireGuard tunnel). The [Fossorial Helm chart](https://github.com/fosrl/helm-charts) deploys one or more instances. -**Secrets:** Never commit endpoint, Newt ID, or Newt secret. If credentials were pasted into chat or CI logs, **rotate them** in Pangolin and recreate the Kubernetes Secret. +**Secrets:** Never commit endpoint, Newt ID, or Newt secret in **plain** YAML. If credentials were pasted into chat or CI logs, **rotate them** in Pangolin and recreate the Kubernetes Secret. ## 1. Create the Secret Keys must match `values.yaml` (`PANGOLIN_ENDPOINT`, `NEWT_ID`, `NEWT_SECRET`). -### Option A — Sealed Secret (safe for GitOps) +### Option A — SOPS (safe for GitOps) -With the [Sealed Secrets](https://github.com/bitnami-labs/sealed-secrets) controller installed (`clusters/noble/bootstrap/sealed-secrets/`), generate a `SealedSecret` from your workstation (rotate credentials in Pangolin first if they were exposed): +Encrypt a normal **`Secret`** with [Mozilla SOPS](https://github.com/getsops/sops) and **age** (see **`clusters/noble/secrets/README.md`** and **`.sops.yaml`**). The repo includes an encrypted example at **`clusters/noble/secrets/newt-pangolin-auth.secret.yaml`** — edit with `sops` after exporting **`SOPS_AGE_KEY_FILE`** to your **`age-key.txt`**, or create a new file and encrypt it. ```bash -chmod +x clusters/noble/bootstrap/sealed-secrets/examples/kubeseal-newt-pangolin-auth.sh -export PANGOLIN_ENDPOINT='https://pangolin.pcenicni.dev' -export NEWT_ID='YOUR_NEWT_ID' -export NEWT_SECRET='YOUR_NEWT_SECRET' -./clusters/noble/bootstrap/sealed-secrets/examples/kubeseal-newt-pangolin-auth.sh > newt-pangolin-auth.sealedsecret.yaml -kubectl apply -f newt-pangolin-auth.sealedsecret.yaml +export SOPS_AGE_KEY_FILE=/absolute/path/to/home-server/age-key.txt +sops clusters/noble/secrets/newt-pangolin-auth.secret.yaml +# then: +sops -d clusters/noble/secrets/newt-pangolin-auth.secret.yaml | kubectl apply -f - ``` -Commit only the `.sealedsecret.yaml` file, not plain `Secret` YAML. +**Ansible** (`noble.yml`) applies all **`clusters/noble/secrets/*.yaml`** automatically when **`age-key.txt`** exists at the repo root. ### Option B — Imperative Secret (not in git) diff --git a/clusters/noble/bootstrap/sealed-secrets/README.md b/clusters/noble/bootstrap/sealed-secrets/README.md deleted file mode 100644 index 9e7cbdb..0000000 --- a/clusters/noble/bootstrap/sealed-secrets/README.md +++ /dev/null @@ -1,50 +0,0 @@ -# Sealed Secrets (noble) - -Encrypts `Secret` manifests so they can live in git; the controller decrypts **SealedSecret** resources into **Secret**s in-cluster. - -- **Chart:** `sealed-secrets/sealed-secrets` **2.18.4** (app **0.36.1**) -- **Namespace:** `sealed-secrets` - -## Install - -```bash -helm repo add sealed-secrets https://bitnami-labs.github.io/sealed-secrets -helm repo update -kubectl apply -f clusters/noble/bootstrap/sealed-secrets/namespace.yaml -helm upgrade --install sealed-secrets sealed-secrets/sealed-secrets -n sealed-secrets \ - --version 2.18.4 -f clusters/noble/bootstrap/sealed-secrets/values.yaml --wait -``` - -## Workstation: `kubeseal` - -Install a **kubeseal** build compatible with the controller (match **app** minor, e.g. **0.36.x** for **0.36.1**). Examples: - -- **Homebrew:** `brew install kubeseal` (check `kubeseal --version` against the chart’s `image.tag` in `helm show values`). -- **GitHub releases:** [bitnami-labs/sealed-secrets](https://github.com/bitnami-labs/sealed-secrets/releases) - -Fetch the cluster’s public seal cert (once per kube context): - -```bash -kubeseal --fetch-cert > /tmp/noble-sealed-secrets.pem -``` - -Create a sealed secret from a normal secret manifest: - -```bash -kubectl create secret generic example --from-literal=foo=bar --dry-run=client -o yaml \ - | kubeseal --cert /tmp/noble-sealed-secrets.pem -o yaml > example-sealedsecret.yaml -``` - -Commit `example-sealedsecret.yaml`; apply it with `kubectl apply -f`. The controller creates the **Secret** in the same namespace as the **SealedSecret**. - -**Noble example:** `examples/kubeseal-newt-pangolin-auth.sh` (Newt / Pangolin tunnel credentials). - -## Backup the sealing key - -If the controller’s private key is lost, existing sealed files cannot be decrypted on a new cluster. Back up the key secret after install: - -```bash -kubectl get secret -n sealed-secrets -l sealedsecrets.bitnami.com/sealed-secrets-key=active -o yaml > sealed-secrets-key-backup.yaml -``` - -Store `sealed-secrets-key-backup.yaml` in a safe offline location (not in public git). diff --git a/clusters/noble/bootstrap/sealed-secrets/examples/kubeseal-newt-pangolin-auth.sh b/clusters/noble/bootstrap/sealed-secrets/examples/kubeseal-newt-pangolin-auth.sh deleted file mode 100755 index c647ac8..0000000 --- a/clusters/noble/bootstrap/sealed-secrets/examples/kubeseal-newt-pangolin-auth.sh +++ /dev/null @@ -1,19 +0,0 @@ -#!/usr/bin/env bash -# Emit a SealedSecret for newt-pangolin-auth (namespace newt). -# Prerequisites: sealed-secrets controller running; kubeseal client (same minor as controller). -# Rotate Pangolin/Newt credentials in the UI first if they were exposed, then set env vars and run: -# -# export PANGOLIN_ENDPOINT='https://pangolin.example.com' -# export NEWT_ID='...' -# export NEWT_SECRET='...' -# ./kubeseal-newt-pangolin-auth.sh > newt-pangolin-auth.sealedsecret.yaml -# kubectl apply -f newt-pangolin-auth.sealedsecret.yaml -# -set -euo pipefail -kubectl apply -f "$(dirname "$0")/../../newt/namespace.yaml" >/dev/null 2>&1 || true -kubectl -n newt create secret generic newt-pangolin-auth \ - --dry-run=client \ - --from-literal=PANGOLIN_ENDPOINT="${PANGOLIN_ENDPOINT:?}" \ - --from-literal=NEWT_ID="${NEWT_ID:?}" \ - --from-literal=NEWT_SECRET="${NEWT_SECRET:?}" \ - -o yaml | kubeseal -o yaml diff --git a/clusters/noble/bootstrap/sealed-secrets/namespace.yaml b/clusters/noble/bootstrap/sealed-secrets/namespace.yaml deleted file mode 100644 index d2e9d85..0000000 --- a/clusters/noble/bootstrap/sealed-secrets/namespace.yaml +++ /dev/null @@ -1,5 +0,0 @@ -# Sealed Secrets controller — apply before Helm. -apiVersion: v1 -kind: Namespace -metadata: - name: sealed-secrets diff --git a/clusters/noble/bootstrap/sealed-secrets/values.yaml b/clusters/noble/bootstrap/sealed-secrets/values.yaml deleted file mode 100644 index 0f84be9..0000000 --- a/clusters/noble/bootstrap/sealed-secrets/values.yaml +++ /dev/null @@ -1,18 +0,0 @@ -# Sealed Secrets — noble (Git-encrypted Secret workflow) -# -# helm repo add sealed-secrets https://bitnami-labs.github.io/sealed-secrets -# helm repo update -# kubectl apply -f clusters/noble/bootstrap/sealed-secrets/namespace.yaml -# helm upgrade --install sealed-secrets sealed-secrets/sealed-secrets -n sealed-secrets \ -# --version 2.18.4 -f clusters/noble/bootstrap/sealed-secrets/values.yaml --wait -# -# Client: install kubeseal (same minor as controller — see README). -# Defaults are sufficient for the lab; override here if you need key renewal, resources, etc. -# -# GitOps pattern: create Secrets only via SealedSecret (or External Secrets + Vault). -# Example (Newt): clusters/noble/bootstrap/sealed-secrets/examples/kubeseal-newt-pangolin-auth.sh -# Backup the controller's sealing key: kubectl -n sealed-secrets get secret sealed-secrets-key -o yaml -# -# Talos cluster secrets (bootstrap token, cluster secret, certs) belong in talhelper talsecret / -# SOPS — not Sealed Secrets. See talos/README.md. -commonLabels: {} diff --git a/clusters/noble/bootstrap/vault/README.md b/clusters/noble/bootstrap/vault/README.md deleted file mode 100644 index c05250a..0000000 --- a/clusters/noble/bootstrap/vault/README.md +++ /dev/null @@ -1,162 +0,0 @@ -# HashiCorp Vault (noble) - -Standalone Vault with **file** storage on a **Longhorn** PVC (`server.dataStorage`). The listener uses **HTTP** (`global.tlsDisable: true`) for in-cluster use; add TLS at the listener when exposing outside the cluster. - -- **Chart:** `hashicorp/vault` **0.32.0** (Vault **1.21.2**) -- **Namespace:** `vault` - -## Install - -```bash -helm repo add hashicorp https://helm.releases.hashicorp.com -helm repo update -kubectl apply -f clusters/noble/bootstrap/vault/namespace.yaml -helm upgrade --install vault hashicorp/vault -n vault \ - --version 0.32.0 -f clusters/noble/bootstrap/vault/values.yaml --wait --timeout 15m -``` - -Verify: - -```bash -kubectl -n vault get pods,pvc,svc -kubectl -n vault exec -i sts/vault -- vault status -``` - -## Cilium network policy (Phase G) - -After **Cilium** is up, optionally restrict HTTP access to the Vault server pods (**TCP 8200**) to **`external-secrets`** and same-namespace clients: - -```bash -kubectl apply -f clusters/noble/bootstrap/vault/cilium-network-policy.yaml -``` - -If you add workloads in other namespaces that call Vault, extend **`ingress`** in that manifest. - -## Initialize and unseal (first time) - -From a workstation with `kubectl` (or `kubectl exec` into any pod with `vault` CLI): - -```bash -kubectl -n vault exec -i sts/vault -- vault operator init -key-shares=1 -key-threshold=1 -``` - -**Lab-only:** `-key-shares=1 -key-threshold=1` keeps a single unseal key. For stronger Shamir splits, use more shares and store them safely. - -Save the **Unseal Key** and **Root Token** offline. Then unseal once: - -```bash -kubectl -n vault exec -i sts/vault -- vault operator unseal -# paste unseal key -``` - -Or create the Secret used by the optional CronJob and apply it: - -```bash -kubectl -n vault create secret generic vault-unseal-key --from-literal=key='YOUR_UNSEAL_KEY' -kubectl apply -f clusters/noble/bootstrap/vault/unseal-cronjob.yaml -``` - -The CronJob runs every minute and unseals if Vault is sealed and the Secret is present. - -## Auto-unseal note - -Vault **OSS** auto-unseal uses cloud KMS (AWS, GCP, Azure, OCI), **Transit** (another Vault), etc. There is no first-class “Kubernetes Secret” seal. This repo uses an optional **CronJob** as a **lab** substitute. Production clusters should use a supported seal backend. - -## Kubernetes auth (External Secrets / ClusterSecretStore) - -**One-shot:** from the repo root, `export KUBECONFIG=talos/kubeconfig` and `export VAULT_TOKEN=…`, then run **`./clusters/noble/bootstrap/vault/configure-kubernetes-auth.sh`** (idempotent). Then **`kubectl apply -f clusters/noble/bootstrap/external-secrets/examples/vault-cluster-secret-store.yaml`** on its own line (shell comments **`# …`** on the same line are parsed as extra `kubectl` args and break `apply`). **`kubectl get clustersecretstore vault`** should show **READY=True** after a few seconds. - -Run these **from your workstation** (needs `kubectl`; no local `vault` binary required). Use a **short-lived admin token** or the root token **only in your shell** — do not paste tokens into logs or chat. - -**1. Enable the auth method** (skip if already done): - -```bash -kubectl -n vault exec -it sts/vault -- sh -c ' - export VAULT_ADDR=http://127.0.0.1:8200 - export VAULT_TOKEN="YOUR_ROOT_OR_ADMIN_TOKEN" - vault auth enable kubernetes -' -``` - -**2. Configure `auth/kubernetes`** — the API **issuer** must match the `iss` claim on service account JWTs. With **kube-vip** / a custom API URL, discover it from the cluster (do not assume `kubernetes.default`): - -```bash -ISSUER=$(kubectl get --raw /.well-known/openid-configuration | jq -r .issuer) -REVIEWER=$(kubectl -n vault create token vault --duration=8760h) -CA_B64=$(kubectl config view --raw --minify -o jsonpath='{.clusters[0].cluster.certificate-authority-data}') -``` - -Then apply config **inside** the Vault pod (environment variables are passed in with `env` so quoting stays correct): - -```bash -export VAULT_TOKEN="YOUR_ROOT_OR_ADMIN_TOKEN" -export ISSUER REVIEWER CA_B64 -kubectl -n vault exec -i sts/vault -- env \ - VAULT_ADDR=http://127.0.0.1:8200 \ - VAULT_TOKEN="$VAULT_TOKEN" \ - CA_B64="$CA_B64" \ - REVIEWER="$REVIEWER" \ - ISSUER="$ISSUER" \ - sh -ec ' - echo "$CA_B64" | base64 -d > /tmp/k8s-ca.crt - vault write auth/kubernetes/config \ - kubernetes_host="https://kubernetes.default.svc:443" \ - kubernetes_ca_cert=@/tmp/k8s-ca.crt \ - token_reviewer_jwt="$REVIEWER" \ - issuer="$ISSUER" -' -``` - -**3. KV v2** at path `secret` (skip if already enabled): - -```bash -kubectl -n vault exec -it sts/vault -- sh -c ' - export VAULT_ADDR=http://127.0.0.1:8200 - export VAULT_TOKEN="YOUR_ROOT_OR_ADMIN_TOKEN" - vault secrets enable -path=secret kv-v2 -' -``` - -**4. Policy + role** for the External Secrets operator SA (`external-secrets` / `external-secrets`): - -```bash -kubectl -n vault exec -it sts/vault -- sh -c ' - export VAULT_ADDR=http://127.0.0.1:8200 - export VAULT_TOKEN="YOUR_ROOT_OR_ADMIN_TOKEN" - vault policy write external-secrets - </tmp/vauth.txt - grep -q "^kubernetes/" /tmp/vauth.txt || vault auth enable kubernetes - ' - -kubectl -n vault exec -i sts/vault -- env \ - VAULT_ADDR=http://127.0.0.1:8200 \ - VAULT_TOKEN="$VAULT_TOKEN" \ - CA_B64="$CA_B64" \ - REVIEWER="$REVIEWER" \ - ISSUER="$ISSUER" \ - sh -ec ' - echo "$CA_B64" | base64 -d > /tmp/k8s-ca.crt - vault write auth/kubernetes/config \ - kubernetes_host="https://kubernetes.default.svc:443" \ - kubernetes_ca_cert=@/tmp/k8s-ca.crt \ - token_reviewer_jwt="$REVIEWER" \ - issuer="$ISSUER" - ' - -kubectl -n vault exec -i sts/vault -- env \ - VAULT_ADDR=http://127.0.0.1:8200 \ - VAULT_TOKEN="$VAULT_TOKEN" \ - sh -ec ' - set -e - vault secrets list >/tmp/vsec.txt - grep -q "^secret/" /tmp/vsec.txt || vault secrets enable -path=secret kv-v2 - ' - -kubectl -n vault exec -i sts/vault -- env \ - VAULT_ADDR=http://127.0.0.1:8200 \ - VAULT_TOKEN="$VAULT_TOKEN" \ - sh -ec ' - vault policy write external-secrets - <192.168.50.0/24 L2"] + PP["Patch / cable mgmt"] + SW --- PP + end + subgraph RACK_B["Rack B — 10\""] + N["neon :20"] + A["argon :30"] + K["krypton :40"] + end + subgraph RACK_C["Rack C — 10\""] + H["helium :10"] + end + subgraph LOGICAL["Logical (any node holding VIP)"] + VIP["API VIP 192.168.50.230
kube-vip → apiserver :6443"] + end + WAN["Internet / other LANs"] -.->|"router (out of scope)"| SW + SW <-->|"Ethernet"| N + SW <-->|"Ethernet"| A + SW <-->|"Ethernet"| K + SW <-->|"Ethernet"| H + N --- VIP + A --- VIP + K --- VIP + WK["Workstation / CI
kubectl, browser"] -->|"HTTPS :6443"| VIP + WK -->|"L2 (MetalLB .210–.211, any node)"| SW +``` + +**Ingress path (same LAN):** clients → **`192.168.50.211`** (Traefik) or **`192.168.50.210`** (Argo CD) via **MetalLB** — still **through the same switch** to whichever node advertises the service. + +--- + +## Related docs + +- Cluster topology and services: [`architecture.md`](architecture.md) +- Build state and versions: [`../talos/CLUSTER-BUILD.md`](../talos/CLUSTER-BUILD.md) diff --git a/docs/architecture.md b/docs/architecture.md index 4c5268a..59bb976 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -8,8 +8,8 @@ This document describes the **noble** Talos lab cluster: node topology, networki |---------------|---------| | **Subgraph “Cluster”** | Kubernetes cluster boundary (`noble`) | | **External / DNS / cloud** | Services outside the data plane (internet, registrar, Pangolin) | -| **Data store** | Durable data (etcd, Longhorn, Loki, Vault storage) | -| **Secrets / policy** | Secret material, Vault, admission policy | +| **Data store** | Durable data (etcd, Longhorn, Loki) | +| **Secrets / policy** | Secret material (SOPS in git), admission policy | | **LB / VIP** | Load balancer, MetalLB assignment, or API VIP | --- @@ -74,7 +74,7 @@ flowchart TB ## Platform stack (bootstrap → workloads) -Order: **Talos** → **Cilium** (cluster uses `cni: none` until CNI is installed) → **metrics-server**, **Longhorn**, **MetalLB** + pool manifests, **kube-vip** → **Traefik**, **cert-manager** → **Argo CD** (Helm only; optional empty app-of-apps). **Automated install:** `ansible/playbooks/noble.yml` (see `ansible/README.md`). Platform namespaces include `cert-manager`, `traefik`, `metallb-system`, `longhorn-system`, `monitoring`, `loki`, `logging`, `argocd`, `vault`, `external-secrets`, `sealed-secrets`, `kyverno`, `newt`, and others as deployed. +Order: **Talos** → **Cilium** (cluster uses `cni: none` until CNI is installed) → **metrics-server**, **Longhorn**, **MetalLB** + pool manifests, **kube-vip** → **Traefik**, **cert-manager** → **Argo CD** (Helm only; optional empty app-of-apps). **Automated install:** `ansible/playbooks/noble.yml` (see `ansible/README.md`). Platform namespaces include `cert-manager`, `traefik`, `metallb-system`, `longhorn-system`, `monitoring`, `loki`, `logging`, `argocd`, `kyverno`, `newt`, and others as deployed. ```mermaid flowchart TB @@ -98,7 +98,7 @@ flowchart TB Argo["Argo CD
(optional app-of-apps; platform via Ansible)"] end subgraph L5["Platform namespaces (examples)"] - NS["cert-manager, traefik, metallb-system,
longhorn-system, monitoring, loki, logging,
argocd, vault, external-secrets, sealed-secrets,
kyverno, newt, …"] + NS["cert-manager, traefik, metallb-system,
longhorn-system, monitoring, loki, logging,
argocd, kyverno, newt, …"] end Talos --> Cilium --> MS Cilium --> LH @@ -149,22 +149,20 @@ flowchart LR ## Secrets and policy -**Sealed Secrets** decrypts `SealedSecret` objects in-cluster. **External Secrets Operator** syncs from **Vault** using **`ClusterSecretStore`** (see [`examples/vault-cluster-secret-store.yaml`](../clusters/noble/bootstrap/external-secrets/examples/vault-cluster-secret-store.yaml)). Trust is **cluster → Vault** (ESO calls Vault; Vault does not initiate cluster trust). **Kyverno** with **kyverno-policies** enforces **PSS baseline** in **Audit**. +**Mozilla SOPS** with **age** encrypts plain Kubernetes **`Secret`** manifests under [`clusters/noble/secrets/`](../clusters/noble/secrets/); operators decrypt at apply time (`ansible/playbooks/noble.yml` or `sops -d … | kubectl apply`). The private key is **`age-key.txt`** at the repo root (gitignored). **Kyverno** with **kyverno-policies** enforces **PSS baseline** in **Audit**. ```mermaid flowchart LR subgraph Git["Git repo"] - SSman["SealedSecret manifests
(optional)"] + SM["SOPS-encrypted Secret YAML
clusters/noble/secrets/"] + end + subgraph ops["Apply path"] + SOPS["sops -d + kubectl apply
(or Ansible noble.yml)"] end subgraph cluster["Cluster"] - SSC["Sealed Secrets controller
sealed-secrets"] - ESO["External Secrets Operator
external-secrets"] - V["Vault
vault namespace
HTTP listener"] K["Kyverno + kyverno-policies
PSS baseline Audit"] end - SSman -->|"encrypted"| SSC -->|"decrypt to Secret"| workloads["Workload Secrets"] - ESO -->|"ClusterSecretStore →"| V - ESO -->|"sync ExternalSecret"| workloads + SM --> SOPS -->|"plain Secret"| workloads["Workload Secrets"] K -.->|"admission / audit
(PSS baseline)"| workloads ``` @@ -172,7 +170,7 @@ flowchart LR ## Data and storage -**StorageClass:** **`longhorn`** (default). Talos mounts **user volume** data at **`/var/mnt/longhorn`** (bind paths for Longhorn). Stateful consumers include **Vault**, **kube-prometheus-stack** PVCs, and **Loki**. +**StorageClass:** **`longhorn`** (default). Talos mounts **user volume** data at **`/var/mnt/longhorn`** (bind paths for Longhorn). Stateful consumers include **kube-prometheus-stack** PVCs and **Loki**. ```mermaid flowchart TB @@ -183,12 +181,10 @@ flowchart TB SC["StorageClass: longhorn (default)"] end subgraph consumers["Stateful / durable consumers"] - V["Vault PVC data-vault-0"] PGL["kube-prometheus-stack PVCs"] L["Loki PVC"] end UD --> SC - SC --> V SC --> PGL SC --> L ``` @@ -210,7 +206,7 @@ See [`talos/CLUSTER-BUILD.md`](../talos/CLUSTER-BUILD.md) for the authoritative | Argo CD | 9.4.17 / app v3.3.6 | | kube-prometheus-stack | 82.15.1 | | Loki / Fluent Bit | 6.55.0 / 0.56.0 | -| Sealed Secrets / ESO / Vault | 2.18.4 / 2.2.0 / 0.32.0 | +| SOPS (client tooling) | see `clusters/noble/secrets/README.md` | | Kyverno | 3.7.1 / policies 3.7.1 | | Newt | 1.2.0 / app 1.10.1 | @@ -218,7 +214,7 @@ See [`talos/CLUSTER-BUILD.md`](../talos/CLUSTER-BUILD.md) for the authoritative ## Narrative -The **noble** environment is a **Talos** lab cluster on **`192.168.50.0/24`** with **three control plane nodes and one worker**, schedulable workloads on control planes enabled, and the Kubernetes API exposed through **kube-vip** at **`192.168.50.230`**. **Cilium** provides the CNI after Talos bootstrap with **`cni: none`**; **MetalLB** advertises **`192.168.50.210`–`192.168.50.229`**, pinning **Argo CD** to **`192.168.50.210`** and **Traefik** to **`192.168.50.211`** for **`*.apps.noble.lab.pcenicni.dev`**. **cert-manager** issues certificates for Traefik Ingresses; **GitOps** is **Ansible-driven Helm** for the platform (**`clusters/noble/bootstrap/`**) plus optional **Argo CD** app-of-apps (**`clusters/noble/apps/`**, **`clusters/noble/bootstrap/argocd/`**). **Observability** uses **kube-prometheus-stack** in **`monitoring`**, **Loki** and **Fluent Bit** with Grafana wired via a **ConfigMap** datasource, with **Longhorn** PVCs for Prometheus, Grafana, Alertmanager, Loki, and **Vault**. **Secrets** combine **Sealed Secrets** for git-encrypted material, **Vault** with **External Secrets** for dynamic sync, and **Kyverno** enforces **Pod Security Standards baseline** in **Audit**. **Public** access uses **Newt** to **Pangolin** with **CNAME** and Integration API steps as documented—not generic in-cluster public DNS. +The **noble** environment is a **Talos** lab cluster on **`192.168.50.0/24`** with **three control plane nodes and one worker**, schedulable workloads on control planes enabled, and the Kubernetes API exposed through **kube-vip** at **`192.168.50.230`**. **Cilium** provides the CNI after Talos bootstrap with **`cni: none`**; **MetalLB** advertises **`192.168.50.210`–`192.168.50.229`**, pinning **Argo CD** to **`192.168.50.210`** and **Traefik** to **`192.168.50.211`** for **`*.apps.noble.lab.pcenicni.dev`**. **cert-manager** issues certificates for Traefik Ingresses; **GitOps** is **Ansible-driven Helm** for the platform (**`clusters/noble/bootstrap/`**) plus optional **Argo CD** app-of-apps (**`clusters/noble/apps/`**, **`clusters/noble/bootstrap/argocd/`**). **Observability** uses **kube-prometheus-stack** in **`monitoring`**, **Loki** and **Fluent Bit** with Grafana wired via a **ConfigMap** datasource, with **Longhorn** PVCs for Prometheus, Grafana, Alertmanager, and Loki. **Secrets** in git use **SOPS** + **age** under **`clusters/noble/secrets/`**; **Kyverno** enforces **Pod Security Standards baseline** in **Audit**. **Public** access uses **Newt** to **Pangolin** with **CNAME** and Integration API steps as documented—not generic in-cluster public DNS. --- diff --git a/docs/homelab-network.md b/docs/homelab-network.md new file mode 100644 index 0000000..535f770 --- /dev/null +++ b/docs/homelab-network.md @@ -0,0 +1,100 @@ +# Homelab network inventory + +Single place for **VLANs**, **static addressing**, and **hosts** beside the **noble** Talos cluster. **Proxmox** is the **hypervisor** for the VMs below; **all of those VMs are intended to run on `192.168.1.0/24`** (same broadcast domain as Pi-hole and typical home clients). **Noble** (Talos) stays on **`192.168.50.0/24`** per [`architecture.md`](architecture.md) and [`talos/CLUSTER-BUILD.md`](../talos/CLUSTER-BUILD.md) until you change that design. + +## VLANs (logical) + +| Network | Role | +|---------|------| +| **`192.168.1.0/24`** | **Homelab / Proxmox LAN** — **Proxmox host(s)**, **all Proxmox VMs**, **Pi-hole**, **Mac mini**, and other servers that share this VLAN. | +| **`192.168.50.0/24`** | **Noble Talos** cluster — physical nodes, **kube-vip**, **MetalLB**, Traefik; **not** the Proxmox VM subnet. | +| **`192.168.60.0/24`** | **DMZ / WAN-facing** — **NPM**, **WebDAV**, **other services** that need WAN access. | +| **`192.168.40.0/24`** | **Home Assistant** and IoT devices — isolated; record subnet and HA IP in DHCP/router. | + +**Routing / DNS:** Clients and VMs on **`192.168.1.0/24`** reach **noble** services on **`192.168.50.0/24`** via **L3** (router/firewall). **NFS** from OMV (`192.168.1.105`) to **noble** pods uses the **OMV data IP** as the NFS server address from the cluster’s perspective. + +Firewall rules between VLANs are **out of scope** here; document them where you keep runbooks. + +--- + +## `192.168.50.0/24` — reservations (noble only) + +Do not assign **unrelated** static services on **this** VLAN without checking overlap with MetalLB and kube-vip. + +| Use | Addresses | +|-----|-----------| +| Talos nodes | `.10`–`.40` (see [`talos/talconfig.yaml`](../talos/talconfig.yaml)) | +| MetalLB L2 pool | `.210`–`.229` | +| Traefik (ingress) | `.211` (typical) | +| Argo CD | `.210` (typical) | +| Kubernetes API (kube-vip) | **`.230`** — **must not** be a VM | + +--- + +## Proxmox VMs (`192.168.1.0/24`) + +All run on **Proxmox**; addresses below use **`192.168.1.0/24`** (same host octet as your earlier `.50.x` / `.60.x` plan, moved into the homelab VLAN). Adjust if your router uses a different numbering scheme. + +Most are **Docker hosts** with multiple apps; treat the **IP** as the **host**, not individual containers. + +| VM ID | Name | IP | Notes | +|-------|------|-----|--------| +| 666 | nginxproxymanager | `192.168.1.20` | NPM (edge / WAN-facing role — firewall as you design). | +| 777 | nginxproxymanager-Lan | `192.168.1.60` | NPM on **internal** homelab LAN. | +| 100 | Openmediavault | `192.168.1.105` | **NFS** exports for *arr / media paths. | +| 110 | Monitor | `192.168.1.110` | Uptime Kuma, Peekaping, Tracearr → cluster candidates. | +| 120 | arr | `192.168.1.120` | *arr stack; media via **NFS** from OMV — see [migration](#arr-stack-nfs-and-kubernetes). | +| 130 | Automate | `192.168.1.130` | Low use — **candidate to remove** or consolidate. | +| 140 | general-purpose | `192.168.1.140` | IT tools, Mealie, Open WebUI, SparkyFitness, … | +| 150 | Media-server | `192.168.1.150` | Jellyfin (test, **NFS** media), ebook server. | +| 160 | s3 | `192.168.1.170` | Object storage; **merge** into **central S3** on noble per [`shared-data-services.md`](shared-data-services.md) when ready. | +| 190 | Auth | `192.168.1.190` | **Authentik** → **noble (K8s)** for HA. | +| 300 | gitea | `192.168.1.203` | On **`.1`**, no overlap with noble **MetalLB `.210`–`.229`** on **`.50`**. | +| 310 | gitea-nsfw | `192.168.1.204` | | +| 500 | AMP | `192.168.1.47` | | + +### Workload detail (what runs where) + +**Auth (190)** — **Authentik** is the main service; moving it to **Kubernetes (noble)** gives you **HA**, rolling upgrades, and backups via your cluster patterns (PVCs, Velero, etc.). Plan **OIDC redirect URLs** and **outposts** (if used) when the **ingress hostname** and paths to **`.50`** services change. + +**Monitor (110)** — **Uptime Kuma**, **Peekaping**, and **Tracearr** are a good fit for the cluster: small state (SQLite or small DBs), **Ingress** via Traefik, and **Longhorn** or a small DB PVC. Migrate **one app at a time** and keep the old VM until DNS and alerts are verified. + +**arr (120)** — **Lidarr, Sonarr, Radarr**, and related *arr* apps; libraries and download paths point at **NFS** from **Openmediavault (100)** at **`192.168.1.105`**. The hard part is **keeping paths, permissions (UID/GID), and download client** wiring while pods move. + +**Automate (130)** — Tools are **barely used**; **decommission**, merge into **general-purpose (140)**, or replace with a **CronJob** / one-shot on the cluster only if something still needs scheduling. + +**general-purpose (140)** — “Daily driver” stack: **IT tools**, **Mealie**, **Open WebUI**, **SparkyFitness**, and similar. **Candidates for gradual moves** to noble; group by **data sensitivity** and **persistence** (Postgres vs SQLite) when you pick order. + +**Media-server (150)** — **Jellyfin** (testing) with libraries on **NFS**; **ebook** server. Treat **Jellyfin** like *arr* for storage: same NFS export and **transcoding** needs (CPU on worker nodes or GPU if you add it). Ebook stack depends on what you run (e.g. Kavita, Audiobookshelf) — note **metadata paths** before moving. + +### Arr stack, NFS, and Kubernetes + +You do **not** have to move NFS into the cluster: **Openmediavault** on **`192.168.1.105`** can stay the **NFS server** while the *arr* apps run as **Deployments** with **ReadWriteMany** volumes. Noble nodes on **`192.168.50.0/24`** mount NFS using **that IP** (ensure **firewall** allows **NFS** from node IPs to OMV). + +1. **Keep OMV as the single source of exports** — same **export path** (e.g. `/export/media`) from the cluster’s perspective as from the current VM. +2. **Mount NFS in Kubernetes** — use a **CSI NFS driver** (e.g. **nfs-subdir-external-provisioner** or **csi-driver-nfs**) so each app gets a **PVC** backed by a **subdirectory** of the export, **or** one shared RWX PVC for a common tree if your layout needs it. +3. **Match POSIX ownership** — set **supplemental groups** or **fsGroup** / **runAsUser** on the pods so Sonarr/Radarr see the same **UID/GID** as today’s Docker setup; fix **squash** settings on OMV if you use `root_squash`. +4. **Config and DB** — back up each app’s **config volume** (or SQLite files), redeploy with the same **environment**; point **download clients** and **NFS media roots** to the **same logical paths** inside the container. +5. **Low-risk path** — run **one** *arr* app on the cluster while the rest stay on **VM 120** until imports and downloads behave; then cut DNS/NPM streams over. + +If you prefer **no** NFS from pods, the alternative is **large ReadWriteOnce** disks on Longhorn and **sync** from OMV — usually **more** moving parts than **RWX NFS** for this workload class. + +--- + +## Other hosts + +| Host | IP | VLAN / network | Notes | +|------|-----|----------------|--------| +| **Pi-hole** | `192.168.1.127` | `192.168.1.0/24` | DNS; same VLAN as Proxmox VMs. | +| **Home Assistant** | *TBD* | **IoT VLAN** | Add reservation when fixed. | +| **Mac mini** | `192.168.1.155` | `192.168.1.0/24` | Align with **Storage B** in [`Racks.md`](Racks.md) if the same machine. | + +--- + +## Related docs + +- **Shared Postgres + S3 (centralized):** [`shared-data-services.md`](shared-data-services.md) +- **VM → noble migration plan:** [`migration-vm-to-noble.md`](migration-vm-to-noble.md) +- Noble cluster topology and ingress: [`architecture.md`](architecture.md) +- Physical racks (Primary / Storage B / Rack C): [`Racks.md`](Racks.md) +- Cluster checklist: [`../talos/CLUSTER-BUILD.md`](../talos/CLUSTER-BUILD.md) diff --git a/docs/migration-vm-to-noble.md b/docs/migration-vm-to-noble.md new file mode 100644 index 0000000..c577bf1 --- /dev/null +++ b/docs/migration-vm-to-noble.md @@ -0,0 +1,121 @@ +# Migration plan: Proxmox VMs → noble (Kubernetes) + +This document is the **default playbook** for moving workloads from **Proxmox VMs** on **`192.168.1.0/24`** into the **noble** Talos cluster on **`192.168.50.0/24`**. Source inventory and per-VM notes: [`homelab-network.md`](homelab-network.md). Cluster facts: [`architecture.md`](architecture.md), [`talos/CLUSTER-BUILD.md`](../talos/CLUSTER-BUILD.md). + +--- + +## 1. Scope and principles + +| Principle | Detail | +|-----------|--------| +| **One service at a time** | Run the new workload on **noble** while the **VM** stays up; cut over **DNS / NPM** only after checks pass. | +| **Same container image** | Prefer the **same** upstream image and major version as Docker on the VM to reduce surprises. | +| **Data moves with a plan** | **Backup** VM volumes or export DB dumps **before** the first deploy to the cluster. | +| **Ingress on noble** | Internal apps use **Traefik** + **`*.apps.noble.lab.pcenicni.dev`** (or your chosen hostnames) and **MetalLB** (e.g. **`192.168.50.211`**) per [`architecture.md`](architecture.md). | +| **Cross-VLAN** | Clients on **`.1`** reach services on **`.50`** via **routing**; **firewall** must allow **NFS** from **Talos node IPs** to **OMV `192.168.1.105`** when pods mount NFS. | + +**Not everything must move.** Keep **Openmediavault** (and optionally **NPM**) on VMs if you prefer; the cluster consumes **NFS** and **HTTP** from them. + +--- + +## 2. Prerequisites (before wave 1) + +1. **Cluster healthy** — `kubectl get nodes`; [`talos/CLUSTER-BUILD.md`](../talos/CLUSTER-BUILD.md) checklist through ingress and cert-manager as needed. +2. **Ingress + TLS** — **Traefik** + **cert-manager** working; you can hit a **test Ingress** on the MetalLB IP. +3. **GitOps / deploy path** — Decide per app: **Helm** under `clusters/noble/apps/`, **Argo CD**, or **Ansible**-applied manifests (match how you manage the rest of noble). +4. **Secrets** — Plan **Kubernetes Secrets**; for git-stored material, align with **SOPS** (`clusters/noble/secrets/`, `.sops.yaml`). +5. **Storage** — **Longhorn** default for **ReadWriteOnce** state; for **NFS** (*arr*, Jellyfin), install a **CSI NFS** driver and test a **small RWX PVC** before migrating data-heavy apps. +6. **Shared data tier (recommended)** — Deploy **centralized PostgreSQL** and **S3-compatible storage** on noble so apps do not each ship their own DB/object store; see [`shared-data-services.md`](shared-data-services.md). +7. **Firewall** — Rules: **workstation → `192.168.50.230:6443`**; **nodes → OMV NFS ports**; **clients → `192.168.50.211`** (or split-horizon DNS) as you design. +8. **DNS** — Split-horizon or Pi-hole records for **`*.apps.noble.lab.pcenicni.dev`** → **Traefik** IP **`192.168.50.211`** for LAN clients. + +--- + +## 3. Standard migration procedure (repeat per app) + +Use this checklist for **each** application (or small group, e.g. one Helm release). + +| Step | Action | +|------|--------| +| **A. Discover** | Document **image:tag**, **ports**, **volumes** (host paths), **env vars**, **depends_on** (DB, Redis, NFS path). Export **docker inspect** / **compose** from the VM. | +| **B. Backup** | Snapshot **Proxmox VM** or backup **volume** / **SQLite** / **DB dump** to offline storage. | +| **C. Namespace** | Create a **dedicated namespace** (e.g. `monitoring-tools`, `authentik`) or use your house standard. | +| **D. Deploy** | Add **Deployment** (or **StatefulSet**), **Service**, **Ingress** (class **traefik**), **PVCs**; wire **secrets** from **Secrets** (not literals in git). | +| **E. Storage** | **Longhorn** PVC for local state; **NFS CSI** PVC for shared media/config paths that must match the VM (see [`homelab-network.md`](homelab-network.md) *arr* section). Prefer **shared Postgres** / **shared S3** per [`shared-data-services.md`](shared-data-services.md) instead of new embedded databases. Match **UID/GID** with `securityContext`. | +| **F. Smoke test** | `kubectl port-forward` or temporary **Ingress** hostname; log in, run one critical workflow (login, playback, sync). | +| **G. DNS cutover** | Point **internal DNS** or **NPM** upstream from the **VM IP** to the **new hostname** (Traefik) or **MetalLB IP** + Host header. | +| **H. Observe** | 24–72 hours: logs, alerts, **Uptime Kuma** (once migrated), backups. | +| **I. Decommission** | Stop the **container** on the VM (not the whole VM until the **whole** VM is empty). | +| **J. VM off** | When **no** services remain on that VM, **power off** and archive or delete the VM. | + +**Rollback:** Re-enable the VM service, revert **DNS/NPM** to the old IP, delete or scale the cluster deployment to zero. + +--- + +## 4. Recommended migration order (phases) + +Order balances **risk**, **dependencies**, and **learning curve**. + +| Phase | Target | Rationale | +|-------|--------|-----------| +| **0 — Optional** | **Automate (130)** | Low use: **retire** or replace with **CronJobs**; skip if nothing valuable runs. | +| **0b — Platform** | **Shared Postgres + S3** on noble | Run **before** or alongside early waves so new deploys use **one DSN** and **one object endpoint**; retire **VM 160** when empty. See [`shared-data-services.md`](shared-data-services.md). | +| **1 — Observability** | **Monitor (110)** — Uptime Kuma, Peekaping, Tracearr | Small state, validates **Ingress**, **PVCs**, and **alert paths** before auth and media. | +| **2 — Git** | **gitea (300)**, **gitea-nsfw (310)** | Point at **shared Postgres** + **S3** for attachments; move **repos** with **PVC** + backup restore if needed. | +| **3 — Object / misc** | **s3 (160)**, **AMP (500)** | **Migrate data** into **central** S3 on cluster, then **decommission** duplicate MinIO on VM **160** if applicable. | +| **4 — Auth** | **Auth (190)** — **Authentik** | Use **shared Postgres**; update **all OIDC clients** (Gitea, apps, NPM) with **new issuer URLs**; schedule a **maintenance window**. | +| **5 — Daily apps** | **general-purpose (140)** | Move **one app per release** (Mealie, Open WebUI, …); each app gets its **own database** (and bucket if needed) on the **shared** tiers — not a new Postgres pod per app. | +| **6 — Media / *arr*** | **arr (120)**, **Media-server (150)** | **NFS** from **OMV**, download clients, **transcoding** — migrate **one *arr*** then Jellyfin/ebook; see NFS bullets in [`homelab-network.md`](homelab-network.md). | +| **7 — Edge** | **NPM (666/777)** | Often **last**: either keep on Proxmox or replace with **Traefik** + **IngressRoutes** / **Gateway API**; many people keep a **dedicated** reverse proxy VM until parity is proven. | + +**Openmediavault (100)** — Typically **stays** as **NFS** (and maybe backup target) for the cluster; no need to “migrate” the whole NAS into Kubernetes. + +--- + +## 5. Ingress and reverse proxy + +| Approach | When to use | +|----------|-------------| +| **Traefik Ingress** on noble | Default for **internal** HTTPS apps; **cert-manager** for public names you control. | +| **NPM (VM)** as front door | Point **proxy host** → **Traefik MetalLB IP** or **service name** if you add internal DNS; reduces double-proxy if you **terminate TLS** in one place only. | +| **Newt / Pangolin** | Public reachability per [`clusters/noble/bootstrap/newt/README.md`](../clusters/noble/bootstrap/newt/README.md); not automatic ExternalDNS. | + +Avoid **two** TLS terminations for the same hostname unless you intend **SSL passthrough** end-to-end. + +--- + +## 6. Authentik-specific (Auth VM → cluster) + +1. **Backup** Authentik **PostgreSQL** (or embedded DB) and **media** volume from the VM. +2. Deploy **Helm** (official chart) with **same** Authentik version if possible. +3. **Restore** DB into **shared cluster Postgres** (recommended) or chart-managed DB — see [`shared-data-services.md`](shared-data-services.md). +4. Update **issuer URL** in every **OIDC/OAuth** client (Gitea, Grafana, etc.). +5. Re-test **outposts** (if any) and **redirect URIs** from both **`.1`** and **`.50`** client perspectives. +6. **Cut over DNS**; then **decommission** VM **190**. + +--- + +## 7. *arr* and Jellyfin-specific + +Follow the **numbered list** under **“Arr stack, NFS, and Kubernetes”** in [`homelab-network.md`](homelab-network.md). In short: **OMV stays**; **CSI NFS** + **RWX**; **match permissions**; migrate **one app** first; verify **download client** can reach the new pod **IP/DNS** from your download host. + +--- + +## 8. Validation checklist (per wave) + +- Pods **Ready**, **Ingress** returns **200** / login page. +- **TLS** valid for chosen hostname. +- **Persistent data** present (new uploads, DB writes survive pod restart). +- **Backups** (Velero or app-level) defined for the new location. +- **Monitoring** / alerts updated (targets, not old VM IP). +- **Documentation** in [`homelab-network.md`](homelab-network.md) updated (VM retired or marked migrated). + +--- + +## Related docs + +- **Shared Postgres + S3:** [`shared-data-services.md`](shared-data-services.md) +- VM inventory and NFS notes: [`homelab-network.md`](homelab-network.md) +- Noble topology, MetalLB, Traefik: [`architecture.md`](architecture.md) +- Bootstrap and versions: [`talos/CLUSTER-BUILD.md`](../talos/CLUSTER-BUILD.md) +- Apps layout: [`clusters/noble/apps/README.md`](../clusters/noble/apps/README.md) diff --git a/docs/shared-data-services.md b/docs/shared-data-services.md new file mode 100644 index 0000000..5b6d9ad --- /dev/null +++ b/docs/shared-data-services.md @@ -0,0 +1,90 @@ +# Centralized PostgreSQL and S3-compatible storage + +Goal: **one shared PostgreSQL** and **one S3-compatible object store** on **noble**, instead of every app bundling its own database or MinIO. Apps keep **logical isolation** via **per-app databases** / **users** and **per-app buckets** (or prefixes), not separate clusters. + +See also: [`migration-vm-to-noble.md`](migration-vm-to-noble.md), [`homelab-network.md`](homelab-network.md) (VM **160** `s3` today), [`talos/CLUSTER-BUILD.md`](../talos/CLUSTER-BUILD.md) (Velero + S3). + +--- + +## 1. Why centralize + +| Benefit | Detail | +|--------|--------| +| **Operations** | One backup/restore story, one upgrade cadence, one place to tune **IOPS** and **retention**. | +| **Security** | **Least privilege**: each app gets its own **DB user** and **S3 credentials** scoped to one database or bucket. | +| **Resources** | Fewer duplicate **Postgres** or **MinIO** sidecars; better use of **Longhorn** or dedicated PVCs for the shared tiers. | + +**Tradeoff:** Shared tiers are **blast-radius** targets — use **backups**, **PITR** where you care, and **NetworkPolicies** so only expected namespaces talk to Postgres/S3. + +--- + +## 2. PostgreSQL — recommended pattern + +1. **Run Postgres on noble** — Operators such as **CloudNativePG**, **Zalando Postgres operator**, or a well-maintained **Helm** chart with **replicas** + **persistent volumes** (Longhorn). +2. **One cluster instance, many databases** — For each app: `CREATE DATABASE appname;` and a **dedicated role** with `CONNECT` on that database only (not superuser). +3. **Connection from apps** — Use a **Kubernetes Service** (e.g. `postgres-platform.platform.svc.cluster.local:5432`) and pass **credentials** via **Secrets** (ideally **SOPS**-encrypted in git). +4. **Migrations** — Run app **migration** jobs or init containers against the **same** DSN after DB exists. + +**Migrating off SQLite / embedded Postgres** + +- **SQLite → Postgres:** export/import per app (native tools, or **pgloader** where appropriate). +- **Docker Postgres volume:** `pg_dumpall` or per-DB `pg_dump` → restore into a **new** database on the shared server; **freeze writes** during cutover. + +--- + +## 3. S3-compatible object storage — recommended pattern + +1. **Run one S3 API on noble** — **MinIO** (common), **Garage**, or **SeaweedFS** S3 layer — with **PVC(s)** or host path for data; **erasure coding** / replicas if the chart supports it and you want durability across nodes. +2. **Buckets per concern** — e.g. `gitea-attachments`, `velero`, `loki-archive` — not one global bucket unless you enforce **prefix** IAM policies. +3. **Credentials** — **IAM-style** users limited to **one bucket** (or prefix); **Secrets** reference **access key** / **secret**; never commit keys in plain text. +4. **Endpoint for pods** — In-cluster: `http://minio.platform.svc.cluster.local:9000` (or TLS inside mesh). Apps use **virtual-hosted** or **path-style** per SDK defaults. + +### NFS as backing store for S3 on noble + +**Yes.** You can run MinIO (or another S3-compatible server) with its **data directory** on a **ReadWriteMany** volume that is **NFS** — for example the same **Openmediavault** export you already use, mounted via your **NFS CSI** driver (see [`homelab-network.md`](homelab-network.md)). + +| Consideration | Detail | +|---------------|--------| +| **Works for homelab** | MinIO stores objects as files under a path; **POSIX** on NFS is enough for many setups. | +| **Performance** | NFS adds **latency** and shared bandwidth; fine for moderate use, less ideal for heavy multi-tenant throughput. | +| **Availability** | The **NFS server** (OMV) becomes part of the availability story for object data — plan **backups** and **OMV** health like any dependency. | +| **Locking / semantics** | Prefer **NFSv4.x**; avoid mixing **NFS** and expectations of **local SSD** (e.g. very chatty small writes). If you see odd behavior, **Longhorn** (block) on a node is the usual next step. | +| **Layering** | You are stacking **S3 API → file layout → NFS → disk**; that is normal for a lab, just **monitor** space and exports on OMV. | + +**Summary:** NFS-backed PVC for MinIO is **valid** on noble; use **Longhorn** (or local disk) when you need **better IOPS** or want object data **inside** the cluster’s storage domain without depending on OMV for that tier. + +**Migrating off VM 160 (`s3`) or per-app MinIO** + +- **MinIO → MinIO:** `mc mirror` between aliases, or **replication** if you configure it. +- **Same API:** Any tool speaking **S3** can **sync** buckets before you point apps at the new endpoint. + +**Velero** — Point the **backup location** at the **central** bucket (see cluster Velero docs); avoid a second ad-hoc object store for backups if one cluster bucket is enough. + +--- + +## 4. Ordering relative to app migrations + +| When | What | +|------|------| +| **Early** | Stand up **Postgres** + **S3** with **empty** DBs/buckets; test with **one** non-critical app (e.g. a throwaway deployment). | +| **Before auth / Git** | **Gitea** and **Authentik** benefit from **managed Postgres** early — plan **DSN** and **bucket** for attachments **before** cutover. | +| **Ongoing** | New apps **must not** ship embedded **Postgres/MinIO** unless the workload truly requires it (e.g. vendor appliance). | + +--- + +## 5. Checklist (platform team) + +- [ ] Postgres **Service** DNS name and **TLS** (optional in-cluster) documented. +- [ ] S3 **endpoint**, **region** string (can be `us-east-1` for MinIO), **TLS** for Ingress if clients are outside the cluster. +- [ ] **Backup:** scheduled **logical dumps** (Postgres) and **bucket replication** or **object versioning** where needed. +- [ ] **SOPS** / **External Secrets** pattern for **rotation** without editing app manifests by hand. +- [ ] **homelab-network.md** updated when **VM 160** is retired or repurposed. + +--- + +## Related docs + +- VM → cluster migration: [`migration-vm-to-noble.md`](migration-vm-to-noble.md) +- Inventory (s3 VM): [`homelab-network.md`](homelab-network.md) +- Longhorn / storage runbook: [`../talos/runbooks/longhorn.md`](../talos/runbooks/longhorn.md) +- Velero (S3 backup target): [`../clusters/noble/bootstrap/velero/`](../clusters/noble/bootstrap/velero/) (if present) diff --git a/komodo/monitor/tracearr/compose.yaml b/komodo/monitor/tracearr/compose.yaml index 1a3a936..e43f17c 100644 --- a/komodo/monitor/tracearr/compose.yaml +++ b/komodo/monitor/tracearr/compose.yaml @@ -7,7 +7,7 @@ services: tracearr: - image: ghcr.io/connorgallopo/tracearr:supervised-nightly + image: ghcr.io/connorgallopo/tracearr:latest shm_size: 256mb # Required for PostgreSQL shared memory ports: - "${PORT:-3000}:3000" diff --git a/talos/CLUSTER-BUILD.md b/talos/CLUSTER-BUILD.md index ff5f5b2..a8725bc 100644 --- a/talos/CLUSTER-BUILD.md +++ b/talos/CLUSTER-BUILD.md @@ -4,7 +4,7 @@ This document is the **exported TODO** for the **noble** Talos cluster (4 nodes) ## Current state (2026-03-28) -Lab stack is **up** on-cluster through **Phase D**–**F** and **Phase G** (Vault **CiliumNetworkPolicy**, **`talos/runbooks/`**). **Next focus:** optional **Alertmanager** receivers (Slack/PagerDuty); tighten **RBAC** (Headlamp / cluster-admin); **Cilium** policies for other namespaces as needed; enable **Mend Renovate** for PRs; Pangolin/sample Ingress; **Velero** backup/restore drill after S3 credentials are set (**`noble_velero_install`**). +Lab stack is **up** on-cluster through **Phase D**–**F** and **Phase G** (**`talos/runbooks/`**, **SOPS**-encrypted secrets in **`clusters/noble/secrets/`**). **Next focus:** optional **Alertmanager** receivers (Slack/PagerDuty); tighten **RBAC** (Headlamp / cluster-admin); **Cilium** policies for other namespaces as needed; enable **Mend Renovate** for PRs; Pangolin/sample Ingress; **Velero** backup/restore drill after S3 credentials are set (**`noble_velero_install`**). - **Talos** v1.12.6 (target) / **Kubernetes** as bundled — four nodes **Ready** unless upgrading; **`talosctl health`**; **`talos/kubeconfig`** is **local only** (gitignored — never commit; regenerate with `talosctl kubeconfig` per `talos/README.md`). **Image Factory (nocloud installer):** `factory.talos.dev/nocloud-installer/249d9135de54962744e917cfe654117000cba369f9152fbab9d055a00aa3664f:v1.12.6` - **Cilium** Helm **1.16.6** / app **1.16.6** (`clusters/noble/bootstrap/cilium/`, phase 1 values). @@ -15,13 +15,11 @@ Lab stack is **up** on-cluster through **Phase D**–**F** and **Phase G** (Vaul - **Longhorn** Helm **1.11.1** / app **v1.11.1** — `clusters/noble/bootstrap/longhorn/` (PSA **privileged** namespace, `defaultDataPath` `/var/mnt/longhorn`, `preUpgradeChecker` enabled); **StorageClass** `longhorn` (default); **`nodes.longhorn.io`** all **Ready**; test **PVC** `Bound` on `longhorn`. - **Traefik** Helm **39.0.6** / app **v3.6.11** — `clusters/noble/bootstrap/traefik/`; **`Service`** **`LoadBalancer`** **`EXTERNAL-IP` `192.168.50.211`**; **`IngressClass`** **`traefik`** (default). Point **`*.apps.noble.lab.pcenicni.dev`** at **`192.168.50.211`**. MetalLB pool verification was done before replacing the temporary nginx test with Traefik. - **cert-manager** Helm **v1.20.0** / app **v1.20.0** — `clusters/noble/bootstrap/cert-manager/`; **`ClusterIssuer`** **`letsencrypt-staging`** and **`letsencrypt-prod`** (**DNS-01** via **Cloudflare** for **`pcenicni.dev`**, Secret **`cloudflare-dns-api-token`** in **`cert-manager`**); ACME email **`certificates@noble.lab.pcenicni.dev`** (edit in manifests if you want a different mailbox). -- **Newt** Helm **1.2.0** / app **1.10.1** — `clusters/noble/bootstrap/newt/` (**fossorial/newt**); Pangolin site tunnel — **`newt-pangolin-auth`** Secret (**`PANGOLIN_ENDPOINT`**, **`NEWT_ID`**, **`NEWT_SECRET`**). Prefer a **SealedSecret** in git (`kubeseal` — see `clusters/noble/bootstrap/sealed-secrets/examples/`) after rotating credentials if they were exposed. **Public DNS** is **not** automated with ExternalDNS: **CNAME** records at your DNS host per Pangolin’s domain instructions, plus **Integration API** for HTTP resources/targets — see **`clusters/noble/bootstrap/newt/README.md`**. LAN access to Traefik can still use **`*.apps.noble.lab.pcenicni.dev`** → **`192.168.50.211`** (split horizon / local resolver). +- **Newt** Helm **1.2.0** / app **1.10.1** — `clusters/noble/bootstrap/newt/` (**fossorial/newt**); Pangolin site tunnel — **`newt-pangolin-auth`** Secret (**`PANGOLIN_ENDPOINT`**, **`NEWT_ID`**, **`NEWT_SECRET`**). Store credentials in git with **SOPS** (`clusters/noble/secrets/newt-pangolin-auth.secret.yaml`, **`age-key.txt`**, **`.sops.yaml`**) — see **`clusters/noble/secrets/README.md`**. **Public DNS** is **not** automated with ExternalDNS: **CNAME** records at your DNS host per Pangolin’s domain instructions, plus **Integration API** for HTTP resources/targets — see **`clusters/noble/bootstrap/newt/README.md`**. LAN access to Traefik can still use **`*.apps.noble.lab.pcenicni.dev`** → **`192.168.50.211`** (split horizon / local resolver). - **Argo CD** Helm **9.4.17** / app **v3.3.6** — `clusters/noble/bootstrap/argocd/`; **`argocd-server`** **`LoadBalancer`** **`192.168.50.210`**; app-of-apps root syncs **`clusters/noble/apps/`** (edit **`root-application.yaml`** `repoURL` before applying). - **kube-prometheus-stack** — Helm chart **82.15.1** — `clusters/noble/bootstrap/kube-prometheus-stack/` (**namespace** `monitoring`, PSA **privileged** — **node-exporter** needs host mounts); **Longhorn** PVCs for Prometheus, Grafana, Alertmanager; **node-exporter** DaemonSet **4/4**. **Grafana Ingress:** **`https://grafana.apps.noble.lab.pcenicni.dev`** (Traefik **`ingressClassName: traefik`**, **`cert-manager.io/cluster-issuer: letsencrypt-prod`**). **Loki** datasource in Grafana: ConfigMap **`clusters/noble/bootstrap/grafana-loki-datasource/loki-datasource.yaml`** (sidecar label **`grafana_datasource: "1"`**) — not via **`grafana.additionalDataSources`** in the chart. **`helm upgrade --install` with `--wait` is silent until done** — use **`--timeout 30m`**; Grafana admin: Secret **`kube-prometheus-grafana`**, keys **`admin-user`** / **`admin-password`**. - **Loki** + **Fluent Bit** — **`grafana/loki` 6.55.0** SingleBinary + **filesystem** on **Longhorn** (`clusters/noble/bootstrap/loki/`); **`loki.auth_enabled: false`**; **`chunksCache.enabled: false`** (no memcached chunk cache). **`fluent/fluent-bit` 0.56.0** → **`loki-gateway.loki.svc:80`** (`clusters/noble/bootstrap/fluent-bit/`); **`logging`** PSA **privileged**. **Grafana Explore:** **`kubectl apply -f clusters/noble/bootstrap/grafana-loki-datasource/loki-datasource.yaml`** then **Explore → Loki** (e.g. `{job="fluent-bit"}`). -- **Sealed Secrets** Helm **2.18.4** / app **0.36.1** — `clusters/noble/bootstrap/sealed-secrets/` (namespace **`sealed-secrets`**); **`kubeseal`** on client should match controller minor (**README**); back up **`sealed-secrets-key`** (see README). -- **External Secrets Operator** Helm **2.2.0** / app **v2.2.0** — `clusters/noble/bootstrap/external-secrets/`; Vault **`ClusterSecretStore`** in **`examples/vault-cluster-secret-store.yaml`** (**`http://`** to match Vault listener — apply after Vault **Kubernetes auth**). -- **Vault** Helm **0.32.0** / app **1.21.2** — `clusters/noble/bootstrap/vault/` — standalone **file** storage, **Longhorn** PVC; **HTTP** listener (`global.tlsDisable`); optional **CronJob** lab unseal **`unseal-cronjob.yaml`**; **not** initialized in git — run **`vault operator init`** per **`README.md`**. +- **SOPS** — cluster **`Secret`** manifests under **`clusters/noble/secrets/`** encrypted with **age** (see **`.sops.yaml`**, **`age-key.txt`** gitignored); **`noble.yml`** decrypt-applies when the private key is present. - **Velero** Helm **12.0.0** / app **v1.18.0** — `clusters/noble/bootstrap/velero/` (**Ansible** **`noble_velero`**, not Argo); **S3-compatible** backup location + **CSI** snapshots (**`EnableCSI`**); enable with **`noble_velero_install`** per **`velero/README.md`**. - **Still open:** **Renovate** — install **[Mend Renovate](https://github.com/apps/renovate)** (or self-host) so PRs run; optional **Alertmanager** notification channels; optional **sample Ingress + cert + Pangolin** end-to-end; **Argo CD SSO**. @@ -64,9 +62,6 @@ Lab stack is **up** on-cluster through **Phase D**–**F** and **Phase G** (Vaul - kube-prometheus-stack: **82.15.1** (Helm chart `prometheus-community/kube-prometheus-stack`; app **v0.89.x** bundle) - Loki: **6.55.0** (Helm chart `grafana/loki`; app **3.6.7**) - Fluent Bit: **0.56.0** (Helm chart `fluent/fluent-bit`; app **4.2.3**) -- Sealed Secrets: **2.18.4** (Helm chart `sealed-secrets/sealed-secrets`; app **0.36.1**) -- External Secrets Operator: **2.2.0** (Helm chart `external-secrets/external-secrets`; app **v2.2.0**) -- Vault: **0.32.0** (Helm chart `hashicorp/vault`; app **1.21.2**) - Kyverno: **3.7.1** (Helm chart `kyverno/kyverno`; app **v1.17.1**); **kyverno-policies** **3.7.1** — **baseline** PSS, **Audit** (`clusters/noble/bootstrap/kyverno/`) - Headlamp: **0.40.1** (Helm chart `headlamp/headlamp`; app matches chart — see [Artifact Hub](https://artifacthub.io/packages/helm/headlamp/headlamp)) - Velero: **12.0.0** (Helm chart `vmware-tanzu/velero`; app **v1.18.0**) — **`clusters/noble/bootstrap/velero/`**; AWS plugin **v1.14.0**; Ansible **`noble_velero`** @@ -77,7 +72,7 @@ Lab stack is **up** on-cluster through **Phase D**–**F** and **Phase G** (Vaul | Artifact | Path | |----------|------| | This checklist | `talos/CLUSTER-BUILD.md` | -| Operational runbooks (API VIP, etcd, Longhorn, Vault) | `talos/runbooks/` | +| Operational runbooks (API VIP, etcd, Longhorn, SOPS) | `talos/runbooks/` | | Talos quick start + networking + kubeconfig | `talos/README.md` | | talhelper source (active) | `talos/talconfig.yaml` — may be **wipe-phase** (no Longhorn volume) during disk recovery | | Longhorn volume restore | `talos/talconfig.with-longhorn.yaml` — copy to `talconfig.yaml` after GPT wipe (see `talos/README.md` §5) | @@ -96,13 +91,11 @@ Lab stack is **up** on-cluster through **Phase D**–**F** and **Phase G** (Vaul | Grafana Loki datasource (ConfigMap; no chart change) | `clusters/noble/bootstrap/grafana-loki-datasource/loki-datasource.yaml` | | Loki (Helm values) | `clusters/noble/bootstrap/loki/` — `values.yaml`, `namespace.yaml` | | Fluent Bit → Loki (Helm values) | `clusters/noble/bootstrap/fluent-bit/` — `values.yaml`, `namespace.yaml` | -| Sealed Secrets (Helm) | `clusters/noble/bootstrap/sealed-secrets/` — `values.yaml`, `namespace.yaml`, `README.md` | -| External Secrets Operator (Helm + Vault store example) | `clusters/noble/bootstrap/external-secrets/` — `values.yaml`, `namespace.yaml`, `README.md`, `examples/vault-cluster-secret-store.yaml` | -| Vault (Helm + optional unseal CronJob) | `clusters/noble/bootstrap/vault/` — `values.yaml`, `namespace.yaml`, `unseal-cronjob.yaml`, `cilium-network-policy.yaml`, `configure-kubernetes-auth.sh`, `README.md` | +| SOPS-encrypted cluster Secrets | `clusters/noble/secrets/` — `README.md`, `*.secret.yaml`; **`.sops.yaml`**, **`age-key.txt`** (gitignored) at repo root | | Kyverno + PSS baseline policies | `clusters/noble/bootstrap/kyverno/` — `values.yaml`, `policies-values.yaml`, `namespace.yaml`, `README.md` | | Headlamp (Helm + Ingress) | `clusters/noble/bootstrap/headlamp/` — `values.yaml`, `namespace.yaml`, `README.md` | | Velero (Helm + S3 BSL; CSI snapshots) | `clusters/noble/bootstrap/velero/` — `values.yaml`, `namespace.yaml`, `README.md`; **`ansible/roles/noble_velero`** | -| Renovate (repo config + optional self-hosted Helm) | **`renovate.json`** at repo root; optional self-hosted chart under **`clusters/noble/apps/`** (Argo) + token Secret (**Sealed Secrets** / **ESO** after **Phase E**) | +| Renovate (repo config + optional self-hosted Helm) | **`renovate.json`** at repo root; optional self-hosted chart under **`clusters/noble/apps/`** (Argo) + token Secret (SOPS under **`clusters/noble/secrets/`** or imperative **`kubectl create secret`**) | **Git vs cluster:** manifests and `talconfig` live in git; **`talhelper genconfig -o out`**, bootstrap, Helm, and `kubectl` run on your LAN. See **`talos/README.md`** for workstation reachability (lab LAN/VPN), **`talosctl kubeconfig`** vs Kubernetes `server:` (VIP vs node IP), and **`--insecure`** only in maintenance. @@ -114,10 +107,9 @@ Lab stack is **up** on-cluster through **Phase D**–**F** and **Phase G** (Vaul 4. **CSI Volume snapshots:** **`kubernetes-csi/external-snapshotter`** CRDs + **`snapshot-controller`** (`clusters/noble/bootstrap/csi-snapshot-controller/`) before relying on **Longhorn** / **Velero** volume snapshots. 5. **Longhorn:** Talos user volume + extensions in `talconfig.with-longhorn.yaml` (when restored); Helm **`defaultDataPath`** in `clusters/noble/bootstrap/longhorn/values.yaml`. 6. **Loki → Fluent Bit → Grafana datasource:** deploy **Loki** (`loki-gateway` Service) before **Fluent Bit**; apply **`clusters/noble/bootstrap/grafana-loki-datasource/loki-datasource.yaml`** after **Loki** (sidecar picks up the ConfigMap — no kube-prometheus values change for Loki). -7. **Vault:** **Longhorn** default **StorageClass** before **`clusters/noble/bootstrap/vault/`** Helm (PVC **`data-vault-0`**); **External Secrets** **`ClusterSecretStore`** after Vault is initialized, unsealed, and **Kubernetes auth** is configured. -8. **Headlamp:** **Traefik** + **cert-manager** (**`letsencrypt-prod`**) before exposing **`headlamp.apps.noble.lab.pcenicni.dev`**; treat as **cluster-admin** UI — protect with network policy / SSO when hardening (**Phase G**). -9. **Renovate:** **Git remote** + platform access (**hosted app** needs org/repo install; **self-hosted** needs **`RENOVATE_TOKEN`** and chart **`renovate.config`**). If the bot runs **in-cluster**, add the token **after** **Sealed Secrets** / **Vault** (**Phase E**) — no ingress required for the bot itself. -10. **Velero:** **S3-compatible** endpoint + bucket + **`velero/velero-cloud-credentials`** before **`ansible/playbooks/noble.yml`** with **`noble_velero_install: true`**; for **CSI** volume snapshots, label a **VolumeSnapshotClass** per **`clusters/noble/bootstrap/velero/README.md`** (e.g. Longhorn). +7. **Headlamp:** **Traefik** + **cert-manager** (**`letsencrypt-prod`**) before exposing **`headlamp.apps.noble.lab.pcenicni.dev`**; treat as **cluster-admin** UI — protect with network policy / SSO when hardening (**Phase G**). +8. **Renovate:** **Git remote** + platform access (**hosted app** needs org/repo install; **self-hosted** needs **`RENOVATE_TOKEN`** and chart **`renovate.config`**). If the bot runs **in-cluster**, store the token with **SOPS** or an imperative Secret — no ingress required for the bot itself. +9. **Velero:** **S3-compatible** endpoint + bucket + **`velero/velero-cloud-credentials`** before **`ansible/playbooks/noble.yml`** with **`noble_velero_install: true`**; for **CSI** volume snapshots, label a **VolumeSnapshotClass** per **`clusters/noble/bootstrap/velero/README.md`** (e.g. Longhorn). ## Prerequisites (before phases) @@ -160,7 +152,7 @@ Lab stack is **up** on-cluster through **Phase D**–**F** and **Phase G** (Vaul - [x] **Argo CD** bootstrap — `clusters/noble/bootstrap/argocd/` (`helm upgrade --install argocd …`) — also covered by **`ansible/playbooks/noble.yml`** (role **`noble_argocd`**) - [x] Argo CD server **LoadBalancer** — **`192.168.50.210`** (see `values.yaml`) - [x] **App-of-apps** — optional; **`clusters/noble/apps/kustomization.yaml`** is **empty** (core stack is **Ansible**-managed from **`clusters/noble/bootstrap/`**, not Argo). Set **`repoURL`** in **`root-application.yaml`** and add **`Application`** manifests only for optional GitOps workloads — see **`clusters/noble/apps/README.md`** -- [x] **Renovate** — **`renovate.json`** at repo root ([Renovate](https://docs.renovatebot.com/) — **Kubernetes** manager for **`clusters/noble/**/*.yaml`** image pins; grouped minor/patch PRs). **Activate PRs:** install **[Mend Renovate](https://github.com/apps/renovate)** on the Git repo (**Option A**), or **Option B:** self-hosted chart per [Helm charts](https://docs.renovatebot.com/helm-charts/) + token from **Sealed Secrets** / **ESO**. Helm **chart** versions pinned only in comments still need manual bumps or extra **regex** `customManagers` — extend **`renovate.json`** as needed. +- [x] **Renovate** — **`renovate.json`** at repo root ([Renovate](https://docs.renovatebot.com/) — **Kubernetes** manager for **`clusters/noble/**/*.yaml`** image pins; grouped minor/patch PRs). **Activate PRs:** install **[Mend Renovate](https://github.com/apps/renovate)** on the Git repo (**Option A**), or **Option B:** self-hosted chart per [Helm charts](https://docs.renovatebot.com/helm-charts/) + token from **SOPS** or a one-off Secret. Helm **chart** versions pinned only in comments still need manual bumps or extra **regex** `customManagers` — extend **`renovate.json`** as needed. - [ ] SSO — later ## Phase D — Observability @@ -171,9 +163,7 @@ Lab stack is **up** on-cluster through **Phase D**–**F** and **Phase G** (Vaul ## Phase E — Secrets -- [x] **Sealed Secrets** (optional Git workflow) — `clusters/noble/bootstrap/sealed-secrets/` (Helm **2.18.4**); **`kubeseal`** + key backup per **`README.md`** -- [x] **Vault** in-cluster on Longhorn + **auto-unseal** — `clusters/noble/bootstrap/vault/` (Helm **0.32.0**); **Longhorn** PVC; **OSS** “auto-unseal” = optional **`unseal-cronjob.yaml`** + Secret (**README**); **`configure-kubernetes-auth.sh`** for ESO (**Kubernetes auth** + KV + role) -- [x] **External Secrets Operator** + Vault `ClusterSecretStore` — operator **`clusters/noble/bootstrap/external-secrets/`** (Helm **2.2.0**); apply **`examples/vault-cluster-secret-store.yaml`** after Vault (**`README.md`**) +- [x] **SOPS** — encrypt **`Secret`** YAML under **`clusters/noble/secrets/`** with **age** (see **`.sops.yaml`**, **`clusters/noble/secrets/README.md`**); keep **`age-key.txt`** private (gitignored). **`ansible/playbooks/noble.yml`** decrypt-applies **`*.yaml`** when **`age-key.txt`** exists. ## Phase F — Policy + backups @@ -182,8 +172,7 @@ Lab stack is **up** on-cluster through **Phase D**–**F** and **Phase G** (Vaul ## Phase G — Hardening -- [x] **Cilium** — Vault **`CiliumNetworkPolicy`** (`clusters/noble/bootstrap/vault/cilium-network-policy.yaml`) — HTTP **8200** from **`external-secrets`** + **`vault`**; extend for other clients as needed -- [x] **Runbooks** — **`talos/runbooks/`** (API VIP / kube-vip, etcd–Talos, Longhorn, Vault) +- [x] **Runbooks** — **`talos/runbooks/`** (API VIP / kube-vip, etcd–Talos, Longhorn, SOPS) - [x] **RBAC** — **Headlamp** **`ClusterRoleBinding`** uses built-in **`edit`** (not **`cluster-admin`**); **Argo CD** **`policy.default: role:readonly`** with **`g, admin, role:admin`** — see **`clusters/noble/bootstrap/headlamp/values.yaml`**, **`clusters/noble/bootstrap/argocd/values.yaml`**, **`talos/runbooks/rbac.md`** - [ ] **Alertmanager** — add **`slack_configs`**, **`pagerduty_configs`**, or other receivers under **`kube-prometheus-stack`** `alertmanager.config` (chart defaults use **`null`** receiver) @@ -201,12 +190,10 @@ Lab stack is **up** on-cluster through **Phase D**–**F** and **Phase G** (Vaul - [x] **`logging`** — **Fluent Bit** DaemonSet **Running** on all nodes (logs → **Loki**) - [x] **Grafana** — **Loki** datasource from **`grafana-loki-datasource`** ConfigMap (**Explore** works after apply + sidecar sync) - [x] **Headlamp** — Deployment **Running** in **`headlamp`**; UI at **`https://headlamp.apps.noble.lab.pcenicni.dev`** (TLS via **`letsencrypt-prod`**) -- [x] **`sealed-secrets`** — controller **Deployment** **Running** in **`sealed-secrets`** (install + **`kubeseal`** per **`apps/sealed-secrets/README.md`**) -- [x] **`external-secrets`** — controller + webhook + cert-controller **Running** in **`external-secrets`**; apply **`ClusterSecretStore`** after Vault **Kubernetes auth** -- [x] **`vault`** — **StatefulSet** **Running**, **`data-vault-0`** PVC **Bound** on **longhorn**; **`vault operator init`** + unseal per **`apps/vault/README.md`** +- [x] **SOPS secrets** — **`clusters/noble/secrets/*.yaml`** encrypted in git; **`noble.yml`** applies decrypted manifests when **`age-key.txt`** is present - [x] **`kyverno`** — admission / background / cleanup / reports controllers **Running** in **`kyverno`**; **ClusterPolicies** for **PSS baseline** **Ready** (**Audit**) - [ ] **`velero`** — when enabled: Deployment **Running** in **`velero`**; **`BackupStorageLocation`** / **`VolumeSnapshotLocation`** **Available**; test backup per **`velero/README.md`** -- [x] **Phase G (partial)** — Vault **`CiliumNetworkPolicy`**; **`talos/runbooks/`** (incl. **RBAC**); **Headlamp**/**Argo CD** RBAC tightened — **Alertmanager** receivers still optional +- [x] **Phase G (partial)** — **`talos/runbooks/`** (incl. **RBAC**); **Headlamp**/**Argo CD** RBAC tightened — **Alertmanager** receivers still optional --- diff --git a/talos/README.md b/talos/README.md index efc33e4..89564a4 100644 --- a/talos/README.md +++ b/talos/README.md @@ -1,7 +1,7 @@ # Talos — noble lab - **Cluster build checklist (exported TODO):** [CLUSTER-BUILD.md](./CLUSTER-BUILD.md) -- **Operational runbooks (API VIP, etcd, Longhorn, Vault):** [runbooks/README.md](./runbooks/README.md) +- **Operational runbooks (API VIP, etcd, Longhorn, SOPS):** [runbooks/README.md](./runbooks/README.md) ## Versions diff --git a/talos/runbooks/README.md b/talos/runbooks/README.md index 422fd21..f198c32 100644 --- a/talos/runbooks/README.md +++ b/talos/runbooks/README.md @@ -7,5 +7,5 @@ Short recovery / triage notes for the **noble** Talos cluster. Deep procedures l | Kubernetes API VIP (kube-vip) | [`api-vip-kube-vip.md`](./api-vip-kube-vip.md) | | etcd / Talos control plane | [`etcd-talos.md`](./etcd-talos.md) | | Longhorn storage | [`longhorn.md`](./longhorn.md) | -| Vault (unseal, auth, ESO) | [`vault.md`](./vault.md) | +| SOPS (secrets in git) | [`sops.md`](./sops.md) | | RBAC (Headlamp, Argo CD) | [`rbac.md`](./rbac.md) | diff --git a/talos/runbooks/sops.md b/talos/runbooks/sops.md new file mode 100644 index 0000000..8c97efb --- /dev/null +++ b/talos/runbooks/sops.md @@ -0,0 +1,13 @@ +# Runbook: SOPS secrets (git-encrypted) + +**Symptoms:** `sops -d` fails; `kubectl apply` after Ansible shows no secret; `noble.yml` skips apply. + +**Checklist** + +1. **Private key:** `age-key.txt` at the repository root (gitignored). Create with `age-keygen -o age-key.txt` and add the **public** key to `.sops.yaml` (see `clusters/noble/secrets/README.md`). +2. **Environment:** `export SOPS_AGE_KEY_FILE=/absolute/path/to/home-server/age-key.txt` when editing or applying by hand. +3. **Edit encrypted file:** `sops clusters/noble/secrets/.secret.yaml` +4. **Apply one file:** `sops -d clusters/noble/secrets/.secret.yaml | kubectl apply -f -` +5. **Ansible:** `noble_apply_sops_secrets` is true by default; the platform role applies all `*.yaml` when `age-key.txt` exists. + +**References:** [`clusters/noble/secrets/README.md`](../../clusters/noble/secrets/README.md), [Mozilla SOPS](https://github.com/getsops/sops). diff --git a/talos/runbooks/vault.md b/talos/runbooks/vault.md deleted file mode 100644 index 4786df9..0000000 --- a/talos/runbooks/vault.md +++ /dev/null @@ -1,15 +0,0 @@ -# Runbook: Vault (in-cluster) - -**Symptoms:** External Secrets **not syncing**, `ClusterSecretStore` **InvalidProviderConfig**, Vault UI/API **503 sealed**, pods **CrashLoop** on auth. - -**Checks** - -1. `kubectl -n vault exec -i sts/vault -- vault status` — **Sealed** / **Initialized**. -2. Unseal key Secret + optional CronJob: [`clusters/noble/bootstrap/vault/README.md`](../../clusters/noble/bootstrap/vault/README.md), `unseal-cronjob.yaml`. -3. Kubernetes auth for ESO: [`clusters/noble/bootstrap/vault/configure-kubernetes-auth.sh`](../../clusters/noble/bootstrap/vault/configure-kubernetes-auth.sh) and `kubectl describe clustersecretstore vault`. -4. **Cilium** policy: if Vault is unreachable from `external-secrets`, check [`clusters/noble/bootstrap/vault/cilium-network-policy.yaml`](../../clusters/noble/bootstrap/vault/cilium-network-policy.yaml) and extend `ingress` for new client namespaces. - -**Common fixes** - -- Sealed: `vault operator unseal` or fix auto-unseal CronJob + `vault-unseal-key` Secret. -- **403/invalid role** on ESO: re-run Kubernetes auth setup (issuer/CA/reviewer JWT) per README.