From 456fd5cbcd630420826cab66e78c6bf48296bd07 Mon Sep 17 00:00:00 2001 From: TrueCharts-Bot Date: Fri, 1 Dec 2023 18:41:28 +0000 Subject: [PATCH] Commit new Chart releases for TrueCharts Signed-off-by: TrueCharts-Bot --- stable/mediainfo/5.0.13/app-changelog.md | 9 - .../mediainfo/{5.0.13 => 5.1.0}/CHANGELOG.md | 20 +- stable/mediainfo/{5.0.13 => 5.1.0}/Chart.yaml | 6 +- stable/mediainfo/{5.0.13 => 5.1.0}/README.md | 0 stable/mediainfo/5.1.0/app-changelog.md | 10 + .../mediainfo/{5.0.13 => 5.1.0}/app-readme.md | 0 .../charts/common-14.3.5.tgz | Bin .../{5.0.13 => 5.1.0}/ix_values.yaml | 2 +- .../{5.0.13 => 5.1.0}/questions.yaml | 151 + .../{5.0.13 => 5.1.0}/templates/NOTES.txt | 0 .../{5.0.13 => 5.1.0}/templates/common.yaml | 0 .../mediainfo/{5.0.13 => 5.1.0}/values.yaml | 0 stable/n8n/9.1.31/app-changelog.md | 9 - stable/n8n/{9.1.31 => 9.2.0}/CHANGELOG.md | 18 +- stable/n8n/{9.1.31 => 9.2.0}/Chart.yaml | 4 +- stable/n8n/{9.1.31 => 9.2.0}/LICENSE | 0 stable/n8n/{9.1.31 => 9.2.0}/README.md | 0 stable/n8n/9.2.0/app-changelog.md | 9 + stable/n8n/{9.1.31 => 9.2.0}/app-readme.md | 0 .../charts/common-14.3.5.tgz | Bin .../{9.1.31 => 9.2.0}/charts/redis-6.0.66.tgz | Bin stable/n8n/{9.1.31 => 9.2.0}/ix_values.yaml | 2 +- stable/n8n/{9.1.31 => 9.2.0}/questions.yaml | 0 .../n8n/{9.1.31 => 9.2.0}/templates/NOTES.txt | 0 .../templates/_configmap.tpl | 0 .../{9.1.31 => 9.2.0}/templates/common.yaml | 0 stable/n8n/{9.1.31 => 9.2.0}/values.yaml | 0 stable/nextcloud/22.2.12/CHANGELOG.md | 99 + stable/nextcloud/22.2.12/Chart.yaml | 35 + stable/nextcloud/22.2.12/LICENSE | 106 + stable/nextcloud/22.2.12/README.md | 27 + stable/nextcloud/22.2.12/app-changelog.md | 9 + stable/nextcloud/22.2.12/app-readme.md | 8 + .../22.2.12/charts/common-14.3.5.tgz | Bin 0 -> 73073 bytes .../nextcloud/22.2.12/charts/redis-6.0.66.tgz | Bin 0 -> 137361 bytes stable/nextcloud/22.2.12/ix_values.yaml | 512 +++ stable/nextcloud/22.2.12/questions.yaml | 3347 +++++++++++++++++ stable/nextcloud/22.2.12/templates/NOTES.txt | 1 + .../22.2.12/templates/_configmap.tpl | 438 +++ .../nextcloud/22.2.12/templates/_cronjobs.tpl | 34 + .../22.2.12/templates/_ingressInjector.tpl | 24 + .../22.2.12/templates/_initPerms.tpl | 29 + .../22.2.12/templates/_validation.tpl | 42 + .../22.2.12/templates/_waitNextcloud.tpl | 25 + .../nextcloud/22.2.12/templates/common.yaml | 80 + stable/nextcloud/22.2.12/values.yaml | 0 46 files changed, 5013 insertions(+), 43 deletions(-) delete mode 100644 stable/mediainfo/5.0.13/app-changelog.md rename stable/mediainfo/{5.0.13 => 5.1.0}/CHANGELOG.md (87%) rename stable/mediainfo/{5.0.13 => 5.1.0}/Chart.yaml (89%) rename stable/mediainfo/{5.0.13 => 5.1.0}/README.md (100%) create mode 100644 stable/mediainfo/5.1.0/app-changelog.md rename stable/mediainfo/{5.0.13 => 5.1.0}/app-readme.md (100%) rename stable/mediainfo/{5.0.13 => 5.1.0}/charts/common-14.3.5.tgz (100%) rename stable/mediainfo/{5.0.13 => 5.1.0}/ix_values.yaml (94%) rename stable/mediainfo/{5.0.13 => 5.1.0}/questions.yaml (92%) rename stable/mediainfo/{5.0.13 => 5.1.0}/templates/NOTES.txt (100%) rename stable/mediainfo/{5.0.13 => 5.1.0}/templates/common.yaml (100%) rename stable/mediainfo/{5.0.13 => 5.1.0}/values.yaml (100%) delete mode 100644 stable/n8n/9.1.31/app-changelog.md rename stable/n8n/{9.1.31 => 9.2.0}/CHANGELOG.md (90%) rename stable/n8n/{9.1.31 => 9.2.0}/Chart.yaml (95%) rename stable/n8n/{9.1.31 => 9.2.0}/LICENSE (100%) rename stable/n8n/{9.1.31 => 9.2.0}/README.md (100%) create mode 100644 stable/n8n/9.2.0/app-changelog.md rename stable/n8n/{9.1.31 => 9.2.0}/app-readme.md (100%) rename stable/n8n/{9.1.31 => 9.2.0}/charts/common-14.3.5.tgz (100%) rename stable/n8n/{9.1.31 => 9.2.0}/charts/redis-6.0.66.tgz (100%) rename stable/n8n/{9.1.31 => 9.2.0}/ix_values.yaml (97%) rename stable/n8n/{9.1.31 => 9.2.0}/questions.yaml (100%) rename stable/n8n/{9.1.31 => 9.2.0}/templates/NOTES.txt (100%) rename stable/n8n/{9.1.31 => 9.2.0}/templates/_configmap.tpl (100%) rename stable/n8n/{9.1.31 => 9.2.0}/templates/common.yaml (100%) rename stable/n8n/{9.1.31 => 9.2.0}/values.yaml (100%) create mode 100644 stable/nextcloud/22.2.12/CHANGELOG.md create mode 100644 stable/nextcloud/22.2.12/Chart.yaml create mode 100644 stable/nextcloud/22.2.12/LICENSE create mode 100644 stable/nextcloud/22.2.12/README.md create mode 100644 stable/nextcloud/22.2.12/app-changelog.md create mode 100644 stable/nextcloud/22.2.12/app-readme.md create mode 100644 stable/nextcloud/22.2.12/charts/common-14.3.5.tgz create mode 100644 stable/nextcloud/22.2.12/charts/redis-6.0.66.tgz create mode 100644 stable/nextcloud/22.2.12/ix_values.yaml create mode 100644 stable/nextcloud/22.2.12/questions.yaml create mode 100644 stable/nextcloud/22.2.12/templates/NOTES.txt create mode 100644 stable/nextcloud/22.2.12/templates/_configmap.tpl create mode 100644 stable/nextcloud/22.2.12/templates/_cronjobs.tpl create mode 100644 stable/nextcloud/22.2.12/templates/_ingressInjector.tpl create mode 100644 stable/nextcloud/22.2.12/templates/_initPerms.tpl create mode 100644 stable/nextcloud/22.2.12/templates/_validation.tpl create mode 100644 stable/nextcloud/22.2.12/templates/_waitNextcloud.tpl create mode 100644 stable/nextcloud/22.2.12/templates/common.yaml create mode 100644 stable/nextcloud/22.2.12/values.yaml diff --git a/stable/mediainfo/5.0.13/app-changelog.md b/stable/mediainfo/5.0.13/app-changelog.md deleted file mode 100644 index b4cd01247e4..00000000000 --- a/stable/mediainfo/5.0.13/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [mediainfo-5.0.13](https://github.com/truecharts/charts/compare/mediainfo-5.0.12...mediainfo-5.0.13) (2023-11-20) - -### Fix - -- update container image jlesage/mediainfo to v23.11.2 ([#15154](https://github.com/truecharts/charts/issues/15154)) - - \ No newline at end of file diff --git a/stable/mediainfo/5.0.13/CHANGELOG.md b/stable/mediainfo/5.1.0/CHANGELOG.md similarity index 87% rename from stable/mediainfo/5.0.13/CHANGELOG.md rename to stable/mediainfo/5.1.0/CHANGELOG.md index 5cabf25f30c..0788cc7fafe 100644 --- a/stable/mediainfo/5.0.13/CHANGELOG.md +++ b/stable/mediainfo/5.1.0/CHANGELOG.md @@ -4,6 +4,16 @@ +## [mediainfo-5.1.0](https://github.com/truecharts/charts/compare/mediainfo-5.0.13...mediainfo-5.1.0) (2023-12-01) + +### Chore + +- cleanup chart.yaml and add min-max scale version + - update container image jlesage/mediainfo to v23.12.1[@d4f0772](https://github.com/d4f0772) ([#15587](https://github.com/truecharts/charts/issues/15587)) + + + + ## [mediainfo-5.0.13](https://github.com/truecharts/charts/compare/mediainfo-5.0.12...mediainfo-5.0.13) (2023-11-20) ### Fix @@ -87,13 +97,3 @@ - update helm general non-major ([#13386](https://github.com/truecharts/charts/issues/13386)) - - - -## [mediainfo-5.0.2](https://github.com/truecharts/charts/compare/mediainfo-5.0.1...mediainfo-5.0.2) (2023-10-05) - -### Chore - -- update container image tccr.io/truecharts/mediainfo to v23.10.1 ([#13281](https://github.com/truecharts/charts/issues/13281)) - - diff --git a/stable/mediainfo/5.0.13/Chart.yaml b/stable/mediainfo/5.1.0/Chart.yaml similarity index 89% rename from stable/mediainfo/5.0.13/Chart.yaml rename to stable/mediainfo/5.1.0/Chart.yaml index aa4332896a0..542871e1c58 100644 --- a/stable/mediainfo/5.0.13/Chart.yaml +++ b/stable/mediainfo/5.1.0/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v2 -appVersion: 3.11.2 +appVersion: 23.12.1 dependencies: - name: common repository: https://library-charts.truecharts.org @@ -21,7 +21,9 @@ sources: - https://github.com/truecharts/charts/tree/master/charts/stable/mediainfo - https://github.com/jlesage/docker-mediainfo type: application -version: 5.0.13 +version: 5.1.0 annotations: + min_scale_version: "22.12.4" + max_scale_version: "23.10.1" truecharts.org/category: media truecharts.org/SCALE-support: "true" diff --git a/stable/mediainfo/5.0.13/README.md b/stable/mediainfo/5.1.0/README.md similarity index 100% rename from stable/mediainfo/5.0.13/README.md rename to stable/mediainfo/5.1.0/README.md diff --git a/stable/mediainfo/5.1.0/app-changelog.md b/stable/mediainfo/5.1.0/app-changelog.md new file mode 100644 index 00000000000..80d339774ae --- /dev/null +++ b/stable/mediainfo/5.1.0/app-changelog.md @@ -0,0 +1,10 @@ + + +## [mediainfo-5.1.0](https://github.com/truecharts/charts/compare/mediainfo-5.0.13...mediainfo-5.1.0) (2023-12-01) + +### Chore + +- cleanup chart.yaml and add min-max scale version + - update container image jlesage/mediainfo to v23.12.1[@d4f0772](https://github.com/d4f0772) ([#15587](https://github.com/truecharts/charts/issues/15587)) + + \ No newline at end of file diff --git a/stable/mediainfo/5.0.13/app-readme.md b/stable/mediainfo/5.1.0/app-readme.md similarity index 100% rename from stable/mediainfo/5.0.13/app-readme.md rename to stable/mediainfo/5.1.0/app-readme.md diff --git a/stable/mediainfo/5.0.13/charts/common-14.3.5.tgz b/stable/mediainfo/5.1.0/charts/common-14.3.5.tgz similarity index 100% rename from stable/mediainfo/5.0.13/charts/common-14.3.5.tgz rename to stable/mediainfo/5.1.0/charts/common-14.3.5.tgz diff --git a/stable/mediainfo/5.0.13/ix_values.yaml b/stable/mediainfo/5.1.0/ix_values.yaml similarity index 94% rename from stable/mediainfo/5.0.13/ix_values.yaml rename to stable/mediainfo/5.1.0/ix_values.yaml index d6dd968d05b..d7d22bbbe98 100644 --- a/stable/mediainfo/5.0.13/ix_values.yaml +++ b/stable/mediainfo/5.1.0/ix_values.yaml @@ -1,6 +1,6 @@ image: repository: jlesage/mediainfo - tag: v23.11.2@sha256:ff4ae5e9e04fa69b42ea8ad990c71860c0d63fbcdeeedc0dcfc06ec1785064a9 + tag: v23.12.1@sha256:d4f0772e605c68bfe844ec158a4259fde46dfe070059239761f1dba279c9db6f pullPolicy: IfNotPresent service: main: diff --git a/stable/mediainfo/5.0.13/questions.yaml b/stable/mediainfo/5.1.0/questions.yaml similarity index 92% rename from stable/mediainfo/5.0.13/questions.yaml rename to stable/mediainfo/5.1.0/questions.yaml index 4805abe526d..0c154281e8b 100644 --- a/stable/mediainfo/5.0.13/questions.yaml +++ b/stable/mediainfo/5.1.0/questions.yaml @@ -2259,6 +2259,157 @@ questions: schema: type: int default: 36107 + - variable: ingress + label: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: certificateIssuer + label: Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + show_if: [["advanced", "=", true]] + required: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + show_if: [["advanced", "=", true]] + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" - variable: envList label: Codeserver Environment Variables schema: diff --git a/stable/mediainfo/5.0.13/templates/NOTES.txt b/stable/mediainfo/5.1.0/templates/NOTES.txt similarity index 100% rename from stable/mediainfo/5.0.13/templates/NOTES.txt rename to stable/mediainfo/5.1.0/templates/NOTES.txt diff --git a/stable/mediainfo/5.0.13/templates/common.yaml b/stable/mediainfo/5.1.0/templates/common.yaml similarity index 100% rename from stable/mediainfo/5.0.13/templates/common.yaml rename to stable/mediainfo/5.1.0/templates/common.yaml diff --git a/stable/mediainfo/5.0.13/values.yaml b/stable/mediainfo/5.1.0/values.yaml similarity index 100% rename from stable/mediainfo/5.0.13/values.yaml rename to stable/mediainfo/5.1.0/values.yaml diff --git a/stable/n8n/9.1.31/app-changelog.md b/stable/n8n/9.1.31/app-changelog.md deleted file mode 100644 index 8f7f33ab38e..00000000000 --- a/stable/n8n/9.1.31/app-changelog.md +++ /dev/null @@ -1,9 +0,0 @@ - - -## [n8n-9.1.31](https://github.com/truecharts/charts/compare/n8n-9.1.30...n8n-9.1.31) (2023-11-30) - -### Chore - -- update container image n8nio/n8n to v1.18.1[@85320dd](https://github.com/85320dd) ([#15528](https://github.com/truecharts/charts/issues/15528)) - - \ No newline at end of file diff --git a/stable/n8n/9.1.31/CHANGELOG.md b/stable/n8n/9.2.0/CHANGELOG.md similarity index 90% rename from stable/n8n/9.1.31/CHANGELOG.md rename to stable/n8n/9.2.0/CHANGELOG.md index fa245ce1efa..28fc3d96a9f 100644 --- a/stable/n8n/9.1.31/CHANGELOG.md +++ b/stable/n8n/9.2.0/CHANGELOG.md @@ -4,6 +4,15 @@ +## [n8n-9.2.0](https://github.com/truecharts/charts/compare/n8n-9.1.31...n8n-9.2.0) (2023-12-01) + +### Chore + +- update container image n8nio/n8n to v1.19.4[@b5277ea](https://github.com/b5277ea) ([#15588](https://github.com/truecharts/charts/issues/15588)) + + + + ## [n8n-9.1.31](https://github.com/truecharts/charts/compare/n8n-9.1.30...n8n-9.1.31) (2023-11-30) ### Chore @@ -88,12 +97,3 @@ - update helm general non-major ([#14365](https://github.com/truecharts/charts/issues/14365)) - update helm general non-major ([#14287](https://github.com/truecharts/charts/issues/14287)) - - - -## [n8n-9.0.22](https://github.com/truecharts/charts/compare/n8n-9.0.21...n8n-9.0.22) (2023-11-03) - -### Chore - -- update container image tccr.io/truecharts/n8n to v1.15.1 ([#14292](https://github.com/truecharts/charts/issues/14292)) - diff --git a/stable/n8n/9.1.31/Chart.yaml b/stable/n8n/9.2.0/Chart.yaml similarity index 95% rename from stable/n8n/9.1.31/Chart.yaml rename to stable/n8n/9.2.0/Chart.yaml index cae6459d3fc..70900d9b46a 100644 --- a/stable/n8n/9.1.31/Chart.yaml +++ b/stable/n8n/9.2.0/Chart.yaml @@ -1,5 +1,5 @@ apiVersion: v2 -appVersion: 1.18.1 +appVersion: 1.19.4 dependencies: - name: common repository: https://library-charts.truecharts.org @@ -24,7 +24,7 @@ sources: - https://github.com/truecharts/charts/tree/master/charts/stable/n8n - https://docs.n8n.io/ - https://github.com/n8n-io/n8n -version: 9.1.31 +version: 9.2.0 annotations: truecharts.org/category: media truecharts.org/SCALE-support: "true" diff --git a/stable/n8n/9.1.31/LICENSE b/stable/n8n/9.2.0/LICENSE similarity index 100% rename from stable/n8n/9.1.31/LICENSE rename to stable/n8n/9.2.0/LICENSE diff --git a/stable/n8n/9.1.31/README.md b/stable/n8n/9.2.0/README.md similarity index 100% rename from stable/n8n/9.1.31/README.md rename to stable/n8n/9.2.0/README.md diff --git a/stable/n8n/9.2.0/app-changelog.md b/stable/n8n/9.2.0/app-changelog.md new file mode 100644 index 00000000000..bef4a24388e --- /dev/null +++ b/stable/n8n/9.2.0/app-changelog.md @@ -0,0 +1,9 @@ + + +## [n8n-9.2.0](https://github.com/truecharts/charts/compare/n8n-9.1.31...n8n-9.2.0) (2023-12-01) + +### Chore + +- update container image n8nio/n8n to v1.19.4[@b5277ea](https://github.com/b5277ea) ([#15588](https://github.com/truecharts/charts/issues/15588)) + + \ No newline at end of file diff --git a/stable/n8n/9.1.31/app-readme.md b/stable/n8n/9.2.0/app-readme.md similarity index 100% rename from stable/n8n/9.1.31/app-readme.md rename to stable/n8n/9.2.0/app-readme.md diff --git a/stable/n8n/9.1.31/charts/common-14.3.5.tgz b/stable/n8n/9.2.0/charts/common-14.3.5.tgz similarity index 100% rename from stable/n8n/9.1.31/charts/common-14.3.5.tgz rename to stable/n8n/9.2.0/charts/common-14.3.5.tgz diff --git a/stable/n8n/9.1.31/charts/redis-6.0.66.tgz b/stable/n8n/9.2.0/charts/redis-6.0.66.tgz similarity index 100% rename from stable/n8n/9.1.31/charts/redis-6.0.66.tgz rename to stable/n8n/9.2.0/charts/redis-6.0.66.tgz diff --git a/stable/n8n/9.1.31/ix_values.yaml b/stable/n8n/9.2.0/ix_values.yaml similarity index 97% rename from stable/n8n/9.1.31/ix_values.yaml rename to stable/n8n/9.2.0/ix_values.yaml index 0efe5305a1e..e7d12e894e3 100644 --- a/stable/n8n/9.1.31/ix_values.yaml +++ b/stable/n8n/9.2.0/ix_values.yaml @@ -1,6 +1,6 @@ image: repository: n8nio/n8n - tag: 1.18.1@sha256:85320dd3baa2e752084f9a1dd584a249036dd3b20bed59495d9c55ed62950fa5 + tag: 1.19.4@sha256:b5277ea2bc4224bf8e586359b14827dca812b5518062b42f09fe32c09bb4667e pullPolicy: IfNotPresent timezoneandlocale: {} # N8N_DEFAULT_LOCALE: "en" diff --git a/stable/n8n/9.1.31/questions.yaml b/stable/n8n/9.2.0/questions.yaml similarity index 100% rename from stable/n8n/9.1.31/questions.yaml rename to stable/n8n/9.2.0/questions.yaml diff --git a/stable/n8n/9.1.31/templates/NOTES.txt b/stable/n8n/9.2.0/templates/NOTES.txt similarity index 100% rename from stable/n8n/9.1.31/templates/NOTES.txt rename to stable/n8n/9.2.0/templates/NOTES.txt diff --git a/stable/n8n/9.1.31/templates/_configmap.tpl b/stable/n8n/9.2.0/templates/_configmap.tpl similarity index 100% rename from stable/n8n/9.1.31/templates/_configmap.tpl rename to stable/n8n/9.2.0/templates/_configmap.tpl diff --git a/stable/n8n/9.1.31/templates/common.yaml b/stable/n8n/9.2.0/templates/common.yaml similarity index 100% rename from stable/n8n/9.1.31/templates/common.yaml rename to stable/n8n/9.2.0/templates/common.yaml diff --git a/stable/n8n/9.1.31/values.yaml b/stable/n8n/9.2.0/values.yaml similarity index 100% rename from stable/n8n/9.1.31/values.yaml rename to stable/n8n/9.2.0/values.yaml diff --git a/stable/nextcloud/22.2.12/CHANGELOG.md b/stable/nextcloud/22.2.12/CHANGELOG.md new file mode 100644 index 00000000000..824bcfcdb94 --- /dev/null +++ b/stable/nextcloud/22.2.12/CHANGELOG.md @@ -0,0 +1,99 @@ +**Important:** +*for the complete changelog, please refer to the website* + + + + +## [nextcloud-22.2.12](https://github.com/truecharts/charts/compare/nextcloud-22.2.11...nextcloud-22.2.12) (2023-12-01) + +### Chore + +- update container image tccr.io/truecharts/nextcloud-imaginary to v20230401[@906a7a8](https://github.com/906a7a8) ([#15582](https://github.com/truecharts/charts/issues/15582)) + + + + +## [nextcloud-22.2.11](https://github.com/truecharts/charts/compare/nextcloud-22.2.10...nextcloud-22.2.11) (2023-12-01) + +### Chore + +- update container image tccr.io/truecharts/nextcloud-imaginary to v20230401[@9d680ae](https://github.com/9d680ae) ([#15567](https://github.com/truecharts/charts/issues/15567)) + + + + +## [nextcloud-22.2.10](https://github.com/truecharts/charts/compare/nextcloud-22.2.9...nextcloud-22.2.10) (2023-11-30) + +### Chore + +- update container image tccr.io/truecharts/nextcloud-fpm to v27.1.4[@6bd5585](https://github.com/6bd5585) ([#15492](https://github.com/truecharts/charts/issues/15492)) + + + + +## [nextcloud-22.2.9](https://github.com/truecharts/charts/compare/nextcloud-22.2.8...nextcloud-22.2.9) (2023-11-30) + +### Chore + +- update container image tccr.io/truecharts/nextcloud-fpm to v[@a7f1eba](https://github.com/a7f1eba) ([#15472](https://github.com/truecharts/charts/issues/15472)) + + + + +## [nextcloud-22.2.8](https://github.com/truecharts/charts/compare/nextcloud-22.2.7...nextcloud-22.2.8) (2023-11-27) + +### Chore + +- update container image nginxinc/nginx-unprivileged to 1.25.3[@a4cb3ee](https://github.com/a4cb3ee) ([#15420](https://github.com/truecharts/charts/issues/15420)) + + + + +## [nextcloud-22.2.7](https://github.com/truecharts/charts/compare/nextcloud-22.2.6...nextcloud-22.2.7) (2023-11-24) + +### Chore + +- update container image tccr.io/truecharts/nextcloud-fpm to v27.1.3[@2c8a099](https://github.com/2c8a099) ([#15258](https://github.com/truecharts/charts/issues/15258)) + + + + +## [nextcloud-22.2.6](https://github.com/truecharts/charts/compare/nextcloud-22.2.5...nextcloud-22.2.6) (2023-11-22) + +### Fix + +- fix log level type ([#15237](https://github.com/truecharts/charts/issues/15237)) + + + + +## [nextcloud-22.2.5](https://github.com/truecharts/charts/compare/nextcloud-22.2.4...nextcloud-22.2.5) (2023-11-21) + +### Chore + +- add hostAliases to NC and collabora pods ([#15234](https://github.com/truecharts/charts/issues/15234)) + + + + +## [nextcloud-22.2.4](https://github.com/truecharts/charts/compare/nextcloud-22.2.3...nextcloud-22.2.4) (2023-11-21) + +### Fix + +- fix logging variable ([#15232](https://github.com/truecharts/charts/issues/15232)) + + + + +## [nextcloud-22.2.3](https://github.com/truecharts/charts/compare/nextcloud-22.2.2...nextcloud-22.2.3) (2023-11-21) + +### Chore + +- update container image tccr.io/truecharts/nextcloud-fpm to v27.1.3[@92e84e6](https://github.com/92e84e6) ([#15084](https://github.com/truecharts/charts/issues/15084)) + + + + +## [nextcloud-22.2.2](https://github.com/truecharts/charts/compare/nextcloud-22.2.1...nextcloud-22.2.2) (2023-11-20) + +### Fix diff --git a/stable/nextcloud/22.2.12/Chart.yaml b/stable/nextcloud/22.2.12/Chart.yaml new file mode 100644 index 00000000000..e6fb9122e36 --- /dev/null +++ b/stable/nextcloud/22.2.12/Chart.yaml @@ -0,0 +1,35 @@ +apiVersion: v2 +appVersion: 27.1.4 +dependencies: + - name: common + repository: https://library-charts.truecharts.org + version: 14.3.5 + - condition: redis.enabled + name: redis + repository: https://deps.truecharts.org + version: 6.0.66 +deprecated: false +description: A private cloud server that puts the control and security of your own data back into your hands. +home: https://truecharts.org/charts/stable/nextcloud +icon: https://truecharts.org/img/hotlink-ok/chart-icons/nextcloud.png +keywords: + - nextcloud + - storage + - http + - web + - php +kubeVersion: ">=1.16.0-0" +maintainers: + - email: info@truecharts.org + name: TrueCharts + url: https://truecharts.org +name: nextcloud +sources: + - https://github.com/truecharts/charts/tree/master/charts/stable/nextcloud + - https://github.com/nextcloud/docker + - https://github.com/nextcloud/helm +type: application +version: 22.2.12 +annotations: + truecharts.org/category: cloud + truecharts.org/SCALE-support: "true" diff --git a/stable/nextcloud/22.2.12/LICENSE b/stable/nextcloud/22.2.12/LICENSE new file mode 100644 index 00000000000..33a8cbb23f0 --- /dev/null +++ b/stable/nextcloud/22.2.12/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/stable/nextcloud/22.2.12/README.md b/stable/nextcloud/22.2.12/README.md new file mode 100644 index 00000000000..e0a9b8fa8d7 --- /dev/null +++ b/stable/nextcloud/22.2.12/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/) + +**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/stable/nextcloud/22.2.12/app-changelog.md b/stable/nextcloud/22.2.12/app-changelog.md new file mode 100644 index 00000000000..0fe89fb249d --- /dev/null +++ b/stable/nextcloud/22.2.12/app-changelog.md @@ -0,0 +1,9 @@ + + +## [nextcloud-22.2.12](https://github.com/truecharts/charts/compare/nextcloud-22.2.11...nextcloud-22.2.12) (2023-12-01) + +### Chore + +- update container image tccr.io/truecharts/nextcloud-imaginary to v20230401[@906a7a8](https://github.com/906a7a8) ([#15582](https://github.com/truecharts/charts/issues/15582)) + + \ No newline at end of file diff --git a/stable/nextcloud/22.2.12/app-readme.md b/stable/nextcloud/22.2.12/app-readme.md new file mode 100644 index 00000000000..1369f69bf57 --- /dev/null +++ b/stable/nextcloud/22.2.12/app-readme.md @@ -0,0 +1,8 @@ +A private cloud server that puts the control and security of your own data back into your hands. + +This App is supplied by TrueCharts, for more information visit the manual: [https://truecharts.org/charts/stable/nextcloud](https://truecharts.org/charts/stable/nextcloud) + +--- + +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! diff --git a/stable/nextcloud/22.2.12/charts/common-14.3.5.tgz b/stable/nextcloud/22.2.12/charts/common-14.3.5.tgz new file mode 100644 index 0000000000000000000000000000000000000000..58fbc6f4962aed33ebff0850b663611ec736857f GIT binary patch literal 73073 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 ThtK~X009602~<;E01ycPDc zVQyr3R8em|NM&qo0PMYcciXtNINHDUDRAWU*LYS$lX_5(bJAOn?aBB~Vtd(6(*EXj zc|jy3v8G540m^YRxu5+mJPE!eN|u#mDz0{7k$7xuZ0r{{He%#@_~>K?V`4nQx&NnU zcudnY?QWO-Yno>MU#r{c{mJTfd%b?I-!?mcGOc#Uvi}6k=Kv=EB$&YXPv(>R$`9^4 zd0-HP1QIU{@TdU*i4){dV!%ciPmgX+j^CcOa1upfOh%wdKR1iT97y0aj6H-$;P(aq z0JMM$2^>R=#7_r0GgPcOjiHN1;C%x|-Uk$8FAPRt(Qd#fQa}5KX;|%siy{=bC~#;u zjTQ*t9F2ez&gWs!03b$Dh&>X8w0JOq5nP^BZbPp z{PneEShiud%)d0|&VXH2zbFH{96H29ND*Vf*7m74FHnZuNpyv7w2Gc z46-g{>8VF%$=GnhxmHo)io^&V%^@Zzu0&sHQ)7<=aPG-}TW;vwqqwEl7##@=df`!n zJVs~)U=;bD!&X2;(SvQ6hHW>#_Tt>Zqw{}1bnc&{j}`pi>~zgM|8MvA{C_9UPPnQ! zMVO2Lp22p{9`$-odtwjm?$|-ScF!92ySGsEy zcH17Ji9L3#A!z_#t{9Fp)^7U`EEvubh|Gn;h{qN-Q=5UHexs^^FC#E7&6V6e--+k^Ed+M zlZ%jC#R#K-P}L4jM_|FVwZDnA?!a~*x@gjd_M|_t>`rgk=?oovh@43uT6S;XAa~Fk zbRE|;Cy>s+V|UHLus7-S`ongk@es!Meh6I(Bh^?&OreYsliGL$EcTnr@*4sPnk4=W zBJ3?Dlub+@N8md2eJ_~4k6cK&N*aakO@tiY8~{$3>Ow#~X?OfV!9xED!1dYb`OV$+ z+11o$KBQO&CSQl>(dcvJ|f&KY4Ymw z`gR1GpFacR17DgL#S70t28GF>+BoKa5*SYrxe8+fzI-WdN_Lj{1^`A*jL0wO@fuC? z-vB_LA{e-r<9{KCTriP9f$=5^9!3vW5M!!@f-hevseJwnkdG1g@?`>j%zg%L0WA7( zDf5@*O*%1hQ9wNCW7)D+8h!FG@q+0M8wdFEMMGBEHv!q_&mfAufJ{L1&$#tx+yuro z@)5+ypyLEh1_kXJH$_D@hQAcXaE~5GqIfG3Q0pU&;&6;`7PY>&Kmo!yk8l*gu}|e0 zMPu$8CvEfzIk^v1NW;J_PF@S(S;@;*z5)93XojFqW=D}1Oz$LkcYf$V-@r4_&QysJ zbiHpFeg$9E01iN_MY%*wl88?bUHB7kn#9}!$QJ&aizYDf39E$=7$ZM?$dtjnt^62R zKW7XnfXt9A#=HEEaM!@dNn(#Yo`eBGp9t+waZ1UFp?ewlkJn*He)4>TA2C7m5nwEU zmq>zR{3Z^QXavkggCl$n8PYfeyrm){s1YlNSOMe+{N7SSJNU1ou@@YTp@xHBe+8`o zG+$)7VH5oGpWy%eAIj$_>tr8K-k#qbzrX$Yb)m3oEJipA1B_n3c&Xu&cykmc1hg>d zfEO0{U+o*`5039;-U85?0XBqLh)Moa1YV?KAor1?LA^Lse|Zz|D`>uu@HN4Iy#~#z z%ZoQn@X!CIB&d@%a%LfDPN3%_7m$$7Xn-6766^(2AbHscRuc-|6>Ts?ywE;YiW3=)i705O0db@PKs7z0Qo zOC)3se7?tJclty1Dz&b~hsGlGlQ}x^p*O!p^T>yU+juE%i+G=hNkFb3nTCx<6sF~`#cCl;zo|C$m(RZOsZF{rd>+$ymki5?T&azE~+#OWUd}RXxBgM_N7B((+5DVs-n= zD>NwKL!VB17@;6Xb=;0?%wgb75GL&dTwG5K5F30%4Ud!79H?{)V3e>-^^pFdZv{}8$;HlXh}fdTd_|Bw0b^>56O zKli3V7^7$CW7Yb%`-S+=UdP<8|6M!>;0h9g;s65@0!{+pVTJ-QPCVb`8v@QfoFZ&A z4#4fq!$8D?Vt{AJ_rcT;$6yYLGxLJ!D-a_e5^sT+0iwN!f!jC$0h+R%Ht;fv(Zu_N zT=3wL8ThY516&6FBM1XllY#^y6a(K2kkK$sZ|-hL7^B7kIAQz=d^ouQt{3BmG4;q1 z`!5H-VT}JBAF=<+7qjUR{g3>K7r{~5&=@-RNdzXIk8tA$13yHKAB-`)Z~S18dDQsf z|7#q84>0z^1cUR_Gu$wuIHcBg!|+@Lk9fH_{8z(RU?+4DZTs@$#o6@@Ym_-Neo4kC z4iG`O!9O()09|w~H*_#i^0)DWF%8K)@*4+$eVK&5i{i!+{n0o8o)ZQvc$CF}ZejjK z{NK;V7jMqqUcNEr?iL!&J-EFt~h4{a{{=b{&0G!NVFhzbiZ8REw z>p{0;+cgK{VVod*L~9%#HnK?JL+fq@EuyWZh}reXI!_o`J2$e9HZpTqF*3>m#guck zlg{hHGL50pD}}KA1PHAhgl!$d!TJz(OChwL0HK+K(0U?-9Zn(L!MYUE9aK=r6Ig;Z z%#BWG3TA)((OGkP|BXVq<~Y;=R{=&a!rM`w!B_17LAqq0%86zpS>grQo6bnfG)$w@%MBrzUD4CFD@2d=1kq#WM2}@|5erMXT-&Y-c8UPA90BGNq?4JG zPG%~d%vNVpg}eqCv`a_w1W9D(B#}ALM$#_mncEu)*EZUnx?DreXQy2;pLHdB85Zmu z7W!Mn!g7M{tWD6JDuRB3)HZXh*R*v66jbHyk%3t%OUx&TMKdQB&8|L_f^JoFC|eux zfKR(w*EUqsZgwiB{hPzp*FeHXrgld8$fKg8qr%=qCAS9ano`!F!jv+fV5plpL)~oa zBP*y?TV!sQy{@8c*%gYi`2?lS%qeZAr6ZvIY*gMCNLW|IS$36(+gxWG=2SM*)N$~9 zimP2Rj^XB-*D$Mi4TrlKMVHTHcU|X!)$M1E%jL^uZP$xc;d&Xas}Yi9j9~1{yoHAe z&++gt90r^-W|z-!uoUO3k=Yi=T$lM<-E!tX++6V+X7#?IuJ&0^6o1R7y0&jjjozx5 z>dm#jVOHrI>N=nGT%MY~VU>-duAr!v-&rX)?CFCkI78~pkvXWVS;;vv2i@{H+FV5& zX4R6RuAo`ZX=$7Nbqy14%jbJ17N}r>4R>2rrO9!%Qj%?{5Fl%oBsYz;E<&(6L@{}23PWjMPsG?^Z zN4`e@bX|5*BLH{~eILbXZ~`4)XV_m;5YQTH=oDscKcB*%W!7uI1jn@vp5j6nWRW}2 zHM{3@DRzeaHH{Qnqm;r1oBQDgSvTBZu*K0YS!9E8pM5|mQsjb?SOmbEu8FclbJ(t#K z^WEvrptdq0F)$dG%k07C!5M>WY{sCoMGP!uRfEBr!jRS|AN}SU%OI<<4BGnWpKI6A zHq5e7tgE#wGjrS7jq8D>k84ve*)}J?x27bgHEM2c_sVyc2Alhv`dM{wVCvX>E|*)y zFlwtK(>2;~PlW9vI-9}u-UN@rxtx++ubrl}HZYMXgRKXcMUq*$V zVRIyO){OzTJ9X2>^t9Al`T*BenwBA}yA)Y#L5Sw;ZgH2dp0#N;Tb+?>uEjc_E~nVq zdDYZpwRO3ehw*7c>=uWplWsBWef4bcU~k)6dzjXeVXjSX+3KC*FuPA2W=9NjZT@4K zdf0vrs&!SJTy?8B&bB_zjRa%QUN>&LXX|m>j_*15voOJ^Wf`VXn=s@U^Yy8!T4=M* zD3_UBVx;R@&%MlH_X4C(9H~_@(#(8rpb?mSq-!5H>2>WTBVAVq&eu0fMrvszE$$So zqFnKTz$rhf)~h`mYQ)yExm{Ov&D9^44A|5My!N5Pu3>empj}rX%~c;1fgS3wu6;l` zKRMlXQ*F>1)swUCNw!?|esQ=1eYgcp6}m1RQZh#Y;R&ss8FKE&;in^v9QJ~Q0Q$bz z7dVb0Tub}vvLgWi(B6LXKGD9IYYcrNF+7f^nES-!OU8yiKi7f9u5cx_SLf%*Va#5`kc9b$ipP^q^#D~4F6K_K?MiUgHz(E+e2}?OYOQr~TffFN$+5MI=ibCv> zFn+AR239*MvKW-<+Dj0)QYEcIpjly7nK}jw?sBGyq%|l;v`afl487o$+{z-y&_cU|5C)-7=2CKUStc^88 zQ~1#H?d8Eb&}Qxj&aOG#dI1U9o#c!c^IL`Zw5-nImz@@w!LMrkoh9SnSYtDb8k?EZ z*j7wSdkI)i6EH=v+RLYKX6U*hNF(Ebyqr4!XyU2 z{+4*oeT%LK0;Y-QBFwHX%uGflYUVIVpnt>)9r4;n*nvK3c>#&TL!;3GHwdvI{`zq_ zo~g2YlEQWBVJD2;w6x1#7}Mzy`GBu(fBtw&Vp{1kLIHr_SB8L%k=1ClS}l&QC=9Sb zfwV|+%YxA{`s86EeFSub%thdOV;=!DnS?O`;e-ta6F8X|4T=0Pz#i4a=E6`0zq(<- zh`18bn8S2Pml^Z^d*g)A%40~WoA;j**&}#>kKi#(D7638X#8;O`{3G}&IktA2%~s` zT+jly*_Cj`>;JG9#DDOI%YPU}El1u1xpg&Q)&0Mng8c7v_xFG9=FtNg?M(uxw5sXR z23rf9>XbX#mie2lwqc2|1x?BVS5q{0KPVUzx9W&f5$r-L+m-N1>aTP>h=Gt z@Bi=E`TPId?fv@S$;0OV3S#^a#_k9-3Bn{2Kbw2$|A&A0`d7gLTVDD6S+V|mZ99Me zf2U)0_v?Qb&jC0O96xc<=V=@!5&qIpv@mLDAN_C){V&>^hcLePL+F;hJ4KNnKF(1< zzBIJYF^YW8f!NaPM4@{VAxD3uHelaDFDU)+BNbMqUyj`c3>@TUI#yp#*e-9b`%AX3 zhrh55+y#t1IQG#9WH@63000<!Bo6*(F7(w8G&X~you3oi5DYx1gNH?fsFZy^Xo7qUqsm~O%?_#il&2-qgOk>E`ALG^rtY6?=0SKLXJc2m|mi^BnGp3J_lNB$b;s*K1Az}PBgzk^frvwmx zsV;W*iNp|p$uwO9kNQ)FQ*cG?{1U<_K4oZG6Gb)9Rf4*z&)I=97g2T5bog|{Rb%8& zp13^BS_kM;6k>$A$4doVuusA-hl`Y2d{!ZnKO8?^uzXP3BD6dG;fk`Wmgm{02*rdi z(u$8IAKrR6^LpVBeVs3*ivkto=3Jj)7ZO;)A}D7&g#>~d62@@4giX)_V)~9F#@3nV zl~y)($N(Y~V-FJ)IH({Kv~PK|V&o*TM;=eYfS^wT#kmR3$buv|#_utT3q&C?r%Dv* zwa8y-x${#HPPk_nqnP#(NbfgH5n61mn&OvHxuWczJy%fy>}*_)-?dxZZ-`Sj*taK!ci zwrB~i^8eVKcFz9mnSFC_|Lx*|k@tbhNy=ar?FNh@^^+Y8AdL(U`Y8$c;TGQ;$J9ia zWOv7A;T(-Xjc^YVBXl%}n4maIeGSi{9myu(0umTwgEvLR2Gtf(Kv=8EQQz*GX1~{K z+@nWoZsAd*1=7wMEeUChy=b(Ao4IkHjFB4ZU;g^qGA!FLTjpOHYVS5?jiEX8{1Mw< z{#$k{t^ru|%t%K707>kp;O8pv;sOHBdozjwss%GUq3oxsc2f6unfet!LT zx}E*{-^FtPS}pK~d3OMx_XhX%P<4TQyg@|M*a82_RToO`{Erd%{AGCs7z81g-?WzY zt58+epo;}Z&_V3$?d9p^2%IEwi~{06@)+`P{4eAX4BU`KU5LOCrfrJF$r=z|71qVE z>tZlR1p04()WHBGlqM$w&~@MOLdQC&!ca+DA~8f0?|ykpx4ckgOYgkEnNI^&@@e1<1C<>CF_ZV5txUVfGBiv_5cG09#f#GlI;Z1l+|`a#A8(W zHv}+&f!l(97$DY01F%MqeSZWd(8s9Jm_XkjL+AdK>x5Vl$0?e40Rm8JpC>-V_yW!m zS5Y54-v?u+?z>D>K;H*fA5Ji09R^oD(KQzymGW~ z^3|>poh>o&XyNeR68E{nS07HmjrVWFi_*VFz%tD@UcTUmlUrGE;gBT-uRfd{(Za`$ zgD?i~sE$s_mi=VExaH7d2O>Vk9zmCZQvgg%iZ@4L!sH;I81b7o;d=`dAgp{6Uf>ZA z`lrZ;k2lB(0~b>u#n%YMUg#Fzi$2tco_Ifjo}a|%b`~Q%3w<~Jf)h3v?Tf{}#0a|H zw*gR_yNL;mNfK=YPOk!*b|o~nxdcBA&SySRv)p40m+@xBQ`vGRY2aHJ_>YY&$K_3& z&*2nF+2YY3YC-c)nIlx`54tX$*ziJKcYK(IaPDR66G#~wfzuJNjGp14PKWRHXYvS6DX`6#ir#Bq-;ly$~oi2n<2U)}ZaFFdK zN_-zgq3<~qO#17J{TPAs$wf%6`09zQU7moVX z5b}?^6@X}QfG_)Mu2sezbQ8x|f0f zcpZl1C(lPbOjGmdLEjG_u3~TD`DlvHumgFxXUg9ws}P@E{Vhh06V9WnIGlJs%I=+9 zCjq5%!F<>!2S#x0`5y6*TF=mRN8s0g$~~4ijC6PC@!PlJ*8%uALjfak5^@k;0Z+&; zn2>M|iRVDye^eEq>w=S?FF#(q0yk&3@6S)!zi;TjKV5#jIJ8JzVv|erGN5$% z&cky^oEfL8B#L-)QRuT8SWyUm#18TKZ@wO{rLU{8a?HvtM&a|lxhI956D1?iHBEEQ ze$LUHF}DGe#4%#qt$I-_SFmTk^BN7+k=U)I6)rxUpPnDzog81?ND&QvUw|&kWwE;i zx9LVGZ3{8|@hpaIn}r2 zrl2rGNa&+j>gcQxc4o*;d=y`>4mcl=y^yhGsqTvRF=tEp*NlUNNk9Zbj~$2px()A< z#s>+C=N=FKeG@|mU1jCFZHk$F>4pwIl6&px*^R@7d`FQor#d7<1fNS+oTqFd<*I47{3&)Wl$QbsLgk^tHk}jpGgB=bquf4bUaMTy zbvoYW=g%sUics+lIsk)Oky!jG%mnb|OWv~{F|&*|@?uph1jbWDm~HpF^sKM$nikJ@ zThLkm*u%|f#A^(eIE4+BosEDmRBHVEn_AV({6z~CKR(P*tTwyGK5E?l-w}9!dy-k& zqIrE~i&yI}YzCdgUUqSo_gvRU4=_fJ13+yMrt7Gj9e^&ihWF|06G3qR{qumJcmf@SGa)*xlV|RO=|5ZP z=mf>Yn|KZ+TWat_=qD05eGxOkdzJY94RT^c8Jv6A$h|C7;z?BIFk+?EFQ!^$862%H z7#nY?P(oLfbQUOH6>7v|=&*A1kHXgl8|H}*z4@)od36Y0-VjL8B=K($cVHYg$_f^t zbD)n3bIzeG{ZzmdE2d3mT335n-tU{M_i5=jSMO!p7niqZHwO7c8bL_7jxR>-?7$p-o!J39 z08WBQIOn34g#UnZUrAgc;bjQ{+5vc91rRIn`Ev_+6D5GXzf;K!eGFP(zQ`6%!XQ8n zI|_%y1PFWmAN=$i%dx>+R;&jwegt8JSO^N0(jqiv68e7lKwt7SVqQRp8-sBiK49q` zq431i(p&;k3(&y;@r%|#fvdh|e^0`YXft&HPBR%c=*!%BO_D#nn$1QS3b|CW5$S|; z9_w@&q2PuYt@)FT>@X@D^$hvi0a|%nQEaqiXTGvS?bKpJ(6jeXBiFwdX2#l~SCL-XK!MXG+ukas>;?iHd=op<|>M?c)wqvyiuruxs%(3mFVb>X0!}b7KrrGZd z&52|7+if)Nj?utz%|YMkIqhM4GDc1x_Qp#c!!pdNE~v7+f|cd6Qm`T$w(a(y+v`~4 zcGn!(J!pQ9(6PFv1;@y8dP`v?(DRvmsSB*C zprEykZa0P2YIi3c$F*#0+%Y@0Gw$~-yY2KR=D_W?hgP@KMs6GR&905yeh+q>t~qht ze$TbWj^%ciyWCY+SzT~xjTWz>0PY%A*RUkO{r0fk>o{f`b-M#=>{`~K>$Hbm+aC0W z?$~tPac2TMrtJ(SPRANLLwnfojVEmz+T-rTUJ5YuBQL0pTV7ftS!-alC7jT;s(CV4iz_vTCYYoOu$DZ^iXkwwk0GX!KhaJ=(4?Dj?!@V} zt#)r{P1@s5A1$YV`(%t9;@1UK6xV3AZKt%_X?Nhb4=IuyH0U~JyX#K+L)V;i>~4F| zb}XyY>kfzQ;b7A1j!_%BsB8Dk0kkaJ=`QC24^vc|1JJVR&X%dIroP=BTjOzmIPSTf z4sy}h?v2f{+w1n)V-pVTc6&0g&Gw|%f&D(RVb8MLw&hF^9hbWl!YIUqikcJOLqTm= z-Er#ydZZ<5r*LaL3tD!^=?^-#+aHg+9UFGrgGtZr^~U2dG|{-<89VNHICk1*+wAsH zyVvfF$KzgSNO6vqFRD3=J?M@%16x!sg}OUz!=c?9_AJZovzH2#S zv(ul9JA=MG>6&eKGJ!pJ?2OH>37zqH(1S~%X7N{>!OW_bLOg(z2{Z?`YYzM4VRtaG z+heoa>9~D!(rsHq*lr`IJsfm9h|)}d*cn;_d)Vn(V|Q$K2FvlxukqLr&%AOe)IGC3 z>6_5*b>PtKLATxM^=;HP2d;^F?XHD}jx&G=xprqf9=1EkcHy9BcgC*MaV)f)m5DtO z6nwb4;Hf96s_5uedgB26O?vuTJXy&Y`Qbx@>Q9R()iJno#oFMxT|@!kFq|l-^$MJb zS}k6yZoB$+cb3CilR?Ktjytift}~u=2dLd`4~K1QY)?!yfhHQXdy{UrKj}F=%cLyB z8JZK@HrwsKJs8x6pzc;UYwe>Kqc;hR-F314;KgW4D^}w@ZM!DQRhuGcPu*&k2F$nJEIXRlL_vjU14w6>@5yvo$LqoK4&g_4ljg+O7A~P5OOE&Wg%xN!} zqZe|AQTmzHg7H01jwL`aO1$#=kVRu2)?0yWFH{cJ5MdVbv{`=Wm%`v=BM;!5LO7Xt zpE!&jPVGItAKof0eyI%Bw9Vs$guWNt>l47PGf*c&VZg2PS3C`vN?wI201OJ4nLgeh zOi1|F3+{`f5L3?VOP&%I29Ijrh50fcAXh6S8T{mZLhd`|<-`T_vS^MO0w*XYEn$EH zhi@vgR3UKzEqoVV#P_ix+yGW>zV$Fm<&=6?nS+RSBO*cdFZTni1x!%{x^780$pJWt z5zE3411*p=#j4&WOB)tNC~$fE^tTK`RefQ(F4LO)qv($x@b&!1lsd90*Cebdi+G6< zv-Htn1{?}wn27V7;xN}-_KpI#mB>?bll*+CoqJ~ny`aSskmy91_Wg&z`dlYf5pkkL z4XX_gfdCQDfWtYWe~H&Bq=CMdQNl8~CJq;r5onX9Mp%!7mEkfE``or<6P7byq*=Mb~teg+gz`Y3aZOVuHQ7|Y=+k0)0>TIds; zM?NzA(1E@xQ2;7}WR?O&8%Q^z=_frJKtgr}$;<%tKuTS%N11ngGmXg~7kCpEC9jL~f5+|x9C)(CA_Y)8?Sn4n|)i}Nfd zQ4x%N$`A?U8*6kH5hO{BUS)T!#Ay_2mcf7^p$|icBve#`hcLcp2E~tvf=Lk}!p>oE z#Nu;#;zFqqOcL6M(o2Gncn(rKSmK}%OQRk5lqes=1U$fi1^yClMnD2$58pQqz^}i? zX!1`j{TxSm3r3!Sy(u>C2Tb0j7lj;AEBEL?6f^=JC+P)KQS{I4$-;tuG=uHKN-K#W zc?}zhm9N^7%7`3R65M-%E53bzzURtdN|s&s&GpsEH7)iE{Cs`=bgKNhq= zRC7}9i1a~~q@i@FU%bFw*&4_98{U|z%D8V;)kaZj@ETlGu2GE#@s{=`Z@r@nPwM7u zBeMXxD0!j4C}17gUrS;e;$xGoe_De z3FK8OCk*&H(X>l7C@*lrxjs50jTTa?IgO}h^-xX&W4csMgWv&UR4Xgdij;PL)M(5R zi9H8bgf?aliR1zk4^$AioZfjDcqEKpfhcsv-;ETQX10_R#;!&(SZ0!v$6JAVr8ox) z+$i({r5v}!zPp|-itVH?pg#gVg*)uTFp?+Y^ba{zbQT5@fb96gIU+NZ;Oitk4pV|C z!D)0;jt-L=Qk)XCm-PR>u&&vv$b94LBt1ZrsX?(N&f5wVf-lE~2ieNwj)XVw&y_3= z7bt#+8GqnOUy41Z96jIn0rvtFd*y@GlEy?#nq?QusC^do6brP;AP(G+e~mJyoFP!be3G%MxDS3akVjQt{X8IKTA(b& zT=Tq8?qKT&6nhho>d=(9V{t$KafbtE02pAj zVE1Z3*KLIXHfT|-yc2Re47nf)T)B$w(PQ;C3Qw)1)@XIl%DDS*bs@Spz&WYWHElZI zxfY>E*H@(5Ci*TG?Tm_Cqr|)rhKu_Oh*+#wa+C2DP}_5qGwC5kv=6y?OV{~FRS?E$ zSR!(Pi=r4gEMO04Y2~ zx$|^&8Hdh&?~X@nX|EYay@T;IQ=55w?@GUg2^rHxd`IWwE{elXk9R&hevrWk#j0kX zPIOX~n399a8K^0Jt%x*OMO|V=WTyHgMlK472YtMJw#9xY^GUVfp=yJv^<3V|4BwQo zp&(4AGi^$P^xz_3+NnwouJ42$`@YI>r_>JQGRKq3`@x+|0>niWNc`o_3LmJOVRAvt z6E!xz9j+Zno_JH4RDcWkMP}={M_cmo2K*0^Lyb8wJmKmiFlQ?NdPhy?t!@Cm6dALZr2STf?~_`?eey> zP9br&!236H*%W4$9!G^AihQL!%A2j1v65YehNYi8ALS^&Zb$r%#avez0;6=2C#>7t ztm)C{?8Fsvf!vB!JDHhDp#oCFq-5e_zO~?vR7nHRa)s%e7||)AYLjSQAc7623KaoA zI6!#|_s28JPmv-M`f$=0Mdc}?Oq1N)=E;mG)Ly`m%TyjfLQ(SAbwM)?{B5#*ULW(# zUQYS)8*Phz{&006BxzZEeT&=gQrA~L5KYwxT*=pk$J6(39z5dAG)ad(v7}0_I3SPj z&aW0-waCl9+T4sQ(dA^0y`na!#V-r3j*XvZ@S$Xbx2EN#cq}-gRRY&6Kxrxq;RocY z8bpr|@`4l=@R2b^ORb|; zi>iR?XAlNR8*dH(?MqXfA3QP^nD(f11>L$3UUR^}*RzaKtx0Vm>L3$wFik{xvF#>r zfr3{u^)PQjt^*mxLAh-NXX;>>7h|Fk6+bHYj+SC=3%E`_$|aAaY|ZZf>Z>P>rb>;6 z{IWLkZoWdkZ#^5CpjTa@%IsWWO!O-frEaI64ll0t>b}8}6b`ww;@Su1Cbim~w#AX7 zMFSR)6R5zmHL#;w7Ue-LYlXGswv2Ky5tO(^a6{-KV_AelN!)_+o9AK>7>%wQf>0TR zpwiiB80M0X`}72(CaK)a$k~FhWU{&efIOVEOeV-O&ms_1<3(w}&iny()qvcTa+G^C zoTFA0BdKA9F_^H850+Ds>4EBUPY z=Ar6Z?>LqbSp2?I^-YRQ6jL5s+AZ59W%^>c;B%=#tP|0DHl!Pgg3QoUyd#wY)M0Uq z!o{rSU!3=cE_3B@-H=Ob=8Cz#ED)K{(E;}UoysKg5Q1po`~|a2QIejxY~$r6SHmpF zWV79~-+0nkdw_oNHS3H;{V=BrqZX4gJAF}jSWjXS`bawoo1^J8+BcL~(cI2rf030G zJAYm<&F-IFh3-54DZhXf=WsOl3teYP>|+onBudyJTX9fWIP+=YT&RI+NUql3e6>d- zO2ufBW{%Ffuc@HQ=$}WHVGWPcw(clLJ31gU)Jk8r1pgCAl&>|PHNUGUz0bJj*$j5{ zD07%Mv!^5Mjzn+*7B|mAg0Lh+Hc3H9kcilLfBp7`rzJp|B}3`&^hYY?b%d6jDJ}s- zB$iOqA?B`P-;`rRoB~@PAEII@Mhe!hD9nb`{B}?#P{0ppZGZw^u_g+5;cpWKj_*15 zvye8rHWt#l^$?Mk|2A=fLqA?03$#}0`00m}kVU{-;wM)dj}tPZE7TD=d744kEW;PA z@oi%2ZFZwqBqpbN5Q|Muj}^p-g(5as!Q04Z`uSJO|6Z2=Uk2#nBfih5AD2J6ON~T> zM71smSaJVHx83e!^Z&Oyc5i?G$4;KlpO1cM$V^8(mV>znbH;WUG|q*iMW&5El9@m_ zQH!VzMLQyei#VXc+%3|x*!bb-%a_LI&n@8c^zlvN7z@kb`Q%a+73&N3p}If%0UWcVMFlTM#z2>@ zFF%AX1`LG)__WyQwVIygI5kwACNRM7EO8i1)0EoJhZ)4;=1RE}I(p4{v{s2{ZF+$h&IO#KSL`p5 znQHVppW!hBH${jloSVh+GSV7N%Tz-8n%Nz>)~fSG6^2iV$SqQk9EV0OOKDSv$>vAL zpcWsC*s5%&YTmOgHM7LhTuME{Csu;OEbgj%6SLCHV!RCBX&ZUE$P#C^gY{-edO7RP zkaSm;&XD+6XNF|I6*H7=si~h7Ze~X>1}KJjig+4hq(^{fjyC-t?u-`Wm88X&Bkewl zy?{(W^UsTx-p$K$#>V2KjY;DB^sgo`4s$fSa99%8I@BssxoRI6qWT z&1O+$@MBL^wD{5sT=a=oHuy0&^H2pQH^EESa|lOwGsQ}i!qHTNIjl*vFF=#0LF1sQ z)&;=L9O&6*%hAo8(6Rigi>XA}KjNaDKc|0?~z-R;oI&FP-a zbc;tUWq&rG`ffVSWHsMKm$|h1&0Na7W}4bp=9kfW&lNV(G&HoMk}GPoyJO5o_TCuv z`yym_bLclhl;0%7zoTF=YG@Kz1XC=R>#|VBsDXj2sx$Q={l)B4APVOSefcuVyyRtn z2frmDQFU4XQENk!i4*AgpeYW^%2+qrAirf%1-FQmSGM6d?S8+z=l{ESzS;dBNoi~D{!}mQueIq?CI-LNEteGOOE+Bhp1VKHQ;YvE zqJXLX;&PvLc>kYP^MA8vw)6bo?CkIV-^ru&e{mLV;!T;>C(Z;a#h;&Bs>iw)QD7)) zDbx8~NZ_c_Z$Ybz?u{hkN>>sYcs2sRw-igGEHv-}m+F7ryk1nRZ8v-fcFS&V*Pi_qW$09+yA?H)cP0GyCvJ7t~1f%a`QiDYU|heC|kcGu!r^` zod8#~C|}IFUx3yW_mAo8xvkc-vOt%56Ey4VX^w@Oo`bbL1;v}$H})OK-|v38xI9(A zZvJs|_wMra{oAt!_bvc%dU132%h}o0-No^{vzxQ)4`9 zKr83tg*+fDlH;)$hL>7Mz^gwmnrU15UHgW(TfgF~xN9FA=FR&OxJu9P>d|5aD9eB> z6f(5VHCui?IP7I`EbNUT0pO?e>$8u?Z{Mm(lrQcs-{1at`TpYc?&kfE7iYIO!nu=g zHSexaYfEogl7#5C+9ksf5G+z}5naGyEtjoiUGlGXdx_S+ipQ(9rpt?JW}A4smg83X zn&jEtdMN%w=|1~s9sN(_qVMkK(R1r@ z+mycrIa<=BBnp{mYH1;rri!)v;p*b<`2FqAOwztgm7M?1=!8%0>kyO*)%q%|7cIK} zGPR>ryOi=;@26C~Ep+o*Tuh?9s?~xf&MP~WTJz?e=30-?|b|L>T2{m<(3_WQp( zd6fPqGgiucZ9I$HrtW`Uz1sKBvd6Mbf~?cMNc#ewCC>P-jl%ExslWbJ64bRVz!mGi z+w14!KRSJ@yOm zlJ7G0?O%wv;k9uegb#EkWfDS`%rL?1QYR0~b?CCNs|JNZW}KCoo{t?TOah+qmBnWH z2(l~~6X+)~5(`!A*WBLRX(Ja2b#HI(ZZ1!Lp}&t7Fg}Wtpe#4JYv9ni7v*n{Z_n;d z&#y%l-y3UH*qC`iYOCK}UYwk9b$cnfs-)prJ^c3O?)}Z#_083BtyWT^&$n`Xa&mTc zdv|(qQwJE8tGs9xRO;wy_3Aw13LLeg^7HNO)!o(g<=_8t_xAke_UwWmyeax1YWFT~ zd6PXcyY1%5t%|Jds@c=Co7=ndt0%Xs=XO_(Q;NLl-N`-0Cw7tMf>#}!{r&d(`0n`n zjYLeT;kq7z@`>kFXSc`aZ`o}xr_a%^$myRFI$d=|-N~c$e?Gn7rM$|LYAoyq3mz?Zm@@)^7w~kK zJaM#x>RSbZkVL~;eD@e)bOp(b1$`_Fsn%MNby((yf@Q%|B&%4&22aby?}}YSBI!MD zpidDD+)M2v*FD9_z;~gGMxbf-`~7CaBWRx5A}d1|TY%lT!r~Vj@W|fgNw=$LyD7AeUrN|Dn6XEJrHQ5zA z*4Iw)aBX>=s)eN+jkz_+aZyrJp)o^SqLJKWyw>&ynfPMEZKgAHn4)qPVpgdk|EL;X zdLc;W(C{J(*tua@ooC^0(sIoPOh|Zz;<<;hCvNP@ANO}=?0ysRi|1nIF?`cBpzo_J z>lB|`S=Zu5lv6R18CPBbgNQd;27z9rtnW7>WJ&Ki zV?U?O{jm;hZ1Gvc{-aa3zVWx({_FSK`TZZWZ&`c$Zx>J1`CoBg=xyHKY+6UC$Y+VtBefcEx`PS0xw`!QX(oEy@^Pes^^v{Cc0p;uUfW? z$|!(U+0M&*SU2B!`QVFeDVs<`%QT^lR_v`TPx*{~(=3M49Wki|Xj5G~MMuSH)fZ(1 zwk%V}8reFGVx^inI+%h~+WF_Ql;No<*3^vZS|~jF0sM6S_jhNbx;L167$*oH4XnW+ zUFU_-sf8E1m*QghCcDpzn%UXNhTHHS1c4L(XEXBRki*z&w%o+o?-$T|YRFXwOH-h4d2 zJ^6VAniN^h%JY8Rd^(c<-cC9a@C;`MyYO zxjVo5&@E2_vgqd1fUI@aQro)u?hae7K$u+_cwCN(6=`Mn=O@37^ON8Evt0jU*Zmyb zIVdLH#B(5dj`&Zj*URUBw7UEAU%PpP{^wz}gU4>`LKr{{AQ<}zVl0uZPU!pK1jVE! zu0v%%1Yx9Cp3WcvFh=59a<@U3rMUQ?6BzKlaSY?fRjMSvY)T_OEyO1dLw@-O`$N4B z#3f>!Q>oYdQZD*Fy`GC(?rG!a7$@9wsa#vBnSkIM!!?(T))!Qve|?!rG%Oi1RZK53z9nF3Qk z97BIexodt+t#P4BeEHI#TzjN0*S;u$$qg{8kqyHU6TnKaC{D;-;?BhRn@~mRM zK{PcSKJ}T{G#=8SU%y0)<~)8gh<`zkz$m{9P&?yf=-<^(DQ!pS7Jp%=!g4Ov*T zaRl4OB#e&ztS>Ut_G^~Jv1q1jD8w`>s1#iMbA`~#PeqyhS}MEh$gOgjC9vbGX?;0Q zFnNdKDFQD`CO&P@^&E0o6+rBJV?&PBfWFUbXFd6cBAFELn+qO>OD{Z%ksm@=CEHX> zp-y)^MoZo2Nk!EO`9%9}`VtKO$04nfz_2v?j{Y zr-72ip+@nXg!Cm)esuSV=!F?rwO<<`S}IdsfC&s7gtb&k*idgZw6;aS(KrkVCNUHa zMlbM)JC?pYI)pLADASsJsh?bcQPc#A%Z3jDiZgW*jNAdeWhh>A#ephySY*g1s+HWlciCODL|pdl;QsD3(E7iH=NbR2~7yU>-+TJB-JM$r8j zdjwqu4ifKUgu^6u^nx+^EkT%QZ&Dmdo%dx9Y~um?RFy7cx)bR8W9ZzUiZB*q;gB2e z-{_DnSGCL<06akdW(*m zWmq95bRfU^X(cvcDZ^4FQimd+icG`bswr68{<{i8e>3xM<^9iA*Ua00?ato+x09!i z{TH#R|D&6K`7-KVt{h(o`O;DP_A8i`sj^rAsX~$5lFgYm{u-EDH8%zH71k!7gmPmu z-NI|JExbG(Zr!xuu*l5mKzPulziuu0-cY7EQ-t5;(Fq`kkK{ z$B3Oo6=%a^I7bA!P|Pj`;*p@7^uVGxW!(=tu7DGd!i&O6%L9rwaEEwlN}in{$% z^3;?68(;m#o>lU{-!901v%mNM?&M)XmM7}C6Eli{*p{PTpzrf+bVQkP)l8hL4CyJY zRcdCEpfRJa&V{~dX(t0W5r&X9(mqiuLrVcn(NQm9CV!ES= zmDR;=Sc{n`u5BbLE%AL{d9eYw45Li^Zqx5f0S4fe^ zN@zbz1opy`?p@Z`I~Y|sc++N#stw8-o;OvYgm&amsz?Yl9q2PXwW;X2dAQmGtU>N? z#{(=O&3H0fTl7OJR4n)Q>Tc&1)^4kw<5$BK+_vL)cUY_I#4Y%pSGx@4!ccw!;Sta= z=Q4h$jW-j0B;wv#NCq7q{or9RLoqv^4P6&N5TFO(Q?{T2C^pr%>dF5&4E`04H$48o za{t%1^YY*9_07Hf-^IhFd>jVC`tL$=b5QqkdoQ*& zop;LS_Xd$|Sb#2y{P1y(0`iR+fohaB%|J!rq5%RenpeC)EuovtKyYzf$rM+w4dAf+&^Fa zsb~KylkPdpN=Hox0c0$788NKHVDY-_s$N-S`u zbo&_b^fJ0A&^~Di@y@Rn-TbA16}2*{Tl5dFc^YK>)r;Z~WLm7e^5S~f2^T1SH0}r3 z@WP{lHp8&>J!v$6&+oUW*Jzh_i4L3h$r!}}B8XvMtb$fhaN*_B9_=-xKdy$PEoHvU z^tJuvOG79r_0$v06&J5umA1hS?m6fln&Sh#!yj0_2nN4_JZlgcYn+xm~pxAOM+$Yy(LLQ znSRK00%MZ+J{N_C-V}Ykm4;>!RLKBUqf1jI&LX&-Oo_6g)YRN4QQ|Cub+QxAB3Lsk zVfKotmtu4hwkAd5m--!6WhON(sj7yeMXzGd83U7=GJVg}SL zIa)eO&b5E>0#`%k%ZjDPc`dc~>kNb;nRkr1QKM z*{XAi#q$aGohVUncn8M|6vHXfIw`@{Dk$=y5~V|Vhvs4YxXsbbS&N$ts0J*b|C8?Z ztNYZ_|Gj`EbAO)vUsk7E%>QMZ`~BaYJZsF*hIl_XD>xeDJP!lqkKzbfu=kuLdH+!%P2SM#&xMH%6Tmy@zY z8%l`h8=^&dQ;brH#CzOS^Cq_gn6}gehNgK5sAUO({f%L#a8I>s{$;ymL)2zPC=WRV zWT~>kmdf>Cu&J`&m)KS%Fci(Kl0r3lC?VNwLswx;BhmiVxXmqB(ZShsw^N3 zFB}o$S~5q1QY6%K*L{dnyK3~Bg45zxu;;g4BngBOiXjPOgTxR`y!(PGRaHe7*1ftRM;0prFDz2;(}{Mw`AWE7O8W9Xwf>BomHi%Oq1P{zu0+YQ zA=JXdi;4FMx$ivJ_0a>2xhQDnr&)Bvugdu;Un4Cm?mwj#)~8p6wsj_4=r%i4+9_+L z7`|MnnZ3yT6=2KwZ)_zO%H~m608!gra$>g$4s(FzrllTC3Z5tTzC=LgCw9JMPIL1# zFP)ZB@}T;-_A2HGLmUI;>u~cq&0;U zI!Bd@YtByOr{@hh~`OY7uyX9m0QtfI2G!@G5l9$WHq?pBn)ojZ5jp(*tkxiqp74snQj zO9hP)eNp8^FS{!KgEGR^#Z>7H@&L2|`zhUr>PmUNGOLlj6OotBU0$CPhTP!MxoVRz z2EoPqVY!DiBV?pw(#NYuOMGpt#j0}O(^o!=mwDr?9K0NcGJUH)vq;Tg(kR1R(J!1% zc-m+sUn!tIZ)WOPS7R<}H{Jwrr9$hJZBU$`nDWo%)=BYD7`y(T;+8GM{KquhiWO^m zZWEMsys~1(L@ya%6>@Nk_?RJR*)^G^&aW4Tk}yiKXrx_Mg29MED_24mWt#;>O`QFR z6CWvQB*?LPfu{get>qaZQA*qNqJQR2~H&WO@l z9Ob;T{P!FzuTup~zEaMPpbRPvM{ca$55fHwbH*Lo#R3P|AL_re*?$2d6r0C{KxZ~b0Xe0L zv`440j$ODa|BKx(od2Nnx^G?kSV#U}v0eLZ=YO#}b}ujg+orkC z|FV;Z#sB}9iSpOv5}$G5YpoT&FGz(4csx%Ke})>@4CT+%-A+J%vB}gr*(j_(gTgw& z{h111>4p349#m;PI+b^{*IAXHJn{}Guo?ql%g)VJJ z&Qs;FV>&N0+cd0*F)_TT7|EnF{IcT-Lj6rTbcMfe1 z)Mm2+xO@P5N~x3$q=6{nGy1KpL{l9^WM$JYcm#fJikR%?KXU|L(H2_L)R}ClUQ+_B z*0Lrgbgw|#dW{1T`neWE&90g!wo}gM>Lf0W&T=f%-88_Qi|F#V={x zlo$Qzht7TV7sK(~IIn-vMqdLGC)$a0Q9kuQ(~3-pXPc_*2z_!;l!+hWZ_0u#msDc0 zmd5Jn%5~mkA?7D9QguUd%0uuH1R>%0$)D!%CLoMU>lxZwXKhp!Ir|h*x?rL<-#jCM z{G1fp$>Ne?e>pUIFjomjQj&3bE5FN-_Nsg0t9H(o0I1`l0HyY^E~t8Y8^F5({phMd zJ<8E)6ltdLaT&Exo)lmWb2+UAfTBcdRTiq4xhin$5>-|GCy~=qG_6HQOIzAH36+pk zYB}>$y`q$sC|PQ)1z7AVy?@QKteN8t<+3bOvc*)!f;giu_X2G%(DnjtFVMabfwq@t ze_(mG_5GgwQ)~Yx3f*^M;IRY~+rR&}Yng@nf7`wN{?AUH727#c=+61fKhIuH+Wwjw zIcdf1?Ba;TecRZ-NkOZ#d6Sm@N;@~XDJX8+XPiWODt*5si5X0~by zRPi6NPg8H3rhErrp_&V{|zW{8N{@>1@ z|82J|dmsP3lV_FwuVy|@eDq8Z_gIUfLF^N$kg~+HbHSpO6-DSp=Y%X zGTl|$2N_mXWg`?J|90$zGK$&T3KjU-+Y4EHVH$@?RLnL-sq+*HrVL&>yJ@jx zg|t{SWF}dV%IA~vNuFa)>&jq-is@EV_PBZ{|Ek-EuFDQyKz}n+@ErVhru99Yw3q3;3ZXx&oO9@!_d!Wv4~mmT*~FNnb#$StK)5G#T)P6s4lFm zY)-k#q}WKm=Q?;Tvr|@HPn@?d)S1&O`UVpekPo4s%+ZMtz4`ZW+B5|maL54zeV;(- z50gNNYJvGBEFey^i0VK!|F=0q{@lQ`BYBsWNUHq5%_eBxBNR0&y%OKo;aKQ62;+C5 zi}Y*NDuJiEidN-`EAPWevm_CS09ImNz!jt45~Sta#Uza3R2l$+e^v9m1zXywGa~&x z(vtE@;5VFF0h9b!rE=aLn#6?XI~ZxPfjbRw**{C4TKa!HhEFj7R^|Wfb@J!GsZp@k z|99~)UH|&W7o z9KiSyG*37(u0tO+L6iTJNo$c}v-;3=sRAxkB^It*-Qd?#)ag3XweqZ2d#|E@&no)& zp)_am>sJHIRx~TSoy>Uc?Xry@y}$j|GWq9F83)Oaih+UR1Al0qhq0{qD@!diGzKkoCj9 z)U(3=>swag{_nQExBqtXtbPCYHKm1TyZxI{T2pz3N&>!E2~}WakXJ>BSK3N-cvqF1 zDmAeZQY)m36|5V{wWZj)?SzA6fhmT7sZW({&43m<>{A;SM|T0tHldM_5EBcPEnpWl%|lN2lyzn z(|N%(HI$$q&0sq-O99eXQS;69)d^oKhlOwHIx2pD_Yy=d)~izx*>kY-(*CW~NdFaB^Eq_E%}zDI)%60ylMW@E;McS<{FsNWWd* zcl!_n{DpHZ8-_u~iDYx$Q3-&4*M^nUhrXh7|ajD90c;zPG(pQyKYb-{; zC0>l&bY&~BxD57iT865Je_rr=xzpvVmgyldvVo)76}ze{z696rPg}Y`OGSW@LuasX z@1=anH!Jm0m3Lm2JAW!z^%9n=@m2joOg0GKuKHPenRBjiWt3%A%ypd`I<;8Nmb|-B z(y(6M(7r9DUqz+@y-TQ7h|y|lRlK`Ip;$_L%b0!{5wZIvm-Luk0cvEgnS4Orbe64Z z0fWC?5_;@Sz)SR7rC85UB)4?fsl=2L#LsL@a0zMH71Ui#E!v-7+m78on?1GsKm7XN zjU7O%;(t5ceEtu!YxVd3pIto6PQ79CyNw6{PAOkE20&2j(kOtmOr1D@v@~It9MfX- zui|%C-A~FcCM|r|M2`fUir)T`WV67?R;j>I8eO( z3~_N8zVtmza-68ZHMsX6y^gguPh&6;9~+La2lVm`L0a*2yKroGQQ)Mt@6lsn4V@ZnMo^>>)}u*#oX>Kt$p+ZU>j4E z_UI=MgBgkuAR&OR3m^#41MsOtWFm4OSG>tnQ~&4g@C^-s<@&$Xwk`YrXYbvc+cuI# z@$E!D-O~?~|35g|Tl4>`csT#hZZA3!0JxrJ1rh+Wn&r5Y9c7E%N8d$p z3~nHpVHlF#f*n*8i0CPU($KnA_Nj9xKRgcvZ*A?~%5_AYM;%A-TJWAv`1X08L^+uI zS>)fu5Ubnd#>B_JUSD5ciMuj2O0_J2a9;i$;asFabbU`nJT4g=OzAk+E2cc0))xC| zl7ZdT^>tksEjfS*>5>_;m7Rl|^w44D(hTJ&K(Ttc>=g%34|tP2PnD1`lEc>s#G^Ym z4lyh*Qb}cR!s$q_P6<}xg}YVpv9i&Uqu4M}z$pwOKcmrqPvcjS!F(wqHv&;ZQM7BYR|;=9}}2ph(?&YF7k0pQMd(0 zD5ED0wJJQn+yWShJsg8Ol;j}K?#Zrw6D1)VZZiAWUcdp7Cd_X0P~CL-8D7r{Mm^&% zy*%S!%^FnuuJ+0!>(X;1RhKjSskEy+zw{ce;3qa2={68yem2>}13tckajZ{xGMm(G z#E4>5jbizh0!(*Qb&BUSNTG!7v~o~%9(1%HhjN3j*l$F;p+r%!pC<5Y!%iB+;n620 z2c$=!R6X`ZXw2SP8`H68xKp%$iTvoHOK!$H9jw~ci)abg1 zW>VV_)o4X`;Bl2F(3lO)Fo{U$z@Zn`t2i~pl|jiLjsJHvyu{(lvZrvK*y+~GYyxo77}4T7}kTVohxmThJr zWYwDG=oR_n8r{M~i5h~yl+swajSytdNl_U-q|McYB=bXs05O#}yunAL!x5AFo6+U0 zbt8WQOO-EQo{*h@E_r?F@O{BpE>(pUnzGxrE|`Zl=l`NP0Bhs_4tK5de{X&Nzmlif z`SPGS0QELn=Ks(u8-}T0KmUi0UK3|=y~bC{|KS)C+jG}Z=pple=*^Yo|G3h&suKRh zfw_Z4`8sZ-&KdKk@F#7?ZkW!Aq%Kbz{;ikaWJb6xo^e}}T$82O>v{2zWCg_J3fM6DvE$z%Iz zii^0L3Lzea3a>zSt-f2U@4lX~O{*1ql|olE^d`56x-*o{u|FWs*!bqV%<#{+{p9>( zad1%lmHkH1uGFvP6opsR#>cs)D@`Mt8%Qo=fZ4p26oo5j<>ANMTGz#Zu53>vPpmBm zds#bk3tHCO4fjbg4=eV|1_Rh?O4jbHoi->k9GWjrgN3Q5{D6}-Sp*wL|1bcrYwh`xkVe#GBhvptX&J4a(M$c7u2Sw`C9Q{ zJk|0)*O_g@><92};k^eoZs9%M4IWfoP~cw^ySk>oiYV5N z*DxamDZzg#Aad?cY(}CXB%|-izbdqFmO?W0gyR|Oj$NW3oZk9PqpYaj9O{u^PX$3h zpUkc(LkW%K@CSEE25*1B??9BWfAcJ2Lx9B1AsGZ`J?iEiVc^FZ^uv4MASXbv2_gw4 zFy+*8xqno-w`o+6F@W`X$%&(ZWDzVbo?jdT@Ou*F;2Po_1Ammm48UZ*4U_rH2ZA_W$$haqf=IgeE_z_7_j4EqvnAud0Hi^a)4-A19qdN}_nZlg`!|xVkDzTbU4THhJ_FERNFlu-Q)xrFn4q8Ux_(dE5+Z9|wGA@!8fE?sW z64IGVUDbIv6nL6zMhQ@-dPI{sO*&bj9ULwdPVa?+4hbsyU$}^an^`WpBXSJ5dZXzx zc)5-cu6A!1qr>6qCRX|^BvZHuA+n*lNm-bP$RK}+%V%o>fg&J8mR}>r^OD7()?*_} zT~if19;E>J*>jLeakr6C1k{G~8V*dJvbZJMyCO`VeI11B^-01yE*NVq2VT4PwpA zcd?oU7N0?mXjGD~;11NB|5JjYwB!Km_`kg)i~rj@T>Jm5a zt_xjqk_6PZM3WSSj%liYui(i`*DXcGtU!17+?bSDpJQa?>Fh#@Q>JP>4Fp+A<%GqU zC8?nh!R4X^5Ppd+f;59PVId93uEd>Fag+?!`Uc2++Vg)`t%JeV@qY(9=Kas!?%w{I z|69dV#s7)d-SU8SM)!}54>Y>7QeF_NZ7<6Y>cE=tgyIY-V+nPL%{ejww-eS-Lt+8; z(1pyJMXX{G^bQPi%w#qH7e_bS@AKfj=7`(c1E`Mw+ub=b{eO;jhHL(B6_2_o=*@1L zW+=@fKPSJ1{|Mb8FHy+dszFUEcXhU;D0I1O7Y6}LFYoa}Q8FF`D1!(SXxsB0&(exN zX@Rru4&Dau3U~7r;eMH+Daq?Qm z9Hu;|_a%y>;JyXA9FvsRTQ$y~aAL`%w;MdEO7TuVnel_ww zhaM&4?fLFPe{G~lmSswELC?ytJT2>bkmh29gA4I)##@P z=VW<&h*_m?ss|}TaYr5a+Q;Fa?y2Yh=(p|nEQHTO8K7$Tzulv~9W(#a(b4+;cO?%~ z>oHS43`VmgU=B@WhZw^IW`0gYYnEDEXvh?k!Q69EcBLveY1a2or4pik=Nf&nn!K z9OKXfju=g!K?c*9{POgNj0oN|{?~Md^EYq| zKfa>sKkt9v`u%?o`+s}4+5fxv+5da*zr^nik3sH%%@~sZ67l!pUQbtT>Z(#YdsNLR z#d`o=&2SFL#>$L|31z4*+E0KVrxQP!O<@)VY(@n>W;%F3Abb!w+0uLv zN|W>o+(6*xV2W@~21C}u1K9<~G`2_QG=qdCq9kYg7r}GR*&`n_bKjf$;(mbnn6?~7 z`nzPdvURBJbo{sA(UzQr4fp@%=Re9H==|Rq?wjZT&TwZP|8XTxlc|hyakEt$2Z7a? zK%aWe4%$=-W;jRFmX$^bRyM{8 zE#H_ROl4!NP<3NpdxEZ?2Ynjs|4BODe$Qn5S1dAWxAwooz2VTZ|J_^5e=B*aw~{0s zi)gr9%fogQeiM02y+WSk_bEK4aYIC$;3sOx8Y^IpPyjKAuSLwMLGd@BZOAZ#ed>mG z3^*!se_C%(OFvE5|166!%OcmRdGCljF1*KXiEWDe-L zjH|JcAdF)sozh?8Jz2aoWh?n4{}5m07wzr8!kd7;r9Z4KM+A_IQy6~a4YX#Zz%Ubf%+*?5sFfV%yEZ)n+n9<1{} zuIAD1XUX`2IKugon?H|&M!}1L zS>R10N}Cd$P4fvbt6>Dvx$HK>%IBkP^}5j?H-f0)c4Apg_R;l6eM zvv;ue|6j?Y?f)_c?XufGOy=LkmQVZfKz#oe*q}j|jYz}V7TisE?fOhhBAT&BJ1k;s zvqVx#Qm9+k7VlOp%}s%XsqaaLJIcU zkilI3If`H$lAjK_js{BPX1bdjbMP75!h787ft?TKPL z58P_Z$k8amd=RR?HQS`o`T2NKH9zU<4Fq(c*%{%)DzPJxRn0$3{!ysmg0EAH&IIL6 z*<27oKxhDdQYj*R3D6YMXwtOpE!smL+#nR2AuL$iA{eyNphu>Z*JxxNlTSZXOwcr* zb~D&|=S`H_n+&ZxM2j9|irtp)_eS$2bGB?^)$~aW2ZP=Dc+gFZClx6f8`n}%mk zLqD{_r?3e2?L@;mG7GkxyXUo3uIo%?!Ri#er+_719GmXC;rN{~-h1nG%Qq`(6}5tS=oagGv_SOV`EA5Cyp`J{bE z_~2!5#DV~l@z;@6F8Re+l44E`1sOM&5@8{kol;RzBRCs%Cd1e$vISEKJB>k=Sl&b^ zH$?J519`ks8gC$p+Y(is3|=aMcP@YPv2n@Z)-btQ^U}d|_x0AdZ$=wS` z-OXg~w$!hoHb2+&@V;7!A|a$_;;e{#WXmxQ7-#=@dv3|RuzOV(eaTwlcs*5&M_u@- zgFulij=e=NWVKtN$2?n{xYY@=9G8V9Ss|q=DJ+YlC`SN(jBsA$KdtSRTh&u?>Eu=v ze2tqYJ^C^cpq)J~uBIBRv(&SxTQR+CC=~gWnn}<}Ep7`6v0cH-ZGpE6E4a4u-^&QM z_5iE1|Jpw~H08hD;adJ%$z#cXFFUjS;y2|CN5I|Iuw2Ts+|-!nf_KP zHoAy8m+#nN7^`+xT(N@)v&c?H#?G%`oxnzc9|M98mZ5?qkhZZFcl(B204YvC_NuJt zzDwh^R{Ot5RNZa-kD~)C{^Rc6?%Mx%C6BiM|3b#MJ1a0TUA~JGpy*7eM*xwD=O_w6 z62*YVJAs*!e4tQhD5eQ=W0W}QIwxlqd!@9QCdLZ)IFG`}KlM}W%2Odpa*FIe+(@m;F3N$3Yght4Ai`BBjy)pJPt#dW4#!y@#Zi9m0dJi7=_CrU z2fTR{LgZ2&2YyNiS0Rmq(~y>Av^>RN5rwduSW?e=)7XNHAwd3dYgyfd!!Y1E*Xdn) zhNd)sN0sO&m%W*^J@DgTMs~qPGFSC9v?x^wMsdOC(GS=EV={x1fY<+{=A|}P=Jo%m zP=0@Pa`js&AojH!mep@b5mr-a=<@gT=cVn?kBc-zEB4iGP~Kp;O|6_w_j+Ixejr1g zR}=z6V*{m)SM|uAYP3cTDb2+0V{#6$L{Af_=CEYVy|5{01G481%i(j9 zrUVK8j?ch}bR+F+c{7LsT(%5eRRQ0!67bgyS>vYS(x@2St^Vq_QlXT?FoRoIH1^&KH)lz^+#lb2_P)K?gb7>juvqZ>a4o=Ii> zz-ZO0KhCete|~xP{`uJ-=cl4a9$}cgCMN)piN&&6k`P(X$BdyQlZdY5h-F#Z90HVq zF%1ix^|t7{4AS)nU@|vZGP)O`OxawDLuQc8k`w$ph8f*h%8SrtP0IAZ<{0uq?hUCC z%}79`r=!bM6 zUAzGyf-E>TpL;a9AHau&B!USS#4`i>IT&F9g7T62%tM(zk$6LINYhaa@jcGr)Shdv zQ9_C=K!B^m_ixTlp1;3%{qq05e{*rccXMyYt6)|Qy%q!7|C+j^Li$mZN4AR#eOsnB zVv3^gN;T9<{}WC9F%+2@n=658^gp{tyZdJT-@W~{|MyBBD?bArVx0Q=6o0W zAfrcJ+l5i^7tEbVs%r{?mgm?!ehNHVQboYZ`m3R;p8yilQ`4EdO26Xf{}gCi8?r0h zF{-APWmD5s%OKcLZY3ix&N=vs(@NZ{2uueVOc9Q9q$E;pZ&6j?qriK%AV#@A?go|I zA1{hSI*VhLC$CK1D2LiB%6h;%AH7ETWd<=!@`?~;8#I|-1XV4UUe!B^@BDjAvWfN@KZS+`z-RUPt73kunydm37oJsWKuKenh;|v)qt*EzMA2XUL^ z{|)lL4v)-(RTJlgp$$G4k9UxNEC4t%9IT_5%ngl^SMFU{apj#7`MO}xte zEZ4TW4VI$1r~p60zysbS&r|*n)+$&mK{3+mHprzmg3cEE=Z_+ouc5}Vwp&u1cV#i} za*5M3@Dl;kU~g4-RNgZEw}At>INgd~4hU7D|V-5xA<%|d(|kSAj?iTU=SLr1C)8}1%6DESa`*1?s4~3 zB?->1*-dVsS~^mE89LYBVm%}^i(LhRC|nCj`dUawBr9#l;z#$|3BP4 z+_UokukC+U^Jx4Z9p4V4|513~1@p&y@-Wt)7-sV*fUo^2+>(D4oR@uPP7CNVc#1-% z;en2T0pfl_)Qm9T`4|R+fpxp5V=&+)b?$}1%O^0S(0m|;T*Yt44KMezG0Zh}lyXXL z|44IvrYK}LbG%Ddh$qflRDxC+UP7M<%F3L$H2Rfzqd8bO%lAuACP4*7A}pOd2*bs@ zmS)jZs#lGk8Hiu(sIXndL~BDXF892(NLn*_ zb<_nq+U!+n*JuKlz^t0V+ANk`ET7B9d@gTAofEiZCRfn5D)NlmZ>Gerv37oIop#Rh zvYGCj=H2$GnOB~i93>;j&l56O?g?n)>R7w7&?SLG){Qm#^owFWr4*oz+fZH3oO(kp zav4RQf=%kxslP2epX_GKe6R8#z06RK0u-zIiabcm)D>Fwl-Ctb#hV%h#K&^;vXLLh zH-2#YoPC#Pr@+Y>4^Sbc6!>IYdXJp6lx3gtj=ITZTs({2l-(+8lxGF>!Jwr?OB_N$ zk6D_EBuQ$sObw)vaDs4NfD?bQY>akwx+54RlUW?MUu0E>kWoRuU*G-_T+cFU$wP2> z4f8vc-2#+sfhY$7HQ&J!J>buBH1+d{NW}NlXeZ~jqa2Wl0nlhv7-$qmW77e+f_X05 zp}^qBG>(EOkEzir={UHH;#jLidvi@s6+eRj=cGX3V~Ck)hXfX>Erwgv$PIqX>EZXhEY9XW75D$n;%3?c{%ULjTb+4OpH1$KIal|GB?=u+IOrl1JqK z5{76$`#1`^O9LjvXLI5#Vm(iffL21g-D+bAy++EHMt@0^M}8dr8ydlg*}aaBh3sa? z@C3>1SyMciZDuEyyKsmW3e zsFr!AU}g46Vb4{)fh8C@WCYd9Rv4QUbv$0f>w(P;Yq)z3ZvGcPiV46%-itHnhxfpj ztry^(9KAA>HalnE5nYI=K?T^rPslke+9M1aIpSjEhwkupeJf;+f`p5>jbqD+3HAnl zm_>wD$w3T#oKuV~f^4y&xHo5oGDzyMvsh9Est!vFjZ`OU#nzwBa@*urJ!R^=V13My?=>&uD zweVlDRoN2wJNAO64Apfsg=pq9s;ER$E>ut3=}T~}IR*`J%VZ#dK(a$dvZCLQl%Fhm z)D>H4a+S19@t4YZ=3<17ne*p!2-8!P-n#>8mYkRZhRHg(g zS#f`yYcoe4v+^~=_7%*=uz*l}cC}aHMM0BJ6-;x)^mxx4GHf;HpPzxB3J%)mw@+rae~PX|r7>e|+_>_IYYRrEFjSC4 zc+m^O4b1WCft_W#Zh{kp*a0YEaa?Ipua=+ISSiQsV^_Me8;%mBqB%j0TIOd`#q5Dm z#r#aF=o8$ipnoLAwdrq^*1mzq=`#IYJ+1VAMc|VT{l9j0_YQU~|F6S?wf=7vkH)^e zkui5V;oRhO`7XFNr8iwG0*hEjCO>AfVnxYvPD?K%S&QPen~N&GR{?XK+O0w+%^i2Z z1!W5?I4_yO4>O2!eEbA}Ae|lac-jJ*_&f;G88c0q!YRt`OUtp(K)t|Hip9}1%IUep zejPv2bwOrH-Yny3FMW)oWDJH|%o2v#_t0q<;7*)g*}m+~ zawsT7tHfdz(XlEd=w?Fbi_70-^stUMvW2_!t?y~9V_jKC$Q?&SIb$V?Kh@1|oX*6# zqXk3MMWz>*zgKuf1bz(3usbBAq9*C1i}$a+*AU=e)!t317XB!07j>nVI~5ArGBm>86CtKH z$}W`NreL?PhqgTRNMY)il2z73;-^#2*c*(gO+b>FthVS}14VuleXYyJP*##=o<`}@ zGR1pNlk|2w#xw8}H47`Bk76XK)NZ?hI*j+u8Q>{a?}Se0!&` z>e~JhygGYTTH*EU%RhFXs}(2`V@UY`N<+ha2LLZ1?1lHgo5O$pbMSVj|F?Ia>Hpsj z`+s})V{enZB|kq;|K8j1?COj^B@mQqn{Ur9uV1|S?OpWu&yc?QuioD`bPEZXWhi@v z$K|LgOubWhB;EV{9ox2MV%xSo(ZmxQlZiW;*iI(4ZDV5Fp4fKx+t2s+KX?zi4(gz; zx_a-b+I!ufweAxKqhbH#fcvju<{eFYo)8}11}67u1h4!6b`p|!o!SCEs!dTJFE$bt zAD(@IyFW~lJSc>`fEK@YzwS@7_oXMNf@*x226cw@p6Hg^!b|+Qr%LPhR=Ly|IaAU@ zI!NBli22OL>@@8^mdP(qthc8YrhmR zf6GxW2h_E7`A1{k3}SdH1>Hh$j*$ckB3ylZwTfnLR4fvKq%qJ+52eGZ6f=YDZfS79 zx4VS@m~<2WNtT<1(ayy;E4Rj5t#1L(;9YMjv!UA}C=+)9N0bGt-6C`}I&pj1-i%Rt zR>gj5l5tR`(NSfyna@KC3ynG6ysDd(iZwnQ9ykk4ci)(mZ4@-PqWl-t`A*;%bxqND zE)t5iq1{yqheq12_gDpf<)6o37Omy*H`j(3HIhQX`3nRKP0^7nU8{%fu-{Uqh)P4i ziF#gV4>n!xZS$u;c)Ux-1`BTvBGnHd%O+rGD+Ko&sBjCK6SyJr+O-U--JRpI8hUab zk|hfNOPF1^HT?0)QUhBh^3$6?uajU528#^2`5N-C>y35S3vcpONOT64UlwAiMgExd z-VXcZCiNJ;UbM{2uQc;l4moivclXXj!SJ^^frAWphR;hvV5v+nSgjP zD_ofkfIypZjF)l%_K-T6xVMi+Sz3^p3a&Jq6iy!72b&NN|Jk|%!~^3MlZcJTc@gBz zQ}!260C%Wqs0Li%hi$aEdNpcd6C$yqfq^Rn-qHB4%W>hox$7O<>yDly>d8-w`dw0% ze2ElvPLe$m8VG6=`&5DpGU!z4qTmac7USAR`$ zjq~*q(W#jBi$}{X;s+YT3vo@`yji?cO2hL`DYWQ}W-Q`F60?&Nw_g!n0(y%G1$C>S zh*(XLK11OBW}(NFd{I7NUI=8(sc<+FJ3=Jf2ADjF=d@sV*f`VR+QA+4@GRSBX75nc ziiM?rvckgQyQN#GkH%=HoU_ZGe=9RAL^LEV$UAEpS3^Q!u-1BMGbf5UKnt?r%K2Bc z%VZ%p7f$vab}!B~J&@jJa!=Lq#2x1R@OCG;n*&$S%`mQD_fqS)Ek?%+Yx~MUXUc^| zNq0v^9;ni4TwIE|cBNGecb*$)Be=0VeJ6dI%sOz*DD|whyxxdLbZ%6NiDU8Z@?00v z%$(eZoepsbZ7SP9xCvE!!MXLVoM*L-f>pc?MGgC3%w-FtS7eRn6Zbg>0SjN#1 zP1JYeg_GlK+|-sr9gL#mcf9Vj4rPtz<#+aIsj@LebwrGp5B^Wl-15u`UxR`PwgRVg z!S zlsvRl$mM5>V_D?N!y?Tzh)?()M)#f%qx$rl>PNAanLf`LW2~;9t&cx}!uN4KKcqX{ zf%a69#PEzYCVCAe8G_BezFbqe5OpfIBLo<1_cS#K`_`VoFUjHo*9Ai9Qe)}Kx7f+5 zCUBMnmP}?lis|M8eBNBrRH4~G@7uT)iW^Oh`4pwrtU1^c*v#{E7VR48)!vA`rM=T2 z!m-LHcv9~_2i=$*Lt{Htzkc2l=vPHl927w9@k|6wBQPF1S)^1p+GVn}SY+cnoPW52 zuW048zU1Za`Uc#OYvgsB&P}VjnNIUWlvS?uHVtJO6CB@L96~*JSZN&QE2$7hs=enf zz8NbLb)0}~=b%HHs&cfx-s0i0r1;k_0moegsRV8&fY$I-(aBf0NT3|lu;BO`qr{5b z(jSG#O8!9{Wwqd7xdTw7PSx1yUCK6uYkp$cg2P{vwCHhO+P^Rk{1UdtrJyh6Z=q`V zv67t)%?Y}mUI&_U$K`-p33eQ7&~O8GhAi@zb8Bkhwa@Sqk8sQ`;`WMjRfTrFhL97! zYx9mb*N|(Kof#=1qv4#;7;DvWG9ZxVDhr=zPeoMo>U~YrHc(zWKPYuv{iZH#aKWmM zBE0)K0G;~1FwHueHL;ONGQ%n-#si{eo}}JkmEvd8;@kSSa;+cX%FRV}DsMc*Tq0Id zs){lb)rj?!Z;F}>E zq&}d-66%P~@_gbDxf?SN!>HdLt?}L^h=V|XTY!#G`k*}5yKj(fG%tZ~6~U*Nu=_;8 z_@!UVppnf-=YPywPtY(fOmKCj`Uztk<^|VN;c4@#ekOcGbI^}w&O}#fF1OHl2U}{` zqKT4+)vS5kFE+g~rg&m!V^VM^3y^LdE*e0|H*P_{ly0byQURVcUF#Gj%n3oMKlX7e z_EBg>jc%JpQIECPH__^;nIbk(&lV8&m5eK$%c;7)W|f5n6q*5Rz=XO#Ki1RHq~Xx% zD81Z68H74NxZ;f!+B|9bggRZI4z4!>%r33y9!Dfp+$nW&oaJFER5s=s8M0T=+x}WB ze*+u^PW9yu@ZHpN2tf-xW|m)A^T6;$iah)4(8GoUN^Xhx&M=C^__pI=@A345XdbEhUC}D}y zR)WNCB`Rd2g+#_s{@TdFkQoXgppTnv&G%Dj5EoJgBGs17dVx>Tn?Uc6$`Q{X(DrMtU0ai};&%2upRtF)ktrseJO{K|BY(0(K2F zwaYy*ck@?XQ@4Ip`@P=>th`6VQtNbyI|*aQ=4&I?e~*+Dw(o@krU}HFY1^Tj&9=&H zB&*G^Y73G}oFm0%Yl$L7m(`El-%iyIk2x>M~KR>bs0HebO-;Z)^jdbEIj>s)3Z^{$HRxMq@B1gAq|`6==HVAZe#nb_TyGNC-$~rSmNXIA$rTu@J)C5JnfE z9HY(1rTEeW-MJyU#_&GS2s&{=smH$7Tbd<)8GKS(nog&RS_2zYSf+j#f7J`};Pg^?RdtcA(;|bT?f$L4ek3CpYEU9%2S- z3`fNV4uOCBg$nr{Y|%9+;md(rAltQ0HbU@YFRjC$Wsm|LESnpMUmDEsOz0 zr{{~GK*7RppdC`O>SvHPxbUw!d@KG0s(47}M0dfGX z7YJo*pyyCoOJMEb|H(NHpyPuV3Ry9)*rV$ci1_S}@gT8QS%_0@9oYc7gJW!s;f-bM z-@%AK;E;txUxKrVK9SNgw3-PSXPM=1ua;BVCwnxeW-IsVZu+e)FQr4zX(igNV!|do z2sAjiDho9hKwv8R<`nQ9&O69?8pV8+)mwv@LOHyKlXUiv39yFkB46&Vt{7!+#w4`_ zOdk+Rc;x_*J~1rQ545}LsQhRq$8}}MIqZFlKJ&xjoQy{oS%gxVWMZjC{$-ptvP3`! z*cxf;YA1vZByxRo+o)TWO+2!!Ne_inG=Bf5FKQ^1eFM7j4w^{h@g0Dm*}#)X5#;&qhaua42{Xke zqzW9WlCdQfw|fG84oYeQMG45Np23ucP|<30M`JL%l8KD@#CymqYWXeo@Gm-ZOGLK* zMieuQ!vF(k(_MJN0fI@5%t0sOP|T0GTfo1-y(y?uw!d z)4o?$n6EVkshSIkAqJ!PEgGLt_VN7~J|;JC!?PpKCi;nCyf$#hn3?RqltUb?=x>e$ z$!==+w)G9O-XOJzJq9FPR^hU&_A14@AJ~UtQU1wiseG(7((@4rM2m1De4s$BQOkID z!P50`xVvKoVZg2VW!fRGha`kcU^@^WrwhUUQO6pHv+WljRqq&PsLidH^4ST0V zQTl?}%`DMaGL_F~zg1w$;hxc-JR2FLeyrtr&xq-|gvfmjV&grIpKrM82yEDda|SO( zwuDuobSAJPROl6ph7T?;$&WT{T(UA#EcGs`+&%_BK<}n1F?ytoRWGmLVpw)}(5N(H z$|C~0^MRd987~lb8-{`7-}QmXz+2y>?GhQno13w6bcq_#6=hzF!nXmuK7<#W$o}XO zX{#KXQ@kmuQA4h#R|5iIhk%3_6l=_9`1;fR-0pnihHxGn3i7`Wrn3F1;`F~bG^Bql zX1^4b8ljjWq{7m?b#jRbwDYb#7$@6WXAZ|(vgb3JiL?C}z`}5+vSVx8O%``8(ty_J z$PJp(>4$T&|_LgZI zP!>0e-9V`>iQ;2r-o=)SrxZtXl=t#bsWodO`OSGwA&`#n{`m*SNv9rOqfSW91FGTl z18%Wuv4xS(HpM@wv2eBBHE!J)3SB91Ps2{(5PQzT$bk`u+(-w zXSqrEB%)Np?7swi;vFB_;2m}-&DYC6Ctid@l^m8EiTX(`QK$JP#-?Sm6UUj3a~WUC z3tU;wb74zmGuiE6P3tWirFNakb3KlzwXu>x>z{JPnk42Xv8qOwolAM@%u|q)0JXbz z5#wI}Bu)-D`5B2@8XmDuBoT6MK|l3GK?4iRF^sdW4bZf)dai2@* zt8p_pbe|pv2Z%4HrM+2(9|M^|{VW|?W_uM$OO)KxE1s?L$h z>iwa^1?3djN~!kHw@}*G+2sk|5nT5j&&0;Dva00d_WDC^V|*14fm{nLwp^d_YuJ!R zO#e@26~4LZ9ZQpHQKBEw;mi$ke~7e%S;uw^;vpJKM zH-)Z`@NuPr@V=d|v2jhV!z$Y9H-V@zLnt424&kWd{EDn-0|}wj6P!&6V2}J8EvLI+ zh2P86WS}VCyyZVtS^dkt!`up^P!F$efbfGYnC}=j*xdugBUJMZ{!ib?uE`67H()DfFDtf6p)ElR5*ix=1aqc4I$9|xHMc2Z~^H8B+<)%I8UbGV;!c8=H4|K#P z`L{KBtA+NeXcBH7;mtBY8HnS4@jQX40QS^bdxdVBn0^>!hOH< zQltSwK6$3UZuQ~X#0+((TD%f zC*a-3V^o+?^D=W)yEEcWZ{|<Yb@`AuYZv?rqVKd=1DL?1#W$+u zBq|=gzYlqLb$Gs7QXkW1z&(c1N*_P$Ppzf++iMgHz3$MDQ0{X0&x(qeXb zdVBkL`1kg)|5N^uQvg!cQtD{BPz=T^wGIq02mn5T&y|h5wW>zhDG&+EF5iZ<MSdEbJX@t-2F2FD?3138GEke6#wShkbE<{3ky9R#8R#ID{-tht_X3KMRz%|JF@Zd?lUeGG@(|5fg~Rqsuh%9o6sQenk??9OCKLEjSvv>pU`=aP~!WJK}mgBBzk13tht- zr7Y2%(CN#4SD%!5-KMu?H(BX2qmvRzW(!szonke9Tg%q1IDPR88T;D<|G8tc4cQ^< z{|fa+`N_%jPj)t!k0N7!IdB@PV(_nLFE73YS6iKp^Q|+NSoR#m(t?;vTg{tdwWDLA z@y2ZJKN~yHSW4_vcJJ9|FWNI28tVJZXZKb!XhnhS4D=Y|1we!zVpw5q#XNBJH|}Wp zB>wd_pWtwDTio_Vlx&2}WkLO_(88kSB=ec*^;B3 zkI$f_s>HW(As|MYSAN9MG{|8WV7ch*l{3}ACr&Vu!uLUX07eL2xT4wC%R*ETwI!ea2hHpCHz1ypwDL{MoVNW6_Npy=G~HGLJWG?#{cHh262!o-(U! z;&tMlNm!}&3;e)xzOO1o?~CmwINRY9{d$uQbtv;@BEfK6OKYl*B2f@nop8@YKLkgq z0>(e#3?TB5b;L~Vd`#8M40aY%?^+M$taI{P1PkxAehmGCTKL2{)WWDe^;962;pssA zq*OK@r&`UJKur8NYxL9cH-#?qJ=(BT4?tJIcT6@zV!D>JX*f6JS8HL5c@^kM+8JEX z2U>X`8jgeD;osp?KLBjsC%`V>9{JbYjXte$kcw;@^&wy?DA|t4eTspqjN_-3K&_WjIqcQXSf`c*y zweVGK!7nbq41dPl9tZrxt4#>zH_9ICXAqJf`F&_Y+eCe6LV9H8S_eHW0X|FzxjG{j z!Gh1NONcw65ZHUTAxsS!Bg>JQqlHWYr2~8m>wisdZBv$aJY6fuYs)N}a;32r2aJ!> z?O-RSBIV*X*j8tCR;`Z7)|*JB^{B94`98A-KuDJ&2 z-1|n|ks~u|QGd2Wp)=FIm#effCVmiw+w4v8<3izlVOak81{m}9r;&QJazX3Le?}d5 z>L9+4q_St&eqGW)`dR1!yTbJq5vfioRxPwxA~YVlqDcZxpB)#c${HJWkFiW=0s#fw zGav{mM$=0DR4lkjEkK!gfU2I`fiCLy#*r_|<>o3UVMxkkY;A#TnJFsUtWW1K`?0#< z>yKj6n)#z7ZiRZM#Ba#kC+@>Aji$Oeu*>MB1ZR`U;#-93nu z3=I_sxV|}Yo&weGzv8_Djuf=}fr1is%p;$SWSYg3qVx--@3j(kK97Yac4FTjQ(|SX zFWnPXam)hs(~;paMfImhqvh*)rf_*_mGv+5vFL@qSHdRr0xxT?=s?_%?^b$MV^l5R zr7HQm$e?p}6+V^q@0uUsPy~fZ4B~P{#J4RBMZcvGko%~xLf}G@I)rCxC0=RP+#LvS zi=xb$&Ism5d_^UVweV4(etmGAOz{9_J57L9;1{zRv_65FEl<4+r&_OFMJB3 zwRz|_2>sW|?94gQPjI+nRrc3d1Q9P-o`3kJjCUkfLa4b4J z13_iru(xOQr|3_>@vgH~H+Z1fpFxTo!`T;~?kz&gez{+EZgYAQ;7=_=U2!NZubT;F z`Di_haz;H>LG%T7fQGv`>_vj4Q-#`!sJ#$F=J7OGZdHB-9J1>_yXIh2Wap)y8C_4D zz(7HHE@t0-mwGgnnE?{gD~eR$&dJrIP8=bMQvx%Vo(5^ZJvYWw<*3AUr5sOFGOF_Z`&eyz$)gxGa)&7#~&=#xN1x#R$4vnJypp5p{5}o(L_?13MUzd`D zm2sIbY}tDsI^>K?5Bz08t;8nS3sU`8C-PY=gtHuh%qA8>%)G7FP z-*ryz2>+f;hpe-u^!@UC0?Ah1=W^I?To2_k69fvpUYl5t1AKgB&p(VAy_)WgZ}wfI zJ56A~%IwFZ96wYgzMacWCk8xj3_P;WBW)70!8HgOA+Y&wCm{pm_iO^F1{sVUY=Q)_ zq1I|%)2YR);q6?UnbB&7`kVP)+TwgKZJdF~SF~fMJa>rbY|jUDMS*IaH=v!Jt;Pco zY4s;a=k6vu0hK-890eFJ*@Z)HGMz2X{`0G(n%A37_8C7E2?@;W-x=v;1|@W#Ii593 zuTou}C_R~V*|9uKa<#Q!*difUnDSCC!C0w2^Sbg0vyk^2hVf_b7JJ=Mt*5$*pcFKD z%o+szdATNr{^IYWT8yd~)3|@_5nHi*q$igkxZ~ZmzZNX!vMlhF_lhM2e~1`X%wWlB z9}pJ>jO&JCkL&Gk&J>Cr(Er8~<3LaeA?%|r`5wrV>p&M6!cVI?nduCYP>1Sb-W~JE z*43U7XxQXYx74wa;_DUCehT?J=ko0eHS-WAcnT(UcDTs)-c&nmF=mN#JtmjQHz%+Y zQHiVJ&iUF&um0DPCboasX*9hs-?1wq_0JsVgjYiu6rIv3Gy}tL?IRWJJU2(>LCiI2 z*yb4X;Y$~JP3_02-QNO)q1E?^Ze4*J5!kntZ7Fw{N-Sny%|Gk_;dt#ch08D%aiLfb$dnt;d41$eP6LTV zc|S2WRxj7#$tzyZ1-~*;-tr;>S@_yd0tyhWnb(MwlMv3-3~a|5O>n_au91-LpCN&^ z5^W|+C7CxBmu!5}WY32Q>Vjqo>27jn$+NKko+3H#FU0p)sH;^1D4RtT7M58?%4uT5 zEWNRcD#d#Nlq4O2!J=GY5RJsLe5CTjN>2r@kIyUz0kW z==MNx#c(>Q_@Ux-kU=|10_%(M5`Iui|0CDOl;OY2{+t)l7$Ajq(i{*?HSyjZ9=UPu zl~ehu8_BBLbJIMLHbk60!_fkTGX6&JLC(~|^(^p?;wm*E)YSjU`^4l7Y+VE{Z2(Bf z^lwGO1mVx`0k|^?(;(_(e^rR^PhtXdkHp5EVk>?K|HQm3#K@}9yMluC!CNH73S{Mo z4FRMK5?Sm*$a$t+V*QAa(_?>P^LTLiVGK!{qvq+B|5eQhT60z03=*No@Mv;fFRs|b$>wfPAshVCT zys)(IkzBX$`Vlz+Rt$P5i{gDP|oTZ-F zsZ)<9VzfV40xO|66!l}+Y}~nN9XQOvd0udL7VHevgK`Up$6QZ+VxC&Jj2`VnWmIs! zqJ><%-IZq`Jv?S(oE0gq&MG=3zi{AQ*A%@SVY}GbJdZJCH()Wc5ihVrN$(`C_Ap@I z489&-eIoWQUKW>%R&j^W_ zr3R+3K-u-&yl6Pu{BM~D%FFjSC zzXykNNd!l8ETA*MZIq6{MR zcqQkgM@Y?1SCA?P;WFRNY5|x_ zyoGUo)7+1UqD$mYS`+T#q?ibqL0#hCY4PMi`uowK=st_f zIu}3rGrEJaU{P}V&nUKVoHpyf+l}F-ydS%(8dj9uS&i#D(Tlw0enPMdoJXmHDux-t zvGQXg$ygH&1upBAe+gJDm%b`@U7T9Zv{*S}(~M-AnuCq!e{++T7~k55YJxuFG4+=M z?&G6>I3axSSthBY0i9}i&f-jx9GT!HNHD9dHsKE7GG5VrGtHmRaj@v%V+E(ya@C3R<| zsrCcL3KcEcsk@obG^+IT&8Zfu#t_t5^0{+0cl8DYP^+%J9phhCr}b16UjA4bkw7kE z^?dT~UQY8{uL4Phv`2f(a&1wrw!uNiA)Y<_2?0Ud&{?w?bxkm2*4noCMaW$hFcj8Sc!Tb$ zV^8)B>3NYVYxLZN3X=SE=d4XTlH2qTQWj=DSEDih8HHaRm72FAhq+6o# z>#;}yt+*JlL#DM3$X2!iLVs5J-08n^&IXxN$6118WxVt`#wSP+LT+n|ZLU#uzJMoq*RvH+M2R9H3 zQJRL1J+4mO;&e|;#PK-4@##CyYtPDho*8u4ReqyVe&g%w^v1v`XWeVVqx`9Ie0pmKsk3tk_7 zL$b^1nuok|hb)=!&bC+ltszdXVpCdPMlCwm%el;fG|z+(eTJltgh6`-iL_Q3>GCcD zDw!aP!TA(JpIPAiwM?|W{Gd3TW=J84#q;>YCOIPniQ zrJNl`{*u*vMdSmaXsk*;zw;Uj)@-7=w62FF=lm+0T=5*~1v0x-Xn|C#H3(lg`Q#9` zvHqURtTjA!QDWBA4duZ^F+CXRpIGQ680H+?{vvzO`o6x}zUKKh>%rPqk*ICyCQEt5 znB1{4Y;EXfZ9*2*W$=F>qe`C_Fp5pcP{#Nptu*DNR}a;-1Dc20FvU6D!CjHcf<~_- z7RM=M8kuyF5LFlvD=_m{myv??@D86h&pz5R=TbVq_KqDl*vJz&p zi29PK-S-ENbv_&zU=ol&KZu+N@D+c74rJH>%EX0u??_{rikf#4D*Xw z=ZR<``%rGV$vlit1*B0YS}IKErPGA!6e8v`H8(NINH(cj@d40Gy(8y+kV9}8nD>@h zr|gx%awN}%G83}O*|W9!Mnl>U=1MQuH!b-7h6(E?80ydzTT!Ic+Pu&ab>)Xyt;0jy z0~+XHn&z0@i0RRvsC(Zz3cQr5MpF7`QM%KYrIq8xxIxj^Xi=T04N9o~fT-%XKRy&~ z3XHjJ*b#kk!Gvr31I9H*Kde(bSW&9XjCcRY8bX7&hsZ zHz4^1x-w{HZ~8x2XsqxQl-t__^?mA)mQoeDkx3CFRm#~9<-1rqlgWf$DM*#@cU&&i zHCN6aiDj=8VFHx4B87~%&QojZO4qa)?zpghx{1iY_20Cz4L81YKl96Arb^@CGM}rV z+z)(=7!^WS%hRq>h>r%g_}|kT+8UeuxY0ADB8nFd0B5i0Db{h=A@?gxM^xc#yS{jF zFMNX-WtwN?>LRZx+OzBb#46h9IY24Pc$UJ{oxeHAT%{~|XBz1UeXw%LRzt{Xp76lG)aVP-#ar+8oMFWLL8;x#n%Vc|0CKUUMs${7iLVUoYrBTU_Ue zN=)BmZnVa)z6n)Sz6WzAAPVfrgOM+^#|ZH(b5$6vH)NW|fhb`AM@Ei*VrlA8Ga)IG z$cv_41I>8*pgkJr1thwpC^Aj_#}8z3pAw}!YTNzu*~u9#c?E9HRNbv$@*B<;#Ilg1 zPk`dvoukQ-Lxo4-ymk>5U8j&zie0f;{>?TDPU7gVETTInaXPfD$Ng0V--`gNIoGU4 zHIZPlRXY`NHfciezFf6$qx%;FWy)}l9$}BJBn#F&zQUHdtbn6_3G2rZT&AXYA*9Q! z%zS+$TUZq4k=mDN>vC>wsUhtIDJ5?GK#=-6kBy+;XM zEr6`<3h3n7W;F!Ry9QNyHGSqH)CZv7HwgA}n3G+m);{LDIiaaoF$O3;3y2hxhZ;Zw zUh_KIEcDYdp>`kxqCml;U18;EPlXSJN!$<$eX2;IGjKVAq>W1q<;i^W&`Z23w)0A? zLOLqYC}qv=$#{wC$wWaZQpc-m4Rqnl5#fqkU#oLRUYhto?Nn{|_W&!v%mZjgZv#|y zQa=N5>74CjfN|IsGX-B%9p)T6~Ym-6HS*gTWfr%D9 zW?wM_^$G!c(oyBMfW5zd9DxYP$f^&)-}omWzzf(F)eXA)crDz1rU#er?_HVE5!J4@f;5O)@yFK36XUxTW7fqlXgPeWC0DlO_a-42JvSH_+ zV2mahl;-7?CJ2!(fB!`UQWu_V9|5D}B4=gvM(JBUkF;aPHr4GyD7G%=A8%PcUdL9J zfNy`_=82822X;mmoIz=UI5j5m{ap($ahJyX|%|S7UvdR~n#v%W) z9~Q{|i|jJPrF3Aq*ne2dM;CyzF&G(xs3?}Ib}<&<)P-zRZV$9^S1$M6!vOk+qr-E zS`1=rO8Y{0HRR?5YCZf-41h}1+t>Tt*sF)R#4=cPUc))jt{lb-1XBEMfsmOJ1HbAl zTTWijgNZ}T?%8nB_zGZ;qsy>tUu`)ct0fugS+buj*JkY zaGWZT_;tDcEGV1n#bqSX0A=V5;okI&g-R!)33#)(+nS-`L}#NVR_6+o7SD^+=QO#& z9x$JUC%An!Bw++7J!0n=ZP^Iv}VUsA3X4l7u*B%O@t@aV9bum%PIaIc5uN zW3xFF6Kc8E)9gX|2KUK!hD4y8DyqmRE*xo1v<^8c)j{GSIhG*M@93LT967Cn%|1{= zgo68s#jP8DhN^aIWFg#wi3GW5tsk?$Cjg_!{b+et=;k~9LWdeX_L}UW?P{8ee>o`4 ztk=-n%jxLS4?OESYF*kn>fY^guif)gmNnExvKW5^D2Md=HBa!~b1j0t(j^CuboPLu zuq)lCURl}yGa7%+*x^V}q--kM1}@UyTQ`e(({?Ps;kEHl#zwnW(8c8yS5v(sW;!shb*-c~D{CxBA9aoDTS5crl#%$!62oq~fctVT%JDJAw zzvTsCuMw0sCb9i!l{)(!Ho)4|_F>rW&LNNS!tU$x+8IRJ8j{h6!f}t)ZwZ0N$M!>g z)r@CAV~aYOwt;_;>F<$xMYST&1f^fey77BvL0;%PnSAF5d&k&SU7aPZ-)}C%gq$CjjKaULwJmkff^@M52!_t!n$|YV;8rAlPW>x+*+}YebsSgB zl$KxO>(eVY(q@5iU}VzT7|%K0)5{!oMoQX@TZ6jkvkXY=TR}p*aP>{OxDL+VQ&*n1 zsy;xEN@+>2oLnFeCxZ_ITt1Q;bdpRjj)w579@&Al2q1W>H&kr)wHvxrj$ZOZ)(N}$zDDt^( z2YzuavkR)z=MlNkzHz}qcww~p{NtnP+sY zTbL=sXE4Cog%ibpK`>Gfj#O6FCW9(TQzjg#gXu_cxfsaiN>dG5|*>`d#K1QdD~%DV!e+y>e}W zIOU`nhHsm>Au1X{Ya5&gfQzdu5-`j7A9xB1jcFK#Z27lbJCz~Zc}d)T;yt007>Fp} z?6HEb7fN~2ymr&`zd08+Mb4MJbv)^04XlPO|_l7yQR!IL{?xRu=^c)LTq~kizUqFoB5BIq- zu3`JR{7z)7#3nzB>{J3;XSE&-q7m7=^K)CEf@_Bn+#^Ya_i03csOvOxN{(XQf-x%ZM*@=r!4{Nn^N98osbGv-QS4gp!F7X7s^nsQk@3!gYj3 zwhK_+)M}%CnTYBH>-2dv{;}eDIKM5GAjkc+iL0!qh(k{mq{z{_@>n<%7+T+4XPb4& zrYs%Il=T>&R3AOHqUAXan2}SLT+}n!DiB>^Oo?RO((NI0(S+7EnG5T~3NTws+@Fd`J1v)%7!L-@Y(RMx1%F1bH64cY#*!l$0A1k~C=$Iu7?tM1#-&+%k7UCPa z`C)wwR(>?+oOEdi4xKH2W)~D{>oY=SiYh+?Qm1adBFr+48IVE!yaR2=wu7!OFKX`p zixhnZ@QeqbyYZF=aJ!LRtM8sD93Ka=UIW@gYMc8-a_8sx{gFa#4TbrtVyhMqrCIYY z`+fw#Qbi40GPM2J5>Rt!p7fGzagr@#?r|ui93dSD$3Tst5sZ+u>#IVQofvs65Av5M zjX-|mR6rk2C>^3h}p~J;eD;ZQ0etQS+6+~m&doW7_o*KZbx%09kYnd z4W=I`x=HDAsEb*`ufR`M`|=uZbd1tB(@4_wX$nN!?60EJ#(Pqdt~?tE!*-cEW(IK` zf@u8VSUGXTN+A2o$+;{c&;Nl2yYt6Dq&1(tI`=0Zikv%b>r#G63xkFtwLIrzRnu5u zW=gJKv~#TR?wlI6rJB`(nUO|gfCXGNQzNbpI)VDy9+|PJNG%sVV8s|sjo8yRgW5UG za7&7CwdfaK>rKxHV7~sG-{%nNqWtk3Z(Fnw)z+!KmdB8j`bS^JR&AK}8NriURp#xK@H)J(#f{%zps zCY&$1A7{)`uy#I}Ft_3yf42LSiibb4W1E(|GWAs_>G47(R4j|>1Z_rDl#I6}$QmSi zT>h-o+xlLd`aJ#7{KFzDO&i{SB|$bq?pPx{rX)S| zms4R1w>5p4O~yP7lc_O)g+CiWOd+fD1SZrT8pXyM#BAu9g!XcDL@$FArb$D`e8W&y4=Zb>{Dxs7j~10)DTdEzcW}r_F2VS&Efn%xv-tRgeNKz zbudb#Vd1B|J2D$%pI4Bx|LJiOwF^sM6@-A1UD(Km@F8VHPiT7Q2SBk4i@%fD$(g63_KGOQ%)$uG_Ln4vDXe0EJc zWdk1cPxn}W_(^IGLH`X4Ktc97CD&D1j5ji1yzrFK7KYEGIvL8=SYR0q0iIAA#YB`D zBuDnCqm9Z}2!X$pJGbeI^=y^wQ;Sqo-Nb~o-FfS}+GH>04bRAk?}~J7*&ahv>9u#& zg7j>YWE&fc=^_hR7Gf+H`SA~0Q9qHICpvu+&i{m`=+SIMfU5Zc-oWE2*8 z!=PS({wo$j+36(Zi``B;{h)29A#+l}j!ZxQF`wag8~0>2mhrP&DO^U^C=X@Jna1MK zU0QX6@6O%SsH%sfEPM){G`=)Yq;&U|YZLt@EJ((^i9BEVU-<0Zy$Mto z$WQPBbh%af$x58Vw2nw0D3knJpJ0L>MCr>^wv9g*<3H`%ZKkmd^P6C6)^W$(fBP<@?&n@S{7fw8Q0XGg~%Y5<6F};UE#{i zGya+loS!W=;||z6NFAAf7x8fld5r|y%0<&AU_z7_3$f>2igK>!$7-72kDp+p#m9VU z?Iq-jn)2I%7&0URB@ve;bTd(i3+bj7hPpfF?Qvs2+29Va|NjBhKr6q(uG9G6!=aV` z<8W`y|E=WF_&+ha-LicZm%NXS@hiI0HS0HpVKkdsOy35M{%x~@mePaQ*4RM)u0aIF z5}>qc4J3WjD*pC{0c86}a25R<9)n4qr}%h#JA-5Rac4*gzMXBqetr4J?(^*(J8P|5 zr?%7o+dHaQ`*HK_+2!?%SHHcB{{9)#SO3-f`-Z2bV2%E5yY6f-r5Qb4z0IrHh$c;C z)HvI|+`is^vHfcMH_!)gJODc{dRxFO6>VQe+t<EhCew|4JT>|C3@)r~F@q`R8Nf|B9}xRe#H> z{uF)M_ow`;@7!9ovsUeV15eBIU$`H1dH(P34-c*L|6m>eb0v><{)^G=_WZAKS$S;d zf6G@A+is9lWsY-pu1qh1Pasg_~4n{!zT)_*NMxCO0yijjs?PnlLM9iUPy>c-( zy5?_$W=ZI>h2(cyQTTBSY$Pa~(kM~kuL`7Q-Q=#UD(N3eLyr?=%7y@h45xVQHIUCE>E|CfK9cDw((gR4BY{h#)tYlTlb4}>nGdsj<+PwG`!`B3RF zO2((L9~l-z0>v7OpT@hQ3^9?jNk*Gw`(!|VzLqdV%WF3Mp`VufKMRc0t^d!#?%|H* z|FgFLT+L(Tea?GaEKO6jqk0-_@iF9>uT_JJY3j`^@a%m+rg@)!ym0nGA?8W@2e z!&8{$(I^W194-_-qG+eu3_|XcFsa66iqwXcFg;qy}fn(ztud3{6|L^h}`ZkBb<|C0FXJb zj66u{Q`L4cf4(h=@XgOBr&1o={t;aI8HN~el!4FZ{1!c%X<%?Js@p{>FU#0Uz%HsnlBeeIZ_I*JD1MADy^oH3k? z!4IDGv(C5O2qqhwrMWH~zczlXv7IUQ=~fiGAifTcf!$os$eX9ODv7=dUT#e^zr9Ah zn`ltn6ko#ON!oE+{g2M#d9QzJjQ=}2bp8LgSMh&KdMy3#nh)~g6h1L$R(hUGkLN!? z5Dm3pqQ;iLK=8|EK3Ch6wn4xYe@)3Ob^W3{pi;p2(tqix+a^Vf%xF2aQ`2nj`{SFF-*{rIh3^ zN-b8AU6ZJ!H#E@)B^iAb#}EwzlFPm!xTl$Vk%$y9Ke?W5dUseu%LWfGjAgt0B=N^QT&Z)3HPLiG!WjH{=2Hd-|t~W zTmCOD8W(p?FW&$6XxH`s+Bw|YUh)5BJd*$OHFKqmMc?Kl{bcU1>`w(m&i47b5rA9p zN)LdX;cdMD=LycR2nN)_w@QH%OjE=w$Ub>|K=|h~Wkz=Ir!8B=g)ro-SJ}VCZ^OySIqqfhrtqfb}(#uBCf5w_bqP zTye!hq){ZyyfH;EdIT_U)3sC<{WC~jb^5IM^JNl03X7Zo7Q%#!YK>=;9kx8cK8kfS zMhZ1Z2oc-1Xm)y2()ZCFVAF5I7)I%+Rbc6hmQmz5F`LxT1!<-;mU(E?LbY%8H1mJg ze@&bP3-zL{AZW7x9UhkMf7?4+o&PT75flGwlmXL2QD~M=VE*ou8K@c4`Z7v$Gtghq zZa|kT&}!lTTiuh^+IfS9-!nW(&tC~I(jsH2>4p?-Sj_4zyhDJ^sMRCsrpX+>lnVpv z3>O6WozXMq^?EEPJ20zwtzPCts!E$-0;x8A+5VUQUbq-3I@Y^lR-kASQn-Qr8Ao3V zN4Fx40!}>mml|z6_!3DI_+SH{%do#s9_?fl!?BT?fTDYHhoS%k=v~UULqW;GSh^^S z);{>n)5>^shRT6D|H3Q(DHgyc{(n%8|J>bK+5eXE z$SWCC+~;CgzYGz60>keC5W^vgnPmO)Z_V`;_#OZ-Nk}GIPz8+_<>cVpcb;U_|1JrR_dk+`h33$I1q!9QmrSK1v?2;=Mvb$L$k zsmZoB{9l}kZv6zK2+Me>lVYK@kp&I>e{cJ!r2lh~u;TwqcohGa2j6}07G*Gg^A#{g z_-V3003J*wSOe-Dra%xtv;La#YvEQxg?O)4#@s`S;V?#kq7kAf3DG9!X;3;*b1<5m zMy+M9F=5Nzp#U_xV=s%@d=BaTV@-z#CGnSDlkf1p?)#pGu4n0LQ zcgjHbh=0o-5K6#w7H2q()rea5&hj-@Ip%#UN+o~Y?LsTZR5y;v5XJ)-MQ=-kWjFW} zryN6>P4hsEaXcK%5`2#+LxXIz1>=}J^d*LU%;l}yi7JPLp0l2BDMTZDx9IhpNw6)~ z^MaP`6W5|9#hh!=*X8zWvE?$WonW^m3|dVvh4=s`V~Q9X+|7oFCMZK}fQgpwD(@U) z;RNv&8;JYae9GcStjnyP?oS8(FD3L@{6F{icHQ&eoxP*|mHxMk$B`FTBp0VolMrIE zd<^HkT9fO*>J{z_cF$bP!t{!gjD#e%Zu$;W#cy-AYi=TKKO~NtI=(%&v$+VQ-QzH$ ze3jc#s!;Mp`Hr||0>iskGP_0|_N%)A@&x><1Q)rw63~!0rLjE!4KT|!JjZ=W;43gO z5Et(ptffWy%2V3-;?zk zDKd5vs_q;Wb5FigZK(IU#oxdz<@+^JrWj~h${6_HbgrHprV&`rp-&!Q!}-#q*7|izt(v>bP#PR&QKi|zGX=bR8r$nuueoBMThubrV_8_a zL)vLjHKcB<(rMpD)HlU^c{WRVp{jM&l1II>XgtozzAo!Em~S#vs#ZHzNpR4P8nb<5 zwAd)X+@kh`K)@Op{SOigsE5D^2h^|nZbYE|P!|-aJNTryK%=3Sp@F)F6&>gh+vN!D z;sZ70c|!z?>7PdlYLL$mD5y|tn!{I;Pn71MPqVcQ$s1LiVi8e^s-+?dJbJ++N-Pw4BE|{|~i^W)UJdEbKi?_5-j@fWjZ3%T~icd=XZ_ zn(IUgdcS|)%YPhu61_bWk9*SkN4agT)-R}W{U7YQ>wjl=75}r8$65czh%SNy7~noN z9$=xq;IjbFC7cD>%ZA&5JfN@O33ZBHGmBWr`oE=cG{WH(iE;Q?<^)agfBSpR`rq5$ zIauX?T*_0i{;d&RBqy){f2use>BKYZ2>vlKJ-<`=>bN43!7PP+CvxIEE`)Kg;Wb$o z$7!me98`U74WH%S+Zm4qzjP*Jn(*`16+-3w8t>otye(;Grh`2X&~f$RT$z(vA}|1aTj_`e>}MX-Dg>r>VoC_UV=sOSic72u`o+*t!wP zmcj7OUmR66bn<*ST}vYkCjimF8@JRiV<6tKn>$J4NkQW4?GHc3}$51?;{){PQIF zpU#FcW|Iq&T_YGhoKYz3gkdC>&+sc^tQ_VXnE&k$pnBqyU0PHebf=?UZnm5wJyc!TS$tNOB`=i(?PFgxU1L!9LQ1|=u|96X^i#!j~y!zo;F4_L!pMg4(^Ry|!TTOE#_i1~Q7Lg~43tGwaXq>?7OVFwbt!uMETV z0Q?3LoJ1(ez;4-|-!hJ4A=?o}q5_|7&;f&|t%j$y{iH)Vf72`F;1hnHBL9n3TCV^! z+5eAr-TV&+hubUr&r%*o{uj~qi&X%Msq#r`04Dm2QUO*X{|_Yc7w7)CU>Up!{(k|d z=n4M+yZeXk{qKi6tNcI9c`EonAJXTM05UttCoBWZ^eT%w>h;_vWj0qEGwI6~VpbMO z>a1}!6V(me@X2C#YS!tQ5cBY)N_@=-g_WFplAQab#N3D6*?zPl_M?8DBL8C}hu0J2 z|K7Go{%^1RznAhj^50C$wpjTeTM6GjLHTcYV6lc^lk7bh$0URqGGFTacaBAqgDLhQXWhGt1*6_ zjI0XyB6303fch{QQ*FFFnW6QU$~3A_6=;ztTK9e-iB*kuyXB46J@TcGcE)GUq^mB9 zPtCuYk3l)Dv~J?lNyDm9e#UgH1-)uBKx^8q(z1SvPYd~<5emm>>n9k7h_SaMDh2pA zJWcYyeEze$f4GwWOL+vtx%&2$uW~WIKn(Cxu{T zjmC*h6cs#pjbQX0#TmLxLKMi~T&TZ=$zx!Ac7OBYS0pO(+!?A|W#^_OLJi@zrO;VX zr__V`;Mvca6_IG*^Cdt@Mjx9aXY~v-BWTM=2<*Huv@*SoK>m}=X0v*_J{{!0`r|Z) zj5WD@T2F)g-{0GH<^SIP(aQg0DUTulZ{+v_F~C6h@jYeNFQE^yJN1|G!?}6rgx}!k_{e;(J11-&Bm>o$`@5m7`N4 zpMt&qVk3us^Y*K`p-+c5P6J^5>>Zq@F#;n(1-Q{Hn^Ck;^a`BC45=0+`6wRa1jad8 zO|0dcUsct< zBi~8h!6){bx1|!gFG29%!G8zNwRnoa9F#G^>p*H9*wJm<&H08*hPLKs_;I&`E$UZ{=e)x+{)lX;#F`u{WC|GvF@cyv&@|NZE2rT;JE$@Txm zob{!MGR!iRe8BtP)BCW?-S1T>FF4KHTIO8CoZg242!v>Og=qkSWW)jxObE-aU^WRr zfZu&f;+ePwouQDTEC4|$azjmF8h{`|_c%oEwdf5Opl9~I%VqI(RnVi&1?Y9j+p^Br zpLe|_Ul3x>EAlHl>c1?U&)|h!lK*SzO4M&pZx^%%@5Ahat-bp&>$3J-RJ$&!Wlk5l z7Qtx@@f6%@5&1!9&I0&<7x^y;Ao`zozm+D?ApZ}xOY(nz@91D9|CjM7hXZMPshHvm zumbw#j>i&M!=)Bv0hCK}#!$rnq$r7yv=LpAXwbnZ=ibq3qX=swKk)=8WWI=d+! zJ|)XZ0iw!zi1Tl*qHz7;6+-DLNgs`BrMt}6m|#|}lax{5C;o+@Ou`P>gwRY{QANL8 zfKL-^_hDALW15;DO?$%pHF1RP0+ z87K252q!4KWUls%F?^+Je5`bD z6XNeMAk_MB631m4RJgV|HYu+?Gp+P4Yu%H^zHuz;hAIE%w!n#gga3hi9HC@i(PdpA zGSpDabN92;O63_iaF3Do^p}SbiB1|}uO{mbyBH2pELj^bq<$9ht77Sx+F4U*LcRhe zldn5>l8pr#2`e0dHz!{o8>3>zBOLmJC$(!tl8{WS|Dto|yXExIXfd#GD)rU)*1E&u zCreRy+#2^M9}l+Vn@;cC=ESTVc>4o@;em17is{em`P8W|zJZ{KiLl=sPj$MN|IT}! zFGI1QD-Q&!om5w5*5B3By#JeJINtgR&N7lBI_>ECDW3ZM-_Fj#;f}Na+c`K~*?*Vv z$ZZ`-GKkgLJ0IyjA8IUOqul$t=ml+yxmSd2iN+kRgtM zIMv>oic*1Ll{-&x24Di@37+8Q837X#M{+w^K$3MioLr7e5ML8O?hyrsomm*I#!wu- zCkREzg=TO3rfyJ)394Um_n%tPA?ha|nJZ&Z3q~)=>V7ZcPzHlRDH6pCvtmyv?{285 z5>CiNQvGpCJUXwiV{=uiQqwi)!)KgV#g|QH?q{=&mzAX|V?j#xcWHEYmw<0$WLq0g zW*Gt2fB^-dm`E9rX9^=i#rOep)k2EI6%_V`6v9(LTufnIs9Zu%;hi{p-uj*^YEk8k zJ5L|K=c`+&pn4@6ecB=q38HL*Q_u*uehkh|a*q!jgW!ZOHr(EP_N9a9(~w`l(X;qfF3jzO>&ls-l%Mj7hM zE4G7UAYQUr7z#eOIYc8uQD3|bDH7OhieG$gps1IU=tk`%DB`j?)AzYvpnF7nKp6cX z<}*QRx1agMf@GcT#e!7$mH1L)qm^fyp7NbC3s~>)6poQLPaFdnr#M09{G}?uP&lLV zf|m@v%L?V3&XN;$L6U1ivSVpSv%h`A5IqLl`O6TdaEN1ZG19TI$Rf-*t~ZCLFl82U zqJL3j76zaXPXBWG-G%e+)ye5km*1XUU!T7^b3VPk{O;oHI^SeCyAA+iJjI!XQJBt- z!S43<_SASeMN`6wxBE5D=}Cq*pnH@cW`UA38NEZH37<@-Fe&vbgqibZE1RZU69nUI z@>mcT!3Zy*9Wjw->9e*{s@n%!L!4}}iSeedTZ44W%%Z;;4WMvBKybrx7XG2GZ26fC z2ZKRic81KtiH%eV-igJtLqaJE1$=|8Cz08ZXv7gAj!m4zLKP^OpGl@dG1EF;;iPrH z_4$2ZD1e5LD8raB>7N?}j!-j9sU#kVVr~Hw#LJp;UXhenA5$_*Ev?64CWDkjgAw~$ zl&eE>>@8t6^RljFJ)UjIL^V?5uv7_4EV~Fu#j@0P!!$Kl z09UzWsEnRm@83I1fr#F2+iwc@ z*FuJJ<)ei0jPW-Dh6hnu-6S9!WnAR^uqONPV}}|Iy{!NhbQtN&oMSYMGv8fw9p{1_ z%|FVs1o>>u7~NuA1SBK2|1P3G zJ>Ud}G3Y}eNz?yY;3yZmnpqV52KZJ$%st*2w-*8Er@psUv#_A2oP!bx4;_s|8E=0i z&iT6NkHp`C7VqC5mpamFiMYs#HmY$`39^0jshE>;J~XbKqJnSbRLr2xi^tmmxB6?G zU^YQfwWzP%ezY_S4Sps=>x}$oG896&+M@1SmDV=EZ(u~p^m{msogf4bP51Z-dxBy+ z;Oyq~8hs%2E+#MnfwNx-OdLKDn|WLNuPCA1ExMY38|=T^yGQQ*f4jSftNedUc`W}Q z5gVt@yT8-3TzSv5v;dp)q*&`)FTg3^>?3{HX{X{zDalAERrz3&WvT5-Ga*cvKZBj! zqrvuId$41DP6?Ht_xJa#4>KBwb5Gqo$r~pc?HsEAT5tBSeZfiJ}W~Zgo!nrC}!c(95mka2|zebr(!m^nkB6Id_ zJ3Cm=bZ(d9mjxHCVZRd;r--sa?p={Xki5|6!nLtsVaa#cfKQ~MPAh(XCH3bi%3vH1 zos2c;mlC$p{u;dTB;YnZ7~EP;I%dZ&NldDjAR{*-a{?Gtg&8#twHR6NI9nrqrKhQl zdycmE`_>Ea8fD=`g0-_)m7%|^Ihz)%GtU`GXvPM4rXDqj>^@YUSuQCHmknM>kG)%L zqo!jo!I;ZX7qCFY>VwsHPG+PCJev*?b^4x4&{k6dW|fC|PEWl)J&D2Wh1p0`1*xFs zTHP{MbkMqlM#E{;;xU2-V!HArTW}VOAg-&B2?=;yiPZOsGaK!_5utbGDjXFC+`G2T zMJ0;VShfuYCPWS&FdeI_yC*VUqy+24U*_5sK6@#Yd@RVqK6_*tn!5M5n;R>xr@@TS zK}I1O;XCh{P*veU(V*w7sQCD@Gl-UMV*asHq^gcGZQfZnbSF2L;dlMd%@tpTg6EXQ z^|A9&t#i*j6!N@UQ^e;J48{{e?)Zd>3Avl4Ah_QNKp^j0e=Fhw3Y3DPhC8X&jETu- z-vb&7OC0jezVd3z>z0l+jc*=`cx(D+4{x~Kai3qOTHvL^19A3cVB~e=RLpl?DD_jn z{JX@<3lwr8zLxX;oO{9qXP6<6mLbZTN~5cd`jpXfyix(`PumTU>H!f7)%f7%Y5xE4*epb{VH6T&h&3p4P|^&3aXq_&_|s`g7zL_i;JZGFy; z1Crc z1_U+{%1~H@vQaRgDL(NQHDu!42CcZCtLSBy*r#l(!0qFIVl28@|NGf?`tfXDj{@z z83AyOVgwl)T;y8-!KF&U5FLD`s=cQAhk@t&Qyr&t{6!I&$=fKRGNgNxI83^+(sbXF zJCsskk zBzuixB&``G?=9C&tn?YiF?qP6_#Ve-jLujHV=+x!k1`e+p6u3<#H3e+^JAdA7z6ixKXhOH=8!_w1b_bX7iX8R zzi|0j*=f-(Ae|%5rF_T9802!s;~^pxogsxuD5FX8vSl|mZ7qjM6r(dLede@>$`^kn zLy*h;!C>%36@VHAjAd}l5iVD>5q${)Rn*r=3D1`x__u#E(3Gl29gcpFnFj2YMpgC# zQnDGqG>soYzt0sFMEeX!2=x0SLPOLKNivFYm@&}rk0}gMUrsr&w+;IJ`6`xC?C2lu4pJyNhhNJUNlDY;=+Fw15@Rcq~g5c{|rA z$sqd*@4DQ1_yOXKiIY)L-nViz4W$MwqT&1f5k_&;XUd!YCCgwoV}o=88G8BhMlTQ0 zPe7QYV|4;lxOu&ju*e9Ul4;8Sj=&X(STSXvj)ih1Yeqp8Y}Y;~80hzl!w3_&m{Kn} z@5EfQdnxbCk+|kq!ZbB(eFIFkIIx#tOlDC6GklNw=@|6;ic!Bj+-3#V>Qr7gD6lbb zUhL30jeVfeYsTVf1L(kSJBBZ{gT%)$QX!&QU)g>>*eYwl;fc%4gg)mw6M`!V(Mt!I zcl@j}4Wk!MInI*f!W4skpI3OfW6V}rqydgBdMY^avj_z>u4QGw7_25u%9$gJkmCx} zzx|sFd~vXAl!Lr2p$|Mw3sA61;=h{OBxyO)_J^~}*Tx$&Ud~m}8*DQD3{6va@2q{A zkA?o-5#WSOQ4K);c?+f~+fs!p0tt(Lbulry-O+*T$KcoZ9iTXUu%NisPCA6)0M4=r zq4*y%1Ml6R1jETKpr`VH@S4P^qb2m2Y@A2WVdJE;SdLYnb3tKFW5)pe5WEPaMX9h5 znQ!kA9Tsn%M%}M)65(Y0dnPi8(KQ-zJT;MPh|~k1JOi6a!e+v)SPiCxV4I~y&)S%K z+nDm*G0#WVY4a00M0l35uRkJ?hGIivtd3$o^{4ImukvpFiEl<18~?GrvvastivQSK z<^NgAW5j<5_gmq|uCGZ_fdqWayM}@AY2vvFc8z~vW-c26-1J0IXUF_Kvh(QxPXM^6 ze*97cb{&TV9u>Jx3-1%VNtv$09}nPno}q}%;;azzTpRvU77a!F z&mKPp&5z> zK||12y-b=TD6B?G$!M+h7$q*5H^5G%l(Zz89+uxk4w2V}Oshlf1ji z_m4{ae{Xwd#s8P_$egE=uPTpgkqtq`#dB3tM~MjwxX8H77>dBd1j!qP!DyDqNH5HQ z$YLKER|XlfMRTD%-W!53zDJ2R!t0yE+De#;YzD@HQyC3}oY8;VpNkuH2E{Lr47w7D z3asqTK1Qx{krbd+iUU^;iFMRg2+78k2r30%w&I2sB(t`ilJ|lDi7#jH8a*AFujqXY z)<0((K~CM8>-^eDzno~5NScCAMzz*SJwe;~MP5z}Tl5ulu>~K%a&~i~XcAQm!+c6M z1w(&exhTeHhI5L8UkZlwEo<@TbU zuJWIfS%wyS|L@LjdH=V+zmoq;dD`s%#F%&7{mFUalgZ+XWBHRUc*L$zxOVF&0mxgh zWDQr~N`%@J%3WY(Un^OnrF8I#}CW=sF@F#Q{&U@g~YMK;4V3m~v^FiDi!vi`hvwcpZ> zELa4XxVtS^ZGCi|+TD*c1W&j5<&^#182vP%Tkmi3k(qCcQyN&C+}7?!+d}*s95=~W zS0dR2a)olKF9nVlMP5;^l<38zXXJ>?lE{}%Y9;4C?x(B#*U7IJm;YsZcYF8H&Hu8q zx03%$c@~}jIiDXs4M4+`DnOn`-J=3nC2Mtn98WGti)yYGpuerx^{%FPX&|7Y;B1 zI>CpoqavHR{*k|m2$F&Xy~E5(slW9Ce1||p#McLyh+7W?=OhVGu~Tf5^GFNe1CC<= zW09|P$Q2#LP~zn37l}A^9M?J1=`$RuK+-dg6RS^WXH)MUQ9OF|U6>G%RHfY?h;*%k z@_CgcpVb>d6}Bn+oe^<(kCPcPFM}!sUV(Cu(HSaBWc$4BQnw~5{4)#tay0Bg_GF38(FpQ7=3H2rAzD9e<-cTK^GN^Z`~Pv$F630ynfGk+rXX>pfbbg?O5?`~OmG z2v5?K*S0?ecB-eKPTuyd*pm+Qz|IXbEl6TCG$&R3jkYI@x}>6sB8ES92a34P;Vmd) zG&Cng{EfD!NJ_~RWfL@Gxx&yuol^g8hz=qnl!X%%U8Y(~TcpA)|FCXt_A1K{P;Mo} zF-3)jY$FJ;omS)>o_}Q|DWmDp_wsSnlTL%~oB65a9nch|kV^enV5*&0Lm2uu5(UHNB{FXLUOALsKY2PCdi(No0j z^E{@+U%TA~TUy`dQKVesf~V@gjn4+hRezeMOmkCiGHqunI)@24sT(e$_2;J77@IE8 zlBNP&+edf7dOr_G%%@G&k!Gy7ZY<#b>DeKdJ%-gHUmiW30+*(O5+ zi|vE6cd5923;dvP`q5ao8IjyDAxU4P?E*i@BAnF_({kcv#wD4mh?q}8aY3Msc-b!D zLR{0E`Zf@>DZ(o_6{nW$DL2ARA%80^YJp}(gTcTfOcSJ!%#2mqitGiA3%chRsOS`X zx(fRgZ)^Z=gdQVO&Y~m(50oV1LHiMqo!8yWt!Xfcz!cKEqDjd7YDB?+Ji44uGL`EK z9+it7#bT0rt5cA#rN9_-oyV$JX>}k9)0FyaqwNurv!lxy1amIh5{oe>kVl&qm&k2` zwQyR?L<0Wb#sFt%>d~{;!l`ee%c1qy_8b$lki}H`LI*xcYcEmVSpDLxTAtq8-i2AQ zG~295OTn#NlLh@sBUHU?UyC&m&A0;0^&Dg99X`nXe6V6A=KX!^U3FIH8W-LZ*H&qL zh0|^;t8R7G>gIEJc9~A?vkEn`>%G>+4?D@B>9;PZ&DO4(*JvJ=V-^Z{~jK$ z;(wO%s2wXw{z`^`kE{{8d&)(+i101$l=}788Us%5{AJ7(j{!$-?SkUS#yY=|{85!U z7Drb6hfvDUyG);3$t_v0sCV20fN=pii;=9RfANhB?<5yZQc;sYlGh5VAVY=qgmVpx+vKW z{GI@>Zg6;oU=-s7`rqZ?!BK1W^U5c+l_UoErlzt{dE}n1(rdVVG(qj^di(+IP zc=8A+f{ZwLBsk`n@N)kki5gS=OR4>4d2Ro={jVMX|F@ceLdf-+-533n*R&y6hs^`; zd1I3agUy&Q!V0Tt4q%{P7n@zzf+0iLq}9N_!<-X`v2`5x&D8<+pGLv zOL>H%_eu=x4ayd$0a|lq$vPlK_n7aq>r^5VM?!1EA-qAEp$YN7#6_Bbk~kj1@J=d2 z6lQ4rD8b~N%ir@_GlnD>p$kfz64!!K5;5s7m7oVe62t~w)Def0i&jW<2V9Lrzc<9| zH4(Sq$%8E+W&M=8dLuPhT=BM43j#RE9)kyl`yv;OtM7!G3&zg?Z186BfwV?%bt`hIL1GCQN7uWzwmmxsaxGO!DS zO7l}Uv}7+0gv5(xR7A0AB-$N7erR_3$vvIqKT2crI7LZE1)xd(AMLsJpS}H+|Nn9x zDgX0$GM^aDY?qBE#q8oTEib!BeTc0zp_L}I3{9wu{GaFS=YKWJ z|NY&AUHANle_qM|B|JjPFZAr^!<_qY5lluSuN0>!qZlzDZ$A_6Jo0n`GjTkju1mF! z5)S3rkGRxU+}x%_I>Qu2-lLWHu{c~2vRt2jC=c2p0(6!L3GX?~Ng;)CjAG2DvZ*P2 zho`ftr%4}h4jE?RAVsFs&9HkoBAS6=hVN0y=uhiH049c(V0RK4=9__1Q+GyCBLD+ zF`@%-J`xVD@|4cB#!dNU2%Mr#j2wxqYTm4YLJe>?d==i2N3f~ zBuNqD5faB#WCWmCC!)I(Slpfq&^r{)1ijV~&L)WFmmvc})uqH61L>2Fc|8EL0}Uq!+*H z5*W&qXGljQNvCgt%I)nNdvHbwW;2Rx7V(xu=vWWE`YjGyWvzXVsFB-b$j#6 zg4BDvF^`6COA|+5Gd~)7`++>bw5LPq^wOFg#-6Dd^1y~uJ`gl#Pyr#qF|TOJ5nj>k z>-+b;N@nOZQpJ~ylhNJnVjm**t!90%pyA~!B+#$Ff&o~W_Lly1(f?D@DeYJOH0b|_ zhr6!*Z)fLd75}@GN4lnyXmR>~N+N&IUX{{6pUy9es@!BUmPP0WGbUrGC`uxwKwXij zleiQe=n$1uDM{bI?=kBdXB%)+K zDs}6swqjwDd`)49t`Nl}Qd^|C`(F$7>2p3KF_PxOCr=~;RI7<3^s8_t7O_+pk6VqV zQ|Sq4`*9P|ScU;)1+XH@l&iD))y5f@qn+2dN#R3+p2A@)yz7iAo^Id-XQx(I z>^E(@W7S$xm)cC|dlJv4Pv?pXjGmFDY5b9xIlAosSq3vSn#El`fScmKwoCi}y@SKu z)&74OkJ#+rsDWLm2e30+{)iqx1__qo0#u^-$Kxx!as-;!5vaI(wNzgO^nV=A)BR`m z8A>6|L`uKkx6@G3O${!8(|}A~ZskF}dOAEE^uK!;<4A1J@>Brd=CA6M!6yIjodY-i z>u`5x<^R2u$BO?ihI5fw01BwN4)_cTpL_DoD?7*Ss=BP__3tu|)=Q;JE?VZ%x>LG) zxVcHC)_R+Nr(TYcwse~EXGfp&*EifJ_)9GB=Ub0O7EzJwASfcR1C$t%NBqnw|MQ^KHX1;a{NLVp?LUVHd#n6EOL?65 z?*(fBo@w%&I)H0^Q9Ig_B)9jDstt1^Hor9Y_V|hNJnx8|;-$$NV+(Ed+7{cF$t&SY z8!66F=w1>x>+ z5}h*;OjY(@{%K<#f>{k~szH$&7n20i#}e6i)0ZPpqcv1oN$fw&Gq3#5qfJ{V0L}8> zz5n&_Xm92Jxs=C^|6a5L;F%}CcMZVX<&RbcD1x=0T?Hs+*-8g!rvvyYwo(FC&!V0= z<$r72|Nm+s|9AJc9r=H-x4XZR|I2vt`0oV^{*~RoMO5ZOZT?o59fQC1tz_*l)vUAE zTZNSlkw-3?VT=v3t!%tEA-l?e0=fx`21?q2gIuMM%e#htDRrpmO6m08HR+pkrYLM$ z_N%+dbpII2z{3P3<^C5j(Yo_LR$cX8k7qf4wh2$8#zOII(#uvF$MT;!<-c+@Yj*(9 zxc@(J?|(l$+F!~4r9377&jsrNhEL)j#sW~$=a1F|u)I?MbE2(m0Ih5QRU}&(0anif zo;l^ee%ZwE8poj`V`?&r2XyB8d4WK7uV_QC{C(I!~SOBk1e z=kE;ZAg@i!zhDOR1>x4sXk0qw6fmz4H*by19#c!07dGR-5*~qZq#TGnUy%Erm2ML) ziTWH3-kfT*e9NINx$;?MiY;EVLCP~n%B#j~9NOHdY7DG#4~}^!=SdP-!=R>_=Tg%( zcPcua*EfS>p*2z@Q;tytqelR9xb76Pn=t073EbSO8#KL4;zvQk9H>ekrW$kaF8AED z=&lYQmD+FL6&bG4FEdOLfSJI~?fRzFj2_)7Z|Y3OzzMy{z;VOlL1_^M<$!a#wht`AI$v@_&18+x7qB?^g1E8IQVZ6(;~C8GTF%PO|*Y{1^{u z&JL>uwU{IW7{`INxAJQSvM^3?7JxzP@-R)~$GpNHb+JCf({lZD^3Tly8rJ{*?*4(h z{`YrR>whVaSpRPbjF`B3Cv)XzRotfpP09Rd-C9u@+8SY>PvIDWt63bY zW>}|oN-5!5bVh`31C=$eTXS{}z!t4te|2)&sRcTOVGFot?=nOa7=!a9Lv#egZj%71 z>Ur%JO=^9{SKoFUi1fbAIN)SV5$iZ-Wt|q#zlIrlfREth>Kt5? zS;v)5d5t#B{Dn~b56*;Rk#qE9mJz`vXt#b%QrMy~l?qWr^*wfipO`h?LKe@X4 z=K4*CsW0k!kyz>YOL^Mq|9rbPzX700|L1=@`v30k-b(*p#$%b!VPQWvkJ#I72IQ9B z(uWZpYY+-7XA+roxSNtheT(!hC2bYslJ#Kg1-OEgArNDh$yQ)0?!V56=R}~^)F42( z(ABo$md?5XjB$83Av1;+&~O2)RojfjbOEh$FjehcqcLU~qTn*+Z4%n0m3)a1Re3-a zIH#3w5yhiN4w}m2j|k{0($8i9-HeVWL#$9_u$ z@6)6WW(msJgpjN=>2$@egwyqEkvoyXD}osuLWaNt#F=Tm%81Mr*lIRKC}jf6$Sm<+nJfrjdZjZ#*=TXUgz+;osDO z%JEAD&r{?APDQX(wPckJ=o~FJ7|r5X-cztvax-G6yvcR^gr%QLfti4Md5mFUDh_rURrBE@m_J9OiBc1gMn(SO}tSR(&ct@qP_&$N9^y0Dpb6531i5ZJqe9G)Z$_)HEKBufl>OLu^Cr!<$NlA0KtR^`6$1OAHeTe{gL`r zx8?syI({boZ)f{p&*lHy`z!ySYV5E7gl5o z^11MWa`I(SGf<@~!aVah4V;KG_&`?E^2EbZQSN7Im2|n5iI?ALR-k7%%!>P%mEXi2 zdIUcx$Ug#{fIo}2K9|v?9PuFnB5$PP-&IbsUM{Noue;7Nij#3rbj^{FMUS&IE`FAU z--*1*IE?|$@*902knlI9g9I2761$R7hv;h1K}Kh&?A2;wqPdbXsv{L3ZRKDcnA25CaM92Pa9ps> z&X#1p{${jf%X|k|HEJd_XFgZW-vSs2E(N=j0CW97@-L&Q4V(D2`UYQ@VLX$T!nHOX z8Ki{7T%*VyQxt%JJ_NuUf^JlSVTjV~`m!TpvZc~&5=&(vklJ;SxE-7qZ+RI*&;4D< zhG=*NnOKlPVA|={qG3wWJti~pF(%}0mV)4ZCjfzV^I02QqZmPk2KjY^#{B=B^=C{f zi1r)?8^D%7gc?lJXxE&Uh5sC9`?*+@E>3ExI?A^J$>nCM*Dt|3z)6JOnS}?Dx{q6$ z-UF}!egnh9{RoA1lfs2;4X=V_++eZJ#dvfQrxSQFn}Wk#uu(m93O37x3|}{hT%0o< zZ*6^kfBgCVe|&!5rw_*m`+K`vIWJLo@bSn|EDekKA~&y!-v2Tq8FCR^O9*3eSA_nZ zv3N=%^ir9#pA*59(2VapTpT}V8X@oGtO8dFsuPr-qhaVm;qQ(e%2f_xds3Lqa>~ke z+aO#yH<7DqAeXP=`S(f$SOP|lRFDrDM_@$B^m{msODx*Np?cq~)mVu`NuK(cN-osF zhQE=D^)#b#XOhsk5Q8j>0=X&!u@(ZoCIUV40%H;e>V^Elhdhw8p@C>Ql24(TK)ae| z)7;fU(YvC?Q5GO+P;=C^uS{>D#}kuf-}PR z0`AyX7F4^dD-ykx??5S9ZcXY6%CnB+*);c6(Ok(;(_j8n7tJ>sS||5?f-WBc{!f}0dR@DZOk@ZS?(V#NBlFd7#1j1yqT z7?@*g9s=br`}3Iv^ZIkx2J^+y&OqoE?`|c`gMK=g3iDPMU@u%544-5$1Qq5flM1II zD>Hx~Bx#<$s+gs&+0M==B@#EhLMT1um5Uj-QOc1Z>uD3+x*@Ya=X-$82FeZpOscrt z6TM4e5?$svlu7JKXy{h*Bug;6^|Ex9SstB=L&dEZ;0nf?o|CPe{y6Axo z`rq#E?yh_P_s;(6{C6pj^o1?OcrHv4^u&L5QV2cu%ZecuC>z?K2r4{ttG4hR=G?D5 z*PGa&Xn(_(Rz|Uw3-SOS5SYOG;vT*TVBG-Q1XKq273`)k_nRF}BJ^&P|Es%XbQ-@a z^_WRsJfku)#a4}Nl|gi?AW)SCQnV~WPG%Wb(r^Oo>mx^aY^SoS;K{OR;OZ-RBO6|n zOWF#4*XIh$y?a`t2)1GOt5&2xhd}Suia#Y?G6LMIz1vXGFARI#g<6wHQ!%k8Sq8(& z6eZa!zHG78|1LuA8D-k)Y5%mB|04CqTs~k;{{II@uK)ke-u5d0^HQER0$3$o>ATKZ zI73rY0O_L6$+y_QiL$nyE|a&N@k(O1@4o<71N{kX&c(HgC_s~ol^ey z{k@g_cR3GN5_*>ZXKq@obpmZlh;F6osBr?-t+jLnouts@I2F^f6b&#*VO21|B!z~* z9*6Jq-dDC&;niZfsAWWaBrKyd z{@$ZUffgsjjj9ul0$_BhgzfX}aMTcPl<;ic=hV-!r|xx{p}T3)=iKl#H}piWE@PSb zC*c)EDWv6X2XHqJnAPDC@jA^3kW;1_)Gbg3P7n>uc>6sFV|@sx`|^ zZmt&VHb4zk>o!4Pj*U?L3|+ux2sC*i(H3}%j`1E=`HtvI^gFy_J6zE`=$7go&BTL{%;x2v+n=$#P-$u zKUJjd{?7>Lb3?-1{hyw)75hK++1US?facn-Ss>@$ujR3IE%$47N1p4jFds_0J&&J1 z`o*P$keNYBA{D~v@$#<`31&TaTVw`n_}Wz2A?Iq>t?O;u2DtSC++M!AJQn%7#dVM& zWTi9Viv6;Ue{rS6^(-#$m}?1^SEaKUc@THQP*z8`f83{~{8!$eSK>yLu3A8o|Igm8 zEB|-*4t7`ae;H57|Hm5X#rOa@*XdL%16ILy3W1HTp%&O5T;;%?&lM_yRme~j%AmWt z3)vm5a~$&E(AtH_hyQcw2Uc5wx9u*5P-n`lT#cUVY03ZPMNM;N0Ilc$JNvu4uK&-@ z_V&vEXDN@g+{x>`78UcQZ}sZr>!T}~3*Bb*>Jl=8$E!D`Er=@W^X94Z=TYEFceB^K z^T=ABEgI1*n#&9$wue-*?hMi~%5G3BE;4cJIbSO~<=d;O22x5g5)whgV3K92C#GFz z01MU<5}}{4uMF?AD6_x6=lcw^iHp5>SEPmuwmkJ_G*(Ia`bJ*OTvy0|+LLYOU^3#n zvtNNzrLA*}z@}p05?ycm%E&QM0!8{-Pi4p!$!peY%!xb%*78lo0RLu zMy>NJrT{uAH`G@T8s!tBsBBP1Ubf6 zde(ZTp6-rQ#>V0`%EF0k!@g9^=047h66Gt_x@hiYyDHwiAU2!^(~_D<0=!{h(wW}w zLuKuE$F|6�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%0DAQLl_aZ{9j7YAhuK8mi`ocrv@2738&ZfbT{ znC`pMzoNTxN`L)Zj@_|BFS+BD_zy1%dMxB}%F4-abG;qa^dD?7g-CpOR8!MAt0zdQ zsqNa3^c_zvh}t%qR&%HpS=D;QCQ-`rX5jZLUh5N`z|7Z#m6_aBVDi;?T_rX8iXXFM z*nIOqu)OXwW)CE3E~yGmEose`>5^e?Ds)k6L37evCO3^H3C`B*P#u#?u`csVv1kq3 zV0Id}hG>hZsGEehE3q0-u9H?NUY;jY=O1|2?$X9wziYj~+!vb#7adCrn}Ws${L68k z?%%x)uLeS1=`Pd)6HK#=D|SRg$2I zp>-TLsSC@C#{t!MgVQZ!9=-w_4WtjO?*Z`qQDF1k0rSDZ#6a>#g2#6Q#trx#Xmcba z-h;gdmgE2!9s#_=%Q6Ck59abtfWG$ty$!G(>G~MB+a*irrgH?)JxH72Ir*vMbdSP$ z0jmm-XIF%GkD$*(sO~;^Ze$bhg5*Zgz~Pf(B0{?hHrvHsBbq=OD(gjEBdx~p*a+Sl zX)%bz#*x-Yi!lr~1!Ijg?LlA1p{tR$o1i2ExN2eyp`eNuLs1_CKiw5Mg?UU@T}ET3 zgW;!AaMDLZNO!_U2h2f6p`s&@&ml@i(9XxfIiCpO92NvasOF>KnQ2I78iqL*y)=5o z0A}*AxMeC@GmKR}5K5VdxTPVJyI_)`h@9^84@OKN{OL>JL7*Xq7%j!l94|jx)+2P_Q3q&2h5m1w-@1y ztg(C3sR1v6rtdDzeFNIp`5xtTqE5#95iYG=w?~bnWj+nsOZFza79HT`2-El>srEJY zw%=%yqLi%$4cX09+lfjaa>A^oF{C>fh5Mg_QTV|qe7`{+jKU8_;RmDeZOR?&rVn=0 z2fOL!IoM4f?4}QP(+9ihgWdGjbFiE4J_oz$gWdGOZu($1eXyH8*i9eorrYOFYB#;J z4TWVXeZ5B?YD}V^hqj^!hnIs+=x(VAE%Qk?>fOP{;$UNOu(3GUSUgi3i$jFu!*h5J W&*AygKK~T}0RR705`S3$4iNx=lP6vP literal 0 HcmV?d00001 diff --git a/stable/nextcloud/22.2.12/ix_values.yaml b/stable/nextcloud/22.2.12/ix_values.yaml new file mode 100644 index 00000000000..1a690f2d93a --- /dev/null +++ b/stable/nextcloud/22.2.12/ix_values.yaml @@ -0,0 +1,512 @@ +image: + repository: tccr.io/truecharts/nextcloud-fpm + pullPolicy: IfNotPresent + tag: v27.1.4@sha256:6bd558570dcebd0dd9c56df158eca7893e5926f1130b810101c2f67888502c07 +nginxImage: + repository: nginxinc/nginx-unprivileged + pullPolicy: IfNotPresent + tag: 1.25.3@sha256:a4cb3ee8f71116750ae3dc857031b7c74ec3b21df3d878e1c63204c206553e46 +imaginaryImage: + repository: tccr.io/truecharts/nextcloud-imaginary + pullPolicy: IfNotPresent + tag: v20230401@sha256:906a7a832f95f208bc1f3c09e31ea93902fb07048eaa83fdfc033e7b4cf957c1 +hpbImage: + repository: tccr.io/truecharts/nextcloud-push-notify + pullPolicy: IfNotPresent + tag: v0.6.3@sha256:b9c35ab123354eeac3996e361f8c30b8e4de6d2ccd69e5179a7c2a101a67b46f +clamavImage: + repository: clamav/clamav + pullPolicy: IfNotPresent + tag: 1.2.1@sha256:5968dbccd6c38ec86f2c7503070207d9a11bbdd7bee4c05ecf649fef2d3987c9 +collaboraImage: + repository: collabora/code + pullPolicy: IfNotPresent + tag: 23.05.5.4.1@sha256:a8cce07c949aa59cea0a7f1f220266a1a6d886c717c3b5005782baf6f384d645 +nextcloud: + # Initial Credentials + credentials: + initialAdminUser: admin + initialAdminPassword: adminpass + # General settings + general: + # Custom Nextcloud Scripts + run_optimize: true + default_phone_region: GR + # IP used for exposing nextcloud, + # often the loadbalancer IP + accessIP: "" + # Allows Nextcloud to connect to unsecure (http) endpoints + force_enable_allow_local_remote_servers: false + # File settings + files: + shared_folder_name: Shared + max_chunk_size: 10485760 + # Expiration settings + expirations: + activity_expire_days: 90 + trash_retention_obligation: auto + versions_retention_obligation: auto + # Previews settings + previews: + enabled: true + # It will also deploy the container + imaginary: true + cron: true + schedule: "*/30 * * * *" + max_x: 2048 + max_y: 2048 + max_memory: 1024 + max_file_size_image: 50 + # Setting for Imaginary + max_allowed_resolution: 18.0 + jpeg_quality: 60 + square_sizes: 32 256 + width_sizes: 256 384 + height_sizes: 256 + # Casings are important + # https://github.com/nextcloud/server/blob/master/config/config.sample.php#L1269 + # Only the last part of the provider is needed + providers: + - PNG + - JPEG + # Logging settings + logging: + log_level: 2 + log_file: /var/www/html/data/logs/nextcloud.log + log_audit_file: /var/www/html/data/logs/audit.log + log_date_format: d/m/Y H:i:s + # ClamAV settings + clamav: + # It will also deploy the container + # Note that this runs as root + enabled: false + stream_max_length: 26214400 + file_max_size: -1 + infected_action: only_log + # Notify Push settings + notify_push: + # It will also deploy the container + enabled: true + # Collabora settings + collabora: + # It will also deploy the container + enabled: false + # default|compact|tabbed + interface_mode: default + username: admin + password: changeme + dictionaries: + - de_DE + - en_GB + - en_US + - el_GR + - es_ES + - fr_FR + - pt_BR + - pt_PT + - it + - nl + - ru + onlyoffice: + # It will not deploy the container + # Only add the OnlyOffice settings + enabled: false + url: "" + internal_url: "" + verify_ssl: true + jwt: "" + jwt_header: Authorization + # PHP settings + php: + memory_limit: 1G + upload_limit: 10G + pm_max_children: 180 + pm_start_servers: 18 + pm_min_spare_servers: 12 + pm_max_spare_servers: 30 + opcache: + interned_strings_buffer: 32 + max_accelerated_files: 10000 + memory_consumption: 128 + revalidate_freq: 60 + jit_buffer_size: 128 +# Do NOT edit below this line +workload: + # Nextcloud php-fpm + main: + type: Deployment + podSpec: + containers: + main: + enabled: true + primary: true + envFrom: + - configMapRef: + name: nextcloud-config + probes: + liveness: + enabled: true + type: exec + command: /healthcheck.sh + readiness: + enabled: true + type: exec + command: /healthcheck.sh + startup: + enabled: true + type: tcp + port: "{{ .Values.service.nextcloud.ports.nextcloud.targetPort }}" + nginx: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + nginx: + enabled: true + primary: true + imageSelector: nginxImage + probes: + readiness: + enabled: true + path: /robots.txt + port: "{{ .Values.service.main.ports.main.port }}" + httpHeaders: + Host: kube.internal.healthcheck + liveness: + enabled: true + path: /robots.txt + port: "{{ .Values.service.main.ports.main.port }}" + httpHeaders: + Host: kube.internal.healthcheck + startup: + enabled: true + type: tcp + port: "{{ .Values.service.main.ports.main.port }}" + notify: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + notify: + primary: true + enabled: true + imageSelector: hpbImage + envFrom: + - configMapRef: + name: hpb-config + probes: + readiness: + enabled: true + path: /push/test/cookie + port: 7867 + httpHeaders: + Host: kube.internal.healthcheck + liveness: + enabled: true + path: /push/test/cookie + port: 7867 + httpHeaders: + Host: kube.internal.healthcheck + startup: + enabled: true + type: tcp + port: 7867 + imaginary: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + imaginary: + primary: true + enabled: true + imageSelector: imaginaryImage + command: imaginary + args: + - -p + - "{{ .Values.service.imaginary.ports.imaginary.port }}" + - -concurrency + - "10" + - -max-allowed-resolution + - "{{ .Values.nextcloud.previews.max_allowed_resolution }}" + - -enable-url-source + - -return-size + probes: + readiness: + enabled: true + path: /health + port: "{{ .Values.service.imaginary.ports.imaginary.port }}" + liveness: + enabled: true + path: /health + port: "{{ .Values.service.imaginary.ports.imaginary.port }}" + startup: + enabled: true + type: tcp + port: "{{ .Values.service.imaginary.ports.imaginary.port }}" + clamav: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + clamav: + primary: true + enabled: true + imageSelector: clamavImage + # FIXME: https://github.com/Cisco-Talos/clamav/issues/478 + securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + readOnlyRootFilesystem: false + envFrom: + - configMapRef: + name: clamav-config + probes: + readiness: + enabled: true + type: exec + command: clamdcheck.sh + liveness: + enabled: true + type: exec + command: clamdcheck.sh + startup: + enabled: true + type: tcp + port: "{{ .Values.service.clamav.ports.clamav.targetPort }}" + collabora: + enabled: true + type: Deployment + strategy: RollingUpdate + replicas: 1 + podSpec: + containers: + collabora: + primary: true + enabled: true + imageSelector: collaboraImage + securityContext: + runAsUser: 100 + runAsGroup: 102 + readOnlyRootFilesystem: false + allowPrivilegeEscalation: true + capabilities: + add: + - CHOWN + - FOWNER + - SYS_CHROOT + - MKNOD + envFrom: + - configMapRef: + name: collabora-config + probes: + readiness: + enabled: true + type: http + path: /collabora/ + port: "{{ .Values.service.collabora.ports.collabora.targetPort }}" + liveness: + enabled: true + type: http + path: /collabora/ + port: "{{ .Values.service.collabora.ports.collabora.targetPort }}" + startup: + enabled: true + type: tcp + port: "{{ .Values.service.collabora.ports.collabora.targetPort }}" +cronjobs: + # Don't change names, it's used in the persistence + - name: nextcloud-cron + enabled: true + schedule: "*/5 * * * *" + cmd: + - echo "Running [php -f /var/www/html/cron.php] ..." + - php -f /var/www/html/cron.php + - echo "Finished [php -f /var/www/html/cron.php]" + - name: preview-cron + enabled: "{{ .Values.nextcloud.previews.cron }}" + schedule: "{{ .Values.nextcloud.previews.schedule }}" + cmd: + - echo "Running [occ preview:pre-generate] ..." + - occ preview:pre-generate + - echo "Finished [occ preview:pre-generate]" +service: + # Main service links to ingress easier + # That's why the nginx is swapped with nextcloud + main: + targetSelector: nginx + ports: + main: + targetSelector: nginx + port: 8080 + nextcloud: + enabled: true + targetSelector: main + ports: + nextcloud: + enabled: true + targetSelector: main + port: 9000 + targetPort: 9000 + notify: + enabled: true + targetSelector: notify + ports: + notify: + enabled: true + primary: true + port: 7867 + targetPort: 7867 + targetSelector: notify + metrics: + enabled: true + port: 7868 + targetSelector: notify + imaginary: + enabled: true + targetSelector: imaginary + ports: + imaginary: + enabled: true + port: 9090 + targetSelector: imaginary + clamav: + enabled: true + targetSelector: clamav + ports: + clamav: + enabled: true + port: 3310 + targetPort: 3310 + targetSelector: clamav + collabora: + enabled: true + targetSelector: collabora + ports: + collabora: + enabled: true + port: 9980 + targetPort: 9980 + targetSelector: collabora +persistence: + php-tune: + enabled: true + type: configmap + objectName: php-tune + targetSelector: + main: + main: + mountPath: /usr/local/etc/php-fpm.d/zz-tune.conf + subPath: zz-tune.conf + readOnly: true + redis-session: + enabled: true + type: configmap + objectName: redis-session + targetSelector: + main: + main: + mountPath: /usr/local/etc/php/conf.d/redis-session.ini + subPath: redis-session.ini + readOnly: true + opcache-recommended: + enabled: true + type: configmap + objectName: opcache + targetSelector: + main: + main: + mountPath: /usr/local/etc/php/conf.d/opcache-recommended.ini + subPath: opcache-recommended.ini + readOnly: true + nginx: + enabled: true + type: configmap + objectName: nginx-config + targetSelector: + nginx: + nginx: + mountPath: /etc/nginx/nginx.conf + subPath: nginx.conf + readOnly: true + nginx-temp: + enabled: true + type: emptyDir + targetSelector: + nginx: + nginx: + mountPath: /tmp/nginx + html: + enabled: true + targetSelector: + main: + main: + mountPath: /var/www/html + nextcloud-cron: + nextcloud-cron: + mountPath: /var/www/html + preview-cron: + preview-cron: + mountPath: /var/www/html + nginx: + nginx: + mountPath: /var/www/html + readOnly: true + config: + enabled: true + targetSelector: + main: + main: + mountPath: /var/www/html/config + nextcloud-cron: + nextcloud-cron: + mountPath: /var/www/html/config + preview-cron: + preview-cron: + mountPath: /var/www/html/config + notify: + notify: + mountPath: /var/www/html/config + readOnly: true + nginx: + nginx: + mountPath: /var/www/html/config + readOnly: true + data: + enabled: true + targetSelector: + main: + main: + mountPath: /var/www/html/data + init-perms: + mountPath: /var/www/html/data + nextcloud-cron: + nextcloud-cron: + mountPath: /var/www/html/data + preview-cron: + preview-cron: + mountPath: /var/www/html/data + nginx: + nginx: + mountPath: /var/www/html/data + readOnly: true +cnpg: + main: + enabled: true + user: nextcloud + database: nextcloud +redis: + enabled: true + username: default +portal: + open: + enabled: true +updated: true diff --git a/stable/nextcloud/22.2.12/questions.yaml b/stable/nextcloud/22.2.12/questions.yaml new file mode 100644 index 00000000000..9ecf23d3506 --- /dev/null +++ b/stable/nextcloud/22.2.12/questions.yaml @@ -0,0 +1,3347 @@ +groups: + - name: Container Image + description: Image to be used for container + - name: General Settings + description: General Deployment Settings + - name: Workload Settings + description: Workload Settings + - name: App Configuration + description: App Specific Config Options + - name: Networking and Services + description: Configure Network and Services for Container + - name: Storage and Persistence + description: Persist and Share Data that is Separate from the Container + - name: Ingress + description: Ingress Configuration + - name: Security and Permissions + description: Configure Security Context and Permissions + - name: Resources and Devices + description: "Specify Resources/Devices to be Allocated to Workload" + - name: Middlewares + description: Traefik Middlewares + - name: Metrics + description: Metrics + - name: Addons + description: Addon Configuration + - name: Advanced + description: Advanced Configuration + - name: Postgresql + description: Postgresql + - name: Documentation + description: Documentation +portals: + open: + protocols: + - "$kubernetes-resource_configmap_tcportal-open_protocol" + host: + - "$kubernetes-resource_configmap_tcportal-open_host" + ports: + - "$kubernetes-resource_configmap_tcportal-open_port" +questions: + - variable: global + group: General Settings + label: "Global Settings" + schema: + additional_attrs: true + type: dict + attrs: + - variable: stopAll + label: Stop All + description: "Stops All Running pods and hibernates cnpg" + schema: + type: boolean + default: false + - variable: workload + group: "Workload Settings" + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type (Advanced) + schema: + type: string + default: Deployment + enum: + - value: Deployment + description: Deployment + - value: DaemonSet + description: DaemonSet + - variable: replicas + label: Replicas (Advanced) + description: Set the number of Replicas + schema: + type: int + show_if: [["type", "!=", "DaemonSet"]] + default: 1 + - variable: podSpec + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: containers + label: Containers + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Container + schema: + additional_attrs: true + type: dict + attrs: + - variable: envList + label: Extra Environment Variables + description: "Please be aware that some variables are set in the background, adding duplicates here might cause issues or prevent the app from starting..." + schema: + type: list + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + - variable: value + label: Value + schema: + type: string + - variable: extraArgs + label: Extra Args + schema: + type: list + default: [] + items: + - variable: arg + label: Arg + schema: + type: string + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: command + label: Command + schema: + type: list + default: [] + items: + - variable: param + label: Param + schema: + type: string + - variable: TZ + label: Timezone + group: "General Settings" + schema: + type: string + default: "Etc/UTC" + $ref: + - "definitions/timezone" + - variable: nextcloud + group: App Configuration + label: Nextcloud + schema: + additional_attrs: true + type: dict + attrs: + - variable: credentials + label: Initial Credentials + schema: + additional_attrs: true + type: dict + attrs: + - variable: initialAdminUser + label: Initial Admin User + description: Sets the initial admin username + schema: + type: string + required: true + default: "" + - variable: initialAdminPassword + label: Initial Admin Password + description: Sets the initial admin password + schema: + type: string + required: true + private: true + default: "" + - variable: general + label: General + schema: + additional_attrs: true + type: dict + attrs: + - variable: run_optimize + label: Run Optimize Scripts + description: | + Runs the following commands at startup:
+ occ db:add-missing-indices
+ occ db:add-missing-columns
+ occ db:add-missing-primary-keys
+ yes | occ db:convert-filecache-bigint
+ occ maintenance:mimetype:update-js
+ occ maintenance:mimetype:update-db
+ occ maintenance:update:htaccess
+ schema: + type: boolean + default: false + - variable: default_phone_region + label: Default Phone Region + description: | + Sets the default phone region in ISO_3166-1 format (e.g. US).
+ https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2#Officially_assigned_code_elements + schema: + type: string + valid_chars: '^[A-Z]{2}$' + required: true + default: "" + - variable: accessIP + label: Access IP + description: Set to the IP-Address used to reach Nextcloud. + schema: + type: string + required: true + $ref: + - "definitions/nodeIP" + - variable: force_enable_allow_local_remote_servers + label: Force Enable Allow Local Remote Servers + description: + Enables 'allow_local_remote_servers' option + schema: + type: boolean + default: false + - variable: files + label: Files Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: shared_folder_name + label: Shared Folder Name + schema: + type: string + required: true + default: Shared + - variable: max_chunk_size + label: Max Chunk Size + schema: + type: int + required: true + default: 10485760 + - variable: expirations + label: Expirations Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: activity_expire_days + label: Activity Expire Days + schema: + type: int + required: true + default: 90 + - variable: trash_retention_obligation + label: Trash Retention Obligation + schema: + type: string + required: true + default: auto + - variable: versions_retention_obligation + label: Versions Retention Obligation + schema: + type: string + required: true + default: auto + - variable: previews + label: Previews Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Previews + schema: + type: boolean + default: true + show_subquestions_if: true + subquestions: + - variable: imaginary + label: Enable imaginary + description: | + Enable imaginary to generate previews in the background.
+ It will also deploy the needed container. + schema: + type: boolean + default: true + - variable: cron + label: Enable cron + description: | + Enable cron to generate previews in the background. + schema: + type: boolean + default: true + - variable: schedule + label: Cron Schedule + schema: + type: string + default: "*/30 * * * *" + - variable: max_x + label: Max X + schema: + type: int + required: true + default: 2048 + - variable: max_y + label: Max Y + schema: + type: int + required: true + default: 2048 + - variable: max_memory + label: Max Memory + schema: + type: int + required: true + default: 1024 + - variable: max_allowed_resolution + label: Max Allowed Resolution + schema: + type: string + valid_chars: '^[0-9]{1,5}(\.[0-9]{1,2})?$' + show_if: [["imaginary", "=", true]] + required: true + default: "18.0" + - variable: max_file_size_image + label: Max File Size Image + schema: + type: int + required: true + default: 50 + - variable: jpeg_quality + label: JPEG Quality + schema: + type: int + required: true + default: 60 + - variable: square_sizes + label: Square Sizes + schema: + type: string + required: true + default: "32 256" + - variable: width_sizes + label: Width Sizes + schema: + type: string + required: true + default: "256 384" + - variable: height_sizes + label: Height Sizes + schema: + type: string + required: true + default: "256" + - variable: providers + label: Providers + schema: + type: list + empty: false + required: true + default: + - BMP + - GIF + - JPEG + - Krita + - MarkDown + - MP3 + - OpenDocument + - PNG + - TXT + - XBitmap + items: + - variable: provider_entry + label: Provider Entry + schema: + type: string + required: true + default: "" + enum: + - value: BMP + description: BMP + - value: Font + description: Font + - value: GIF + description: GIF + - value: HEIC + description: HEIC + - value: Illustrator + description: Illustrator + - value: JPEG + description: JPEG + - value: Krita + description: Krita + - value: MarkDown + description: MarkDown + - value: Movie + description: Movie + - value: MP3 + description: MP3 + - value: MSOffice2003 + description: MSOffice2003 + - value: MSOffice2007 + description: MSOffice2007 + - value: MSOfficeDoc + description: MSOfficeDoc + - value: OpenDocument + description: OpenDocument + - value: PDF + description: PDF + - value: Photoshop + description: Photoshop + - value: PNG + description: PNG + - value: Postscript + description: Postscript + - value: StarOffice + description: StarOffice + - value: SVG + description: SVG + - value: TIFF + description: TIFF + - value: TXT + description: TXT + - value: XBitmap + description: XBitmap + - variable: logging + label: Logging Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: log_level + label: Log Level + schema: + type: int + required: true + default: 2 + enum: + - value: 0 + description: Debug + - value: 1 + description: Info + - value: 2 + description: Warning + - value: 3 + description: Error + - value: 4 + description: Fatal + - variable: log_date_format + label: Log Date Format + schema: + type: string + required: true + default: d/m/Y H:i:s + - variable: notify_push + label: Notify Push Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Notify Push + description: | + Enable and Configure Notify Push.
+ It will also deploy the needed container + schema: + type: boolean + default: true + - variable: clamav + label: ClamAV Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable ClamAV + description: | + Enable and configure ClamAV.
+ It will also deploy the needed container.
+ Keep in mind that this will run as root.
+ https://github.com/Cisco-Talos/clamav/issues/478 + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: stream_max_length + label: Stream Max Length + schema: + type: int + required: true + default: 104857600 + - variable: file_max_size + label: File Max Size + schema: + type: int + required: true + default: -1 + - variable: infected_action + label: Infected Action + schema: + type: string + required: true + default: only_log + enum: + - value: delete + description: Delete + - value: only_log + description: Only Log + - variable: collabora + label: Collabora Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Collabora + description: | + Enable and configure Collabora.
+ It will also deploy the needed container.
+ Keep in mind that this will run as root. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: interface_mode + label: Interface Mode + schema: + type: string + required: true + default: default + enum: + - value: default + description: Default + - value: compact + description: Compact + - value: tabbed + description: Tabbed + - variable: username + label: Username + schema: + type: string + default: admin + required: true + - variable: password + label: Password + schema: + type: string + default: "" + required: true + - variable: dictionaries + label: Dictionaries + schema: + type: list + empty: false + required: true + default: + - de_DE + - en_GB + - en_US + - el_GR + - es_ES + - fr_FR + - pt_BR + - pt_PT + - it + - nl + - ru + items: + - variable: dictionary + label: Dictionary + schema: + type: string + required: true + default: "" + - variable: onlyoffice + label: Only Office Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable OnlyOffice + description: | + Enable and configure OnlyOffice.
+ This will NOT deploy the needed container.
+ You need to deploy it yourself. + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: url + label: Public URL + description: | + The public FQDN and port of the OnlyOffice Document Server + schema: + type: string + required: true + default: "" + - variable: internal_url + label: Internal URL + description: | + The internal FQDN and port of the OnlyOffice Document Server + schema: + type: string + required: true + default: "" + - variable: verify_ssl + label: Verify SSL (Advanced) + description: | + Verify SSL when connecting to OnlyOffice Document Server + schema: + type: boolean + default: true + - variable: jwt + label: JWT + schema: + type: string + required: true + default: "" + - variable: jwt_header + label: JWT Header + schema: + type: string + required: true + default: Authorization + - variable: php + label: PHP Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: memory_limit + label: Memory Limit + schema: + type: string + required: true + default: 1G + - variable: upload_limit + label: Upload Limit + schema: + type: string + required: true + default: 10G + - variable: pm_max_children + label: Max Children + schema: + type: int + required: true + default: 180 + - variable: pm_start_servers + label: Start Servers + schema: + type: int + required: true + default: 18 + - variable: pm_min_spare_servers + label: Minimum Spare Servers + schema: + type: int + required: true + default: 12 + - variable: pm_max_spare_servers + label: Maximum Spare Servers + schema: + type: int + required: true + default: 30 + - variable: opcache + label: OPCache Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: interned_strings_buffer + label: Interned Strings Buffer + description: The amount of memory used to store interned strings, in megabytes. + schema: + type: int + required: true + default: 32 + - variable: max_accelerated_files + label: Max Accelerated Files + description: The maximum number of keys (and therefore scripts) in the OPcache hash table. + schema: + type: int + required: true + default: 10000 + - variable: memory_consumption + label: Memory Consumption + description: The size of the shared memory storage used by OPcache, in megabytes. + schema: + type: int + required: true + default: 128 + - variable: revalidate_freq + label: Revalidate Frequency + description: How often to check script timestamps for updates, in seconds. 0 will result in OPcache checking for updates on every request. + schema: + type: int + required: true + default: 60 + - variable: jit_buffer_size + label: JIT Buffer Size + description: The amount of shared memory (in megabytes) to reserve for compiled JIT code. A zero value disables the JIT. + schema: + type: int + required: true + default: 128 + + - variable: podOptions + group: "General Settings" + label: "Global Pod Options (Advanced)" + schema: + additional_attrs: true + type: dict + attrs: + - variable: expertPodOpts + label: "Expert - Pod Options" + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hostNetwork + label: "Host Networking" + schema: + type: boolean + default: false + - variable: dnsConfig + label: "DNS Configuration" + schema: + type: dict + additional_attrs: true + attrs: + - variable: options + label: "Options" + schema: + type: list + default: [{"name": "ndots", "value": "1"}] + items: + - variable: optionsEntry + label: "Option Entry" + schema: + type: dict + additional_attrs: true + attrs: + - variable: name + label: "Name" + schema: + type: string + required: true + - variable: value + label: "Value" + schema: + type: string + - variable: nameservers + label: "Nameservers" + schema: + type: list + default: [] + items: + - variable: nsEntry + label: "Nameserver Entry" + schema: + type: string + required: true + - variable: searches + label: "Searches" + schema: + type: list + default: [] + items: + - variable: searchEntry + label: "Search Entry" + schema: + type: string + required: true + - variable: service + group: Networking and Services + label: Configure Service(s) + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Service + description: The Primary service on which the healthcheck runs, often the webUI + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Service + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "Service's Port(s) Configuration" + schema: + additional_attrs: true + type: dict + attrs: + - 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: 12000 + required: true + - variable: serviceexpert + group: Networking and Services + label: Show Expert Config + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: scaleExternalInterface + description: Add External Interfaces + label: Add external Interfaces + group: Networking + schema: + type: list + items: + - variable: interfaceConfiguration + description: Interface Configuration + label: Interface Configuration + schema: + additional_attrs: true + type: dict + $ref: + - "normalize/interfaceConfiguration" + attrs: + - variable: hostInterface + description: Please Specify Host Interface + label: Host Interface + schema: + type: string + required: true + $ref: + - "definitions/interface" + - variable: ipam + description: Define how IP Address will be managed + label: IP Address Management + schema: + additional_attrs: true + type: dict + required: true + attrs: + - variable: type + description: Specify type for IPAM + label: IPAM Type + schema: + type: string + required: true + enum: + - value: dhcp + description: Use DHCP + - value: static + description: Use Static IP + - variable: staticIPConfigurations + label: Static IP Addresses + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticIP + label: Static IP + schema: + type: ipaddr + cidr: true + - variable: staticRoutes + label: Static Routes + schema: + type: list + show_if: [["type", "=", "static"]] + items: + - variable: staticRouteConfiguration + label: Static Route Configuration + schema: + additional_attrs: true + type: dict + attrs: + - variable: destination + label: Destination + schema: + type: ipaddr + cidr: true + required: true + - variable: gateway + label: Gateway + schema: + type: ipaddr + cidr: false + required: true + - variable: serviceList + label: Add Manual Custom Services + group: Networking and Services + schema: + type: list + default: [] + items: + - variable: serviceListEntry + label: Custom Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the service + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: LoadBalancer + description: LoadBalancer (Expose Ports) + - value: ClusterIP + description: ClusterIP (Do Not Expose Ports) + - value: Simple + description: Deprecated CHANGE THIS + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: advancedsvcset + label: Show Advanced Service Settings + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: externalIPs + label: "External IP's" + description: "External IP's" + schema: + type: list + default: [] + items: + - variable: externalIP + label: External IP + schema: + type: string + - variable: ipFamilyPolicy + label: IP Family Policy + description: Specify the IP Policy + schema: + type: string + default: SingleStack + enum: + - value: SingleStack + description: SingleStack + - value: PreferDualStack + description: PreferDualStack + - value: RequireDualStack + description: RequireDualStack + - variable: ipFamilies + label: IP Families + description: (Advanced) The IP Families that should be used + schema: + type: list + default: [] + items: + - variable: ipFamily + label: IP Family + schema: + type: string + - variable: portsList + label: Additional Service Ports + schema: + type: list + default: [] + items: + - variable: portsListEntry + label: Custom ports + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Port + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Port Name + schema: + type: string + default: "" + - variable: protocol + label: Port Type + schema: + type: string + default: tcp + enum: + - value: http + description: HTTP + - value: https + description: HTTPS + - value: tcp + description: TCP + - value: udp + description: UDP + - variable: targetPort + label: Target Port + description: This port exposes the container port on the service + schema: + type: int + required: true + - variable: port + label: Container Port + schema: + type: int + required: true + - variable: persistence + label: Integrated Persistent Storage + description: Integrated Persistent Storage + group: Storage and Persistence + schema: + additional_attrs: true + type: dict + attrs: + - variable: html + label: App HTML Storage + description: Stores the Application HTML. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: config + label: App Config Storage + description: Stores the Application Config. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: data + label: User Data Storage + description: Stores the User Data. + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: pvc + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size quotum of Storage (Do NOT REDUCE after installation) + description: This value can ONLY be INCREASED after the installation + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: persistenceList + label: Additional App Storage + group: Storage and Persistence + schema: + type: list + default: [] + items: + - variable: persistenceListEntry + label: Custom Storage + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the storage + schema: + type: boolean + default: true + hidden: true + - variable: type + label: Type of Storage + description: Sets the persistence type, Anything other than PVC could break rollback! + schema: + type: string + default: hostPath + enum: + - value: pvc + description: PVC + - value: hostPath + description: Host Path + - value: emptyDir + description: emptyDir + - value: nfs + description: NFS Share + - variable: server + label: NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: path + label: Path on NFS Server + schema: + show_if: [["type", "=", "nfs"]] + type: string + default: "" + - variable: autoPermissions + label: Automatic Permissions Configuration + description: Automatically set permissions + schema: + show_if: [["type", "!=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: enabled + label: enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: chown + label: Run CHOWN + description: | + It will run CHOWN on the path with the given fsGroup + schema: + type: boolean + default: false + - variable: chmod + label: Run CHMOD + description: | + It will run CHMOD on the path with the given value
+ Format should be 3 digits, e.g. 770 + schema: + type: string + valid_chars: '[0-9]{3}' + default: "" + - variable: recursive + label: Recursive + description: | + It will run CHOWN and CHMOD recursively + schema: + type: boolean + default: false + - variable: readOnly + label: Read Only + schema: + type: boolean + default: false + - variable: hostPath + label: Host Path + description: Path inside the container the storage is mounted + schema: + show_if: [["type", "=", "hostPath"]] + type: hostpath + - variable: mountPath + label: Mount Path + description: Path inside the container the storage is mounted + schema: + type: string + default: "" + required: true + valid_chars: '^\/([a-zA-Z0-9._-]+(\s?[a-zA-Z0-9._-]+|\/?))+$' + - variable: medium + label: EmptyDir Medium + schema: + show_if: [["type", "=", "emptyDir"]] + type: string + default: "" + enum: + - value: "" + description: Default + - value: Memory + description: Memory + - variable: size + label: Size Quotum of Storage + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: 256Gi + - variable: storageClass + label: 'storageClass (Advanced)' + description: 'sets the storageClass to something other than iX default. Only for advanced usecases!' + schema: + show_if: [["type", "=", "pvc"]] + type: string + default: "" + - variable: static + label: 'Static Fixed PVC Bindings (Experimental)' + description: Link a PVC to a specific storage location + schema: + show_if: [["type", "=", "pvc"]] + type: dict + additional_attrs: true + attrs: + - variable: mode + label: mode + description: | + disabled: use normal dynamic PVCs + smb: connect to an SMB share + nfs: connect to an NFS share + schema: + type: string + default: "disabled" + enum: + - value: "disabled" + description: disabled + - value: smb + description: smb + - value: nfs + description: nfs + - variable: server + label: Server + description: server to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "myserver" + - variable: share + label: Share + description: share to connect to + schema: + type: string + show_if: [["mode", "!=", "disabled"]] + default: "/myshare" + - variable: user + label: User + description: connecting user + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "myuser" + - variable: domain + label: Domain + description: user domain + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: password + label: Password + description: connecting password + schema: + type: string + show_if: [["mode", "=", "smb"]] + default: "" + - variable: volumeSnapshots + label: 'Volume Snapshots (Experimental)' + description: Add an entry to the list to force creation of a volumeSnapshot of this PVC + schema: + show_if: [["type", "=", "pvc"]] + type: list + default: [] + items: + - variable: volumeSnapshotEntry + label: Custom volumeSnapshot + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + description: 'WARNING: renaming this, means deletion of the snapshot with the old name!' + schema: + type: string + default: "mysnapshot" + required: true + - variable: volumeSnapshotClassName + label: 'volumeSnapshot Class Name (Advanced)' + description: For use with PVCs using a non-default storageClass + schema: + type: string + default: "" + - variable: ingress + label: "" + group: Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: certificateIssuer + label: Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + show_if: [["advanced", "=", true]] + required: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + show_if: [["advanced", "=", true]] + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: ingressList + label: Add Manual Custom Ingresses + group: Ingress + schema: + type: list + default: [] + items: + - variable: ingressListEntry + label: Custom Ingress + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: true + hidden: true + - variable: name + label: Name + schema: + type: string + default: "" + - variable: ingressClassName + label: IngressClass Name + schema: + type: string + default: "" + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + show_if: [["advanced", "=", true]] + default: false + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: service + label: Linked Service + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Service Name + schema: + type: string + default: "" + - variable: port + label: Service Port + schema: + type: int + - variable: certificateIssuer + label: certificateIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + default: [] + show_if: [["certificateIssuer", "=", ""]] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your Cert-Manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: scaleCert + label: Use TrueNAS SCALE Certificate (Deprecated) + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: Use Custom Secret (Advanced) + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: entrypoint + label: Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + required: true + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: securityContext + group: Security and Permissions + label: Security Context + schema: + additional_attrs: true + type: dict + attrs: + - variable: container + label: Container + schema: + additional_attrs: true + type: dict + attrs: + # Settings from questions.yaml get appended here on a per-app basis + - variable: runAsUser + label: runAsUser + description: The UserID of the user running the application + schema: + type: int + default: 568 + - variable: runAsGroup + label: runAsGroup + description: The groupID of the user running the application + schema: + type: int + default: 568 + # Settings from questions.yaml get appended here on a per-app basis + - variable: PUID + label: Process User ID - PUID + description: When supported by the container, this sets the User ID running the Application Process. Not supported by all Apps + schema: + type: int + show_if: [["runAsUser", "=", 0]] + default: 568 + - variable: UMASK + label: UMASK + description: When supported by the container, this sets the UMASK for the App. Not supported by all Apps + schema: + type: string + default: "0022" + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: privileged + label: "Privileged mode" + schema: + type: boolean + default: false + - variable: readOnlyRootFilesystem + label: "ReadOnly Root Filesystem" + schema: + type: boolean + default: true + - variable: pod + label: Pod + schema: + additional_attrs: true + type: dict + attrs: + - variable: fsGroupChangePolicy + label: "When should we take ownership?" + schema: + type: string + default: OnRootMismatch + enum: + - value: OnRootMismatch + description: OnRootMismatch + - value: Always + description: Always + - variable: supplementalGroups + label: Supplemental Groups + schema: + type: list + default: [] + items: + - variable: supplementalGroupsEntry + label: Supplemental Group + schema: + type: int + # Settings from questions.yaml get appended here on a per-app basis + - variable: fsGroup + label: fsGroup + description: The group that should own ALL storage. + schema: + type: int + default: 568 + - variable: resources + group: Resources and Devices + label: "Resource Limits" + schema: + additional_attrs: true + type: dict + attrs: + - variable: limits + label: Advanced Limit Resource Consumption + schema: + additional_attrs: true + type: dict + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 4000m + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: RAM + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 8Gi + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: requests + label: "Minimum Resources Required (request)" + schema: + additional_attrs: true + type: dict + hidden: true + attrs: + - variable: cpu + label: CPU + description: "1000m means 1 hyperthread. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 10m + hidden: true + valid_chars: '^(?!^0(\.0|m|)$)([0-9]+)(\.[0-9]|m?)$' + - variable: memory + label: "RAM" + description: "1Gi means 1 Gibibyte RAM. Detailed info: https://truecharts.org/manual/SCALE/validation" + schema: + type: string + default: 50Mi + hidden: true + valid_chars: '^(?!^0(e[0-9]|[EPTGMK]i?|)$)([0-9]+)(|[EPTGMK]i?|e[0-9]+)$' + - variable: deviceList + label: Mount USB Devices + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: deviceListEntry + label: Device + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable the Storage + schema: + type: boolean + default: true + - variable: type + label: (Advanced) Type of Storage + description: Sets the persistence type + schema: + type: string + default: device + hidden: true + - variable: readOnly + label: readOnly + schema: + type: boolean + default: false + - variable: hostPath + label: Host Device Path + description: Path to the device on the host system + schema: + type: path + - variable: mountPath + label: Container Device Path + description: Path inside the container the device is mounted + schema: + type: string + default: "/dev/ttyACM0" + - variable: scaleGPU + label: GPU Configuration + group: Resources and Devices + schema: + type: list + default: [] + items: + - variable: scaleGPUEntry + label: GPU + schema: + additional_attrs: true + type: dict + attrs: + # Specify GPU configuration + - variable: gpu + label: Select GPU + schema: + additional_attrs: true + type: dict + $ref: + - "definitions/gpuConfiguration" + attrs: [] + - variable: workaround + label: "Workaround" + schema: + type: string + default: workaround + hidden: true + - variable: metrics + group: Metrics + label: Prometheus Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: main + label: Main Metrics + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: prometheusRule + label: PrometheusRule + description: Enable and configure Prometheus Rules for the App. + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + description: Enable Prometheus Metrics + schema: + type: boolean + default: false + # TODO: Rule List section +# - variable: horizontalPodAutoscaler +# group: Advanced +# label: (Advanced) Horizontal Pod Autoscaler +# schema: +# type: list +# default: [] +# items: +# - variable: hpaEntry +# label: HPA Entry +# schema: +# additional_attrs: true +# type: dict +# attrs: +# - variable: name +# label: Name +# schema: +# type: string +# required: true +# default: "" +# - variable: enabled +# label: Enabled +# schema: +# type: boolean +# default: false +# show_subquestions_if: true +# subquestions: +# - variable: target +# label: Target +# description: Deployment name, Defaults to Main Deployment +# schema: +# type: string +# default: "" +# - variable: minReplicas +# label: Minimum Replicas +# schema: +# type: int +# default: 1 +# - variable: maxReplicas +# label: Maximum Replicas +# schema: +# type: int +# default: 5 +# - variable: targetCPUUtilizationPercentage +# label: Target CPU Utilization Percentage +# schema: +# type: int +# default: 80 +# - variable: targetMemoryUtilizationPercentage +# label: Target Memory Utilization Percentage +# schema: +# type: int +# default: 80 + - variable: networkPolicy + group: Advanced + label: (Advanced) Network Policy + schema: + type: list + default: [] + items: + - variable: netPolicyEntry + label: Network Policy Entry + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + default: "" + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: policyType + label: Policy Type + schema: + type: string + default: "" + enum: + - value: "" + description: Default + - value: ingress + description: Ingress + - value: egress + description: Egress + - value: ingress-egress + description: Ingress and Egress + - variable: egress + label: Egress + schema: + type: list + default: [] + items: + - variable: egressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: to + label: To + schema: + type: list + default: [] + items: + - variable: toEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: ingress + label: Ingress + schema: + type: list + default: [] + items: + - variable: ingressEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: from + label: From + schema: + type: list + default: [] + items: + - variable: fromEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: ipBlock + label: IP Block + schema: + additional_attrs: true + type: dict + attrs: + - variable: cidr + label: CIDR + schema: + type: string + default: "" + - variable: except + label: Except + schema: + type: list + default: [] + items: + - variable: exceptint + label: "" + schema: + type: string + - variable: namespaceSelector + label: Namespace Selector + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: podSelector + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: matchExpressions + label: Match Expressions + schema: + type: list + default: [] + items: + - variable: expressionEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: key + label: Key + schema: + type: string + - variable: operator + label: Operator + schema: + type: string + default: TCP + enum: + - value: In + description: In + - value: NotIn + description: NotIn + - value: Exists + description: Exists + - value: DoesNotExist + description: DoesNotExist + - variable: values + label: Values + schema: + type: list + default: [] + items: + - variable: value + label: "" + schema: + type: string + - variable: ports + label: Ports + schema: + type: list + default: [] + items: + - variable: portsEntry + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + - variable: endPort + label: End Port + schema: + type: int + - variable: protocol + label: Protocol + schema: + type: string + default: TCP + enum: + - value: TCP + description: TCP + - value: UDP + description: UDP + - value: SCTP + description: SCTP + - variable: addons + group: Addons + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: Codeserver + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: service + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Service Type + description: "ClusterIP's are only internally available and Loadbalancer exposes the service using the system loadbalancer" + schema: + type: string + default: LoadBalancer + enum: + - value: NodePort + description: Deprecated CHANGE THIS + - value: ClusterIP + description: ClusterIP + - value: LoadBalancer + description: LoadBalancer + - variable: loadBalancerIP + label: LoadBalancer IP + description: "MetalLB Only: Selects the Loadbalancer IP to expose on. Required when using PortalButton with MetalLB" + schema: + show_if: [["type", "=", "LoadBalancer"]] + type: string + default: "" + - variable: ports + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: codeserver + label: "" + schema: + additional_attrs: true + type: dict + attrs: + - variable: port + label: Port + schema: + type: int + default: 36107 + - variable: ingress + label: "Ingress" + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enable Ingress + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: hosts + label: Hosts + schema: + type: list + default: [] + items: + - variable: hostEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: host + label: HostName + schema: + type: string + default: "" + required: true + - variable: paths + label: Paths + schema: + type: list + default: [{path: "/", pathType: "Prefix"}] + items: + - variable: pathEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: path + label: Path + schema: + type: string + required: true + default: "/" + - variable: pathType + label: Path Type + schema: + type: string + required: true + default: Prefix + - variable: certificateIssuer + label: Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates. Cannot be used combined with tls option below' + schema: + type: string + default: "" + - variable: middlewares + label: Traefik Middlewares + description: Add previously created Traefik Middlewares to this Ingress + schema: + type: list + default: [] + items: + - variable: name + label: Name + schema: + type: string + default: "" + required: true + - variable: advanced + label: Show Advanced Settings + description: Advanced settings are not covered by TrueCharts Support + schema: + type: boolean + default: false + - variable: entrypoint + label: (Advanced) Traefik Entrypoint + description: Entrypoint used by Traefik when using Traefik as Ingress Provider + schema: + type: string + default: websecure + show_if: [["advanced", "=", true]] + required: true + - variable: allowCors + label: "Allow Cross Origin Requests" + schema: + type: boolean + show_if: [["advanced", "=", true]] + default: false + - variable: ingressClassName + label: (Advanced/Optional) IngressClass Name + schema: + type: string + show_if: [["advanced", "=", true]] + default: "" + - variable: tls + label: TLS-Settings + schema: + type: list + show_if: [["advanced", "=", true]] + default: [] + items: + - variable: tlsEntry + label: Host + schema: + additional_attrs: true + type: dict + attrs: + - variable: hosts + label: Certificate Hosts + schema: + type: list + default: [] + items: + - variable: host + label: Host + schema: + type: string + default: "" + required: true + - variable: certificateIssuer + label: Use Cert-Manager clusterIssuer + description: 'add the name of your cert-manager clusterIssuer here for automatic tls certificates.' + schema: + type: string + default: "" + - variable: clusterCertificate + label: 'Cluster Certificate (Advanced)' + description: 'Add the name of your cluster-wide certificate, that you set up in the ClusterIssuer chart.' + schema: + type: string + show_if: [["certificateIssuer", "=", ""]] + default: "" + - variable: secretName + label: 'Use Custom Certificate Secret (Advanced)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: string + default: "" + - variable: scaleCert + label: 'Use TrueNAS SCALE Certificate (Deprecated)' + schema: + show_if: [["certificateIssuer", "=", ""]] + type: int + $ref: + - "definitions/certificate" + - variable: envList + label: Codeserver Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: netshoot + label: Netshoot + schema: + additional_attrs: true + type: dict + attrs: + - variable: enabled + label: Enabled + schema: + type: boolean + default: false + show_subquestions_if: true + subquestions: + - variable: envList + label: Netshoot Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + - variable: vpn + label: VPN + schema: + additional_attrs: true + type: dict + attrs: + - variable: type + label: Type + schema: + type: string + default: disabled + enum: + - value: disabled + description: disabled + - value: gluetun + description: Gluetun + - value: tailscale + description: Tailscale + - value: openvpn + description: OpenVPN (Deprecated) + - value: wireguard + description: Wireguard (Deprecated) + - variable: openvpn + label: OpenVPN Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "openvpn"]] + attrs: + - variable: username + label: Authentication Username (Optional) + description: Authentication Username, Optional + schema: + type: string + default: "" + - variable: password + label: Authentication Password + description: Authentication Credentials + schema: + type: string + show_if: [["username", "!=", ""]] + default: "" + required: true + - variable: tailscale + label: Tailscale Settings + schema: + additional_attrs: true + type: dict + show_if: [["type", "=", "tailscale"]] + attrs: + - variable: authkey + label: Authentication Key + description: Provide an auth key to automatically authenticate the node as your user account. + schema: + type: string + private: true + default: "" + - variable: auth_once + label: Auth Once + description: Only attempt to log in if not already logged in. + schema: + type: boolean + default: true + - variable: accept_dns + label: Accept DNS + description: Accept DNS configuration from the admin console. + schema: + type: boolean + default: false + - variable: userspace + label: Userspace + description: Userspace Networking mode allows running Tailscale where you do not have access to create a VPN tunnel device. + schema: + type: boolean + default: false + - variable: routes + label: Routes + description: Expose physical subnet routes to your entire Tailscale network. + schema: + type: string + default: "" + - variable: dest_ip + label: Destination IP + description: Tells the DNAT mechanism which Destination IP to set in the IP header, and where to send packets that are matched. + schema: + type: string + default: "" + - variable: sock5_server + label: Sock5 Server + description: The address on which to listen for SOCKS5 proxying into the tailscale net. + schema: + type: string + default: "" + - variable: outbound_http_proxy_listen + label: Outbound HTTP Proxy Listen + description: The address on which to listen for HTTP proxying into the tailscale net. + schema: + type: string + default: "" + - variable: extra_args + label: Extra Args + description: Extra Args + schema: + type: string + default: "" + - variable: daemon_extra_args + label: Tailscale Daemon Extra Args + description: Tailscale Daemon Extra Args + schema: + type: string + default: "" + - variable: killSwitch + label: Enable Killswitch + schema: + type: boolean + show_if: [["type", "!=", "disabled"]] + default: true + - variable: excludedNetworks_IPv4 + label: Killswitch Excluded IPv4 networks + description: List of Killswitch Excluded IPv4 Addresses + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv4 + label: IPv4 Network + schema: + type: string + required: true + - variable: excludedNetworks_IPv6 + label: Killswitch Excluded IPv6 networks + description: "List of Killswitch Excluded IPv6 Addresses" + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: networkv6 + label: IPv6 Network + schema: + type: string + required: true + - variable: configFile + label: VPN Config File Location + schema: + type: string + show_if: [["type", "!=", "disabled"]] + default: "" + + - variable: envList + label: VPN Environment Variables + schema: + type: list + show_if: [["type", "!=", "disabled"]] + default: [] + items: + - variable: envItem + label: Environment Variable + schema: + additional_attrs: true + type: dict + attrs: + - variable: name + label: Name + schema: + type: string + required: true + - variable: value + label: Value + schema: + type: string + required: true + max_length: 10240 + - variable: docs + group: Documentation + label: Please read the documentation at https://truecharts.org + description: Please read the documentation at +
https://truecharts.org + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDocs + label: I have checked the documentation + schema: + type: boolean + default: true + - variable: donateNag + group: Documentation + label: Please consider supporting TrueCharts, see https://truecharts.org/sponsor + description: Please consider supporting TrueCharts, see +
https://truecharts.org/sponsor + schema: + additional_attrs: true + type: dict + attrs: + - variable: confirmDonate + label: I have considered donating + schema: + type: boolean + default: true + hidden: true diff --git a/stable/nextcloud/22.2.12/templates/NOTES.txt b/stable/nextcloud/22.2.12/templates/NOTES.txt new file mode 100644 index 00000000000..efcb74cb772 --- /dev/null +++ b/stable/nextcloud/22.2.12/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "tc.v1.common.lib.chart.notes" $ -}} diff --git a/stable/nextcloud/22.2.12/templates/_configmap.tpl b/stable/nextcloud/22.2.12/templates/_configmap.tpl new file mode 100644 index 00000000000..66b01c3ae83 --- /dev/null +++ b/stable/nextcloud/22.2.12/templates/_configmap.tpl @@ -0,0 +1,438 @@ +{{- define "nextcloud.accessurl" -}} + {{- $accessUrl := .Values.chartContext.APPURL -}} + {{- if or (contains "127.0.0.1" $accessUrl) (contains "localhost" $accessUrl) -}} + {{- if .Values.nextcloud.general.accessIP -}} + {{- $prot := "http" -}} + {{- $host := .Values.nextcloud.general.accessIP -}} + {{- $port := .Values.service.main.ports.main.port -}} + {{/* + Allowing here to override protocol and port + should be enough to make it work with any rev proxy + */}} + {{- $accessUrl = printf "%v://%v:%v" $prot $host $port -}} + {{- end -}} + {{- end -}} + + {{- $accessUrl -}} +{{- end -}} + +{{- define "nextcloud.accesshost" -}} + {{- $accessUrl := (include "nextcloud.accessurl" $) -}} + {{- $accessHost := regexReplaceAll ".*://(.*)" $accessUrl "${1}" -}} + {{- $accessHost = regexReplaceAll "(.*):.*" $accessHost "${1}" -}} + + {{- $accessHost -}} +{{- end -}} + +{{/* Define the configmap */}} +{{- define "nextcloud.configmaps" -}} +{{- $fullname := (include "tc.v1.common.lib.chart.names.fullname" $) -}} +{{- $fqdn := (include "tc.v1.common.lib.chart.names.fqdn" $) -}} +{{- $accessUrl := (include "nextcloud.accessurl" $) -}} +{{- $accessHost := (include "nextcloud.accesshost" $) -}} +{{- $accessHostPort := regexReplaceAll ".*://(.*)" $accessUrl "${1}" -}} +{{- $accessProtocol := regexReplaceAll "(.*)://.*" $accessUrl "${1}" -}} +{{- $redisHost := .Values.redis.creds.plainhost | trimAll "\"" -}} +{{- $redisPass := .Values.redis.creds.redisPassword | trimAll "\"" -}} +{{- $healthHost := "kube.internal.healthcheck" -}} + +php-tune: + enabled: true + data: + zz-tune.conf: | + [www] + pm.max_children = {{ .Values.nextcloud.php.pm_max_children }} + pm.start_servers = {{ .Values.nextcloud.php.pm_start_servers }} + pm.min_spare_servers = {{ .Values.nextcloud.php.pm_min_spare_servers }} + pm.max_spare_servers = {{ .Values.nextcloud.php.pm_max_spare_servers }} + +opcache: + enabled: true + data: + opcache-recommended.ini: | + opcache.enable=1 + opcache.save_comments=1 + opcache.jit=1255 + opcache.interned_strings_buffer={{ .Values.nextcloud.opcache.interned_strings_buffer }} + opcache.max_accelerated_files={{ .Values.nextcloud.opcache.max_accelerated_files }} + opcache.memory_consumption={{ .Values.nextcloud.opcache.memory_consumption }} + opcache.revalidate_freq={{ .Values.nextcloud.opcache.revalidate_freq }} + opcache.jit_buffer_size={{ printf "%vM" .Values.nextcloud.opcache.jit_buffer_size }} + +redis-session: + enabled: true + data: + redis-session.ini: | + session.save_handler = redis + session.save_path = {{ printf "tcp://%v:6379?auth=%v" $redisHost $redisPass | quote }} + redis.session.locking_enabled = 1 + redis.session.lock_retries = -1 + redis.session.lock_wait_time = 10000 + +hpb-config: + enabled: {{ .Values.nextcloud.notify_push.enabled }} + data: + NEXTCLOUD_URL: {{ printf "http://%v:%v" $fullname .Values.service.main.ports.main.port }} + HPB_HOST: {{ $healthHost }} + CONFIG_FILE: {{ printf "%v/config.php" .Values.persistence.config.targetSelector.notify.notify.mountPath }} + METRICS_PORT: {{ .Values.service.notify.ports.metrics.port | quote }} + +clamav-config: + enabled: {{ .Values.nextcloud.clamav.enabled }} + data: + CLAMAV_NO_CLAMD: "false" + CLAMAV_NO_FRESHCLAMD: "true" + CLAMAV_NO_MILTERD: "true" + CLAMD_STARTUP_TIMEOUT: "1800" + +collabora-config: + enabled: {{ .Values.nextcloud.collabora.enabled }} + data: + aliasgroup1: {{ $accessUrl }} + server_name: {{ $accessHostPort }} + dictionaries: {{ join " " .Values.nextcloud.collabora.dictionaries }} + username: {{ .Values.nextcloud.collabora.username | quote }} + password: {{ .Values.nextcloud.collabora.password | quote }} + DONT_GEN_SSL_CERT: "true" + # mount_jail_tree is only used for local storage + # not needed for WOPI https://github.com/CollaboraOnline/online/issues/3604#issuecomment-989833814 + extra_params: | + --o:ssl.enable=false + --o:ssl.termination=true + --o:net.service_root=/collabora + --o:home_mode.enable=true + --o:welcome.enable=false + --o:logging.level=warning + --o:logging.level_startup=warning + --o:security.seccomp=true + --o:mount_jail_tree=false + --o:user_interface.mode={{ .Values.nextcloud.collabora.user_interface_mode }} + +nextcloud-config: + enabled: true + data: + {{/* Database */}} + POSTGRES_DB: {{ .Values.cnpg.main.database | quote }} + POSTGRES_USER: {{ .Values.cnpg.main.user | quote }} + POSTGRES_PASSWORD: {{ .Values.cnpg.main.creds.password | trimAll "\"" }} + POSTGRES_HOST: {{ .Values.cnpg.main.creds.host | trimAll "\"" }} + + {{/* Redis */}} + NX_REDIS_HOST: {{ $redisHost }} + NX_REDIS_PASS: {{ $redisPass }} + + {{/* Nextcloud INITIAL credentials */}} + NEXTCLOUD_ADMIN_USER: {{ .Values.nextcloud.credentials.initialAdminUser | quote }} + NEXTCLOUD_ADMIN_PASSWORD: {{ .Values.nextcloud.credentials.initialAdminPassword | quote }} + + {{/* PHP Variables */}} + PHP_MEMORY_LIMIT: {{ .Values.nextcloud.php.memory_limit | quote }} + PHP_UPLOAD_LIMIT: {{ .Values.nextcloud.php.upload_limit | quote }} + + {{/* Notify Push */}} + NX_NOTIFY_PUSH: {{ .Values.nextcloud.notify_push.enabled | quote }} + {{- if .Values.nextcloud.notify_push.enabled }} + NX_NOTIFY_PUSH_ENDPOINT: {{ $accessUrl }}/push + {{- end }} + + {{/* Previews */}} + NX_PREVIEWS: {{ .Values.nextcloud.previews.enabled | quote }} + NX_PREVIEW_PROVIDERS: {{ join " " .Values.nextcloud.previews.providers }} + NX_PREVIEW_MAX_X: {{ .Values.nextcloud.previews.max_x | quote }} + NX_PREVIEW_MAX_Y: {{ .Values.nextcloud.previews.max_y | quote }} + NX_PREVIEW_MAX_MEMORY: {{ .Values.nextcloud.previews.max_memory | quote }} + NX_PREVIEW_MAX_FILESIZE_IMAGE: {{ .Values.nextcloud.previews.max_file_size_image | quote }} + NX_JPEG_QUALITY: {{ .Values.nextcloud.previews.jpeg_quality | quote }} + NX_PREVIEW_SQUARE_SIZES: {{ .Values.nextcloud.previews.square_sizes | quote }} + NX_PREVIEW_WIDTH_SIZES: {{ .Values.nextcloud.previews.width_sizes | quote }} + NX_PREVIEW_HEIGHT_SIZES: {{ .Values.nextcloud.previews.height_sizes | quote }} + + {{/* Imaginary */}} + NX_IMAGINARY: {{ and .Values.nextcloud.previews.enabled .Values.nextcloud.previews.imaginary | quote }} + {{- if and .Values.nextcloud.previews.enabled .Values.nextcloud.previews.imaginary }} + NX_IMAGINARY_URL: {{ printf "http://%v-imaginary:%v" $fullname .Values.service.imaginary.ports.imaginary.port }} + {{- end }} + + {{/* Expirations */}} + NX_ACTIVITY_EXPIRE_DAYS: {{ .Values.nextcloud.expirations.activity_expire_days | quote }} + NX_TRASH_RETENTION: {{ .Values.nextcloud.expirations.trash_retention_obligation | quote }} + NX_VERSIONS_RETENTION: {{ .Values.nextcloud.expirations.versions_retention_obligation | quote }} + + {{/* General */}} + NX_RUN_OPTIMIZE: {{ .Values.nextcloud.general.run_optimize | quote }} + NX_DEFAULT_PHONE_REGION: {{ .Values.nextcloud.general.default_phone_region | quote }} + NEXTCLOUD_DATA_DIR: {{ .Values.persistence.data.targetSelector.main.main.mountPath }} + NX_FORCE_ENABLE_ALLOW_LOCAL_REMOTE_SERVERS: {{ .Values.nextcloud.general.force_enable_allow_local_remote_servers | quote }} + + {{/* Files */}} + NX_SHARED_FOLDER_NAME: {{ .Values.nextcloud.files.shared_folder_name | quote }} + NX_MAX_CHUNKSIZE: {{ .Values.nextcloud.files.max_chunk_size | mul 1 | quote }} + + {{/* Logging */}} + NX_LOG_LEVEL: {{ .Values.nextcloud.logging.log_level | quote }} + NX_LOG_FILE: {{ .Values.nextcloud.logging.log_file | quote }} + NX_LOG_FILE_AUDIT: {{ .Values.nextcloud.logging.log_audit_file | quote }} + NX_LOG_DATE_FORMAT: {{ .Values.nextcloud.logging.log_date_format | quote }} + NX_LOG_TIMEZONE: {{ .Values.TZ | quote }} + + {{/* ClamAV */}} + NX_CLAMAV: {{ .Values.nextcloud.clamav.enabled | quote }} + {{- if .Values.nextcloud.clamav.enabled }} + NX_CLAMAV_HOST: {{ printf "%v-clamav" $fullname }} + NX_CLAMAV_PORT: {{ .Values.service.clamav.ports.clamav.targetPort | quote }} + NX_CLAMAV_STREAM_MAX_LENGTH: {{ .Values.nextcloud.clamav.stream_max_length | mul 1 | quote }} + NX_CLAMAV_FILE_MAX_SIZE: {{ .Values.nextcloud.clamav.file_max_size | quote }} + NX_CLAMAV_INFECTED_ACTION: {{ .Values.nextcloud.clamav.infected_action | quote }} + {{- end }} + + {{/* Collabora */}} + NX_COLLABORA: {{ .Values.nextcloud.collabora.enabled | quote }} + {{- if .Values.nextcloud.collabora.enabled }} + NX_COLLABORA_URL: {{ printf "%v/collabora" $accessUrl | quote }} + # Ideally this would be a combo of: public ip, pod cidr, svc cidr + # But not always people have static IP. + NX_COLLABORA_ALLOWLIST: "0.0.0.0/0" + {{- end }} + + {{/* Only Office */}} + NX_ONLYOFFICE: {{ .Values.nextcloud.onlyoffice.enabled | quote }} + {{- if .Values.nextcloud.onlyoffice.enabled }} + NX_ONLYOFFICE_URL: {{ .Values.nextcloud.onlyoffice.url | quote }} + NX_ONLYOFFICE_INTERNAL_URL: {{ .Values.nextcloud.onlyoffice.internal_url | quote }} + NX_ONLYOFFICE_VERIFY_SSL: {{ .Values.nextcloud.onlyoffice.verify_ssl | quote }} + NX_ONLYOFFICE_NEXTCLOUD_INTERNAL_URL: {{ printf "http://%v.svc.cluster.local:%v" $fqdn .Values.service.main.ports.main.port }} + NX_ONLYOFFICE_JWT: {{ .Values.nextcloud.onlyoffice.jwt | quote }} + NX_ONLYOFFICE_JWT_HEADER: {{ .Values.nextcloud.onlyoffice.jwt_header | quote }} + {{- end }} + + {{/* URLs */}} + NX_OVERWRITE_HOST: {{ $accessHostPort }} + NX_OVERWRITE_CLI_URL: {{ $accessUrl }} + # Return the protocol part of the URL + NX_OVERWRITE_PROTOCOL: {{ $accessProtocol | lower }} + # IP (or range in this case) of the proxy(ies) + NX_TRUSTED_PROXIES: | + {{ .Values.chartContext.podCIDR }} + {{ .Values.chartContext.svcCIDR }} + # fullname-* will allow access from the + # other services in the same namespace + NX_TRUSTED_DOMAINS: | + 127.0.0.1 + localhost + {{ $fullname }} + {{ printf "%v-*" $fullname }} + {{ $healthHost }} + {{- if not (contains "127.0.0.1" $accessHost) }} + {{- $accessHost | nindent 6 }} + {{- end -}} + {{- with .Values.nextcloud.general.accessIP }} + {{- . | nindent 6 }} + {{- end }} + +# TODO: Replace locations with ingress +# like /push, /.well-known/carddav, /.well-known/caldav +# needs some work as nginx converts urls to pretty urls +# before matching them to locations, so ingress needs to +# take that into consideration. +nginx-config: + enabled: true + data: + nginx.conf: | + worker_processes auto; + + error_log /var/log/nginx/error.log warn; + # Set to /tmp so it can run as non-root + pid /tmp/nginx.pid; + + events { + worker_connections 1024; + } + + http { + # Set to /tmp so it can run as non-root + client_body_temp_path /tmp/nginx/client_temp; + proxy_temp_path /tmp/nginx/proxy_temp_path; + fastcgi_temp_path /tmp/nginx/fastcgi_temp; + uwsgi_temp_path /tmp/nginx/uwsgi_temp; + scgi_temp_path /tmp/nginx/scgi_temp; + + include /etc/nginx/mime.types; + default_type application/octet-stream; + + log_format main '$remote_addr - $remote_user [$time_local] "$request" ' + '$status $body_bytes_sent "$http_referer" ' + '"$http_user_agent" "$http_x_forwarded_for"'; + + access_log /var/log/nginx/access.log main; + + sendfile on; + #tcp_nopush on; + + # Prevent nginx HTTP Server Detection + server_tokens off; + + keepalive_timeout 65; + + #gzip on; + + upstream php-handler { + server {{ printf "%v-nextcloud" $fullname }}:{{ .Values.service.nextcloud.ports.nextcloud.targetPort }}; + } + + server { + listen {{ .Values.service.main.ports.main.port }}; + absolute_redirect off; + + {{- if .Values.nextcloud.notify_push.enabled }} + # Forward Notify_Push "High Performance Backend" to it's own container + location ^~ /push/ { + # The trailing "/" is important! + proxy_pass http://{{ printf "%v-notify" $fullname }}:{{ .Values.service.notify.ports.notify.targetPort }}/; + proxy_http_version 1.1; + proxy_set_header Upgrade $http_upgrade; + proxy_set_header Connection "Upgrade"; + proxy_set_header Host $host; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + } + {{- end }} + + # HSTS settings + # WARNING: Only add the preload option once you read about + # the consequences in https://hstspreload.org/. This option + # will add the domain to a hardcoded list that is shipped + # in all major browsers and getting removed from this list + # could take several months. + #add_header Strict-Transport-Security "max-age=15768000; includeSubDomains; preload;" always; + + # Set max upload size + client_max_body_size {{ .Values.nextcloud.php.upload_limit | default "512M" }}; + fastcgi_buffers 64 4K; + + # Enable gzip but do not remove ETag headers + gzip on; + gzip_vary on; + gzip_comp_level 4; + gzip_min_length 256; + gzip_proxied expired no-cache no-store private no_last_modified no_etag auth; + gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy; + + # Pagespeed is not supported by Nextcloud, so if your server is built + # with the `ngx_pagespeed` module, uncomment this line to disable it. + #pagespeed off; + + # HTTP response headers borrowed from Nextcloud `.htaccess` + add_header Referrer-Policy "no-referrer" always; + add_header X-Content-Type-Options "nosniff" always; + add_header X-Download-Options "noopen" always; + add_header X-Frame-Options "SAMEORIGIN" always; + add_header X-Permitted-Cross-Domain-Policies "none" always; + add_header X-Robots-Tag "noindex, nofollow" always; + add_header X-XSS-Protection "1; mode=block" always; + + # Remove X-Powered-By, which is an information leak + fastcgi_hide_header X-Powered-By; + + # Path to the root of your installation + root {{ .Values.persistence.html.targetSelector.nginx.nginx.mountPath }}; + + # Specify how to handle directories -- specifying `/index.php$request_uri` + # here as the fallback means that Nginx always exhibits the desired behaviour + # when a client requests a path that corresponds to a directory that exists + # on the server. In particular, if that directory contains an index.php file, + # that file is correctly served; if it doesn't, then the request is passed to + # the front-end controller. This consistent behaviour means that we don't need + # to specify custom rules for certain paths (e.g. images and other assets, + # `/updater`, `/ocm-provider`, `/ocs-provider`), and thus + # `try_files $uri $uri/ /index.php$request_uri` + # always provides the desired behaviour. + index index.php index.html /index.php$request_uri; + + # Rule borrowed from `.htaccess` to handle Microsoft DAV clients + location = / { + if ( $http_user_agent ~ ^DavClnt ) { + return 302 /remote.php/webdav/$is_args$args; + } + } + + location = /robots.txt { + allow all; + log_not_found off; + access_log off; + } + + # Make a regex exception for `/.well-known` so that clients can still + # access it despite the existence of the regex rule + # `location ~ /(\.|autotest|...)` which would otherwise handle requests + # for `/.well-known`. + location ^~ /.well-known { + # The rules in this block are an adaptation of the rules + # in `.htaccess` that concern `/.well-known`. + + location = /.well-known/carddav { return 301 /remote.php/dav/; } + location = /.well-known/caldav { return 301 /remote.php/dav/; } + + location /.well-known/acme-challenge { try_files $uri $uri/ =404; } + location /.well-known/pki-validation { try_files $uri $uri/ =404; } + + # Let Nextcloud's API for `/.well-known` URIs handle all other + # requests by passing them to the front-end controller. + return 301 /index.php$request_uri; + } + + # Rules borrowed from `.htaccess` to hide certain paths from clients + location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)(?:$|/) { return 404; } + location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) { return 404; } + + # Ensure this block, which passes PHP files to the PHP process, is above the blocks + # which handle static assets (as seen below). If this block is not declared first, + # then Nginx will encounter an infinite rewriting loop when it prepends `/index.php` + # to the URI, resulting in a HTTP 500 error response. + location ~ \.php(?:$|/) { + # Required for legacy support + rewrite ^/(?!index|remote|public|cron|core\/ajax\/update|status|ocs\/v[12]|updater\/.+|oc[ms]-provider\/.+|.+\/richdocumentscode\/proxy) /index.php$request_uri; + + fastcgi_split_path_info ^(.+?\.php)(/.*)$; + set $path_info $fastcgi_path_info; + + try_files $fastcgi_script_name =404; + + include fastcgi_params; + fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; + fastcgi_param PATH_INFO $path_info; + #fastcgi_param HTTPS on; + + fastcgi_param modHeadersAvailable true; # Avoid sending the security headers twice + fastcgi_param front_controller_active true; # Enable pretty urls + fastcgi_pass php-handler; + + fastcgi_intercept_errors on; + fastcgi_request_buffering off; + proxy_send_timeout 3600s; + proxy_read_timeout 3600s; + fastcgi_send_timeout 3600s; + fastcgi_read_timeout 3600s; + } + + location ~ \.(?:css|js|svg|gif)$ { + try_files $uri /index.php$request_uri; + expires 6M; # Cache-Control policy borrowed from `.htaccess` + access_log off; # Optional: Don't log access to assets + } + + location ~ \.woff2?$ { + try_files $uri /index.php$request_uri; + expires 7d; # Cache-Control policy borrowed from `.htaccess` + access_log off; # Optional: Don't log access to assets + } + + # Rule borrowed from `.htaccess` + location /remote { + return 301 /remote.php$request_uri; + } + + location / { + try_files $uri $uri/ /index.php$request_uri; + } + } + } +{{- end -}} diff --git a/stable/nextcloud/22.2.12/templates/_cronjobs.tpl b/stable/nextcloud/22.2.12/templates/_cronjobs.tpl new file mode 100644 index 00000000000..0fa050dba68 --- /dev/null +++ b/stable/nextcloud/22.2.12/templates/_cronjobs.tpl @@ -0,0 +1,34 @@ +{{- define "nextcloud.cronjobs" -}} +{{- range $cj := .Values.cronjobs }} + {{- $name := $cj.name | required "Nextcloud - Expected non-empty name in cronjob" -}} + {{- $schedule := $cj.schedule | required "Nextcloud - Expected non-empty schedule in cronjob" }} + +{{ $name }}: + enabled: {{ $cj.enabled | quote }} + type: CronJob + schedule: {{ $schedule | quote }} + podSpec: + restartPolicy: Never + containers: + {{ $name }}: + enabled: true + primary: true + imageSelector: image + command: + - /bin/bash + - -c + - | + {{- range $cj.cmd }} + {{- . | nindent 12 }} + {{- else -}} + {{- fail "Nextcloud - Expected non-empty cmd in cronjob" -}} + {{- end }} + probes: + liveness: + enabled: false + readiness: + enabled: false + startup: + enabled: false +{{- end }} +{{- end -}} diff --git a/stable/nextcloud/22.2.12/templates/_ingressInjector.tpl b/stable/nextcloud/22.2.12/templates/_ingressInjector.tpl new file mode 100644 index 00000000000..37919189e21 --- /dev/null +++ b/stable/nextcloud/22.2.12/templates/_ingressInjector.tpl @@ -0,0 +1,24 @@ +{{- define "nextcloud.ingressInjector" -}} + {{- if .Values.ingress.main.enabled -}} + {{- $injectPaths := list -}} + {{- if .Values.nextcloud.collabora.enabled -}} + {{- $injectPaths = mustAppend $injectPaths (include "nextcloud.collabora.ingress" $ | fromYaml) -}} + {{- end -}} + {{/* Append more paths here if needed */}} + + {{- range $host := .Values.ingress.main.hosts -}} + {{- $paths := $host.paths -}} + {{- $paths = concat $paths $injectPaths -}} + {{- $_ := set $host "paths" $paths -}} + {{- end -}} + {{- end -}} +{{- end -}} + +{{- define "nextcloud.collabora.ingress" -}} +{{- $fullname := include "tc.v1.common.lib.chart.names.fullname" . }} +path: /collabora/ +pathType: Prefix +service: + name: {{ printf "%v-collabora" $fullname }} + port: {{ .Values.service.collabora.ports.collabora.port }} +{{- end -}} diff --git a/stable/nextcloud/22.2.12/templates/_initPerms.tpl b/stable/nextcloud/22.2.12/templates/_initPerms.tpl new file mode 100644 index 00000000000..ed94790ad93 --- /dev/null +++ b/stable/nextcloud/22.2.12/templates/_initPerms.tpl @@ -0,0 +1,29 @@ +{{- define "nextcloud.init.perms" -}} +{{- $uid := .Values.securityContext.container.runAsUser -}} +{{- $gid := .Values.securityContext.container.runAsGroup -}} +{{- $path := .Values.persistence.data.targetSelector.main.main.mountPath }} +enabled: true +type: install +imageSelector: alpineImage +securityContext: + runAsUser: 0 + runAsGroup: 0 + runAsNonRoot: false + capabilities: + disableS6Caps: true + add: + - DAC_OVERRIDE + - FOWNER + - CHOWN +command: /bin/sh +args: + - -c + - | + echo "Setting permissions to 700 on data directory [{{ $path }}] ..." + chmod 770 {{ $path }} | echo "Failed to set permissions on data directory [{{ $path }}]" + + echo "Setting ownership to {{ $uid }}:{{ $gid }} on data directory [{{ $path }}] ..." + chown {{ $uid }}:{{ $gid }} {{ $path }} | echo "Failed to set ownership on data directory [{{ $path }}]" + + echo "Finished." +{{- end -}} diff --git a/stable/nextcloud/22.2.12/templates/_validation.tpl b/stable/nextcloud/22.2.12/templates/_validation.tpl new file mode 100644 index 00000000000..5650c0f63fe --- /dev/null +++ b/stable/nextcloud/22.2.12/templates/_validation.tpl @@ -0,0 +1,42 @@ +{{- define "nextcloud.validation" -}} + + {{- if not (mustRegexMatch "^[0-9]+(M|G){1}$" .Values.nextcloud.php.memory_limit) -}} + {{- fail (printf "Nextcloud - Expected Memory Limit to be in format [1M, 1G] but got [%v]" .Values.nextcloud.php.memory_limit) -}} + {{- end -}} + + {{- if not (mustRegexMatch "^[0-9]+(M|G){1}$" .Values.nextcloud.php.upload_limit) -}} + {{- fail (printf "Nextcloud - Expected Memory Limit to be in format [1M, 1G] but got [%v]" .Values.nextcloud.php.upload_limit) -}} + {{- end -}} + + {{- if not (deepEqual .Values.nextcloud.previews.providers (uniq .Values.nextcloud.previews.providers)) -}} + {{- fail (printf "Nextcloud - Expected preview providers to be unique but got [%v]" .Values.nextcloud.previews.providers) -}} + {{- end -}} + + {{- if and .Values.nextcloud.collabora.enabled .Values.nextcloud.onlyoffice.enabled -}} + {{- fail "Nextcloud - Expected only one of [Collabora, OnlyOffice] to be enabled" -}} + {{- end -}} + + {{- if contains "$" .Values.nextcloud.collabora.password -}} + {{- fail "Nextcloud - Collabora [Password] cannot contain [$]" -}} + {{- end -}} + + {{- if .Values.nextcloud.collabora.enabled -}} + {{- if lt (len .Values.nextcloud.collabora.password) 8 -}} + {{- fail "Nextcloud - Collabora [Password] must be at least 8 characters" -}} + {{- end -}} + + {{- $collaboraUIModes := (list "default" "compact" "tabbed") -}} + {{- if not (mustHas .Values.nextcloud.collabora.interface_mode $collaboraUIModes) -}} + {{- fail (printf "Nextcloud - Expected [Interface Mode] in Collabora to be one of [%v], but got [%v]" (join "," $collaboraUIModes) .Values.nextcloud.collabora.interface_mode) -}} + {{- end -}} + + {{- if not .Values.nextcloud.collabora.dictionaries -}} + {{- fail "Nextcloud - Expected non-empty Collabora [Dictionaries]" -}} + {{- end -}} + + {{- if not (deepEqual .Values.nextcloud.collabora.dictionaries (uniq .Values.nextcloud.collabora.dictionaries)) -}} + {{- fail "Nextcloud - Collabora [Dictionaries] must be unique" -}} + {{- end -}} + {{- end -}} + +{{- end -}} diff --git a/stable/nextcloud/22.2.12/templates/_waitNextcloud.tpl b/stable/nextcloud/22.2.12/templates/_waitNextcloud.tpl new file mode 100644 index 00000000000..24946d640e8 --- /dev/null +++ b/stable/nextcloud/22.2.12/templates/_waitNextcloud.tpl @@ -0,0 +1,25 @@ +{{- define "nextcloud.wait.nextcloud" -}} +{{- $fullname := (include "tc.v1.common.lib.chart.names.fullname" $) -}} +{{- $ncURL := printf "%v-nextcloud:%v" $fullname .Values.service.nextcloud.ports.nextcloud.targetPort }} +enabled: true +type: init +imageSelector: image +securityContext: +command: /bin/sh +args: + - -c + - | + echo "Waiting Nextcloud [{{ $ncURL }}] to be ready and installed..." + until \ + REQUEST_METHOD="GET" \ + SCRIPT_NAME="status.php" \ + SCRIPT_FILENAME="status.php" \ + cgi-fcgi -bind -connect "{{ $ncURL }}" | grep -q '"installed":true'; + do + echo "Waiting Nextcloud [{{ $ncURL }}] to be ready and installed..." + sleep 3 + done + + echo "Nextcloud is ready and installed..." + echo "Starting Nginx..." +{{- end -}} diff --git a/stable/nextcloud/22.2.12/templates/common.yaml b/stable/nextcloud/22.2.12/templates/common.yaml new file mode 100644 index 00000000000..1eeaf033ebe --- /dev/null +++ b/stable/nextcloud/22.2.12/templates/common.yaml @@ -0,0 +1,80 @@ +{{/* Make sure all variables are set properly */}} +{{- include "tc.v1.common.loader.init" . -}} + +{{- include "nextcloud.validation" $ -}} + +{{/* Render configmaps for all pods */}} +{{- $configmaps := include "nextcloud.configmaps" . | fromYaml -}} +{{- if $configmaps -}} + {{- $_ := mustMergeOverwrite .Values.configmap $configmaps -}} +{{- end -}} + +{{/* Create hostAliases (resolve ingress host to Node/LB IP) */}} +{{- $hostAlias := (list (dict + "ip" .Values.nextcloud.general.accessIP + "hostnames" ( + list (include "nextcloud.accesshost" $) + ) + )) -}} + +{{/* Add [hostAliases] to nextcloud and collabora pod */}} +{{- $_ := set .Values.workload.main.podSpec "hostAliases" $hostAlias -}} +{{- $_ := set .Values.workload.collabora.podSpec "hostAliases" $hostAlias -}} + +{{/* Add [init perms] container to nextcloud */}} +{{- if not (get .Values.workload.main.podSpec "initContainers") -}} + {{- $_ := set .Values.workload.main.podSpec "initContainers" dict -}} +{{- end -}} + +{{- $initPerms := (include "nextcloud.init.perms" . | fromYaml) -}} +{{- $_ := set .Values.workload.main.podSpec.initContainers "init-perms" $initPerms -}} + +{{/* Add [wait nextcloud] container to nginx */}} +{{- if not (get .Values.workload.nginx.podSpec "initContainers") -}} + {{- $_ := set .Values.workload.nginx.podSpec "initContainers" dict -}} +{{- end -}} +{{- $waitNextcloud := (include "nextcloud.wait.nextcloud" . | fromYaml) -}} +{{- $_ := set .Values.workload.nginx.podSpec.initContainers "wait-nextcloud" $waitNextcloud -}} + +{{/* Disable [notify push] if requested */}} +{{- if not .Values.nextcloud.notify_push.enabled -}} + {{- $_ := set .Values.workload.notify "enabled" false -}} + {{- $_ := set .Values.service.notify "enabled" false -}} +{{- else -}} + {{/* Add [wait nextcloud] container to notify push */}} + {{- if not (get .Values.workload.notify.podSpec "initContainers") -}} + {{- $_ := set .Values.workload.notify.podSpec "initContainers" dict -}} + {{- end -}} + {{- $waitNextcloud := (include "nextcloud.wait.nextcloud" . | fromYaml) -}} + {{- $_ := set .Values.workload.notify.podSpec.initContainers "wait-nextcloud" $waitNextcloud -}} +{{- end -}} + +{{/* Disable [clamav] if requested */}} +{{- if not .Values.nextcloud.clamav.enabled -}} + {{- $_ := set .Values.workload.clamav "enabled" false -}} + {{- $_ := set .Values.service.clamav "enabled" false -}} +{{- end -}} + +{{/* Disable [previews] if requested */}} +{{- if or (not .Values.nextcloud.previews.imaginary) (not .Values.nextcloud.previews.enabled) -}} + {{- $_ := set .Values.workload.imaginary "enabled" false -}} + {{- $_ := set .Values.service.imaginary "enabled" false -}} +{{- end -}} + +{{/* Disable [collabora] if requested */}} +{{- if not .Values.nextcloud.collabora.enabled -}} + {{- $_ := set .Values.workload.collabora "enabled" false -}} + {{- $_ := set .Values.service.collabora "enabled" false -}} +{{- end -}} + +{{/* Create [cronjobs] defined */}} +{{- $cronjobs := include "nextcloud.cronjobs" . | fromYaml -}} +{{- if $cronjobs -}} + {{- $_ := mustMergeOverwrite .Values.workload $cronjobs -}} +{{- end -}} + +{{/* TODO: Do we have to cleanup when something (eg Collabora) is disabled? */}} +{{- include "nextcloud.ingressInjector" $ -}} + +{{/* Render the templates */}} +{{- include "tc.v1.common.loader.apply" . -}} diff --git a/stable/nextcloud/22.2.12/values.yaml b/stable/nextcloud/22.2.12/values.yaml new file mode 100644 index 00000000000..e69de29bb2d