From 4cb46c53ec032de6fbcd20d470a3e89780784c46 Mon Sep 17 00:00:00 2001 From: Kjeld Schouten Date: Tue, 12 Mar 2024 09:07:06 +0100 Subject: [PATCH] feat(immich): readd immich (#19137) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit **Description** ⚒️ Fixes #18737 **⚙️ Type of change** - [x] ⚙️ Feature/App addition - [ ] 🪛 Bugfix - [ ] ⚠️ Breaking change (fix or feature that would cause existing functionality to not work as expected) - [ ] 🔃 Refactor of current code **🧪 How Has This Been Tested?** **📃 Notes:** **✔️ Checklist:** - [ ] ⚖️ My code follows the style guidelines of this project - [ ] 👀 I have performed a self-review of my own code - [ ] #️⃣ I have commented my code, particularly in hard-to-understand areas - [ ] 📄 I have made corresponding changes to the documentation - [ ] ⚠️ My changes generate no new warnings - [ ] 🧪 I have added tests to this description that prove my fix is effective or that my feature works - [ ] ⬆️ I increased versions for any altered app according to semantic versioning **➕ App addition** If this PR is an app addition please make sure you have done the following. - [ ] 🖼️ I have added an icon in the Chart's root directory called `icon.png` --- _Please don't blindly check all the boxes. Read them and only check those that apply. Those checkboxes are there for the reviewer to see what is this all about and the status of this PR with a quick glance._ --------- Signed-off-by: Kjeld Schouten --- charts/incubator/immich/.helmignore | 30 +++ charts/incubator/immich/CHANGELOG.md | 251 ++++++++++++++++++ charts/incubator/immich/Chart.yaml | 43 +++ charts/incubator/immich/LICENSE | 106 ++++++++ charts/incubator/immich/README.md | 27 ++ charts/incubator/immich/docs/install_notes.md | 26 ++ charts/incubator/immich/icon.png | Bin 0 -> 70371 bytes charts/incubator/immich/questions.yaml | 171 ++++++++++++ charts/incubator/immich/templates/NOTES.txt | 1 + charts/incubator/immich/templates/_config.tpl | 54 ++++ .../immich/templates/_machinelearning.tpl | 43 +++ .../immich/templates/_microservices.tpl | 43 +++ charts/incubator/immich/templates/_server.tpl | 35 +++ charts/incubator/immich/templates/_wait.tpl | 16 ++ charts/incubator/immich/templates/common.yaml | 49 ++++ charts/incubator/immich/values.yaml | 152 +++++++++++ 16 files changed, 1047 insertions(+) create mode 100644 charts/incubator/immich/.helmignore create mode 100644 charts/incubator/immich/CHANGELOG.md create mode 100644 charts/incubator/immich/Chart.yaml create mode 100644 charts/incubator/immich/LICENSE create mode 100644 charts/incubator/immich/README.md create mode 100644 charts/incubator/immich/docs/install_notes.md create mode 100644 charts/incubator/immich/icon.png create mode 100644 charts/incubator/immich/questions.yaml create mode 100644 charts/incubator/immich/templates/NOTES.txt create mode 100644 charts/incubator/immich/templates/_config.tpl create mode 100644 charts/incubator/immich/templates/_machinelearning.tpl create mode 100644 charts/incubator/immich/templates/_microservices.tpl create mode 100644 charts/incubator/immich/templates/_server.tpl create mode 100644 charts/incubator/immich/templates/_wait.tpl create mode 100644 charts/incubator/immich/templates/common.yaml create mode 100644 charts/incubator/immich/values.yaml diff --git a/charts/incubator/immich/.helmignore b/charts/incubator/immich/.helmignore new file mode 100644 index 00000000000..77ca5567b26 --- /dev/null +++ b/charts/incubator/immich/.helmignore @@ -0,0 +1,30 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS +# helm-docs templates +*.gotmpl +# docs folder +/docs +# icon +icon.png diff --git a/charts/incubator/immich/CHANGELOG.md b/charts/incubator/immich/CHANGELOG.md new file mode 100644 index 00000000000..7a295fef471 --- /dev/null +++ b/charts/incubator/immich/CHANGELOG.md @@ -0,0 +1,251 @@ +# Changelog + + + +## [immich-2.0.0](https://github.com/truecharts/charts/compare/immich-1.0.6...immich-2.0.0) (2022-11-10) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Major Change to GUI + - update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) + - update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) + - update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) + + ### Fix + +- change container config label + + + + +## [immich-1.0.9](https://github.com/truecharts/charts/compare/immich-1.0.6...immich-1.0.9) (2022-11-08) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) + - update helm general non-major ([#4349](https://github.com/truecharts/charts/issues/4349)) + - update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) + + + + +## [immich-1.0.8](https://github.com/truecharts/charts/compare/immich-1.0.6...immich-1.0.8) (2022-11-08) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) + - update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) + + + + +## [immich-1.0.8](https://github.com/truecharts/charts/compare/immich-1.0.6...immich-1.0.8) (2022-11-08) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) + - update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) + + + + +## [immich-1.0.8](https://github.com/truecharts/charts/compare/immich-1.0.6...immich-1.0.8) (2022-11-08) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - update helm general non-major ([#4342](https://github.com/truecharts/charts/issues/4342)) + - update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) + + + + +## [immich-1.0.7](https://github.com/truecharts/charts/compare/immich-1.0.6...immich-1.0.7) (2022-11-07) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) + + + + +## [immich-1.0.7](https://github.com/truecharts/charts/compare/immich-1.0.6...immich-1.0.7) (2022-11-06) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major ([#4329](https://github.com/truecharts/charts/issues/4329)) + + + + +## [immich-1.0.6](https://github.com/truecharts/charts/compare/immich-1.0.5...immich-1.0.6) (2022-11-06) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major ([#4317](https://github.com/truecharts/charts/issues/4317)) + + + + +## [immich-1.0.5](https://github.com/truecharts/charts/compare/immich-1.0.4...immich-1.0.5) (2022-11-05) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major ([#4308](https://github.com/truecharts/charts/issues/4308)) + + + + +## [immich-1.0.4](https://github.com/truecharts/charts/compare/immich-1.0.3...immich-1.0.4) (2022-11-02) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major ([#4261](https://github.com/truecharts/charts/issues/4261)) + + + + +## [immich-1.0.3](https://github.com/truecharts/charts/compare/immich-1.0.2...immich-1.0.3) (2022-10-25) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major + + + + +## [immich-1.0.2](https://github.com/truecharts/charts/compare/immich-1.0.1...immich-1.0.2) (2022-10-25) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major ([#4182](https://github.com/truecharts/charts/issues/4182)) + + + + +## [immich-1.0.1](https://github.com/truecharts/charts/compare/immich-1.0.0...immich-1.0.1) (2022-10-19) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major ([#4122](https://github.com/truecharts/charts/issues/4122)) + - allow to disable machine-learning container ([#4132](https://github.com/truecharts/charts/issues/4132)) + + + + +## [immich-1.0.0](https://github.com/truecharts/charts/compare/immich-0.0.6...immich-1.0.0) (2022-10-14) + +### Feat + +- Move to Stable ([#4094](https://github.com/truecharts/charts/issues/4094)) + + + + +## [immich-0.0.6](https://github.com/truecharts/charts/compare/immich-0.0.5...immich-0.0.6) (2022-10-12) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major ([#4071](https://github.com/truecharts/charts/issues/4071)) + + + + +## [immich-0.0.5](https://github.com/truecharts/charts/compare/immich-0.0.4...immich-0.0.5) (2022-10-07) + +### Chore + +- Auto-update chart README [skip ci] + - Auto-update chart README [skip ci] + - update helm general non-major + + + + +## [immich-0.0.5](https://github.com/truecharts/charts/compare/immich-0.0.4...immich-0.0.5) (2022-10-07) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major + + + + +## [immich-0.0.4](https://github.com/truecharts/charts/compare/immich-0.0.3...immich-0.0.4) (2022-10-05) + +### Chore + +- Auto-update chart README [skip ci] + - update helm general non-major + + + + +## [immich-0.0.3](https://github.com/truecharts/charts/compare/immich-0.0.2...immich-0.0.3) (2022-10-03) + +### Chore + +- Auto-update chart README [skip ci] + - split addons in smaller templates ([#3979](https://github.com/truecharts/charts/issues/3979)) + - move to stable ([#3978](https://github.com/truecharts/charts/issues/3978)) + + ### Fix + +- actually spin up microservices contaienr ([#3998](https://github.com/truecharts/charts/issues/3998)) + + + + +## [immich-0.0.2](https://github.com/truecharts/charts/compare/immich-0.0.1...immich-0.0.2) (2022-09-29) + +### Chore + +- Auto-update chart README [skip ci] + + ### Fix + +- add hostAliases due to upstream hardcoded urls ([#3956](https://github.com/truecharts/charts/issues/3956)) + + + + +## [immich-0.0.1]immich-0.0.1 (2022-09-28) + +### Feat + +- add immich ([#3942](https://github.com/truecharts/charts/issues/3942)) diff --git a/charts/incubator/immich/Chart.yaml b/charts/incubator/immich/Chart.yaml new file mode 100644 index 00000000000..4212e357ca8 --- /dev/null +++ b/charts/incubator/immich/Chart.yaml @@ -0,0 +1,43 @@ +kubeVersion: ">=1.24.0-0" +apiVersion: v2 +name: immich +version: 13.0.0 +appVersion: 1.98.2 +description: High performance self-hosted photo and video backup solution. +home: https://truecharts.org/charts/stable/immich +icon: https://truecharts.org/img/hotlink-ok/chart-icons/immich.png +deprecated: false +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/immich + - https://hub.docker.com/r/altran1502/immich-machine-learning + - https://github.com/immich-app/immich +maintainers: + - name: TrueCharts + email: info@truecharts.org + url: https://truecharts.org +keywords: + - photos +dependencies: + - name: common + version: 20.0.8 + repository: oci://tccr.io/truecharts + condition: "" + alias: "" + tags: [] + import-values: [] + - name: redis + version: 13.0.0 + repository: oci://tccr.io/truecharts + condition: redis.enabled + alias: "" + tags: [] + import-values: [] +annotations: + max_scale_version: 23.10.2 + min_scale_version: 23.10.0 + truecharts.org/SCALE-support: "true" + truecharts.org/category: media + truecharts.org/max_helm_version: "3.13" + truecharts.org/min_helm_version: "3.12" + truecharts.org/train: stable +type: application diff --git a/charts/incubator/immich/LICENSE b/charts/incubator/immich/LICENSE new file mode 100644 index 00000000000..33a8cbb23f0 --- /dev/null +++ b/charts/incubator/immich/LICENSE @@ -0,0 +1,106 @@ +Business Source License 1.1 + +Parameters + +Licensor: The TrueCharts Project, it's owner and it's contributors +Licensed Work: The TrueCharts "Blocky" Helm Chart +Additional Use Grant: You may use the licensed work in production, as long + as it is directly sourced from a TrueCharts provided + official repository, catalog or source. You may also make private + modification to the directly sourced licenced work, + when used in production. + + The following cases are, due to their nature, also + defined as 'production use' and explicitly prohibited: + - Bundling, including or displaying the licensed work + with(in) another work intended for production use, + with the apparent intend of facilitating and/or + promoting production use by third parties in + violation of this license. + +Change Date: 2050-01-01 + +Change License: 3-clause BSD license + +For information about alternative licensing arrangements for the Software, +please contact: legal@truecharts.org + +Notice + +The Business Source License (this document, or the “License”) is not an Open +Source license. However, the Licensed Work will eventually be made available +under an Open Source License, as stated in this License. + +License text copyright (c) 2017 MariaDB Corporation Ab, All Rights Reserved. +“Business Source License” is a trademark of MariaDB Corporation Ab. + +----------------------------------------------------------------------------- + +Business Source License 1.1 + +Terms + +The Licensor hereby grants you the right to copy, modify, create derivative +works, redistribute, and make non-production use of the Licensed Work. The +Licensor may make an Additional Use Grant, above, permitting limited +production use. + +Effective on the Change Date, or the fourth anniversary of the first publicly +available distribution of a specific version of the Licensed Work under this +License, whichever comes first, the Licensor hereby grants you rights under +the terms of the Change License, and the rights granted in the paragraph +above terminate. + +If your use of the Licensed Work does not comply with the requirements +currently in effect as described in this License, you must purchase a +commercial license from the Licensor, its affiliated entities, or authorized +resellers, or you must refrain from using the Licensed Work. + +All copies of the original and modified Licensed Work, and derivative works +of the Licensed Work, are subject to this License. This License applies +separately for each version of the Licensed Work and the Change Date may vary +for each version of the Licensed Work released by Licensor. + +You must conspicuously display this License on each original or modified copy +of the Licensed Work. If you receive the Licensed Work in original or +modified form from a third party, the terms and conditions set forth in this +License apply to your use of that work. + +Any use of the Licensed Work in violation of this License will automatically +terminate your rights under this License for the current and all other +versions of the Licensed Work. + +This License does not grant you any right in any trademark or logo of +Licensor or its affiliates (provided that you may use a trademark or logo of +Licensor as expressly required by this License). + +TO THE EXTENT PERMITTED BY APPLICABLE LAW, THE LICENSED WORK IS PROVIDED ON +AN “AS IS” BASIS. LICENSOR HEREBY DISCLAIMS ALL WARRANTIES AND CONDITIONS, +EXPRESS OR IMPLIED, INCLUDING (WITHOUT LIMITATION) WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NON-INFRINGEMENT, AND +TITLE. + +MariaDB hereby grants you permission to use this License’s text to license +your works, and to refer to it using the trademark “Business Source License”, +as long as you comply with the Covenants of Licensor below. + +Covenants of Licensor + +In consideration of the right to use this License’s text and the “Business +Source License” name and trademark, Licensor covenants to MariaDB, and to all +other recipients of the licensed work to be provided by Licensor: + +1. To specify as the Change License the GPL Version 2.0 or any later version, + or a license that is compatible with GPL Version 2.0 or a later version, + where “compatible” means that software provided under the Change License can + be included in a program with software provided under GPL Version 2.0 or a + later version. Licensor may specify additional Change Licenses without + limitation. + +2. To either: (a) specify an additional grant of rights to use that does not + impose any additional restriction on the right granted in this License, as + the Additional Use Grant; or (b) insert the text “None”. + +3. To specify a Change Date. + +4. Not to modify this License in any other way. diff --git a/charts/incubator/immich/README.md b/charts/incubator/immich/README.md new file mode 100644 index 00000000000..1e0c040ab08 --- /dev/null +++ b/charts/incubator/immich/README.md @@ -0,0 +1,27 @@ +# README + +## General Info + +TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE. +However only installations using the TrueNAS SCALE Apps system are supported. + +For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/stable/immich) + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)** + + +## Support + +- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro). +- See the [Website](https://truecharts.org) +- Check our [Discord](https://discord.gg/tVsPTHWTtr) +- Open a [issue](https://github.com/truecharts/charts/issues/new/choose) + +--- + +## Sponsor TrueCharts + +TrueCharts can only exist due to the incredible effort of our staff. +Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can! + +*All Rights Reserved - The TrueCharts Project* diff --git a/charts/incubator/immich/docs/install_notes.md b/charts/incubator/immich/docs/install_notes.md new file mode 100644 index 00000000000..cd690eecae9 --- /dev/null +++ b/charts/incubator/immich/docs/install_notes.md @@ -0,0 +1,26 @@ +# Install Notes + +## Warning + +Immich is essentially pre-alpha, it works but its releases are extremely unrelyable while not complying to semver at all. +This means that Immich might randomly and unexpectedly stop working or loose data. + +That goes for every way you deploy it: There be dragons. +You're warned. have fun! + +## + +This chart now requires the following hcarts to be installed before you can install: + +- cloudnative-pg +- prometheus-operator + +These are in the operators train. + +To enable this in TrueNAS scale + +- Apps +- Manage Catalogs. +- Edit the TrueCharts Catalog (under the three dots). +- Enable the operators train under 'Perferred Trains'. +- Install the required charts in Available Applications diff --git a/charts/incubator/immich/icon.png b/charts/incubator/immich/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..f928b565580e99f9660c6c9fc1c8be5e8202ba3a GIT binary patch literal 70371 zcmZsCbyQo=^EOZj?iPwe3lvY$0)^sG+}+)w1b25UMT@(;ySoJUV#QsG%P)Ms@1O6< z$;mmn_wLTj?#zAmnVB$oS#flf_b4zhFzAvJB8o6DaO}`8JrV%=51SffANm6@loA(# zd42n2wHL<2z~UrJiU=yZE+2a#x+*)(cbqo1H@}{Et=ZjbImI`-SkfRDU#A+Ier8I* zLgKhig-7}{BZVZ|a!oIR4ckh`X^$OOpf7x!{MltX{!xIIxwV2}_(RHY-4*}j<34>2 zW%Jczy2pgapWA3&BzQQ#ZxmSnpP&7&v)K9TsJdVDz9op1ei` zw{6z=LiF;e)yWwEYP&sK&%Lzdv~nf&UQcpN4j*Jo83{;%+va4l(#{U8Q>BBSNBBO# zsXM%=v~gxMO~vG+AYS%B`F#DKtVnL>F7#)PFMx30{W^(KF>H&>QX}c3EOYL-ao~hW z)c~=&JsraQjr71q28FgJml}I#fizF9ceAzUmHWNAw-lJ5lU8$-JXGZZbFkn-4g)xx z8A&|Q2^6@~`Y1S(vu0_ousAlJn0mOk9{KVoOC>Y75%LKM5cAgpBI(1eOHBB zA?LJ!$W8J{g)6HaqZNj{Aau6=h(pIE6pRi`n{%(?aRY|Rzco9w*OA32JPHUXe$=3k zHHT`~c-U_?hG5E<-oD6v58SS#_w&jV($7TiA4z0vxGYQLm=g-gH_550Yf%1N>TNT- zc=K$ZZIrY<7x>|&{ey)(A;X`os1L|KpFkKq--PdbA@@s+lUp)17TVcWd15TAoFxdm zVn8>YV25Sck5&wRQ>rcW(<9%i??~Mr{#)LC1jSR(s|1k&5lqq{9wfs$tTq`x1~D7x}< zSf!jjr=zkF#*6%ybo~qGZHDuYk#URO6_It(-_1@U*nr#A?(=toJVv$|RN9J0i89W) z&O3Nu{6DhcIX%6YZ5fO^a)X##=9raWu|p2^CPV#VY0(X&5&I5EUR2T&4(D_KWPAQ+cO!n4XL`^ zV0ny+7M4CtTCgOJ6$eByHU@(h{2>p>_*NQ4c#Al}pXbRTN^(#i4cuVS|4`7XNOS~T zYyz2n9$-6=Z|ef)4p5};3T+-TAiv|SCsn2hl#L58Jld&2W(w-ra-Ze&W8PzG@2W#q z-KbTfKJm$tLwNIexK7_N2T!?=RT%TE1PtcP%-zHuX155cnJXE-DtlIvKU(g3EwmB* ztykNYv2*v5B+TY|!#&^GW@IzdM^zupVJGU%6b8SA4sUTknF0YKpryxaHQVwv=B;pZCFz89fE z=khZ`FfPQ;BKd>1Vk;clK3NR0OplIXjM}iCEU?cm-prZt*I4-s(wK}!c0fz$ZqQG+fBX6#pB!Lx#zZQy`!^;BFong9&+#=C zQ4wUnTDN~i>JYY^HJYN0d(+}8-16UTdXA=HTR*9tUG;`GTesQ3fdQj4qp?~HSQ48N6?Iz4W#gIn zNHe|j{hHSy&CT!|irp_6r=zYV;26PVulpV2avBxX>xBwgBK_<81!+x5@49CVev^kM zJHP*k9bmw|6Pmh+WCRiW%1u;=I%Wdwk<7G&S_=vH*B^xkbZPzIr;HO#zaR+xITTS&)!tFcz+dTY`P}Ut!3IV1k+|dWxR2K99IAe@!DdmRHqaz4D>;G(9fUWJ5vZO=DumYkZ8_S zMvmC=$Hz)1k%Ji7xk4yZJTqLq+g0`bV`btM+%m7Y!1QlgVZoxG%|_Y);1U0%AsF}% z8Y+=-ORgyfcl~bLh$#u+kM|jpD7xYfxY!}QKA z4cYZRGMM{2;2~a+h^pVsgb6}d3KlTdKddh^IEb3$ASYytqoXgfb;8Su+UNL%)XEcg zX8qv$%~@dl!mD?3N)JB`?}BM0W?{0EuTdU$%Q@( zvUUnr*o92u7UC^UAAl*LlY0Ay*UOCPN1cizMi!ukNnGRTMUs#0Rqv4CaT1%ui$VqC zhZn;)hc8IjUNot2ME+GR^1=Q00?v+SoNEQKnEYhHs?iH}I?tPICXshm|6H;d91Wvg zVO^L$r81LKO@(MEs4o2#!$Q@gWaEc!hjXd{iSM15{bP>#(0)npB!O^^JiFme z&WM%Au)@4IGk`X~6G7g2Z(Cd`47!Efk?>%8(OxCOj5(c5Lq!A}#p^oIc{sQvl!V_L z2;N%5Is+4K<47_ug%anT-%;)ltqn&vNz&~*vUK@3g<#p?M$6y~ijPh{e9`$JVhB?$ zq`DYO$x7C?jqxJOQw$Bv*{DVE^WE!9Z^tIs)(JHBWB^|u5XMn%G2eHYDEZC>HqI{FAvRt*?`2HfuS zskhLD_EAu_ILiUPMx|EE6(~i1qX_&D90fPFHO34SI6*!NegF_o(tNnc^4NYuD%mq{ z_i#{rZEcg_3&|bzlR%TT4V$nGz&MHrr(z=oRv~oE`Q^7fDjJgLpoth(MQ7+Ic#vof zC?<-SdAsHY`K=^AEGDNjxL=0oEhGD7Q&SM^6t`_!0kMkjhZ^!EetZBsX{7>DQ$Oc8M4wAqP6aDXqy5JiO!CgnF7Q*bJUik`ruZ ze-h6OM+E{mDSw_RH!Zu`|Mm8$AKHMcs}@*{R|iJK(EI}YM4`UTxgbx)1r0pUr;!jh zt~*tB-P{j0RG<%GoM`mfUi9hC@NkrQu>E6)2@3b);B(xt?BP9%J;_O6<&1?mH1ZJa zqmk#4$xdcm~ne5h@{40*TQRn#w6-NT@^KV77(1^qRE?OMn-@kKfm)YQhNx_Fu zBgKl)Xx*Q805#`maD>x=?4<^b=!c;y0(tQb+oY5M#h&(dk--@5R3Pa)8n6*Z zWV6BXTK;-IZY*?YG;rj>)dCLAeikiGZ)i}?mL|eBP?nYgY6IjV_y!NhWRz$OS1M3j z6GB5e#kvJ`xNCn^BRC{m~x|0{y^UxM2oEpL+W1iz7c~$O=I5pntrAr38L;t_r z_hsjg0P)EdQbMm;`U;-kw)Z=17>(K zf&3Og1C#sgQ1Jz$puqJmZjqg55h}z^y~vkL<|_87{|N!HxB9&b!|GZG zZ%=je|7daGqzuDwh8o$8TC%72$2Y|EV5p^vV6%U5v3wYq>X!Ww48o6_$EbHddxeC( zDb<{H|3rn)E@G&zgg{+b?ULl3BrEbJ9m4oWdh^h}s)AGySK)s_G88(LdA7+IM-mPq zBpW)EOGp8_k^H{Mo5;El`4H%CvqDD?^_M!Mdj_QccY7QZfOHB;u80^eUb@!=s)=c? z{3k3_#e&OKHV5i`edwD1I-?owQlDHF`p;;m{$l2?$8n3wZ|d7Sp~!~s&cQiS|EJ2L zxa`W!fcgKPs`Rfe(A9s6{hvAIKNpNRDHwgSfrb~Qt)VXwpf<7pEkc*GuxYWe>Q~ZZ z5kuF@As7S#cJcowMIBNEtDd^1_rc0m+ zyw3~LPVG|t_TP~1`$XH~m5N)Oalk~9LFQ7WYG>^9K&XB8e{ zC)h|iz5%xV4{v6|Oz7enr%OL9cn9?omW)VZ4F8Rh2rvqCLI|C?y0{3l)@jav*D9jl zFO)>HYyEFS!@bBd8I^c3QTk!HQGp`4VL3_g;jGZo{h)Ii$94l7ZR5>;c9X>cY1(43 z2Cd+C-M=rr~a&t5`QImJH9+4l;dtxTH;#~1I(PtF8TND_IIfQIc9SX z_3}hDgL^^@4GI?B=#&mUbr|Y=Fm%yvQgCRK$ZOk74XvHlt^-vvCrO)HoXPCPwn|cq zFBmLQ3`?vWO;rA!TWQS+wQ8|AccgzTcc;-YZ!8eiQdM`YQaPn%ZA6&KOZVv6w-3V=3uY&Pe2p|ps++3FOywyxm&9MDMl)1uX>zHi z3#4&*&I*1KQuB~>M4?R0ADHbxM*K-LPT;mW(o15d)Az*kyLZk_p zvVqWdPv8AFuru-DF5DJ^V*9NR9-MfNtTotJJSkHRb$nb2alBGTDa(?lgFRTF^Rm)& zyo3DW>4Mk2e>bGFUvK@A;l)H8zSHWa>L%YJ{;(!@WL2}enqNxQ8)?$}@b6oYli2gp zoHrQ5;{7uhMjG`|c%jL8$97L{a&0{~C!ecL-7{7|u_~f5uflF5qNGHv)>$ohv01H~ zJDB!kg7=KxIxb_`TRd080ZeB@_Z*$w2gy6_27e_{p1haio;;AVimLJwZ24lJ3~^nS z?LwJ>jd~k9*^6^!L{i52jE=x2IYayv;DkF#*U~(2Yq#XPu|`oe>vNo~gwTeIAyuh& z!o=d-Q~^@Tl=g>GeT9tsi}RqS9)7yst2w9FAIpznT*MK`2WmW4Sr=s-x+A zJY(wM;=P*7vcfRDsX***hFw5@CH?D&6f)<$e>LGwnsHP0_F#jxuxa4S?w{6&eBXm` z(!tZeEM+fxWMb-3L_bFcj*BiGzYl!YeFIo)X@R~%C0&#dsWe^=Di7iQqI&cg*`@7U zs$FM3^xX3LWhR?u1(gc4xNZN>(-kL^73kp^*-|ri&Og&Ie4q$IgO1)IUtHbk`HP~^ zGsV6-^Ire2AFXDXHvOleoe{|^)hGL}=VocQ7g7nhI+|hCy0jpTgvk3_a6HZv${p56 zKe}5{AcKRI({C;L8Jtkju?1|@ieA>l)VQYUeBA7c!H%L%&ce^Y-l_B{9vnp6Fv@|! zZLur&fpb}({hNV5IuAM!WLbZQi4e!&$r6E+I}bD35AvufmD`9bJ`TvMV8c-5?&+`M*D`uVF z$TdRN(0V9VrGge4)O}kngXMT2T4l=Q+|syXZFP2_s+e{40gu!1r<(BKfZIESzK$o| zL!y~PdJREp9e5~oviFg8N3`Z_4@L;7oIua-N{po}ZGtbIqf{93OmITS%`3GGdN=oJB;@>qs*R`fT4?hVkU$A*Q zEQ?^k_t_PGPIPSvLjFU+al)bG;J0bOJssC%00k_@ZdH+L}*5Opx%HGZ=ru*yNtg4$S zgAR&_q5Y-FevMFLy==F-&%qkD&q1RgW2?LNnBr~F<12}3&{)y||DDdCjD#ha)a+aR zIW1`yw(P-eEMOxar%4yeLW&z^kO}40oNbiD^@CXX&Xlvr*hv^-t z21J#@E>1W|e%bNqJ2vfx1$CF68V~Rj2>wgV}*G#NH~ek6MF z!#@18?{@7Uv&;}8Gj!K*%PH-kyH(=OQV6HgVC)nW`EOEpW-g4;y}hq1yATbZRc|se zq;q(sruKbRz)opCx=^fe?=qpWWZLQ8Mo&RczEwxVIfWju)Bl~<6#pvB)rjB#4;46a zD(X`^SOY5z_VmlUHRb)1AMgE45*sJ<(}$W|wO4UYzaqKk_2fU&1*O*pa|vJEVt@3& zeGyJZk!>a(5NFwAy$VGkm~`T}0#x{mXbc+IiPG+?J1)UpXh$=nQGu$Oc{Nv}GuZz8 zfCmVFnd$4JI=yNaDDclm^fbQk<+T6)LLqAW!nC%dJf;t-br9?Merh;HNw4fa#FbT~ z!RlI1{5hNKLaY#gN=<6i1P{<*cc;R6_X~>e&KG6+D@xSDiK?@IEO*_Lq>d=WO*@`u z3RJ0JdUF_kXvmyNCmZnnYjHK(guj|^NN?&c73r0n-WEQpPkQUIZT9oM!6PqOA|a0X zwa5nmmDGpYwf6(c2l%k8R#RJ=&L;r^d0Tmyt2|!HY$7z;S=XnmLEnvM_J&HhX9MI7 zrnwAVtl%P#XN6YKD)&=>jt8C>e9;XV(39oXrn(7~3vUl119>fsFNqROe?Lt}^cEHk zBitXF2qY;AM?7%GWP>6bBZKF~=bqzdmx3rX6yv4jTN#iQS%f5FEDGg;2GG+`Is;k84%H)+|KU`W379@595@cfw@CNo=O9DcrbyGqO+x zr+uQ{xsI6BJ6?ma>sSu9RzK-0&)(X(+w)|vofA3~p{y`pQRm0wyo6O1dOpwZt%gQy zc+rIqE%(=xQ!_^%hU_-rVtCATsh^i>@j1NWcy=H9!7tBhZcLK0>!n#l9Q{tV9BI9K#s4|G~C`n z21DxLHFJ)62d?k`Urju0YW6P%N~w0(;AXcqP@YmVtXbgc`8$T zQ@BQ-a;D;M-OzbHLdpEgN2A%NX9YJK^&)9pf(6ss1ZI3An*a!8l1-!c=)5z=3@H+` zh-w^PzHCfcY`I1S?r}(YfL<=l{z+vx*(Zj20Q7VE?A8^H5wwjWSzE851C=aQyRWg zY+E{~5vq+xL^C^Z!^?L6Y;uv)y7~d9hr#Pg-BWT;){{DXff_CNWlYf}zF6I%ovJ>F z1LSHACU!QtLcQcv1|DB^-M!}cyY~<3bwE7J?uQ8L!50(5O$O;Y1i!(GGmHuf=y*t{ zV847QxuZR7On=LOFyF6UM2FA-Kel^tgs`i`q#d|j*ktkUJ#6~V`UGQ8!eb4v*J=^l ze?smG&p@(VgR?)%NB8&`;#%q=BFOJ7zWGS91jVHzUw6s$Y&97PXid&Kp zX*VZ_z$_wJxXWq;=o;GvaJ>Sn8SV8tEY8}*BkDeoLM}enfWh8>^?mRy)-AJ@Lw9@I zAz%U)?uKDP=z$BBaoqkuFEGd6@x9S+SkhR^L!=pU;cJB5!Q}b0fkoQhOczu7s-xF4icXQAa?Mj&r7oV4wu*-XsfSn`%qp<2r zU1LumviHpRVz9Afi3HcS*?X}{J70=XVXtSmp3N5h#AGo!y&Oa#?WfEU15NrF>wng5MY_KTslIz`QiOsTECBcU1Y#n5@H6zl5l zrtK?Sr5kyL&9kw>pTbXnn=Dy9e~cYn?T2x6w6KXS5KL_6`rxxdsSQiOpjbj>o_O*o z#KXUA^6OXf@0~H*91s+IGh~KL1vZ*ncmoSk0&Y1p;Be<}M${EUKx9PRT&jPuK{1xfm~Kj%o)cd+hpS5rG9GBV2Y@PJoX*&ZT8@l5ngys~FI z*ToDeq|7PY7Y&yYC(_z})FXRdqz3<|E}wtBfA8 zn=l$ZG>}#-eKidHHLu2m)6JF@t3p{-AY?lQSiHRFPWt4sM$S>OvlA#tsRPl!#cj>< zx?t%>#TDsFipJ}2RG`FGXFnL=G?rjch0yYugV`n?*@apk`@j5}!3)(cT$?T-6 zYut^a)Jp8%W%{)pObjJY`-_Xy;#Y==`~ZGx7SqvDz4ydQ4=6Yj^Ym79eOc3>njnK=2lAKYJh&(XLf?~Q8l#WO4AIovnM!KyAF(%i< zH&Wj9%Xp7UT?7b~;U?ep7a@17d)@1rh^ZXc8UJOMhsAaUf4%<7Pumh1FkbJc%mnYg z0<>;65PghFH)?EDy1+_qYxs+#$9L`BD0}RgC1(ezLcvH!J=HcelyAJv3~;h6v^K=8 zP%x_+;F{4mg0o(@J=-&#!>qRVpF2ULqf0a$8FBe5#^Qk-9(y~ZA%%+fJ}Mq3;&3-6 zRadEEqOz2%)X^@5v&HH4$?xgyJobfcG_%IDyLR+-AXDqY=auRqdUY%R@$4nW=eCA= zOYe0}DM9f?LXxl3V?y40O++-FgQ3-1ayd^Ei)}tKLPs%^xvuWuLvTx4QO&447U@EG zlnRQU7yZM0R*Z~~cjvE2Q8XPP2JkrlkO_l!kr@xJ0P8;LVM-2_?6{`c?STf)??M?# z-60OL7fyUE*b%kT*MXyt!IO{|-;!XMU@`MjZB}y*@gQOSE5!>+?=;UZg{EcqUOaq6 zqiC%D+ZBjQ^SI&63nDx9UEe{7rVeLWw!$Clo-!v<39-;}iO8&9WqNESFz}f672+mR zwP`Vlqnaszoob zkCA@K1&sB+XQxu4Mv`X{#%@4t6{nx)EE8zss&YhFaiQ5S@%pS$mxs|1z~eu4Yib2H zB?f0s=-<}f24#GGuUfZ8etJiQj{!TuflxxTpGTTkLMbmUV_)@6RjGFg0aIZL3*Hl1 z%wIFEHws|U{#tzH($n@jJFvf+sDB>f#;w|&yA1*-YG;kBuc`IcoPyEb7-!Z|hOub+ zb<~iB6-&x8dQ5G3t@J`ia^~;*jGFe3lz2jLI*1+XOR(-`(i3)RY0IB|`XV*UhZfT) zi|^RgI*t|ajhMxV5$(}m!&o}j)sZ&NFh#o!BAw}y@LFVhkU&62zyvf2uy~@3oc6kM z6m4NVS9xCk8hOP}5A^pP$MlI{k)YdBE>jVn6ZXw!>ytljYO_0z#-Jzg4-uz1KJ?Am z#ho?3ekq4Md6akkMNzKaWw;oQ^Qw7C2v`F}YZ<7-#txU#=#iCk8$hGhK;|9W(yOiny95bSH(pyQhd# zcc|Pn`=0GYgU4mJ2ip1f#=FDK?EzYU2le2PaL62u-v6d7R5}7!VDEj%^kA->3WlL z3UGE0edu4&GUnczL6u%%O{-P@9PdGCEAb7Vop?v1d~xSE;+&*Trc_D=L7NWz&=Un2 zw+@b~3n>am!YZOFm)l-A$K{4!h|5Fb<%aRC*FH~^KYMDOY9068zEeYekz$9ifJu)FXLcE;UdJo6rU(2_(1v$S&C**r1% zm>U=l_DlsiW%XMO$S~GJ_$n(0e(0TK87u(AqR7Xw@E1slV|yM~oME1w*dc3udnF5d zl|wn?gtfCeov)AAd4yr3d^_UJ6oj@@wQ_kB+!Lfyt zS4z?$e*Nw2Gq9~*`N#r$bQJT>=MTX#|Ed&%3OxR(XNs4jSLEg{NO8KZSjSA5`w(w2 zJb^4z8MTl7%_AM!nX9^;2*e0Z8#$k&Gtwz&P);`Y?(XUQE?yN>HWw7)+rg(@bIkN8 z{+YC9U>Zk9pwQCMsGdGKvQ^z`ec#K{XF-oAovD^+?S|EKO7=9tQkP0R(D_&S>co!_ z6mK>u)$TRDEX!|$DwYSg0_$!YTzt;mG<``;Zyd~~Sq)C3TbshFeyAzHiaWYPxU{>j zQoxB53a^>YU!RTjbSb{Udv50`%nD9QB3XYGbfvQ{Iw>gWk&}q3dM0f&HlM}gSw(*l zbdTF6y%s$A0y>M($4#}w;baKJcCx&1aR|y5#R7XCAsNv>% zX^yo41%QpIhY7b|d}dZodZaCOwyjW=e`S#hr4Kt)ORb>{fYM4Lyb;TezLT)njQ&{` z3;Je0#qI8e8;MPRdJ^x~k3}+1o&gi(&w@haSsS$8i5;HOuC9FRWE{SYc&_jTup9*d z(l$fvnHR%>Pwoyj57g)6f@i5LzYh#}9~0yL9F@LK-%r|aqxdk@oOWT}0l1|DsvT>+ zbKtlN-aF=w>b?{1@thsLmNcXO{Hi*bO6EId(F<_19o6Coie`JkpzO~e?2i5MPS*@G zSX$j=Yv%k8!T7Xgh9_PIT>Z`=CLlD-eMvi5Zm*LMM{)hLnbHR}zS$s+yRmT+5y{Nx zTP|dyoPeK3d;73lR^NOUS?2NKLA3%(k19aVtao4rprjt zp&5W=VH~M*RAN5i?D%`0!Ul?tCX6Q=ZoDaa_y&x-Qet-g%&b<{yAJJl;_IbA7Z?R3 zLfd|dzhX%lk9z_E^#>y{`g6CqP|CJDQ4{yhpia!bGgD;=S=x}53!ahbSh*)vJLzvVl<%;jD zeg|(F9rMqd#FA7Rc{y83$`r%+s|rui$Ube>;Je7w!;JKM3VfLC)UmIx*%QXLP+|{q z)F?4v&5$^@`=B{w{c8_Q@R{OfZH90gbWCqZpqSXUr4WguF7T!NVBkjYuD$m1q9W6I z0H1^@Y+Efxjf)wmqK-<2=Ro`&9Tg<_gcu(xQez#wT#U! zf*6)wp1gD9AF~mLZQMXo+;pqVIoxe58Nzq%zCBOs1WE_XxaAg|8LM1c{z?wQ4ztQD zTI+=q@HU~DP4=&u2bY)%^T&_aeN@VvSqe-l#LqAg_2U`_PR{9ma*W~Co5^bQ^%Yb_ z#3cztLuJzTCCz2R^3x$hG}|V5vSTT6fS1e$P6or@`K$JR$qnFv{#KRb&i@NPIPlv<5?u;;1#0!OU=12p9RntmFOFvFO zopZIM&N@bo^Rim{|8KEg3*ueMakOMY!aT1 zP8fkXolg$X&Rs$qUX50p5~)y|M6E~=azBR>3|}vIlj*b%NA%ImSOcqAk}6cKS*=6? zYC$yXLAk$Q_22NP`4$wE70gQZJj0>buHoXgoeuC(UWvxT<2*Ma|Gl zm%z^1(?D_YxPFrw>VUn>($uJ~Uxg?U0gGkWK}8iG7i%moTRHGZ8uE`XvL(MQS#jaA z`T?N+<$h&AD=|q|>ENnudBw=SAr^cR?>G(u$K}I!64>$Jg=iNN zHq1=J&s!`_?ZjC0iE&jJyyX?#ZFcm$Dtf#5%4tVTNO5r^bgFWEsvE6pfPrBRuzNT- zEpvX^T)2D-x$cd=7oz^0&Z+x3m@Lk=7sDeiQ(>C{DPK}6+WA}rbS@2slqg^ZGkxq9 z@)X7*EP8-=Zmj{G+M4_G)xl&g{_>-+qGM9`4iU{p`PHNyt3BOO?^ka$-mQp1Og6r? z-6C5P*mOx@b6|iKuPZkCK`J~}^uvh>Izru?*6#L&jAe2Q!`0=lZ3&ySG-!qB?4vpLw9omcVJIn+^M@CE zs6reX za~TJw82-PFxas54=&`wfJ{w%Jk`@TqcJIpE^#WK&g7)=4xn}KUz6z_lkwjsl zKeV~eeyV@ylE*+bTpY6;OaNcQUaH!7uEs!uTjx}LF;!tWUS?^C>{}o;c>$h!8 z`C$6Rb8n?2tM_H2cQj&Rf>*w36nVS;WP2g4Pe;O{%R zoM%|1K)aidKZAXj5xGfd2P*708&GxjMeLGKyT996lHIvwspDY2e6p7OibSr&cX&QT zPwv~O+Q>DC*(mlsYsEgmO@|uqGopRON1$d~QMGT~?h-`sS)Av{oQPaUr`33I`N8R7 z{Dk*M!v*4{%cVHY>6V=IpK*cD7F@58yY#1u)sv^)F{U|JC?#Lzn`Kux==FYs6%XL7H;ilhyBULajn68$)cF-R|OcAiJuNv2s*|Hsv;zsOHE zmxG%`|KlZAML%HF3=Yuk(}#JNNIrwtd%PkC9@6 zVg7=5ze=S`%X<7tf$f_W?q)*l)Yfb)K2uvB=~{tY3$g`S3PdHlZM@=Bd$D;ER;XcTAY=z<U```kP z@ADNW31X-}Z1^m)wT@6Zr(#EIzt8cMCs1 zT(!dm#Va*uOH$V?+|2t`*`~g2f z>Vd~FtK6zt5x*Df8>E7bAhpW*u1IJDGhu0`R}plTVf!94?Y0qQtUJBE9V~WBd#W$> zHdDzxsbR?dPVcju^Bn^u%~Q|H^DOmXYiGXIY1L}h7Vngh`wYlQuZ;Ev|Kd%rmqUAk zgIp+$o%cZGX6K|yxuMMu9NA>?O&*U=d`4JTvA*6p9yak#ns)FL+_EQUWgx@z3I{pT zCP>1F`k;LM7OejE<`B=xu4+qJ*jLb6z*L`;9v%`(s5YIFT+!8Twy!3M6@fLn1UmW6 z$1=!5e|YFx@MAQ{dikVr#Z5`l3t(IGY3i%I-8X%hKI0;&%Q4B#+A(!+(3T zu#%F+RN7|W#GReMY?V{Ux7`*Kg5GxPo~wt(Pz23MoLAWEF;n7xHGEAyby9#x>#%im z2}xFUocTtS@I%^6S;w$jbz@|a%g}|7mkIi^FynIRAQQ~!MpH(#XELlJ*Zs9{L5jJJ z^&%VaZN0xh^D;^7)r3a!gzz1^N^{dDE(M1O=fxDz3C^T%0cE~iu19>81ngB`FS};( zGM74Y&GD$v|6u%Lm5fw|5$s@)=V8hD4E<`~F~|y0EVtNoq^GI+=Clc%*qYA07Ve1qb?q8I$krk2gyCniIO0IO!O0`AwH#}#isQ;&c9GotuoK6L^% zy_ea%!q|v?r+3gCXZrlT{l$DtR7uGo5Pk??sfuLHmki?UY03kHZ%h68QKu}X4j6-; z{pOPpd(Avfh2qv^UZZ7>a}5wOPz$gYMTO_>UkH%58^j$B@iO_zxo%&8E00cI&ze)C z0Coe~IVwkLZa5!6YG!Gy%s&7Q=NW%+S&8aupVn91HCOLBy*5KM3AASk`0~EGz>;JZ z7c-IQ1<-8}v-OtELao7=Jg{>b0bx`oeW*i_$YNBrIvQ!mYhwNG$1~A_efM1BRFYk# zjlOAtVY$uA(dS>@#Nl0-veL*E$#ITZg@UyLq2zZFuk7MCBp!)&ysk|R=}as>IhA@0 zw)x=vxt?7MGkTq`*;CnG_*GT1xt0h@2tyI?JUQ!zBu32 z)~fv4TEUQ!T>i`BV_qh|5bDkINQjnKZ@Xnj(ZbeO8N;QX z(ornR0RHnWfVUHWE%rh8C(n|Z-6k|WMXKVw%Cbg8hb0(si470|l-iakQ80r4oMfIR zZWk8WS-357k@7|IcX8?a*u?9L;k(YYRrBbrNl?>m*|f4721qf1*6??K%iP3m8?*#4xWlPPK2VKHUUt!7(dnQ;p+ZOdNWa_BhWppLA*mSiTk2+e{8}W5{9<3 zS)Pu~%R-h`6~S!3<%7?LpF7WC8k$xKAMQ^UbOanzh4O8>Uy&MQ$>-1ngK3}VDe+fg z5L<6&u4-?331Y9=WFx_EVHT=KX$nY)(MFu>*skL-oWp!)$w$wzxEGZ?%t3lF z5q>HeU-S-sF!Q1GT@b^h<@_ITHr-u%^Wbplp$G2Reti;KShc0(@&}jSNz)|`qexu8 z+v>~r%4I*^E%2df>F7S9VF`ysACCc|7TeghTiIAn(e2-{7`_s+Nd;G0Kq8JOH;4^3 zzScjb+h?6+aQzU=TpxIY5l8*O?^kCp_oVvk?h@*=&yTaXfq~m9FAus~-`OKgqJEoCX~KLD0#VK~&z>rZ-mIyNCLP>A#ru^@OBB-ir;f&-PA%S`#O5su4^|0w`~85XT<422pNmtj?q7K$Vu}l)84`# zxarc-Z{Rfolu68rG-0aSQtvbUA$kmH(k5Twnd(1fXJ@~;itxE2&Lh!Qanm|+I|gK+ z)n8x^MFrs}9ET6ZrsFd`C0Tx4=SEte8|!97WuMeQZ0@8;zUgLfZBed_s(2|rzXujo z4kDM{icU@05-=@^uIO1Yf0sjBr@DwYc{|*Lr)*&Ydoool2ON?!*47Z$yv|$smbZI@ z_9jB<*QetJ3M*roocX=Xh0Lvi9T?pSmh}j3!oK;-IB-`M4dP(L znJm|0nY39a&fUBnEV$y$`PZhT3gHt~RxCATlp!kHq?C@iNsw2hW*;BKJpbhvaY%7h zjBkWiQTAw5n9i5_)32XTFMFaAnp=v}sJS!(z5uz6^ada4iqI3xJ_#TH{ROSvgPjWM zfcC7lml=|lX}2a7qaKnmM;|rSoXR~tYWWQNv>efrT(-qaCQXICUosk$1Od47R!$+V{g+6FcE zMH<0{Rkgn}>BA1Rv2i`|jl?DW;pIW5bn4%;E2-zUq^}0E?#@A#OG(>uT&;ay!vHO^ z;DT1ab-=ZR|J%1bjv^r=k4#Ht4)&$EBcK(jEJFX)HR2PKO(LKowp>p%eaW=J0Vd*H zw%s>L;JUaUielykAih%Rxic11kxnZY-#_i=T|V3)#JdjDaIh>_v@z|dXgn2lk2WcX z-RGHgP^Gujlt&CmZ+oVjiK1b2C_1rV?)~BLu_3+Da{*`;ZxBw|lP&jxQ*cSc(Pj48 zw!>_k_m+#guJ_?C_%KitD&9)`+-rWVS z7iq-(41WFeK%ik(_+94oE(n)bWJOtr;Pb2CUHxLUU(PNQ+WNH!9U8-$hr#2pD8rfv zNw%!4u6m5oee8>`1yM-<&z6obX2-4P)bVj3)j^mY?4itc8w-|02*jD*C&G$a16}savz~^rR_tqJh-RF1FiG*6PsmXs0x| zq|5U2XJBC{_z$6_UAzTOgbi2`fmSR3wk`G^CB9JFPBK2Z(j({KVAcDl3P}azZ|fA} zPv)ERUCG?g5bVd%>_;&qyTuK+O?QV0?-odJ8tdOk&`w zKP75S_xZ7``*OYd?sd!Y+{?{)%huatg0lm!193^w%xwSD2Nzx?1Pnnsu&EfWs{PM@ zsk(%0jmg~QRU9hT?&Q>1Esw7!+B!+9{5F#ldC7sSw6@27OLi(f=O}XpiHsKbA)-_*uK*LXU}zPD zr1WVA*tBCLuct?Ke|8nd;hCK8Q=OoIgY#A0R1~;6gzI*KcpAm<_9UAg;C%$&_GLPs ztfQ|2whh5CgS%yGB_o4_RF5&GUq|jn7rFw(f4`Kw`(1p4;C+TnFN9h5uShY6Ij;@tR=Lyr$Ir;-Y6PVQ1Ai%$)-gm@K`0k}7Va%$g~4}M^7Lq=Am8#T?D zF^c^G%r%3~#&(6t0jxWvtbm~em1dPPuQXb_6v&q)UOo2AD;20kFo$ZFr(#*MB8XU# z`lOt4y{#D9v91N=CKdPpbjx`jrc9t=@7RgYJlF?Df4vzh0oGQ@)~ zD6u`B-5YbZ?T`*GEL45uups$&#{ zVS95qHxyZ%aNTS8BG)7p+B1%L+--0zsRtJf+(RU_h^tLu)p+P5nQPN52;%|~shisS(QDt{fcvfl}9CD9nY=hOw{R-!jN za@K1Xa0{QsZlO)-&zfTtGSe0$f!8~TBW8elWN6{0z3Y?gbQ%JM!`fHGYyGO?Bpi8! zsM)qp1~nQIjq8nLhU}c_KyqXaNKK&m6M?tv0h)B46xHy3}pTdwkW{zluz}D5l zEe4j@&pb4KCmn=gMqDYzaS4V9%?Owgt;n$t z*Rtt33S2%_2=)Wed4?CZUj|M=W7?81cS^q&G)Oe>OBqnfa2ag)g zlkbN{WS%~4&;k+(hZ$eAMS_;5{MFzU1J5NBuyEqR@w+-;&G>_qd(1!TcJqNTZ734Y z;d+wKgdLd*>9j_OLwGh_U~RtI$8D%DOx%*SwH-aS z0z?!XKPtJrw(l_q)7sKl+XpFfV~^t#1}vV?0dB&dcruE^Aj|cW6cmpTcH-dj;1dU< zf5xoDRrPe}g_mvy*0bHPJ}T+9;AO1&9XL=^9<13L1G;7LO4JX=3ZNlo%r? z>*4R0Tri^rJ!-mJ=SJTgoy7Pl>1o1?+oq2UK5;O#&Y#^sZU-HDVU&L}4UEUMtYcxf z#cqU6rh|>9vk6H(Dn53_>e^tf`yI8!bQdPLju$Sg?Q20ZQ@qfn6j(F-{dvKT7NlP{ z^(JJJ=wF&sHZ-b5jwJ!%MI$qBPM$ckPpjMFjcPuXwKR7AeiG}VF>#fgvTT2@?yh8LvLDM

EvyLVlp#;Qsso1n>aOS*Ti-YC%Y(7N9*KmPjPHQ2<>T&(z0SNpv4MMQ)9>iQ4+FXneiz41ji5dINkA7f zs9w&JR&lhc5hgiJqt-Qo7f1KAa>ymhVawgul04r^dM`=JV@RcrF&n=2S&Ou0!OFGk zI{dnx6f;KI)J7d^d@2w|O<#b&Q_b2MFBH*;Hdtu^9SyEc2hKTc7eOK6iY?3U;kZf7 zr$iY!^h5fuahAyZTPSKi?P;MjXeORH*vYAFNcBhIhYi=t#j<5(*#U?jyLiNO`Z&Y#_r(i9!y6x^uD;``oQPD&fe(3XM z$KP><`&_^lGdODnci7Kgm`&a@p-${3z?g(n2poysJrl5*bZUK6ZjW>`o1?Q@L9ly% z?A@i`?dtc(+@lP}_(F+fw)2_x z;$e^VG~j0gUxypT{9S(*96yDX-nz?c|3sI57)vKGhuA>ehUYHG`Ta3! zeyco_FO|%2!M|(FU@DJe6i1+rY4f70=yMaq#JoBvN{i$THAsvCAb9w=~DrwQz111Ui8YqwIM(8`rL$%Hb9 zxi4=Ac4!U;`oadr5-3HslGG^E@f5k~l@yurX%%Cghx(YF{65&l0X@x`^RVEw~jTH!-_W76WvUetN>ySjK{j$h6puux&*WK7J9ydmm73jIy9`qc1M^2 zHFV%v)6kQ+g&0E~kA+ZotK1saykNoTLNeS7aju`JXx4~~WdZeI>xGVOG;RuQJ~#70 zUL&;EcQ?YpSOSPPXt-og;3@ zj-H_KKs`<8dbp>n+?&&R+>}CpsxCV~5q1_fVH)c8|Bxo$`Gg?zX=eLgY4<5APL=!`b-oB2oJxc2(#r2s^dQ{qW1IbXg{`5p4IAUF>^K{kq3_$cS?lgufcL?kCBvqAH|Gl z28CACyC(%sH=Cj?e7j^TNbUj1H@%;Qnh3}KN=&041g>fwxq3tT7} zX`6k z2Sj_g7mDZAW-^s-4P&l_7l*?*<_|Q->&|Wp#CTxdQ*8M-kGnMS^CoqqO3fF$>e7B8 z5UzOVm8$!w00>d89H(teXU%i`yq#gQtxA7@R!&2d#Y5L}>8zuq%R?;2@jcjT`sk^+ zkv)wzcrnmcwDI7?x9v1Z^|Mf*G>sX&vwm3ibNry`SNPrB1hfH8T;tj3lh#rUd1VejwwCTn}84&MDQ=+ zCZJO`u?aW)-cE}0=yP)cHV5}cYda-R1VSa_t!jc)Nq4@Xb1 z9W`=jDW?$Hr*`@B%vi@1BovW@aES6WW;@B3z2aZ}jM(ws)6?ky4n;mSeJ_X|9XD~z z(q(4>Vh12%!0q{{DG8ztOdNDP?hc$|80_I0t4<-V`XD8KQ~l8VGknsLPyf4s@qh#8 zy~B@C9&3ie23%3Ac4AhO$66Z3rXMG-;?Tg5p22|E&U8R`=1O6DP&Ac67jvvHVN(&p{v-CM8&j-@WfkJB8G9=UU(UaVf1p;A99h?b2>2ez| zs^W#?rP1wF0E8Z!AO04v5t*90^C$A5kkR?SP|!5sN-rI7p+{WPRtX)sU3V2se}vqn zhD#oL&R~l6Owl561GY{Nl*2cLG2fFWu6{Ljzy{ZlsTX@y#C#o-OFrg@s~>BD5tUoP zE??-W@L4CaA95%+HqtW~z@u2u3_`K*#vHD0J8#gz#2Ah&i1auVtL*S38NMex6+eWZ zB3$gsKyiH!if3N}Lu1nbE2X&C@G}$$KQ?tQJ&OVA$uvD-r3v-zkF*=GCNVuNE?2)ue5W&V)pH6Zqj+;sfKeWlJ9uSIMF0j3)(+be)!m z@X7{!!RWF}BQ4*zea7$>DgZ){k1mt*S+ep&etBTC#Lm-4Chnp`E(8zk2{Fs-yEDD& z44-5T4R3ik|G%0T&1YcnBy4j8!giiQRJA5WzJ|jQkuM6F|J2&l@WZp7ZBG+b)hPwG zgl@(5pclxMRdJV#gM0LJ62{TsqRYXbrEYTUirTH&+uDP@qq|5U-Ri$^dk@C3 zpYMs*wEL=%`R}Cqkvs;%s)e?Kz}R{+KRR&I%w|u!G)aZi+Mu)ZM3)^e*6}-?#MtoZ z?w?Q*5Mum%?~i${*u(7>Azy;7SAOl z@VRU`u0oIV_h${iPpKj^CtH!>nS<~aRi}e+cj1-bOXFNUUfoDVKBnf#`lvY9?toPf)LnzGY~d1pi8o0Owu;4 zx1!&^a?q@6UlcV0+lcOT2(b0^$+5}1gYsEgr`z1F6+5cF>bIj2+A2XO)OdPsaCuj~ z0YdG9*lL%Ob!K-zH`JEycY(0TvT($h#V${~Gy@h- zKyR8WU3I|FMnWq#HsBjQ6#=2e9W#fw>cl2%zdodJAZ>g=zqNykfY9O|*xZ1KgVWu0 zIH0ZlF0Pw;Dg>S;EODhrSaSSc%!sR|rO4NENhP27rI`6wQ8VKT58549cdOlSa1YFq zINh%o1z&Jw*$4=1jQsj8L8ip{X0WZNL(+UxhRE?qw|+vAM$2sRLhgF9g!flLgM2Z5 zFb^G3&fg%<#&lBS{TrvIG*J-{TD)-opZTn)vMc?& zt}SwYfbCZ*0z#`hlN+_%)t$y8Ez+J{OHZ_}m_RlnZd+OJORSXVk?P0)$&XCO0`I0qd%qGQu*z z-@2JJQT3H!c`vmGLNRkoC_H+|ZZKx6a(4B#qYscy=)8U)e`ip2L}3%C=5`6{!Bo&- zmRXL>*=;g3>V#m+$n_$uQ3paXbBm>tnGJe@q1x|y8mZ~2q{2dv6S+qXD|Mx^j=Zin zo+`J&h=MkrLU4T>V?g?+pb^*#N{6p?Q4tVYEQqPDR|)JRyL{6USo3Cy7kb>CSu4+L zfz77XgJ-{`aSeu-qJJJ5=mf2Z1KwqXX8-!*I!(*uL@ z<}`WQr5O%lVpTVJZ<(@+1N-L>Y@OCaL}*v`<4ZCl|~QTULT0X%q@=4JkhL>R6p01kspY7@uxIlacG*>zMiJ?}58Z>Cj(m%Xfe>Pjyo~et^NMd=aGp80+|HA*9P1SDFX1xOEY4`Vy;^)O;pA4BgJu)@f1R=%FS>q1YHM~_8IAs_PLgn4U{tz zLR>n0tvj8u&+U4%$*P$yEUNE;iC!bPq#FHR%m{3fw5ZiC6yOGQL4y$q3*Ybbr|GUE zfc`aE(yD-8$ID}4cK|6+ajMeyadVdErDLlAYbhag*D&w_qHLL zvSJXWyeiA1f+of|79$aEboH~q&rE*Y5?9BuJE<555k6fh!7j}sK7AN7B~?$twgnXe zAwq1ct080$51B64^clmI69dM0Z0ZHwnfmU2&;AhuJ1is8A8QHpV&)cyOg_&mM9V+y z?t7$?kj)CtU{d7}B8x5FlVNpKK$r3xGZ zzrSb*t&4^!i#U%ro(3)Jb|jt^RdMBP^*vM!ga|*{`BPpiG1mIsiNvG z1KKdb8ODTf@6FrM5x@lvcRN9NpcXWkoi!FRv>>!Jz3b7tJsF*NQTQG##SGFZo7kjc zZ43SVxl~82`XO{_>Z7VXi$sVm%ZF`1^VP03e%1-gR0S?720}|mg8{F;xg1~~o+GWI zb?p!#TDgPhu>nK$y4-4Gj4wPCtMVwb>0)9WuV&0{OpNyXp$T0M1?y-|D!mz01x?bD z&-j$s|IglcKsR+|YiC}WdDH%xH+|;Ko5`CuEe~5=a&Oq!#!ZrY#Ta87urW4ZiVGN5 zb-B??=)Kp36haab0wD>61VSKzgpd%5E$K>fzyIE5$dCkGUE7kZYhSIk*Q_Ce(>m`-J#-DcfOKeye@g#bci1rFJv3R-6L*`K2xzdvC%@4T z?#3VCc!}zOg^}S4EeY$~PRgAnY%;}i)c?Z-Ktoreoy1X>&EQu;PLqgaBA_`J5JF~f z8$W%*O&)TAvTj1!d<(54Zir2g3Y8XHMDqvZan0Z105ta=`BxSYjDotc{x>A}41MmD z#g{73-#s&DFAD}nL7j#%MKWL8L6su}x9guKb5xcOXz~Qm6&L`}TDRFOJ=DcfvLl^L z1vFUE6Ze=Qe`*coAq&!Y%o#d9V~2YI8j;>+_@+An8oCl~RLp^~r1{;TKt_TYtc!sG zB-k(9{o1GoKqo5ah3+He&KB#9 zw)k1@1Ze0;v~dgt$+8qA;_B!EA zQ?n%Bsus=YREP>q^`e=^O5to{A-}3UjiW%KzX^XPk)vMd$QT8gSh+rAS_!R;C((*j z7{#h6RheipF)zB<$O3}VlIv7p06&@}$MO*Xsm~8x#v1C4hE(lE2T25{)MQ{7WpEll zI~73BNN=3BlRa`l>p7|}0+1}f2Rx7uwq$Q|i|^@VNwWb13EdUYT&g@k=17`} z#BsV*>H}AulgF(lZiI-*(Ew;1Rha3vL|AN22G6NPj;fq0p1|$|K%_bmST?PnmV~=* z3K=I-UZVu}!bZ)8nb9mccofw6*1wQhUN!GH6wrV(>08I9ZD#?&D5#3?6$Ffi@+k@6 z+=gd&`zFz9ufOCs5$E#Phw4Cz?PDpwX#;d)ERl)FyT?NU^=JVij*CWUCn1lD06t9v zHE&4&R5DL%K0SMnTL2ncBS?1uG@#hD!l-F8Ww#Ij8AKZp=K{yGAcn$$xLh!Y0DjTU zcu!5>5GMekD9ffL;og)$N_`qlGOkWylN<~qv25=pX4W~F`Gra9NjybYaB%g%IRwmL zC|(j*V|AzbJX=F6w98N8YOP54wRtFlhYZ}htk;6*h3zd8mJ;zi&5R*&WH{P5IHd1J z#~rdf93!#y_zEe%1s3qFW|X5-D{=JG3w%ai%I(fsPIM&N*zro^Dz5DCPVQrYi~YiJ zR0gNP0+A<5s!pP<5jQB9KJ!*((;7Pk7tZX3e@_WUGsLwwF0cF}3kpU-P4%xdI*hl4 z23|N1X8{58Yiri#emG1HQ-0nYb#aYw7C~34jY=pgfb`fy7dAWqGHa!hWklG_ODtfa z8;vmIB1R+JMRPZ5MWXJIE`IHZX0GK(nhdyixEr8(d){7J5^dnktXeEAF|%NWexV|A zj$l54UOnhDGpNfAPcttfnV!)es-on4wS|hmlgv|AugZ_NvVeg3rOC_$_ioKp2gzTx zQy{>QbqF2>RgB&CN+I{ijH)0Os0^+? z4H1$W(X>t&L%%y1P=lRexj|a<=!0r zq8-ms{yv4PFrce03s8n$Et07SYR*$TFMk7sh!pz+OAGtx02=>_e6TcVe2vlmN9|4mP`WX{gXQb^MEKpjhoXHb; zs(CFrsTLL#FuS@B{~Hj4Ro#=Htp1N-6M_@Dny&ZD53rzM6pWj&l}?>gqqsv?(a|6( zGQ--KL;Lmxj<+%6w-9V+#zD~td2jd2`Aw9>R`lcmQ1jlVtWCWm0cdOiE>{DZffQ{? zli6O1b}C2NFjp{-pqnhumK{(7?<4T>ERgR;Gmi(z!2;zSi9U;=ET8XoSat5eG&ifM1VH&_a1wpn)Qo?wL-N?sn;#%lCl}jg1Y+)qtip zYNZ9@AvROHEvthui1jkfs1LU2)pc+Y&*N1Si8M)_-~_A*&7Ivv2hjL5@RCN6uz6(|d+;Ji$>eUFDTcD~R%lpA16o z8cx$P%mYOZnB^HlOFv{mh@<&5i|&9Y$10PY(=>^)mCw~@0ZEs*TGP}!JarkB139XlSd%?w*W1m1C9}PjoEsh?Sk(0VzNuSTP{80qgEbfp zbz(*mg-q3FDtC#IZonNH@6nND%DEbUskn{6P67))oL3Q(Uh9<#nlDk=&tr!ojj#W7 zZ|>Iqkp?tr0^KLCJK4<`Gs_D7TTQ_8nn~%21bIY7yh`HJ5D^PJoEnVjMS`2Kg{qtK zh!<8F02K?ZD1_Qv=+Y=JP+C!l>Ti9#?sqIOU~skX`Z1XzP!PicG--U@7w%xA&eqTi zBP$?@`CaO)E~N%3$Y;xPVU+xyuY`%ql@D zUvGZ1Y~Kh28vSR^-d8lzwVi1K?K9M-p;|s1vgQjxfh_27LE%U{-Lqkf-F<_ne-Z;L zX^ovWLKK2fX^rD6e`oU?6E&>ZGk<&^3k;ZD08A}ZpR-*9G`QJ!Uu8i7qe~}S)0xQC zQ5uP1a_(yZ6X=bb1hXj(tsXr*Au-!LnnEJonok3%<5E$Z8G}WsZ@;>-8GfxM>|l%( zpaCc2&(F+t9-uh_ARb0dchIcOW@iRmX45!|PY?OY`&qEzn!5Ur?k?5m^61#fr*Sg9 z1n#5-kicy_ekH+E8&wun(!qiPW>;C%taiDFX2Q@EPOur}f%K9E1#h1aKM&FS%PW2lq&IpX2 zUT8~vx@*J$4Y(Meox9gL(FXJPkzfXDjvuG;qjtnrY*UB}EiBM*ZPf@%hy<>>$bJ-p zx;iX-ZYLc;<5!tSN+pdi+XS!RgOkixbYjpU3k;ZB%cdq-;W9mQXoO%-b$Vs^3O2)u z!F3)scaUqFshm;4&9%5eR7fkc=BTff%%q`i!rQN$+hoPA0Sh!-Tan2x^vDG*XV62+ z=I6t2`6WoX?>#$X#|U+3^mpGXb3C9y1HswBZ3H}jHMQ75l>#o;=8u9UEXZ(iJ?|ew zW^x+er;{NlmC#c=VO)ZYr|QH&QCrV9$*bn{8`^O!Fko^7LZv^9o$A&NS>d!Sd0ih1 z447NHa<9qkre}r1cPOpgT(i;4$L|Jd{jl143DVF#?6LD(Lqk=W73IckCoo z-tyMcGuev{t?8f|N1y>;+tg&%HJHJ5zV$EUB=03}4GGX>33Z2dPuao(0|wWUi7U?zUa4}NR2n#*~Tlf|;s@Fy;8i5kf z@O6gs4hA$B&jNo>2Nh`$<2N8*=)zX-v|bimj9jV2Gb{-ns#$gcjX<>`sIZt;wo}No z;$8qi%~UyclfA1678o$M?(X;rnJR2B3{A2PZk{KLcd@{L!3Ccofo{*X<=VQS8N8|v zI-AhxfG_|wjW_MB8*KZ^x%$qK%G)fs7{Qv5{|-bWG=EMduOB$z1^V;rGdA|R6wq+B zCUmcM)bF}jzMq^V(i2jSI+hZ^K~~v(!Cd0A5H{LiB0m*{$X8U{;Z8I*q~<#*{s4R$<0}p}x}yR# z$m_c3KtQuFY`Fz^Gi}r(HdQzrqUI~XJ}jsh;rcMh8^i@lD`t&RyNp-=K*m#d3f3mk za}5?!hgE{X-mc?IyjXC+;3^88*AdUrdJhWBVA~dE(H0gMFt>1A2pt+q{tP&GzW0*f zL|U8BEPi>1oTH1h+a~5}=TDR!>tq3idqg9|`K%(KV>ZQ(qA?l58;MI52V4VaI9lub z6^;Qk8!|Wa!CpmaDu||%DW1x9Oo(Rzg?kj_I~ma0!R~${R=(!9XeuopO=L`!0k~nw zwz+-U0^OtxcI?F9YDmd3B1dy@8BRbLEDC6CXMq88OA));3P`qu(r1XH?82Z)dz%lc zL6SJCPP{SMT|2_I{Si~nvVg)}_%slWAmcR=_DGl@rQT8-y~^wgK$FPTc47kdaDT^Z z5V#4UlXm_#j5cU^afM_u8*Si5wMbM#>tKSJ=fr%;-Y?;K(W^5bB)t-r}|eK zSzy52+Eg6f3xcJp!2+7x+Nf0o3k;a;KSLF_4#A_LMf?g{{F&z=uv3~UiI)KJYGl`N%gX%Z%qp_Oy{(uDs46WyCyvQuC z+UYY%_=5hw;4VgN)D8qqxQfs$2aEeaVnsJ&SCF|!vr*N;j#j6X1hIeP>eRX7#P5U z2sf+!J_%$Nr+&X(E+>Ex8DC`)txB;!b^^~DxjPGC1|GKkFAuYx61OR|0=VJ)Rbz;p$D}%Rgs9 zgnLFK5U3oXCW>oIruns)h6^|-0gb1oZ#a=E7_bRM=9_VUQ~sFB+!4UcO*Y!VJ?k(i zowB&~&(KQWmMCBLtIDIrqnS8yQ3u!+NNtN<6pdR;B70eIz|6Y6?PnxpbKM;jpve^J z-g2gkC|l00b!i*=Q}}wDw{dil1^$fXO0cipjps&)m;^Oc7ajf#3uxTCLQAfYa$a*g zb-)`&Bj}!Mj$ha5EI=do)btP4`{pcUKw%dNgC!{?y4=RyO7V0n3m)9Fj`$5ox1Xgo zG2o~dhEApzgD`&DtUhoJR@!_n4|Vi{*djL9iJ{eZ>|aQ*BI%)Wg??Ph_HAc|$Fb$y zs({D}nTIyh=4in~|I}noosrJQgDNOgL(%46@$|-!g|}D$;l|MjV0=jFri(rg&;j}K zndv(m4ruWABA^+{b7G)op?|9>nXfIT&H++Qp2}N7VD=ab9^A8b`z9fv*+yqiL4(NH zpgLN9G=58RNvW6O4V%ve!I+rqga;!F5SUpxKGmiKPyL^09!cbP;Km+n>=&lUO$WJF<+X)iw7jciW$(sQqN$^V|&IXQWfrA^@2Jg)NWKV^TmM0pl z897(oC3rf~E}%iK4RmNMRBI$%T>k}Yu*cjg4WHdE<){Ma5rV;(i1nahJ|UPYoG=v( z@-}&8(Bc+U2GoAdV zf2y3Cw?t&W&H@JpL?eJd%@;{R#ZRcXRv_hmeNFm?ZpU?Kmi{P-s~yzyVSr|aKyQv8 zrwyTuHsCZatrX5Svw*?6Mo3mVfs~hne92^vilA!Wew%cs znHe2>(9D7c#zZ3=ro0)0%Wf)Pe-DAOLjVl`s3fkAHsKh%L#4q>33v@P)RJ>uB&cT0 zXsgcx2KO%X1VU3!s+_UM@Mv>t4b1_snA z|8Ni*G+rCbzJeY}aXt-3TEyVRQ-K)V__ED2Zk&o&5LjVg!2vVtH5CWFXpYlbIEfrx z{mSGGtf?MDt0b_k9fSBNMvAdzf_bzYf>%qj`;s`eZ#uS&u;8|A4Jp4h#(Z8rA0XT^ zG8%#3M8t8Ff3p*fP+JkP!Z>`{Hu)VOtoPC3X3lLqwMsI%n^|27 zA^Ao?D7o7wiG0y7ilh@kGFoc6WJ-6kr&2NKeTA#(rb7%Cx29uI`sAyx zDV+1?T(0u+A*!HkkkzSfV3#8pEfYA(s z<{FYYiY~B2_z0!TP;X7;R-4WT29A0#^BH_j*_>LFt+io?7<|oJJ&9KGHYlCCsEijg zM0K}5+3;%?ATY3QZTCx=Sml+LN&jkiKNo6i(p zjUmB9%^5VH@zhL=^ItdW$4;T8*GR}n`YO&I6*ve0Wx|&I;KyT%^IhE$ne<#w*sLpV z-@S>6*lC8pg>o*P#Bcd!ra=GYYo*`zsJZ~eUF2`oN3SNTB378d$EMTPp_MLZdaEd~ zt)ne*UC+tlUF0{rHJ8CMBG0Fp0JYvs$}t4^DS@iV^j@I9dmi4wLh@8V_&{_>KCjvc zGG!Bf|KdHgDd_d{4Tt8rWy1N!(GF;EEC`?3^(Th#h?6Mx2F#yEix?aoT-$*H7n>0X z-ZjskQgK;;z`!E*eV+s`Aq%|@jZl9DHyIWnFt1KQ`Y?QcpHc!=Zo>yS!?xQJhZZ<= za|Y+g_>Tu>NI|!vJ#_X*qnlI<x+Hbx_u(Mgrs6GY>m=iSnQ;Q8H!`^in2oBC(^w;7V5>yj?e9Re_$FZa|Y zVSV$^ezfJE;HeISpHail+&~4BDsGJxBRep1p<=>vOBzqN!=5)uI!AHkh_9^Q-3YHZ zLQ;#TSwT%`hNSQ7DW0lEJY1}# z185==7aBpJkY!uxq-@wWJAzd@F|hiNeTPios(Wz{u)AnLrg`^l*0{D0cn-=AWn?QM_GoF%A8W4@*s0qxJDxP1Vlo>lbqZQCB5R?&M z12K2Vm!zjOe*_*4K?l$TESyHlB#rxRa|zX9Wl^)*S#ZG2DhMv`kdM=H?T!lQDiGLm zzfwZm9(`aaxGh4M<fPp@ z)?Xr6Xh`x@S^>lyLjyP9OZ{}{-x2*!6S$hvH0aK(@yhNRtzhQ3Ukr)q=fmmbA;^XZ zgl@rl`${JtMK&pwC~PWWP}MiZcMY~03}fy5hXp`8CLin0F8StjYfda&HRw;>`sp?Zo|%vKIxq<8U;P-1%mK1@SIj0RlP9+0L@kP0T^^5pGfYh3mWd{ zFBLc5^lHkqpXsy`GMxk}qwTY<`Ufc8Mm`1$5SUjrNqGh|0j6$ya&Mh!P1^f?JDy*jD`A16$^K!RkOz!8#6*!nCU zSVJLHe^bQ+rg!Bq0=gteQgPHi^MrzTTtX^F^0K{X1WL{jSNC6NV1{c50RXo6!AHa& zz}l08ai0EKv;kKcUnVGP|ICRJZG7(6{U?yiB)Q!=+!_<)p50C1DpsIP|8PcZ__O#N zX`YHr=)PSdC^w+m@LKTbb~Z+FK`DO$0o)m-BLFRQT~4BLp53w2rUVjwYjE^!b3F+Z zgkkRwS%AR6(oM=Bv|?F7)l7n&GE#8&_`iPNlUG0e^;gaQF=W0UJxaRM=)7 zKmX?FH`oKUQ269GfH1tlAm`~V=*a_}E~!0|t6ly8NBMghS6B2EsW=?`ZgSro_D_3g z4ymmD=%aQ2#R3Ed)~adpPP=;(I?R>^x3#n2fO&Ow(Ls>1X?mz`kq~+C43d3mNwzua z9!HWstRr5Z1ARsots0zmyr)=TrmI;|K9L(nWuKLjNkGc zx-!G_-w)3|-S0>`qk}Y>du-O1 zcg*Cg&wog&<{mPqN}4ShJ}q16fM)~;F!C{92pYZ;2%UK`+M@wdpMl$90Y1#7M2>nP zcBzLuX2sD8bavJth$#RN1AMgJv0$3__4ikd5^XbZgH8^2y?&!JlQ0S*V$$h;ka`;sgvbPK2XO{GR0->&YO;8a zCQ&AA+m9WgIRB>&kr}V_4M#CGVfwo$-~JMf^r*TI(21!^5jR=ZC|~UQ{0kE$h_O{) z+$PAUbuV`#ut^m+*Pt+g8bGOM&*D{>(6nx_hwMinuRiQ6Cl?7zVFaS=%;eOcg&TY! zf-*;d7)bkGjUWbz_v^e6!~~7Wtfr5Hy~w%z`9zv$ATGH(Z zd4++>={#Ljx8~>~KNcV`unv|7lBvRmWz>rW82eR&$ZKKCed@%_U1Ww(cZurr1(5P3 zotq-Mo5E&)*%_qHc&>h?RM0|fQ$**MBw;HCTcy3gze#i8|NF6F zHv<0!6jQ4Vk;yOggwFYBP{0cmSLS$6O`uI)6pV>7yj#zerEeiV{^_hGWuF8C2Sw{*-Wr4BP^C-2)5t*YqG3&g? zE{J(p=%X{8w}^nQ*Lp{dnZDs4;}a87(@qD_gifB*1*%WmLA^Y6#irt@UKSuQub!`w zpcl;!JLp$4wLWSU!2$&4)#3c@WTsgEGNs3mr@EVt6X`R4aR_K$a+XqMfK$WM6OoxO z_l{OcH+=ws;N~=f8v~A|q=L3%XpK)rW~8l{f*d57plK=89Y{boVhjVNdo%E6VnVkP zQl3slB^*eTG=H(F^;EaP)a?*3^RNs=54nBS>0ap8+{JWdDw9Gmurs0gqb+&$R`0aF z5+JriCx*!2*6+pc^Kbzp3u372ps&0ifQ&hXqb_lpY#+=DksCt?&;%D3K}e;#*=EO> zqn*BVYLbNo2+XTjm0U90yXKf3RfW13Ey!7bz`WX(vjt-h_EE_ckrzW}W5NJEaAMu; zO!;ksr~XgK(LkRXcQBN5kIu~(4+zEMw;2AxxjBw4bE=R%dJpnDKq!`gw@fpRl5ByS zh^$w8K~eRtt+5Yq?EV+P#{DBZFZ4MQ$b7S&JMdnAidb)ydg?rFU%u42MZC(dMo(`8 zs95in)dTWs=)@@6K~1y{l~uzXc{~J$2x8!QI|}&K29$B14`M;g!@~ChP4nPAx*E?> z37olapz)%Nuc8%yfVoegirPgrkx-;fX1!<_Sf@1}0BDxHXs?|&zd3$g4+{{OR~s`o z0*6Moib^E|#7A0I@f*A|!J=HLb+)I-z>SyJR0iV_b9C$h3kz(%0d8{6V8;Z&jjmHF zY1k$bXxZ^O{WvT5J)K0nFUoyYZY;!OX*Y;n1c26iM?v+v6wl zJL#N;vo*q5om0Ry7y$UKG>$_5z&mGXvhYWr8=nUN%(4`Y@?IXd+Q@>K$H${6M1>X% z-Gm&fa!2!JY<)IxPW7QI+a91ndAHO{al-bcN*h%nox!>VGqBDzJw*bk`;?tqvueqT zr1kwQKww_2O5V^9ZTdQ!pDmY@suF--iXO%$U*>XajH|qIdfpBUX2Hw1ICc}r*}Mft z1bc}bW%cku_F%;Y>Q2GBB>Qf`4LPJ#thiuP0uCmYB@^bbfQEr}zU?n$w%3w3sg0{R zdi~n;4J<%lU}n0ZW9 z-66yC-Xdcnc9}pm)+rOVyovragYk12^mvf3n^qLJj%YV_k*)+Z$f=p1wUtN}H&r@~ z&jnl^Ov466&aE77tqH(&MV`-u^HfU~eBBK>4H3t;SYZWi4k(K$FeY7c=Mk27oh^63Oo#?5ofsxfG;LSv|il=s+4hUlb3(YF#m75Z{ zswpG2KS+hj+v2u#yMRW#Je8CRl=rFBdYIbG0tDvOmDPVBvm`atN?efr?%1BanFR~Z<2eD*`XOF^1Z+pE743JX;fZ|BEX_D$(h+VlW^OP-k z1+L14R9_`}Q2>ENxZ=d=sFe)M(8bnSY;#@ZKp1G2e?^1d9xO*PKTTv|IS!&>b{w57-pZO#28U{ zy?hKV$jt9O4^=VBu=Zn{6f#>@y?=K^JjsD4kF)X=c(;^ss-NbLxj4tShh7(Gk*u8{ za0Ie>p5>U^K|*FCfJRwb#^zFId^d9Eb5!~UZ!0U1Y(#J`g}&57wfgRke|G~-Btb?` z=ivq=$kX!H!sH7Bt~3Go|8)#FTBI*?a)rr9mn1deGv*w`5~^x@6IMj%$iWOhOlXOQ zF!!ihkHlD6kHhS%OmXAO`yt{NSP`OIE1*P`_^91dj3|Kr6P0NmOX)q!nClScWrxB1 z!dKErP|WzZ(10ajeROzn0*#E|4=JUfEJB{0QbbFNXyiWj6w70tN&e+eHB`n)->~K0 zZz0XZ!Nzyrso6;cr)@i*z>_PsMUO_1pdfXOxebNmo9N_^vSeLtL3Wq7$BlWXm1TTP z&q9Joxqzw+NV01M_*{e>x3E|_?wubg3>=ehKRTd~Hc2M^ul)BGyIsD^JN{EuWqzif z?@CC6LEL5?I!+1VcwKRhZwb{!PNVfr2~@fbDd|3X0VIc8+W^o!Qn}V zkTEWm+{U-WqZA^7eO1p!hIHj>DR}p55u9C^q+Ml9w-g2=)M*y^zejbk_DRnAbIsBe zbeg8FYUc+btnQE96^op+qH2Rnj;Q?TAOn&0Yo|X{V~f+mw5hD_HU z$+0MyYaQhx4@G^*D>@Qp4J8%iYJoCj@OQd3ih(#)4#DfZpEfCU2O8}q=czVn@O2Jy zneO?JxQvWdrd_CAvbzVxuV?)Ugs2{%Y?`v=w;YBum_VkXV#Q1TLe@E`=5JHq;g@2v}t{=|MEA3l%b{@;g<(%Qq4vCV$pno2`D0)O>^n`U1!L7jTVbW znePUD$_iDO7x(=kyRn9ylI0v^E}{DtI~pOLQ4TESbOKB6KlN;ln6W&NIP)D;FmP8b z;X}bNUCO%$uaPnGikH4LAb)2y{Qm627cd+Q5w8B-bep)BwlWKrt-M)e#X2GIS8<(y z$4LzjU|HNEef(HW`&$Faqxfkq3aGll(*$zKgm@xTCS1NB->je7upVISbukH>u8j(K z9e*XI^Q&(Z2Pe}Z@#^Uz5+?~T_qBx=U-J(^a~JO;L&3;uhQPeh;CXrc6e?q-{_ z3cE945aG$e$A_)Dl8%;eo-s6&8S&8U7jNk3`DP_Z5`{=48Ad^O=qL@{fWOWvFYLs(rkwa=UXCDY>~H57O2O;5!KH5Yktv$gZg_FvU_$A8dA zl}A2XXeyG_1HGS)e>LZiLz6kAiW3LE_{} z8%Mp^KeH(z6GT)T)1|)0o2-C?P?Y-Krl|B0q;N}MebWwu)bY5heFkkV#56rQtAQD4 zIDHAKxjt3NL4v4g&vGNwuU~>CXE0Ogls zc#W@~X;0)mqrZgzu>X4lD4}45=dEnc*1T?^*K^E3E6yfO4;_g|UJ;gj$J}}$mT-DX zYDv7?I@H)ar+9h(nMF`Uhz%-*qhgP+gyb!kSa=F%F(o7DnH~<8!i$A=iLlbN*?W5y zpWHS%k|o^X3NF;4ew@l*i2CxsNrp00;Ep5Xq}<&PN|@)OsGyzSJ3xGY6Pi7TBsV#j zoA+(<;yaMto6{~QD9i~HN5`l_Y|-_A1Ycotf-a=hjt&J3t>a32Uk*JFv06pb8YD4k zPgKQ`h@cw+UNqc*6rALQAD6=kne>puP3ET^HZ-_#|J%f!mEY}Xk}Nr#`HtWtZG29D zDI9Jo1VC65(y@gkZ_|@!x@Eo^1zQ`cIX_s-@i0>6kW>4hVBvekEKs75HS$;K1|<8i zn{?uFX**B)pcKU3oaTSi2J7`FXcmJdyQ+h}==PT$kB%k~c&SD(FiLe|x8meuPt4V2 z%$1d0(f+}}0<;Nky9G*MV_@I8^1(|1XM({*X8zkBtlkIqDX}%T!AT2{xQaRlkz!Cw z_UIMibz~cHdgM@+Sf+Mtly~fJNIVDvt>1*Rsu_l-RAZ_}dK3&S*N^fPLP+V2d!{gM zKPF=2{;Iic$l80H`44Gmh1sNBf#JISYM-6ACX3+`un!Ip6G`x~!aOQ)Ksps>h zsoVrrNN&w#YLs?9^kNqSuHv_jSUNjAW1gLjnaG_tS09f+q57px;LvEKu1}$`KNaPAAkc z+4ZpW;a6>tmh@k%da3xG4oF?nulNdfVXt1Uy8J)N^=Bp6_$Ob^pE&GKvol*2AlvNH zThTsPc2h8%o-k~#XEX%&Gp-;2T|_Rx_ADKVM{$=HyS*w6F7Ikvpydw5hX2g?rO;O#>+pp9!l|Y00|bN?$3{ zO1DkXaDx|R-RB%7m}L+xgu(6+PCXcx6rLAY2ff}7>je|iJF+vIHcYdNzZ`IWm7HFWo;l{1hQuAbbHEoPaI);YwkTf!Tsn_P>>T^$3E?V z`YjzQH`lFqQxrE8x2#qXYgOle28 zIyj-)gihvU6w~!!Nvg>Ok{918BP$2H`2I)`|F+~54(Va+4b^P6ZgYh7O@^iqVTL3$ zKxQNfYek~BrGd)Mm6PN>x{q!<{UYy=t;%Hg|L}yFv#$iev(^LavGEYa<^$~1e^ZWr zo&2uw@I+&jb&A41O|2^@tt-Yjv+Qbn(y}0H!*ThZHP&e8%vWS?=7(>?l24iP_^L-> zulJ95g!#Tz(pwI3Qz@?tUfKzR!(M#3B2{yb_aE6ZGH)^@XqN@8R-#n)+8kVVG3WX| z6{ozTs^6fV(_~SoB{>7h4t(%M z21E4Lc~wLN%MR8BcBCB%Pk-32LR@ zn=7}YA@tKVPlLUHy16RSTrl$+57*@Ab!dij!8(TsmnEUrC+xDQ%M~s~g%nGGw&3j%)?nieNm?=8mBLgcqr5mD+iGRdMfBn!^e%xgI4+NQJQ3Y~Tw=n2M@i zE_IBF9!(%YUTr1{o(8OnMXfE3u0r6&x~J;E@~Mx) z*OTI%@bg`wcqT~8>o=HDmJ>BdKK5tvgo(cs#mT9uBOah}@-{$sVt>zmB>Q7+&aRxr z#8tyJDmIz$Iu%w2_H5Xf?(_mv?H)74YfmK5OE=M{BrzJp03k3lSZh1E96@F`KB_4V zf`9=o#|OeyZlPEE*O6qcJ9ov&_>()phHSxCJAOUdieCu%)`!*S@Fd za_?@nY4+eqVyqrW8+KUYW-Va&rTGbd=PncK7J$-^osKpnI>LFo^d&3uWda7sMMfYa zy-WAhMOrKDbTQ;0MW?xykk_?^$<^a#rh2HGqzo~~e3ndTV3C6SlW<@Bxojb%a18w& z02Iox{ilb))zC6oh0XAD(o_*6aq#icRks|2whu!)F=93cnLo z(r4{n&*X$Fx2G>czr|TobiSW8I-C{9%6)gphF50&!TgEp4yyF_X5Jxp3d6g*ismsZ z^ZGNDUcb)NsDKK8h0J?Kpw?j!Ob;hUZO&PJ#z8w2${k7h8e~oQ)F4Z$4b2nk+UW~X zVr|Js`C8-@#FNG?jI$5-4KlU9*LRy;>X6F4-oM16bKD2&^^Kfw=A}aHmuj@e6k0W^ z#D{9OP&q7qY(~0}w9jKt_sPrA_`zAe?l&FS2#o4a#5(Q+*QH8`)gSx??8_}i(6088 zKw;uP{601xCJ4xQZDBS8B?$`WRQL$Dp#7Q}pxy+wx=?zcnqP%ZEmOq*$7h6yrLn1Q zSer65 z_Yxe?3VdpLgNA6_;06e-&s}iWwnJdS@u_YJipIo%B?s#NChLh0BxL#CC5tjxJ$uQx zdA%V%Q`e;(X#2k5l^9q8JzU;(-V0{J&f{o&k3X+6s!O34@q@|3g7*(<8zd*2rhf=5 zm+5aeE;~t4xkh@P{w~d>m0LXPUJ=)7AjW6J-wsHfgf+06y|?Cea1jjybv-(agbc`6 zgz;N0HddyJ{)SyF>T`}l>S_aM(sg1S*Z)qykB@QilV_A|L1;Uh0)dpsijB&xP7o<@ zG3V8b^jXB`{)S`eU&s3_w98fD$Y14a8uV5zQp}6w%p0O7Rg7>`3@r;HH3_(+7axYY~q^Yk!O9VkUZX>hU~tZM_;{D7TwDa@r84qrN+7(fm$$7?nv>zO@>! zSE&m=KqJ`C(!rgcf@ga!T!@FDtW8=w-QqM_rjQ($~=km~b{|^fm z#Ga~yOw2wL`z^}=hR81eYofQ|q8I7y;gS`0=@yRdh9`#FO&DJOLUyB1eYaof>&p0t z*g63cM70QK^l`a%Qpa3qR>kjnFi1&@`;|?^?tleuI02Br*%t0Ls=m^~e`z2vv!<5) zOK*iF6ky<;a}NKcg!#-_GNPy%M;? z9G;h(tD^E?eV4&D;2FgVdwhMzk^cLoIrnBGs6~@!3Mr~b#=!9AWN5RGq|R71BK^$w zCUABxJoY!^&LJW)9IUWHp7rV3^%DV{n!cvCnA)C!qkzM%P%9nq=@uUe^%-dUN8QXi zk&V&A7?YJ@LIIseD#9brew~>4jdNfo6&xc^2t!S&wz<&}TxN93XnB&+jYUm#{ei*@ z4QyNhzRds`qH3740(32FsUQ%3M~dx;c~Uj;W03|2oCeU{a-_lO-**CRR%43{OmFfO z4&7F#C*)@vSod@=kuf;wdEg+U-_*xdyb)ldAu%!DB4#TI{7gRIzk1o@AauZTR$gIT zQAk>(Hvu(3Gu~)nY8!KnZegUJoskGw3!G$_XHDy8mo=F=Jk~3Tp(TwUr;ts*+2=LPR|qIH61|MgxLZ!{U-k5%2AInMvA-`I33D%-j`g^ z81A#HG|s${oX~&AdqI9yGCCcB-b6wZi4GR=1XS`DuBzu$0O{gM^d~ZBW#1sw1wTHv zK5J-UdLjVQqahfXADN^o(&098pr(UzNoLT^!p6Qi=e~!T@el~Z{=2`94T9j5U?cLkfmcaLrJ6$RCIww_~Apl+3B~Z$vDHt{M-dxIjhLY@iNP z!<%4WH3yBEdnz6jWrTCTd6HahCsZz&tfoZPa)&*fG_~uj7Uf!^@HoUOnsZQlVlq6L zO1sS1AH_i-@q|MP$?m~&7|a;wPps=wf;?vqEl81L@zbIJ;-c-!YiyDsbKL-I*}?^fnw(UjrCmviXXRk3L?v7LAMZ;&$aS88e^Siox%+>jw$%a8-E*HW( zoUA~wI~drOC~x)P;OzZHbSk5$K-PZ5jNgD!CZjt(S7Sb4iBJR*=69wyV;+;tcac%i z0=8*zn*dh-DT_>|W2phOtHjB!YRbKudlv7$Q2Ff5^F{6~4BKd87L-RzBM7j-w8PYG zoqlUroE+4hZ0X9-i}5pvGde#i^y=(`-&SH!^v7fIvOr}O!cD(J861A?e~y-yA22r& z^9vlQrJKEuQJ3ya)AH^y;FI2aK1VfhL|PfSHlmK;0aG>;8Y7*kzk~3%XXjKQdAXQ^ z2)1~MAIg-PUW?GlaP%RIommEkA%+7z2#&$Nmfuln1yfo}`3k_Hh}iG8r<Lq;uOY-?%mi&Ei+Lo_UvUuJ$=7_#19vGYzKSgFeE48 zYQ-eO&7h++&D&6;zSBNX1UgknMm&<(uy(#JmOn36m#AUvMawZ?#zU8IgeB~gWKtWH z<7(&d$W(P(@KePL!1q^bXJ?oT!Wz47M!uhyPs#ujoE0&b8mdXMMNc1ZR&|mCe0JSy z9K2-*$xpPZM1lAX*^Aui&Z!%Ah7RE{P-j@>#W@~mf%to4xbEH+e+`iEydl7|O^6;+ zQd+#=V=WVLZ>zGeVq>Z9Qdqbb^ap?a3|nzk3Nsf)n!7yB{+a=Ugi^=XHAL%*{zJ+n z$W4%757-#ZzG5jw@uhNZ(^JDot)yFVc$9YIE!4VAlMap+J7!>nq*4&;I6<5UV3iyr zzQ&sfY_=HJi1W?FHx*y8`D`M^M+DL5-9I%L-ed>!jIi6t=T+oUR7a+ZQ9M8yJp$Yi zShhIGIMSm$%6k}IH7dEOfZXAr#wrVBpe)hP8_CL@ofMTHhp7ikfAEe_m2j{FV5j3;dvEGAhE%l?`R{a2BexQ$Vvk&Zy!-5s2 z*#Y0>dX)1IGfL6${?>AQYUj|FD5!!D3OaiHVmXqyjs1EXW(C(|cQy0m%pVRs*vC0p zzn!DGEe4xhx54YORNJCD1M&B=d1TTo98A0r{OdrWYgil7^#P!Kpi>Ud|31vwIja#!7 z&}bI!>SVCS+P`_w*-E^3_+?>^S`{pzCaV{DS|$5`jLpe}7RD=-5l=j=HY8?B9)x=v zviBk$&Ht@W)L-2Pt70aUfR}wb^xGdgZzRaG7vT_sVDhsFf_<=Ph^0mql-Ctyo+IbN zFIb?t;$>o>*)WLqeB){Oi$VI@W<)Oij=eCp7Tvi!ZGcEb3uv5# zuHnxdXN@WErj)=usMLsYpXx=HL40%k*2Z+{ z=E>n;TuE*zG2zsH_wOb5&h_^L50lce*E2f|_L_+*I_lkS0<^%z&Gw$S>;c7lJyX*l zFgCcJP7*NY174!9=|$BPWwh3%!C*-9rH7-6e}-43jng4Y-*Cr;Gwu4n5%6gxG4Doc ze0(8|L#uNv>t@7J9@QljRH>0ztmiQe(XytuN%Y|ikDc+lqd%-fmEBLgji>2kR2 z>u&~_8_}dgVr|NZzo0vVq#`7T5WnOVV~3&LB}&M!@pIu8WZ|XhRHXhUzPoL;)LI)X-Q!KyWNG9zF*DTE%Hztrmy`@5Q|X}d74+f@7@}|bWie$ z9Q7Kq+z>*AVx|8##qEWv!$pBHC^$H8df4G9`n|7wG5Qik_A7q@*01}~Ksq?f%fjS6 zBv&i$KjCk|T_=i!6J=hMB*74c;#JMgk|^YuTy%SZ1B9o$h6D!8H5v=4EEmE6jd`dk z5l}L<%tIb+hs|Cdy+n*p^Izo%=N{bfb0k?RaeXF3BHHUm)O@_}wRn$6%O-vx zy)NYLrnR&cKqB7g#j(@?&gzUiF30Wom8r9>oWwDPaqs%1BI=RH!8<<@lWOiWqSfdF zQGAFw)x{=a5A-!UGrB{>`RID_bQ71=mpUw#1q#A*Nxz9KK=Eo7IX}W7z?dnMc%m9I z_3#99&IEY7Q&Lg)NR66FIV=W8k>%hNi-+fxaZMC59N|-QN{X>iCrQ zyH`{`6|M-Voz=G!vbmd&{lmJfaEp1_yuEpDNkCNefo7L}pve*v$zHccmFutYSM)Xk zWvU|>jF(?i+Ef9+oK>gj)H2UTmDHV_|W3I$TG{QQsjKn~8=-h~h~$A)>n}zAF-7 zB)-8ANM=Yo_mC1_+$4gH=z8IYg8!mYYD0H@#*Dk&xz><{G6R-6pWBRG=M&pk8cFoV(=p3c*`=k`q>Xpq8;d{=()yOe|CU zYWwYP%GodGNZWINX%d0thW&?q-_$wF*Z3`C*=DF zFi?SN1Yd;34e2M6t3R|m72BAbMv~z)81xGv$G!&^cMrO*=cYQOF!bQZ^M@ZppyT33 zYFiVNdZ7SYX53W}WhXDwbjv;+2g?VLkYq;*8B_kGK8dDyoUrCEW9ZGHdyu}+wQk0O3 zbcSE-iIz2j#k>GhvgM)1TGpBp|B4zAM63tXL?)9tNAI=x0o$p|^}OcPz3fa(4^N0Z7Jb)=#SBL#PB3rE%|v(A)&JqB={8v zacPJM4({NBbS9nv3gA=;Mhq%frN(CGA~zT!Sx83kL(7A*aOmCma&}O@btjfke6vs@ z37Uwryoq78jp&t#hs~8J31G)S$YuzYs@BN)yi9qTy{??%vyx{gL^;H;KrpK@9`_n7 zA_T+FoFH!@J$$1L?cDJsMwG#_ql(VG!Nu%40NFo*-M`#rf(0;)D^S@$)aRR3Zu?v0 z^VswqY~>gKwOtRzu34eB<=?sQCy`c()bTgOrd+np zStYDaRiK`0iGW1D(a7xMBsT>$i&#EJ{#y|=4|RV4$osGSd6Dw6)%tgG0n6&~>2njm z1(>PLfmvynnow;0ZmP_7uk|0dh(Z;6)3(`(y@Lm_yFzGzP_ja_gq~ziI<}wsf6b&Z zId_J9Gn;%P3lor!4s{KU`C+eP+9R@47;AfqrvZ(PRNgoE=gO3M=1}pQ+8sK=mRxyo ze=0O&+*?3~Fdn=pPQ5?q4qsKN=_LFcvt zjqno9ocZ#t>r8+|y20;{z7Tt@&3Dr&_U?^Ph^JUe8S4SMW5b`2CayXx9H?5v--+%h z&Ly4(E6KpbR*ii1rC&0yXM|ftOyw}kOz5gtnQ`WHa*kV9SyTd{F5lmGjp;g)=|+GaZV)`HCf=;4 z92u6f^nv(GAIZG`>a z45{F;{El=-D2aoJ9jZyRQ_rES@*`%ew?=!6{hi^Nlf z_;C3sB`N?cW<4tyg)r#p-7;<|-efh0)yC^emp-(uAQatr!x_~4Jb$)4nHj_>W9IMQ zV*fQ1tD#B-Ym}2(6bE9S-4qg%mphMO+4$H@!IBWjfP<)B0XNY!`cx6XXO5hKZ9Qh1 z?lFBoFNYA1Y3&~*sExAK#T2${nT@4puW5j@`N`<&;JtnmH>DSN`Wrw|$mWtr>o1iM zjE4-|(x#Qw+<&@3hGofJbJyqRwZiDEei6Qd`(?LxRMTc2?K%st%*T{p^6`moazvU& zGy88v0XGND?k+Lvse$^4Up{==DYwF$Y+T5YuBpXfRtg-C;b=ncp_+x-vwFn#Mp@TQ zL1a#}`0{QbK`Tr;x^Vs?89>10iNGD^O$FFRxWVlD!Z8!7q|2zt&8&zq~! z!TB8wfUhM{`58Bb>(ew&!heROTbbDy+^Or72uXre4U9=bfKXcb*)WV0i|L$WUk2kU z>-5;3C(Q3ne5Q{e;hkr)jEbYKhoaXwb@DP-a=wZKIM*pSOkO=i0={71O#`CPt$Q7R ztIIaw!Q-Gb$oo8#r$Q}?9CHvbuVHkPyC6E@t_n`rmBU|})Py{OF)#>E{JZbi={|>s z{aA^uKY#!;#yC?p=%rJ?zgWEnn^Uy9Fk+WJ^y+RKkPR}2Y;&V$xXI$z->U0myWM^0P#XFIP5t_}#cFXnep@n-0FdW{MLl(!22{ZmeLbast-`X9w0kYbKDF@){Yzy2EvAhhIETnY{BP z7ZDt0(kHZkBwM@=HR}4r>&=l|Z2(d@{VE*pT^z)NyYWe=+UpxLlgU&jz&Oh!(j|wn zEKcoLw(@^ab=o*V*MYOC6F}3~X&B>WWrDt0WrCI+BfOsZ;J^=9!CP0OMJ(4ecWw>Y zV(vqo9JX>0c}Ha@Al>devJwsq+<9TUE9pAaIedqK@c?JnY^dV-1hKY_KT&c6EvfQA z`UMeBOUspwI-FTHwf}(;|E|GW-!H*v`K3GV&@9!Lj$hhe!)F}Axs!mn<;XM>u6#j7RPk{T?7c z^4J>?LeFNi5GNzqLY*^gJ1W%zZMChqASp@xcjz{NuL`Y9rnnrVEBV{iq7*+@VSi;c-{h%W7KZp;Kq;Sibn z%tBr;hsbtG`RawtL_BmV`T~!+hoX~V`gs^i;Z4O5nE9arMJvvXX?k)?Me(+ zDGiCa2YtCU&d1j`F4`afm(547;$-Gs9*DKJVBv#`^9!_l_7Q=+d%4E6(bWz{yn*4G z8o{!Q)mw_`Zqxj7Uz4zh!|n$PdlP#_)a5TDjZ8CxPZNZ&6G@aDM;9uPoD#@Q>2kD) zd$$3werB76l@Ky3D`;0EUbe9J#e3at0*|9%k|CU^@er-pJDz0)EH3m43*<{UW^+OEildvp&}$9rH)CvW z&1X&BD)hL4Pr9N!0eaQe1a5F;;Mcx0Ve&Zb7s)9{058j1Sp5)4mcuXcXB)q{s`J7F zKEKZw#?K_a0-Fg;Fwt%@Rh1W`YLHabsIGB~8b2scJvlwL@IE05t_*Q^az!Yqfq%zD z?-iODCN`j+)r*S|-BS}iYy4KK#NPFte34x+H@!YC9m#FV$i7BMC2lE#uWUFMMOsAolNwTuO&P630%RwV&T zr6I~G!d9a>cP0)IgUCs67+jxIkN+ee+`8F-1FkOWT+BRlJAY2%02Jehfic#cB{ch5 zl*~bOcSM^5@@PDJ09MkQ^DWQL_EhOSG zb)4=L+B9{Vdqg)jk*_)=S$XLfKgHT_33mWDZo|bJYwTG{uUQ7g1H4yQO_@9F8!r^G z&*G_E+Ey;2=mEeaP-o~-|PZ#Gdbdm9GXe{fc)W9zf;Qgjm%Fc{A_5u~4#K?AXK+}g+tE{Vo z{Rbv2d5F%)hQ{mkzmkJ^O+rxf{);8KVFmd|Nom3ETh(9)Da8aL1Cv4J+JK+^JY+>5 z&VW}+Nz&CH%XvLqYia2~qV5nFm8hlP<^aOd32?Zpxd#>--@hA!2ofk&>Y_&2`b`&a7+NjZ!Lt|fkpHuljn2Jb>s2pVq|utr6D}kLLeWzh zSK#t;#61Usb{g(J|5ALn{*1~fPda>*k#pLKdpYdIpf)4A(EU#i=^=R9n1Xz3MiDEv z$qGz0T?l(x311>ud^Ef|z0iaLaBcRGlsbs~l>@&EWXL+`&buRmO7MnlpORDoCN@%f zTEnybd{0@!oP4zBq&ZyC^pM+;D~4|(=i_#m-sD1gfVl@VfAxbvF}y8e*E%Vh7B_(O z@Gn5Ync#WvVl}$tsH%+1%=GNVUxrB7WG^RBd-ZOS-23Cl>*17tf9y*^qi3JUU zG(^1^iijl#LsS=N?x$?)(JZViw8RLW=-Ci~*?;QD91^x|lIpv;>0rkHG~5{LmHyk$ zVXmEotbdr|w5Ha{cuZM0Lr%(TyamY;ga^5FKW>~BNEc79SEU1yCr8Gw03^ugj9>iH zf-P$iONxJ(M{Y-Ej;k$8%m8h(q35y}{6BL?6_hVbqp`lFO?9TcQGUG7RaY^%uLRQmA z*V!N)QzHV&H!hC=At)3DuE9$-i>inSpp% zGdB3EMYgN+O#P68I6yV9_V5VWKefy;@LfH_@tNn_q#%BikIhTcq@SGWka^HC5lJKt z3@;`g@@gPf;xY8g-GkQD7JmN1#%k9vkowdEV@jF_J$vryn>)ph$7bzv5ziYBW zV~NUpGn#qRM#D}-N2-WXvfvT#*+7L&UkU4hq1m6nTL9PO;A_{=_y^snplkQyWn6TX zwImW8I*?vjsFMC3=(`P!2kuGK|HilQSeQ{z;A>&)F-a($iI$>~t(((Z{(*rSN#i^N z6AD7=hJ?m5Vakld+|GiuHf|LMuCNC(&N&lQIJaC^`@U-f)qt*YTKY261x#NynQyJW z=y}@ld*Kz9be{DPP-ITxA%Mss@~AXL)DYNaHKn|~og(}uxK$KQ;rS*!ThJ83Z_U|f zPg-*CM#oJ?8c&TLg+j`06$&=oY%8ku`%nl*ufr}hSN*Zn5Hx?5XM(=M&&uh4U4ycJ zkLs!+2%hYWd(+~9a(BxZC$H%TH8wF9x7Y$ULeMtI49AyZl;bOpDbh{Wi4rupBu0JW zvNU$2o_nKc@Eo;?48OE6IAScd=|aE-x^DT>p>Qs|tWVTqMa2FE?;N} z)fI2=$^)tejVI49u=r`{$8x9aH`phlKENpc_=A=@e2-?v=fiNm4!lGNaF1$#l94#^Fm|3_jQdAr3`#{?yF@0gzy5L2t}Oy3S=V7WJ>H*ve_-UHU3l6o` z-%lf!W~JnOp5wL;U*uV1B|)xLa(;(Gu{OdjuB?gHne1Oa*=-%bgxQtr*jQTYjKs~6 zIR5-sdyGV6cWGetUJ&Wx{z*5-?bvF&ZLWCBQ4wUa(7qy!lI{C6X^-=h3Fq$)_IZ!* z&l_cjkp5p@58dv+YERWvrWpyY7o)^~9!D`kwQCtJzcWsVH_@{`w;#*#PF1YxKfQ&3 zO`_s&ejFu+N?3P8hb?|lu`>nvI99D4{d{1u)thjgtpF742odOph^5aRt+o$y8vA#m zX72}k==g_hXCW!}uxa8*)yVCjqKKww_*x4Sn&{%vh(4;1awMEARsgQm$GO&wD4qme zgVPg{;W3w$crhD|Ey5&zSZdePp?A1X&=)*NVIQWGTRh3m6co?gq92YSAr8B zg@{=8cZ21xamUXx8XO3NvL5{wfSsbI+{Y@H{&_5>%3Gb~WRFSG<09{Q?&%kwV>YJlYczX^2up z>bvbxj^A#a|HLUYjaxv*y2+OQ{!&KYchZ8d&wfx|u$>La3_u_+$`_6^Qg%pbwuLJw z=(re{k}0+lfk)+?uM9tys-lr7fUIhjbX@Lcwh_u;d!sysb1RGltZs2X#;<7=nT-`X zm>A9rKmj0`-q;ktehvTrt!3Mvseb5zkR@5sJPsiQWynoN41;JMhFS#sBUc-L(}2qE zRgIM6V+nhfRa0q=p2@5Bcfl;R*W00ABD$OB+-ZuGPJwFs5)p=M*tFTlL>JpXc*&K` zy`L8*x}cI`61?Y?WZleG_}!%Da><{pl2s>*g^8IBZ~TMh81(EO2*)t6!+RRc&cgrPH@ZxH_4b6xIxEiR3WT=Xj&!C8#o)0mC~Ui63TOolIcx$aeD<#S_csCX5F zQs*2J3xLTOqMJ!gSDrJ96CJ(mtB_n7%WST*HQ4rFRFs_SJ5_FRg?r!iqQ*B`8lB7c zC(%Rbi^#E?n+9~O{z2}${U2Xx^XUeIBga3kmc$=UR3}igdpCaRdQpm^<9QZxRuPjC zY%uGttj=<`O{js+a`~)miAWqbrqMQVZ^PGLexmU5>^0+b9z+SkEcOYh^{|D+l_p%I$n+9~hH02yLSP;>(HWs>A&1&rI9s^=~a642y;%4)m z@-@nDnuB0>bLN@?4Yv|>7iVf;!MfSx-7(%G#5~L^lTyjrhz_vW3#utLyaT=%D=U3n zR7WAG|h$Qwu$V>o_^(+muEAY=~s|&*bN#ChV6ob;({x#Y#h^*Ki}Xo(d)u2%7p?TP-I%C}WYk>a%C4POMM|Z3MMN*P{pcTQaBdb&) #msT{_^ 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 P9T3K73skNCo!I{Z8tjYk literal 0 HcmV?d00001 diff --git a/charts/incubator/immich/questions.yaml b/charts/incubator/immich/questions.yaml new file mode 100644 index 00000000000..92ccafdd733 --- /dev/null +++ b/charts/incubator/immich/questions.yaml @@ -0,0 +1,171 @@ +# Include{groups} +portals: + open: +# Include{portalLink} +questions: +# Include{global} +# Include{workload} +# Include{workloadDeployment} + +# Include{replicas1} +# Include{podSpec} +# Include{containerMain} +# Include{containerBasic} +# Include{containerAdvanced} + + - variable: immich + group: App Configuration + label: Immich Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: public_login_page_message + label: Public Login Page Message + description: Custom message on the login page, should be written in HTML form. + schema: + type: string + default: "" + - variable: log_level + label: Log Level + schema: + type: string + default: log + enum: + - value: log + description: log + - value: simple + description: simple (Switch to log ASAP) + - value: warn + description: warn + - value: error + description: error + - value: verbose + description: verbose + - value: debug + description: debug + + - variable: enable_ml + label: Enable Machine Learning Container + schema: + type: boolean + default: true + - variable: enable_typesense + label: Enable Typesense Container + schema: + type: boolean + default: true + +# Include{containerConfig} +# Include{podOptions} +# Include{serviceRoot} + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: +# Include{serviceSelectorLoadBalancer} +# Include{serviceSelectorExtras} + - variable: main + label: Main Service Port Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + description: This port exposes the container port on the service + schema: + type: int + default: 10323 + required: true +# Include{serviceExpertRoot} +# Include{serviceExpert} +# Include{serviceList} +# Include{persistenceRoot} + - variable: library + label: App Library Storage + description: Stores the Application Uploads. + schema: + additional_attrs: true + type: dict + attrs: +# Include{persistenceBasic} + - variable: uploads + label: App Uploads Storage + description: Temporary location for WebUI and mobile app uploads for images/videos that still need to be processed and eventually imported into the library storage. + schema: + additional_attrs: true + type: dict + attrs: +# Include{persistenceBasic} + - variable: thumbs + label: App Thumbnails Storage + description: Stores the Application Thumbnails. + schema: + additional_attrs: true + type: dict + attrs: +# Include{persistenceBasic} + - variable: profile + label: App Profiles Storage + description: Stores the Application Profiles. + schema: + additional_attrs: true + type: dict + attrs: +# Include{persistenceBasic} + - variable: video + label: App Encoded Video Storage + description: Stores the Encoded Videos. + schema: + additional_attrs: true + type: dict + attrs: +# Include{persistenceBasic} +# Include{persistenceList} +# Include{ingressRoot} + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: +# Include{ingressDefault} +# Include{ingressTLS} +# Include{ingressTraefik} +# Include{ingressAdvanced} +# Include{ingressList} +# Include{securityContextRoot} + - variable: runAsUser + label: "runAsUser" + description: "The UserID of the user running the application" + schema: + type: int + default: 0 + - variable: runAsGroup + label: "runAsGroup" + description: "The groupID of the user running the application" + schema: + type: int + default: 0 +# Include{securityContextContainer} +# Include{securityContextAdvanced} +# Include{securityContextPod} + - variable: fsGroup + label: "fsGroup" + description: "The group that should own ALL storage." + schema: + type: int + default: 568 + +# Include{resources} +# Include{postgresql} +# Include{advanced} +# Include{addons} +# Include{codeserver} +# Include{netshoot} +# Include{vpn} +# Include{documentation} diff --git a/charts/incubator/immich/templates/NOTES.txt b/charts/incubator/immich/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/charts/incubator/immich/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/charts/incubator/immich/templates/_config.tpl b/charts/incubator/immich/templates/_config.tpl new file mode 100644 index 00000000000..5ada5ebaa2a --- /dev/null +++ b/charts/incubator/immich/templates/_config.tpl @@ -0,0 +1,54 @@ +{{- define "immich.config" -}} + {{- $fname := (include "tc.v1.common.lib.chart.names.fullname" .) -}} + +configmap: + server-config: + enabled: true + data: + SERVER_PORT: {{ .Values.service.main.ports.main.port | quote }} + {{- with .Values.immich.public_login_page_message }} + PUBLIC_LOGIN_PAGE_MESSAGE: {{ . }} + {{- end }} + + micro-config: + enabled: true + data: + MICROSERVICES_PORT: {{ .Values.service.microservices.ports.microservices.port | quote }} + REVERSE_GEOCODING_DUMP_DIRECTORY: {{ .Values.persistence.microcache.targetSelector.microservices.microservices.mountPath }} + + {{- if .Values.immich.enable_ml }} + ml-config: + enabled: true + data: + NODE_ENV: production + MACHINE_LEARNING_PORT: {{ .Values.service.machinelearning.ports.machinelearning.port | quote }} + MACHINE_LEARNING_CACHE_FOLDER: {{ .Values.persistence.mlcache.targetSelector.machinelearning.machinelearning.mountPath }} + TRANSFORMERS_CACHE: {{ .Values.persistence.mlcache.targetSelector.machinelearning.machinelearning.mountPath }} + {{- end }} + + {{/* Server and Microservices */}} + common-config: + enabled: true + data: + NODE_ENV: production + LOG_LEVEL: {{ .Values.immich.log_level }} + IMMICH_MACHINE_LEARNING_ENABLED: {{ .Values.immich.enable_ml | quote }} + {{- if .Values.immich.enable_ml }} + IMMICH_MACHINE_LEARNING_URL: {{ printf "http://%v-machinelearning:%v" $fname .Values.service.machinelearning.ports.machinelearning.port }} + {{- end }} + +secret: + {{/* Server and Microservices */}} + deps-secret: + enabled: true + data: + DB_USERNAME: {{ .Values.cnpg.main.user }} + DB_DATABASE_NAME: {{ .Values.cnpg.main.database }} + DB_HOSTNAME: {{ .Values.cnpg.main.creds.host }} + DB_PASSWORD: {{ .Values.cnpg.main.creds.password }} + DB_PORT: "5432" + REDIS_HOSTNAME: {{ .Values.redis.creds.plainhost }} + REDIS_PASSWORD: {{ .Values.redis.creds.redisPassword }} + REDIS_PORT: "6379" + REDIS_DBINDEX: "0" +{{- end -}} diff --git a/charts/incubator/immich/templates/_machinelearning.tpl b/charts/incubator/immich/templates/_machinelearning.tpl new file mode 100644 index 00000000000..984c3d5a7a7 --- /dev/null +++ b/charts/incubator/immich/templates/_machinelearning.tpl @@ -0,0 +1,43 @@ +{{/* Define the machinelearning container */}} +{{- define "immich.machinelearning" -}} +{{- $fname := (include "tc.v1.common.lib.chart.names.fullname" .) -}} +{{- $serverUrl := printf "http://%v:%v/api/server-info/ping" $fname .Values.service.main.ports.main.port }} +{{- $img := "mlImage" -}} +{{- with .Values.immich.mlImageType -}} + {{- $img = . -}} +{{- end }} +enabled: true +type: Deployment +podSpec: + initContainers: + wait-server: + {{/* Wait for server */}} + {{- include "immich.wait" (dict "url" $serverUrl) | nindent 6 }} + containers: + machinelearning: + enabled: true + primary: true + imageSelector: "{{ $img }}" + securityContext: + capabilities: + disableS6Caps: true + envFrom: + - configMapRef: + name: ml-config + probes: + readiness: + enabled: true + type: http + path: /ping + port: {{ .Values.service.machinelearning.ports.machinelearning.port }} + liveness: + enabled: true + type: http + path: /ping + port: {{ .Values.service.machinelearning.ports.machinelearning.port }} + startup: + enabled: true + type: http + path: /ping + port: {{ .Values.service.machinelearning.ports.machinelearning.port }} +{{- end -}} diff --git a/charts/incubator/immich/templates/_microservices.tpl b/charts/incubator/immich/templates/_microservices.tpl new file mode 100644 index 00000000000..91478547350 --- /dev/null +++ b/charts/incubator/immich/templates/_microservices.tpl @@ -0,0 +1,43 @@ +{{- define "immich.microservices" -}} +{{- $fname := (include "tc.v1.common.lib.chart.names.fullname" .) -}} +{{- $serverUrl := printf "http://%v:%v/api/server-info/ping" $fname .Values.service.main.ports.main.port }} +enabled: true +type: Deployment +podSpec: + initContainers: + wait-server: + {{/* Wait for server */}} + {{- include "immich.wait" (dict "url" $serverUrl) | nindent 6 }} + containers: + microservices: + enabled: true + primary: true + imageSelector: image + command: /bin/sh + args: + - -c + - /usr/src/app/start-microservices.sh + securityContext: + capabilities: + disableS6Caps: true + envFrom: + - secretRef: + name: deps-secret + - configMapRef: + name: common-config + - configMapRef: + name: micro-config + probes: + readiness: + enabled: true + type: tcp + port: {{ .Values.service.microservices.ports.microservices.port }} + liveness: + enabled: true + type: tcp + port: {{ .Values.service.microservices.ports.microservices.port }} + startup: + enabled: true + type: tcp + port: {{ .Values.service.microservices.ports.microservices.port }} +{{- end -}} diff --git a/charts/incubator/immich/templates/_server.tpl b/charts/incubator/immich/templates/_server.tpl new file mode 100644 index 00000000000..2a53affd649 --- /dev/null +++ b/charts/incubator/immich/templates/_server.tpl @@ -0,0 +1,35 @@ +{{- define "immich.server" -}} +enabled: true +primary: true +imageSelector: image +command: /bin/sh +args: + - -c + - /usr/src/app/start-server.sh +securityContext: + capabilities: + disableS6Caps: true +envFrom: + - configMapRef: + name: server-config + - configMapRef: + name: common-config + - secretRef: + name: deps-secret +probes: + liveness: + enabled: true + type: http + path: /api/server-info/ping + port: {{ .Values.service.main.ports.main.port }} + readiness: + enabled: true + type: http + path: /api/server-info/ping + port: {{ .Values.service.main.ports.main.port }} + startup: + enabled: true + type: http + path: /api/server-info/ping + port: {{ .Values.service.main.ports.main.port }} +{{- end -}} diff --git a/charts/incubator/immich/templates/_wait.tpl b/charts/incubator/immich/templates/_wait.tpl new file mode 100644 index 00000000000..83400b8dc50 --- /dev/null +++ b/charts/incubator/immich/templates/_wait.tpl @@ -0,0 +1,16 @@ +{{- define "immich.wait" -}} +{{- $url := .url }} +enabled: true +type: init +imageSelector: alpineImage +command: + - /bin/ash + - -c + - | + echo "Pinging [{{ $url }}] until it is ready..." + until wget --spider --quiet --timeout=3 --tries 1 "{{ $url }}"; do + echo "Waiting for [{{ $url }}] to be ready..." + sleep 2 + done + echo "URL [{{ $url }}] is ready!" +{{- end -}} diff --git a/charts/incubator/immich/templates/common.yaml b/charts/incubator/immich/templates/common.yaml new file mode 100644 index 00000000000..c66c970f664 --- /dev/null +++ b/charts/incubator/immich/templates/common.yaml @@ -0,0 +1,49 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . }} + +{{- $fname := (include "tc.v1.common.lib.chart.names.fullname" .) -}} + +{{- $_ := set .Values.workload.main.podSpec.containers "main" (include "immich.server" . | fromYaml) -}} + +{{/* Render Microservices Workload */}} +{{- $_ := set .Values.workload "microservices" (include "immich.microservices" . | fromYaml) -}} + +{{- if .Values.immich.enable_ml -}} + {{/* Enable Machine Learning Service */}} + {{- $_ := set .Values.service.machinelearning "enabled" true -}} + {{/* Render Machine Learning Workload */}} + {{- $_ := set .Values.workload "machinelearning" (include "immich.machinelearning" . | fromYaml) -}} +{{- else -}} + {{/* Disable Machine Learning Service */}} + {{- $_ := set .Values.service.machinelearning "enabled" false -}} +{{- end -}} + +{{/* Set targetselector for GPU to microservices */}} +{{- range $gpuEntry := .Values.scaleGPU }} + {{- if $gpuEntry.gpu -}} + {{- $_ := set $gpuEntry "targetSelector" (dict "microservices" (list "microservices")) -}} + {{- end -}} +{{- end -}} + +{{/* Render configuration for immich + after services, as it has references +*/}} +{{- $config := include "immich.config" . | fromYaml -}} +{{- if $config -}} + {{- $_ := mustMergeOverwrite .Values $config -}} +{{- end -}} + +{{- range $idx, $persistence := .Values.persistenceList -}} + {{- $_ := set $persistence "targetSelector" (dict + "main" (dict "main" dict) + "microservices" (dict "microservices" dict) + ) -}} +{{- end -}} + +{{- $envList := .Values.workload.main.podSpec.containers.main.envList -}} +{{- if $envList -}} + {{- $_ := set .Values.workload.microservices.podSpec.containers.microservices "envList" $envList -}} +{{- end -}} + +{{/* Render the templates */}} +{{ include "tc.v1.common.loader.apply" . }} diff --git a/charts/incubator/immich/values.yaml b/charts/incubator/immich/values.yaml new file mode 100644 index 00000000000..2aec7b16dd9 --- /dev/null +++ b/charts/incubator/immich/values.yaml @@ -0,0 +1,152 @@ +image: + repository: altran1502/immich-server + tag: v1.98.2 + pullPolicy: IfNotPresent + +mlImage: + repository: altran1502/immich-machine-learning + pullPolicy: IfNotPresent + tag: v1.98.2 + +mlCudaImage: + repository: altran1502/immich-machine-learning + pullPolicy: IfNotPresent + tag: v1.98.2-cuda + +mlOpenvinoImage: + repository: altran1502/immich-machine-learning + pullPolicy: IfNotPresent + tag: v1.98.2-openvino + + +securityContext: + container: + readOnlyRootFilesystem: false + runAsNonRoot: false + runAsUser: 0 + runAsGroup: 0 + +immich: + enable_ml: true + mlImageType: mlImage + public_login_page_message: Immich + log_level: log + +service: + main: + # Main service targets the server + targetSelector: main + ports: + main: + port: 10323 + protocol: http + targetSelector: main + microservices: + enabled: true + type: ClusterIP + targetSelector: microservices + ports: + microservices: + enabled: true + primary: true + port: 10004 + protocol: http + targetSelector: microservices + machinelearning: + enabled: true + type: ClusterIP + targetSelector: machinelearning + ports: + machinelearning: + enabled: true + primary: true + port: 10003 + protocol: http + targetSelector: machinelearning + +persistence: + mlcache: + enabled: true + type: emptyDir + targetSelector: + machinelearning: + machinelearning: + mountPath: /mlcache + microcache: + enabled: true + type: emptyDir + targetSelector: + microservices: + microservices: + mountPath: /microcache + library: + enabled: true + mountPath: /usr/src/app/upload/library + targetSelector: + # Main pod/container is server + main: + main: {} + microservices: + microservices: {} + uploads: + enabled: true + mountPath: /usr/src/app/upload/upload + targetSelector: + # Main pod/container is server + main: + main: {} + microservices: + microservices: {} + thumbs: + enabled: true + mountPath: /usr/src/app/upload/thumbs + targetSelector: + # Main pod/container is server + main: + main: {} + microservices: + microservices: {} + profile: + enabled: true + mountPath: /usr/src/app/upload/profile + targetSelector: + # Main pod/container is server + main: + main: {} + microservices: + microservices: {} + video: + enabled: true + mountPath: /usr/src/app/upload/encoded-video + targetSelector: + # Main pod/container is server + main: + main: {} + microservices: + microservices: {} + +cnpg: + main: + enabled: true + user: immich + database: immich + type: vectors + cluster: + initdb: + postInitApplicationSQL: + - CREATE EXTENSION IF NOT EXISTS cube; + - CREATE EXTENSION IF NOT EXISTS earthdistance; + - CREATE SCHEMA IF NOT EXISTS vectors; + - ALTER DATABASE immich SET search_path TO "immich", public, vectors; + - SET search_path TO "immich", public, vectors; + - GRANT SELECT ON TABLE pg_vector_index_stat TO PUBLIC; + - ALTER SCHEMA vectors OWNER TO immich; + +redis: + enabled: true + redisUsername: default + +portal: + open: + enabled: true +