From b859f22799c20df219a7d0b92a30595cf49e3caa Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Wed, 4 Dec 2024 12:05:08 -0500 Subject: [PATCH 01/46] set public and beacon to edge --- etc/bento.env | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/bento.env b/etc/bento.env index 27596ee2..06fb78d7 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -387,7 +387,7 @@ BENTOV2_GOHAN_PRIVATE_AUTHZ_URL=http://${BENTOV2_GOHAN_AUTHZ_OPA_CONTAINER_NAME} # Bento-Public BENTO_PUBLIC_IMAGE=ghcr.io/bento-platform/bento_public -BENTO_PUBLIC_VERSION=0.22.0 +BENTO_PUBLIC_VERSION=edge BENTO_PUBLIC_VERSION_DEV=${BENTO_PUBLIC_VERSION}-dev BENTO_PUBLIC_CONTAINER_NAME=${BENTOV2_PREFIX}-public BENTO_PUBLIC_NETWORK=${BENTOV2_PREFIX}-public-net @@ -407,7 +407,7 @@ BENTO_PUBLIC_PORTAL_URL=${BENTOV2_PORTAL_PUBLIC_URL} BENTO_BEACON_CONTAINER_NAME=${BENTOV2_PREFIX}-beacon BENTO_BEACON_NETWORK=${BENTOV2_PREFIX}-beacon-net BENTO_BEACON_IMAGE=ghcr.io/bento-platform/bento_beacon -BENTO_BEACON_VERSION=0.18.1 +BENTO_BEACON_VERSION=edge BENTO_BEACON_VERSION_DEV=${BENTO_BEACON_VERSION}-dev BENTO_BEACON_INTERNAL_PORT=${BENTO_STD_SERVICE_INTERNAL_PORT} BENTO_BEACON_EXTERNAL_PORT=5000 From 07c2457716ffa252ffc4856ebc34debfc1d1fa26 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Wed, 4 Dec 2024 12:07:11 -0500 Subject: [PATCH 02/46] docs: add empty v18 migration doc --- README.md | 1 + docs/migrating_to_18.md | 3 +++ 2 files changed, 4 insertions(+) create mode 100644 docs/migrating_to_18.md diff --git a/README.md b/README.md index 23b7e2a9..c763b808 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ that make up the Bento platform. ### Migration documents +* [v17.1 to v18](./docs/migrating_to_18.md) * [v17 to v17.1](./docs/migrating_to_17_1.md) * [v16 to v17](./docs/migrating_to_17.md) * [v15.2 to v16](./docs/migrating_to_16.md) diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md new file mode 100644 index 00000000..338b456f --- /dev/null +++ b/docs/migrating_to_18.md @@ -0,0 +1,3 @@ +# Migrating to Bento v18 + +TODO From 59a5c262d7da70363c11477145bb23c3e3383823 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Wed, 4 Dec 2024 14:06:24 -0500 Subject: [PATCH 03/46] set web to edge --- etc/bento.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/bento.env b/etc/bento.env index 06fb78d7..a414e488 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -100,7 +100,7 @@ BENTO_AUTHZ_DB_MEM_LIM=1G # Web BENTO_WEB_CUSTOM_HEADER= BENTOV2_WEB_IMAGE=ghcr.io/bento-platform/bento_web -BENTOV2_WEB_VERSION=6.1.1 +BENTOV2_WEB_VERSION=edge BENTOV2_WEB_VERSION_DEV=${BENTOV2_WEB_VERSION}-dev BENTOV2_WEB_CONTAINER_NAME=${BENTOV2_PREFIX}-web BENTO_WEB_NETWORK=${BENTOV2_PREFIX}-web-net From 99426842bcf639ea210c3dff2dd9de91def359d0 Mon Sep 17 00:00:00 2001 From: mjdupont12 Date: Thu, 5 Dec 2024 16:15:35 -0500 Subject: [PATCH 04/46] =add minio service to bento --- docker-compose.yaml | 1 + etc/bento.env | 10 +++++ etc/bento_deploy.env | 4 ++ etc/bento_dev.env | 4 ++ etc/bento_services.json | 6 ++- etc/default_config.env | 4 ++ lib/gateway/docker-compose.gateway.yaml | 10 ++++- lib/gateway/public_services/minio.conf.tpl | 48 ++++++++++++++++++++++ lib/minio/docker-compose.minio.yaml | 27 ++++++++++++ py_bentoctl/config.py | 2 + py_bentoctl/other_helpers.py | 1 + 11 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 lib/gateway/public_services/minio.conf.tpl create mode 100644 lib/minio/docker-compose.minio.yaml diff --git a/docker-compose.yaml b/docker-compose.yaml index f91aaa52..8cfa236d 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -14,6 +14,7 @@ include: - lib/gohan/docker-compose.gohan.yaml # Optional feature; controlled by a compose profile - lib/katsu/docker-compose.katsu.yaml - lib/logs/docker-compose.logs.yaml + - lib/minio/docker-compose.minio.yaml - lib/notification/docker-compose.notification.yaml - lib/public/docker-compose.public.yaml # Optional feature; controlled by a compose profile - lib/redis/docker-compose.redis.yaml diff --git a/etc/bento.env b/etc/bento.env index a07ef355..a8ef7ec0 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -473,3 +473,13 @@ BENTO_GRAFANA_SIGNOUT_REDIRECT_URL=https://${BENTOV2_AUTH_DOMAIN}/realms/${BENTO BENTO_PROMTAIL_IMAGE=grafana/promtail BENTO_PROMTAIL_IMAGE_VERSION=2.9.10 BENTO_PROMTAIL_CONTAINER_NAME=${BENTOV2_PREFIX}-promtail + +# Minio +BENTO_MINIO_IMAGE=quay.io/minio/minio +BENTO_MINIO_IMAGE_VERSION=latest +BENTO_MINIO_CONTAINER_NAME=${BENTOV2_PREFIX}-minio +BENTO_MINIO_LIB_DIR=${BENTO_SLOW_DATA_DIR}/minio/data +BENTO_MINIO_NETWORK=${BENTOV2_PREFIX}-minio-NET +BENTO_MINIO_ROOT_USER=root +BENTO_MINIO_INTERNAL_PORT=9000 +BENTO_MINIO_CONSOLE_PORT=9001 diff --git a/etc/bento_deploy.env b/etc/bento_deploy.env index 24f63cc1..729fe1c0 100644 --- a/etc/bento_deploy.env +++ b/etc/bento_deploy.env @@ -14,6 +14,7 @@ BENTO_BEACON_NETWORK_ENABLED='false' BENTO_CBIOPORTAL_ENABLED='false' BENTO_GOHAN_ENABLED='true' BENTO_MONITORING_ENABLED='false' +BENTO_MINIO_ENABLED='false' # - Switch to enable French translation in Bento Public BENTO_PUBLIC_TRANSLATED='true' @@ -78,6 +79,9 @@ BENTOV2_KATSU_APP_SECRET= # TODO: SET ME WHEN DEPLOYING! # Reference BENTO_REFERENCE_DB_PASSWORD= # TODO: SET ME WHEN DEPLOYING! +# minio +BENTO_MINIO_ROOT_PASSWORD= # TODO: SET ME WHEN DEPLOYING! + # HTTPS Certificates -------------------------------------------------- BENTOV2_CERTS_DIR=${PWD}/certs BENTOV2_AUTH_CERTS_DIR=${BENTOV2_CERTS_DIR}/auth diff --git a/etc/bento_dev.env b/etc/bento_dev.env index 00ec3541..98a0003b 100644 --- a/etc/bento_dev.env +++ b/etc/bento_dev.env @@ -14,6 +14,7 @@ BENTO_BEACON_NETWORK_ENABLED='false' BENTO_CBIOPORTAL_ENABLED='false' BENTO_GOHAN_ENABLED='true' BENTO_MONITORING_ENABLED='false' +BENTO_MINIO_ENABLED='true' # - Switch to enable French translation in Bento Public BENTO_PUBLIC_TRANSLATED='true' @@ -79,6 +80,9 @@ BENTO_REFERENCE_DB_PASSWORD=devpassword456 # BENTO_CBIOPORTAL_DATABASE_PASSWORD=somepassword Required for CBIOPORTAL # BENTO_CBIOPORTAL_DATABASE_ROOT_PASSWORD=somepassword Required for CBIOPORTAL +# minio +BENTO_MINIO_ROOT_PASSWORD=devpassword789 + # Development settings ------------------------------------------------ # - Git configuration diff --git a/etc/bento_services.json b/etc/bento_services.json index 6980180e..bc836340 100644 --- a/etc/bento_services.json +++ b/etc/bento_services.json @@ -71,5 +71,9 @@ }, "gateway": { "repository": "git@github.com:bento-platform/bento_gateway.git" + }, + "minio": { + "service_kind": "minio", + "url_template": "{BENTO_PUBLIC_URL}/api/{service_kind}" } -} +} \ No newline at end of file diff --git a/etc/default_config.env b/etc/default_config.env index d150afdc..136b7166 100644 --- a/etc/default_config.env +++ b/etc/default_config.env @@ -19,6 +19,7 @@ BENTO_BEACON_NETWORK_ENABLED='false' BENTO_CBIOPORTAL_ENABLED='false' BENTO_GOHAN_ENABLED='true' BENTO_MONITORING_ENABLED='false' +BENTO_MINIO_ENABLED='true' # - Switch to enable French translation in Bento Public BENTO_PUBLIC_TRANSLATED='true' @@ -105,6 +106,9 @@ BENTOV2_KATSU_DB_PASSWORD= BENTO_CBIOPORTAL_DATABASE_PASSWORD= BENTO_CBIOPORTAL_DATABASE_ROOT_PASSWORD= +# minio +BENTO_MINIO_ROOT_PASSWORD= + # Development settings ------------------------------------------------ # - Git configuration diff --git a/lib/gateway/docker-compose.gateway.yaml b/lib/gateway/docker-compose.gateway.yaml index c0a9ef65..c8820cc3 100644 --- a/lib/gateway/docker-compose.gateway.yaml +++ b/lib/gateway/docker-compose.gateway.yaml @@ -3,7 +3,7 @@ services: image: ${BENTOV2_GATEWAY_IMAGE}:${BENTOV2_GATEWAY_VERSION} container_name: ${BENTOV2_GATEWAY_CONTAINER_NAME} environment: - - BENTO_DEBUG=false + - BENTO_DEBUG=true - BENTO_AUTHZ_SERVICE_URL=${BENTO_AUTHZ_SERVICE_URL} - BENTOV2_SESSION_SECRET @@ -22,6 +22,7 @@ services: - BENTO_BEACON_ENABLED - BENTO_CBIOPORTAL_ENABLED - BENTO_GOHAN_ENABLED + - BENTO_MINIO_ENABLED - BENTO_MONITORING_ENABLED - BENTOV2_GATEWAY_CONTAINER_NAME @@ -78,6 +79,9 @@ services: - BENTO_CBIOPORTAL_CONTAINER_NAME - BENTO_CBIOPORTAL_INTERNAL_PORT - BENTO_GRAFANA_CONTAINER_NAME + - BENTO_MINIO_CONTAINER_NAME + - BENTO_MINIO_INTERNAL_PORT + - BENTO_MINIO_CONSOLE_PORT networks: - aggregation-net - auth-net @@ -89,6 +93,7 @@ services: - event-relay-net - gohan-api-net - katsu-net + - minio-net - monitoring-net - notification-net - public-net @@ -171,6 +176,9 @@ networks: katsu-net: external: true name: ${BENTO_KATSU_NETWORK} + minio-net: + external: true + name: ${BENTO_MINIO_NETWORK} monitoring-net: external: true name: ${BENTO_MONITORING_NETWORK} diff --git a/lib/gateway/public_services/minio.conf.tpl b/lib/gateway/public_services/minio.conf.tpl new file mode 100644 index 00000000..f5b33816 --- /dev/null +++ b/lib/gateway/public_services/minio.conf.tpl @@ -0,0 +1,48 @@ +# env: BENTO_MINIO_ENABLED +location /api/minio { return 302 https://${BENTOV2_DOMAIN}/api/minio/; } +location /api/minio/ { + # Reverse proxy settings + include /gateway/conf/proxy.conf; + include /gateway/conf/proxy_extra.conf; + + # proxy_set_header Connection ""; + proxy_connect_timeout 300; + chunked_transfer_encoding off; + + # Forward request to event-relay + rewrite ^ $request_uri; + rewrite ^/api/event-relay/(.*) /$1 break; + return 400; + + proxy_pass http://${BENTO_MINIO_CONTAINER_NAME}:${BENTO_MINIO_INTERNAL_PORT}$uri; + + # Errors + error_log /var/log/bentov2_minio_errors.log; +} + +location /api/minio-console { return 302 https://${BENTOV2_DOMAIN}/api/minio-console/; } +location /api/minio-console/ { + # Reverse proxy settings + include /gateway/conf/proxy.conf; + include /gateway/conf/proxy_extra.conf; + + real_ip_header X-Real-IP; + proxy_set_header X-NginX-Proxy true; + proxy_connect_timeout 300; + chunked_transfer_encoding off; + + # Forward request to event-relay + rewrite ^ $request_uri; + rewrite ^/api/minio-console/(.*) /$1 break; + proxy_pass http://${BENTO_MINIO_CONTAINER_NAME}:${BENTO_MINIO_CONSOLE_PORT}$uri; + + # Add sub_filter directives to rewrite base href + sub_filter ' Date: Mon, 9 Dec 2024 09:17:43 -0500 Subject: [PATCH 05/46] =gateway configuration fixes --- lib/gateway/docker-compose.gateway.yaml | 2 +- lib/gateway/public_services/minio.conf.tpl | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/gateway/docker-compose.gateway.yaml b/lib/gateway/docker-compose.gateway.yaml index c8820cc3..442d988e 100644 --- a/lib/gateway/docker-compose.gateway.yaml +++ b/lib/gateway/docker-compose.gateway.yaml @@ -3,7 +3,7 @@ services: image: ${BENTOV2_GATEWAY_IMAGE}:${BENTOV2_GATEWAY_VERSION} container_name: ${BENTOV2_GATEWAY_CONTAINER_NAME} environment: - - BENTO_DEBUG=true + - BENTO_DEBUG=false - BENTO_AUTHZ_SERVICE_URL=${BENTO_AUTHZ_SERVICE_URL} - BENTOV2_SESSION_SECRET diff --git a/lib/gateway/public_services/minio.conf.tpl b/lib/gateway/public_services/minio.conf.tpl index f5b33816..560f055d 100644 --- a/lib/gateway/public_services/minio.conf.tpl +++ b/lib/gateway/public_services/minio.conf.tpl @@ -9,9 +9,9 @@ location /api/minio/ { proxy_connect_timeout 300; chunked_transfer_encoding off; - # Forward request to event-relay + # Forward request to minio rewrite ^ $request_uri; - rewrite ^/api/event-relay/(.*) /$1 break; + rewrite ^/api/minio/(.*) /$1 break; return 400; proxy_pass http://${BENTO_MINIO_CONTAINER_NAME}:${BENTO_MINIO_INTERNAL_PORT}$uri; @@ -31,7 +31,7 @@ location /api/minio-console/ { proxy_connect_timeout 300; chunked_transfer_encoding off; - # Forward request to event-relay + # Forward request to minio-console rewrite ^ $request_uri; rewrite ^/api/minio-console/(.*) /$1 break; proxy_pass http://${BENTO_MINIO_CONTAINER_NAME}:${BENTO_MINIO_CONSOLE_PORT}$uri; From 376caa5f2fe539de32ddb49c721af243671eee5b Mon Sep 17 00:00:00 2001 From: mjdupont12 Date: Mon, 9 Dec 2024 14:21:06 -0500 Subject: [PATCH 06/46] =code review fixes --- etc/bento.env | 4 ++-- etc/bento_dev.env | 2 +- etc/bento_services.json | 4 ---- etc/default_config.env | 2 +- lib/gateway/public_services/minio.conf.tpl | 4 ++-- lib/minio/docker-compose.minio.yaml | 2 +- 6 files changed, 7 insertions(+), 11 deletions(-) diff --git a/etc/bento.env b/etc/bento.env index a8ef7ec0..022b9c52 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -476,9 +476,9 @@ BENTO_PROMTAIL_CONTAINER_NAME=${BENTOV2_PREFIX}-promtail # Minio BENTO_MINIO_IMAGE=quay.io/minio/minio -BENTO_MINIO_IMAGE_VERSION=latest +BENTO_MINIO_IMAGE_VERSION=RELEASE.2024-11-07T00-52-20Z BENTO_MINIO_CONTAINER_NAME=${BENTOV2_PREFIX}-minio -BENTO_MINIO_LIB_DIR=${BENTO_SLOW_DATA_DIR}/minio/data +BENTO_MINIO_DATA_DIR=${BENTO_SLOW_DATA_DIR}/minio/data BENTO_MINIO_NETWORK=${BENTOV2_PREFIX}-minio-NET BENTO_MINIO_ROOT_USER=root BENTO_MINIO_INTERNAL_PORT=9000 diff --git a/etc/bento_dev.env b/etc/bento_dev.env index 98a0003b..23622d33 100644 --- a/etc/bento_dev.env +++ b/etc/bento_dev.env @@ -14,7 +14,7 @@ BENTO_BEACON_NETWORK_ENABLED='false' BENTO_CBIOPORTAL_ENABLED='false' BENTO_GOHAN_ENABLED='true' BENTO_MONITORING_ENABLED='false' -BENTO_MINIO_ENABLED='true' +BENTO_MINIO_ENABLED='false' # - Switch to enable French translation in Bento Public BENTO_PUBLIC_TRANSLATED='true' diff --git a/etc/bento_services.json b/etc/bento_services.json index bc836340..4f165f0c 100644 --- a/etc/bento_services.json +++ b/etc/bento_services.json @@ -71,9 +71,5 @@ }, "gateway": { "repository": "git@github.com:bento-platform/bento_gateway.git" - }, - "minio": { - "service_kind": "minio", - "url_template": "{BENTO_PUBLIC_URL}/api/{service_kind}" } } \ No newline at end of file diff --git a/etc/default_config.env b/etc/default_config.env index 136b7166..c0d6c459 100644 --- a/etc/default_config.env +++ b/etc/default_config.env @@ -19,7 +19,7 @@ BENTO_BEACON_NETWORK_ENABLED='false' BENTO_CBIOPORTAL_ENABLED='false' BENTO_GOHAN_ENABLED='true' BENTO_MONITORING_ENABLED='false' -BENTO_MINIO_ENABLED='true' +BENTO_MINIO_ENABLED='false' # - Switch to enable French translation in Bento Public BENTO_PUBLIC_TRANSLATED='true' diff --git a/lib/gateway/public_services/minio.conf.tpl b/lib/gateway/public_services/minio.conf.tpl index 560f055d..16da0f2d 100644 --- a/lib/gateway/public_services/minio.conf.tpl +++ b/lib/gateway/public_services/minio.conf.tpl @@ -17,7 +17,7 @@ location /api/minio/ { proxy_pass http://${BENTO_MINIO_CONTAINER_NAME}:${BENTO_MINIO_INTERNAL_PORT}$uri; # Errors - error_log /var/log/bentov2_minio_errors.log; + error_log /var/log/bentov2_minio_errors.log; } location /api/minio-console { return 302 https://${BENTOV2_DOMAIN}/api/minio-console/; } @@ -44,5 +44,5 @@ location /api/minio-console/ { proxy_set_header Accept-Encoding ""; # Errors - error_log /var/log/bentov2_minio_errors.log; + error_log /var/log/bentov2_minio_errors.log; } \ No newline at end of file diff --git a/lib/minio/docker-compose.minio.yaml b/lib/minio/docker-compose.minio.yaml index dc2f6f20..6dc72fb1 100644 --- a/lib/minio/docker-compose.minio.yaml +++ b/lib/minio/docker-compose.minio.yaml @@ -8,7 +8,7 @@ services: networks: - minio-net volumes: - - ${BENTO_MINIO_LIB_DIR}:/data + - ${BENTO_MINIO_DATA_DIR}:/data environment: - MINIO_ROOT_USER=${BENTO_MINIO_ROOT_USER} - MINIO_ROOT_PASSWORD=${BENTO_MINIO_ROOT_PASSWORD} From 0ade44ae147ddf7fc0fe563c9715c4636ed5f5bf Mon Sep 17 00:00:00 2001 From: mjdupont12 Date: Thu, 5 Dec 2024 16:15:35 -0500 Subject: [PATCH 07/46] =add minio service to bento --- docker-compose.yaml | 1 + etc/bento.env | 10 +++++ etc/bento_deploy.env | 4 ++ etc/bento_dev.env | 4 ++ etc/bento_services.json | 6 ++- etc/default_config.env | 4 ++ lib/gateway/docker-compose.gateway.yaml | 10 ++++- lib/gateway/public_services/minio.conf.tpl | 48 ++++++++++++++++++++++ lib/minio/docker-compose.minio.yaml | 27 ++++++++++++ py_bentoctl/config.py | 2 + py_bentoctl/other_helpers.py | 1 + 11 files changed, 115 insertions(+), 2 deletions(-) create mode 100644 lib/gateway/public_services/minio.conf.tpl create mode 100644 lib/minio/docker-compose.minio.yaml diff --git a/docker-compose.yaml b/docker-compose.yaml index f91aaa52..8cfa236d 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -14,6 +14,7 @@ include: - lib/gohan/docker-compose.gohan.yaml # Optional feature; controlled by a compose profile - lib/katsu/docker-compose.katsu.yaml - lib/logs/docker-compose.logs.yaml + - lib/minio/docker-compose.minio.yaml - lib/notification/docker-compose.notification.yaml - lib/public/docker-compose.public.yaml # Optional feature; controlled by a compose profile - lib/redis/docker-compose.redis.yaml diff --git a/etc/bento.env b/etc/bento.env index a414e488..3dc327cf 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -472,3 +472,13 @@ BENTO_GRAFANA_SIGNOUT_REDIRECT_URL=https://${BENTOV2_AUTH_DOMAIN}/realms/${BENTO BENTO_PROMTAIL_IMAGE=grafana/promtail BENTO_PROMTAIL_IMAGE_VERSION=3.1.2 BENTO_PROMTAIL_CONTAINER_NAME=${BENTOV2_PREFIX}-promtail + +# Minio +BENTO_MINIO_IMAGE=quay.io/minio/minio +BENTO_MINIO_IMAGE_VERSION=latest +BENTO_MINIO_CONTAINER_NAME=${BENTOV2_PREFIX}-minio +BENTO_MINIO_LIB_DIR=${BENTO_SLOW_DATA_DIR}/minio/data +BENTO_MINIO_NETWORK=${BENTOV2_PREFIX}-minio-NET +BENTO_MINIO_ROOT_USER=root +BENTO_MINIO_INTERNAL_PORT=9000 +BENTO_MINIO_CONSOLE_PORT=9001 diff --git a/etc/bento_deploy.env b/etc/bento_deploy.env index 24f63cc1..729fe1c0 100644 --- a/etc/bento_deploy.env +++ b/etc/bento_deploy.env @@ -14,6 +14,7 @@ BENTO_BEACON_NETWORK_ENABLED='false' BENTO_CBIOPORTAL_ENABLED='false' BENTO_GOHAN_ENABLED='true' BENTO_MONITORING_ENABLED='false' +BENTO_MINIO_ENABLED='false' # - Switch to enable French translation in Bento Public BENTO_PUBLIC_TRANSLATED='true' @@ -78,6 +79,9 @@ BENTOV2_KATSU_APP_SECRET= # TODO: SET ME WHEN DEPLOYING! # Reference BENTO_REFERENCE_DB_PASSWORD= # TODO: SET ME WHEN DEPLOYING! +# minio +BENTO_MINIO_ROOT_PASSWORD= # TODO: SET ME WHEN DEPLOYING! + # HTTPS Certificates -------------------------------------------------- BENTOV2_CERTS_DIR=${PWD}/certs BENTOV2_AUTH_CERTS_DIR=${BENTOV2_CERTS_DIR}/auth diff --git a/etc/bento_dev.env b/etc/bento_dev.env index 00ec3541..98a0003b 100644 --- a/etc/bento_dev.env +++ b/etc/bento_dev.env @@ -14,6 +14,7 @@ BENTO_BEACON_NETWORK_ENABLED='false' BENTO_CBIOPORTAL_ENABLED='false' BENTO_GOHAN_ENABLED='true' BENTO_MONITORING_ENABLED='false' +BENTO_MINIO_ENABLED='true' # - Switch to enable French translation in Bento Public BENTO_PUBLIC_TRANSLATED='true' @@ -79,6 +80,9 @@ BENTO_REFERENCE_DB_PASSWORD=devpassword456 # BENTO_CBIOPORTAL_DATABASE_PASSWORD=somepassword Required for CBIOPORTAL # BENTO_CBIOPORTAL_DATABASE_ROOT_PASSWORD=somepassword Required for CBIOPORTAL +# minio +BENTO_MINIO_ROOT_PASSWORD=devpassword789 + # Development settings ------------------------------------------------ # - Git configuration diff --git a/etc/bento_services.json b/etc/bento_services.json index 6980180e..bc836340 100644 --- a/etc/bento_services.json +++ b/etc/bento_services.json @@ -71,5 +71,9 @@ }, "gateway": { "repository": "git@github.com:bento-platform/bento_gateway.git" + }, + "minio": { + "service_kind": "minio", + "url_template": "{BENTO_PUBLIC_URL}/api/{service_kind}" } -} +} \ No newline at end of file diff --git a/etc/default_config.env b/etc/default_config.env index d150afdc..136b7166 100644 --- a/etc/default_config.env +++ b/etc/default_config.env @@ -19,6 +19,7 @@ BENTO_BEACON_NETWORK_ENABLED='false' BENTO_CBIOPORTAL_ENABLED='false' BENTO_GOHAN_ENABLED='true' BENTO_MONITORING_ENABLED='false' +BENTO_MINIO_ENABLED='true' # - Switch to enable French translation in Bento Public BENTO_PUBLIC_TRANSLATED='true' @@ -105,6 +106,9 @@ BENTOV2_KATSU_DB_PASSWORD= BENTO_CBIOPORTAL_DATABASE_PASSWORD= BENTO_CBIOPORTAL_DATABASE_ROOT_PASSWORD= +# minio +BENTO_MINIO_ROOT_PASSWORD= + # Development settings ------------------------------------------------ # - Git configuration diff --git a/lib/gateway/docker-compose.gateway.yaml b/lib/gateway/docker-compose.gateway.yaml index c0a9ef65..c8820cc3 100644 --- a/lib/gateway/docker-compose.gateway.yaml +++ b/lib/gateway/docker-compose.gateway.yaml @@ -3,7 +3,7 @@ services: image: ${BENTOV2_GATEWAY_IMAGE}:${BENTOV2_GATEWAY_VERSION} container_name: ${BENTOV2_GATEWAY_CONTAINER_NAME} environment: - - BENTO_DEBUG=false + - BENTO_DEBUG=true - BENTO_AUTHZ_SERVICE_URL=${BENTO_AUTHZ_SERVICE_URL} - BENTOV2_SESSION_SECRET @@ -22,6 +22,7 @@ services: - BENTO_BEACON_ENABLED - BENTO_CBIOPORTAL_ENABLED - BENTO_GOHAN_ENABLED + - BENTO_MINIO_ENABLED - BENTO_MONITORING_ENABLED - BENTOV2_GATEWAY_CONTAINER_NAME @@ -78,6 +79,9 @@ services: - BENTO_CBIOPORTAL_CONTAINER_NAME - BENTO_CBIOPORTAL_INTERNAL_PORT - BENTO_GRAFANA_CONTAINER_NAME + - BENTO_MINIO_CONTAINER_NAME + - BENTO_MINIO_INTERNAL_PORT + - BENTO_MINIO_CONSOLE_PORT networks: - aggregation-net - auth-net @@ -89,6 +93,7 @@ services: - event-relay-net - gohan-api-net - katsu-net + - minio-net - monitoring-net - notification-net - public-net @@ -171,6 +176,9 @@ networks: katsu-net: external: true name: ${BENTO_KATSU_NETWORK} + minio-net: + external: true + name: ${BENTO_MINIO_NETWORK} monitoring-net: external: true name: ${BENTO_MONITORING_NETWORK} diff --git a/lib/gateway/public_services/minio.conf.tpl b/lib/gateway/public_services/minio.conf.tpl new file mode 100644 index 00000000..f5b33816 --- /dev/null +++ b/lib/gateway/public_services/minio.conf.tpl @@ -0,0 +1,48 @@ +# env: BENTO_MINIO_ENABLED +location /api/minio { return 302 https://${BENTOV2_DOMAIN}/api/minio/; } +location /api/minio/ { + # Reverse proxy settings + include /gateway/conf/proxy.conf; + include /gateway/conf/proxy_extra.conf; + + # proxy_set_header Connection ""; + proxy_connect_timeout 300; + chunked_transfer_encoding off; + + # Forward request to event-relay + rewrite ^ $request_uri; + rewrite ^/api/event-relay/(.*) /$1 break; + return 400; + + proxy_pass http://${BENTO_MINIO_CONTAINER_NAME}:${BENTO_MINIO_INTERNAL_PORT}$uri; + + # Errors + error_log /var/log/bentov2_minio_errors.log; +} + +location /api/minio-console { return 302 https://${BENTOV2_DOMAIN}/api/minio-console/; } +location /api/minio-console/ { + # Reverse proxy settings + include /gateway/conf/proxy.conf; + include /gateway/conf/proxy_extra.conf; + + real_ip_header X-Real-IP; + proxy_set_header X-NginX-Proxy true; + proxy_connect_timeout 300; + chunked_transfer_encoding off; + + # Forward request to event-relay + rewrite ^ $request_uri; + rewrite ^/api/minio-console/(.*) /$1 break; + proxy_pass http://${BENTO_MINIO_CONTAINER_NAME}:${BENTO_MINIO_CONSOLE_PORT}$uri; + + # Add sub_filter directives to rewrite base href + sub_filter ' Date: Mon, 9 Dec 2024 09:17:43 -0500 Subject: [PATCH 08/46] =gateway configuration fixes --- lib/gateway/docker-compose.gateway.yaml | 2 +- lib/gateway/public_services/minio.conf.tpl | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/gateway/docker-compose.gateway.yaml b/lib/gateway/docker-compose.gateway.yaml index c8820cc3..442d988e 100644 --- a/lib/gateway/docker-compose.gateway.yaml +++ b/lib/gateway/docker-compose.gateway.yaml @@ -3,7 +3,7 @@ services: image: ${BENTOV2_GATEWAY_IMAGE}:${BENTOV2_GATEWAY_VERSION} container_name: ${BENTOV2_GATEWAY_CONTAINER_NAME} environment: - - BENTO_DEBUG=true + - BENTO_DEBUG=false - BENTO_AUTHZ_SERVICE_URL=${BENTO_AUTHZ_SERVICE_URL} - BENTOV2_SESSION_SECRET diff --git a/lib/gateway/public_services/minio.conf.tpl b/lib/gateway/public_services/minio.conf.tpl index f5b33816..560f055d 100644 --- a/lib/gateway/public_services/minio.conf.tpl +++ b/lib/gateway/public_services/minio.conf.tpl @@ -9,9 +9,9 @@ location /api/minio/ { proxy_connect_timeout 300; chunked_transfer_encoding off; - # Forward request to event-relay + # Forward request to minio rewrite ^ $request_uri; - rewrite ^/api/event-relay/(.*) /$1 break; + rewrite ^/api/minio/(.*) /$1 break; return 400; proxy_pass http://${BENTO_MINIO_CONTAINER_NAME}:${BENTO_MINIO_INTERNAL_PORT}$uri; @@ -31,7 +31,7 @@ location /api/minio-console/ { proxy_connect_timeout 300; chunked_transfer_encoding off; - # Forward request to event-relay + # Forward request to minio-console rewrite ^ $request_uri; rewrite ^/api/minio-console/(.*) /$1 break; proxy_pass http://${BENTO_MINIO_CONTAINER_NAME}:${BENTO_MINIO_CONSOLE_PORT}$uri; From c1bfc5e0843e9a8c37d8aa0aeef45794e0e9823e Mon Sep 17 00:00:00 2001 From: mjdupont12 Date: Mon, 9 Dec 2024 14:21:06 -0500 Subject: [PATCH 09/46] =code review fixes --- etc/bento.env | 4 ++-- etc/bento_dev.env | 2 +- etc/bento_services.json | 4 ---- etc/default_config.env | 2 +- lib/gateway/public_services/minio.conf.tpl | 4 ++-- lib/minio/docker-compose.minio.yaml | 2 +- 6 files changed, 7 insertions(+), 11 deletions(-) diff --git a/etc/bento.env b/etc/bento.env index 3dc327cf..abeea0a8 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -475,9 +475,9 @@ BENTO_PROMTAIL_CONTAINER_NAME=${BENTOV2_PREFIX}-promtail # Minio BENTO_MINIO_IMAGE=quay.io/minio/minio -BENTO_MINIO_IMAGE_VERSION=latest +BENTO_MINIO_IMAGE_VERSION=RELEASE.2024-11-07T00-52-20Z BENTO_MINIO_CONTAINER_NAME=${BENTOV2_PREFIX}-minio -BENTO_MINIO_LIB_DIR=${BENTO_SLOW_DATA_DIR}/minio/data +BENTO_MINIO_DATA_DIR=${BENTO_SLOW_DATA_DIR}/minio/data BENTO_MINIO_NETWORK=${BENTOV2_PREFIX}-minio-NET BENTO_MINIO_ROOT_USER=root BENTO_MINIO_INTERNAL_PORT=9000 diff --git a/etc/bento_dev.env b/etc/bento_dev.env index 98a0003b..23622d33 100644 --- a/etc/bento_dev.env +++ b/etc/bento_dev.env @@ -14,7 +14,7 @@ BENTO_BEACON_NETWORK_ENABLED='false' BENTO_CBIOPORTAL_ENABLED='false' BENTO_GOHAN_ENABLED='true' BENTO_MONITORING_ENABLED='false' -BENTO_MINIO_ENABLED='true' +BENTO_MINIO_ENABLED='false' # - Switch to enable French translation in Bento Public BENTO_PUBLIC_TRANSLATED='true' diff --git a/etc/bento_services.json b/etc/bento_services.json index bc836340..4f165f0c 100644 --- a/etc/bento_services.json +++ b/etc/bento_services.json @@ -71,9 +71,5 @@ }, "gateway": { "repository": "git@github.com:bento-platform/bento_gateway.git" - }, - "minio": { - "service_kind": "minio", - "url_template": "{BENTO_PUBLIC_URL}/api/{service_kind}" } } \ No newline at end of file diff --git a/etc/default_config.env b/etc/default_config.env index 136b7166..c0d6c459 100644 --- a/etc/default_config.env +++ b/etc/default_config.env @@ -19,7 +19,7 @@ BENTO_BEACON_NETWORK_ENABLED='false' BENTO_CBIOPORTAL_ENABLED='false' BENTO_GOHAN_ENABLED='true' BENTO_MONITORING_ENABLED='false' -BENTO_MINIO_ENABLED='true' +BENTO_MINIO_ENABLED='false' # - Switch to enable French translation in Bento Public BENTO_PUBLIC_TRANSLATED='true' diff --git a/lib/gateway/public_services/minio.conf.tpl b/lib/gateway/public_services/minio.conf.tpl index 560f055d..16da0f2d 100644 --- a/lib/gateway/public_services/minio.conf.tpl +++ b/lib/gateway/public_services/minio.conf.tpl @@ -17,7 +17,7 @@ location /api/minio/ { proxy_pass http://${BENTO_MINIO_CONTAINER_NAME}:${BENTO_MINIO_INTERNAL_PORT}$uri; # Errors - error_log /var/log/bentov2_minio_errors.log; + error_log /var/log/bentov2_minio_errors.log; } location /api/minio-console { return 302 https://${BENTOV2_DOMAIN}/api/minio-console/; } @@ -44,5 +44,5 @@ location /api/minio-console/ { proxy_set_header Accept-Encoding ""; # Errors - error_log /var/log/bentov2_minio_errors.log; + error_log /var/log/bentov2_minio_errors.log; } \ No newline at end of file diff --git a/lib/minio/docker-compose.minio.yaml b/lib/minio/docker-compose.minio.yaml index dc2f6f20..6dc72fb1 100644 --- a/lib/minio/docker-compose.minio.yaml +++ b/lib/minio/docker-compose.minio.yaml @@ -8,7 +8,7 @@ services: networks: - minio-net volumes: - - ${BENTO_MINIO_LIB_DIR}:/data + - ${BENTO_MINIO_DATA_DIR}:/data environment: - MINIO_ROOT_USER=${BENTO_MINIO_ROOT_USER} - MINIO_ROOT_PASSWORD=${BENTO_MINIO_ROOT_PASSWORD} From 5513d73f02d9ac42155d2b90564e7bd60ff922ad Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Wed, 11 Dec 2024 16:36:05 -0500 Subject: [PATCH 10/46] feat: support light/dark background branding https://redmine.c3g-app.sd4h.ca/issues/2273 --- docs/installation.md | 14 +++++++++--- docs/migrating_to_18.md | 9 ++++++++ ...nding.png => default.branding.lightbg.png} | Bin lib/public/docker-compose.public.yaml | 1 + py_bentoctl/other_helpers.py | 21 +++++++++++++----- 5 files changed, 36 insertions(+), 9 deletions(-) rename etc/{default.public.branding.png => default.branding.lightbg.png} (100%) diff --git a/docs/installation.md b/docs/installation.md index 6f9bc9e4..5742d604 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -325,10 +325,18 @@ value in the `BENTOV2_AUTH_CLIENT_ID` environment variable. On local instances, this is set to `local_bentov2` by default. -## 7. *Production only:* set up translations for Bento-Public +## 7. *Production only:* set up translations and branding -Now that Bento Public has been initialized by either `./bentoctl.bash init-all` or `./bentoctl.bash init-web public`, -adjust the default translation set as necessary: +Now that Bento Public and Web have been initialized by either `./bentoctl.bash init-all` or +`./bentoctl.bash init-web `, translation files and branding (logos) can be configured as necessary. + +**For branding (logos)**, copy files to the following paths: + +* A logo which works on dark backgrounds should be placed at `lib/public/branding.png` and `lib/web/branding.png`. +* A logo which works on light backgrounds should be placed at `lib/public/branding.lightbg.png`. This is primarily + useful for Beacon Network. + +**For translations** (which apply only to Bento Public), adjust the default translation set as necessary: ```js // lib/public/translations/.json diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md index 338b456f..c6eec02d 100644 --- a/docs/migrating_to_18.md +++ b/docs/migrating_to_18.md @@ -1,3 +1,12 @@ # Migrating to Bento v18 TODO + +## TODO. Set up light and dark-background branding for Bento Public + +* Make sure `lib/public/branding.png` and `lib/web/branding.png` are images which work on dark backgrounds. +* **If you have a light-background logo to add:** put this file at `lib/public/branding.lightbg.png`. +* **If you do not have a light-background logo:** run `./bentoctl.bash init-web public` to copy the Bento logo to the + above location, or copy `branding.png` to `branding.lightbg.png` + +TODO diff --git a/etc/default.public.branding.png b/etc/default.branding.lightbg.png similarity index 100% rename from etc/default.public.branding.png rename to etc/default.branding.lightbg.png diff --git a/lib/public/docker-compose.public.yaml b/lib/public/docker-compose.public.yaml index 489b86d5..9d239f65 100644 --- a/lib/public/docker-compose.public.yaml +++ b/lib/public/docker-compose.public.yaml @@ -30,6 +30,7 @@ services: - ${PWD}/lib/public/fr_about.html:/bento-public/dist/public/fr_about.html:ro - ${PWD}/lib/public/branding.png:/bento-public/dist/public/assets/branding.png:ro + - ${PWD}/lib/public/branding.lightbg.png:/bento-public/dist/public/assets/branding.lightbg.png:ro healthcheck: test: [ "CMD", "curl", "http://localhost:${BENTO_PUBLIC_INTERNAL_PORT}/service-info" ] timeout: ${BENTO_HEALTHCHECK_TIMEOUT} diff --git a/py_bentoctl/other_helpers.py b/py_bentoctl/other_helpers.py index 0d4d87cf..e7622d4a 100644 --- a/py_bentoctl/other_helpers.py +++ b/py_bentoctl/other_helpers.py @@ -38,6 +38,7 @@ def init_web(service: str, force: bool): def _init_web_public(force: bool): root_path = pathlib.Path.cwd() + etc_path = root_path / "etc" # Init lib dir public_path = (root_path / "lib" / "public") @@ -46,33 +47,41 @@ def _init_web_public(force: bool): # About html page (English) _file_copy( - (root_path / "etc" / "default.en_about.html"), + (etc_path / "default.en_about.html"), (public_path / "en_about.html"), force=force, ) # About html page (French) _file_copy( - (root_path / "etc" / "default.fr_about.html"), + (etc_path / "default.fr_about.html"), (public_path / "fr_about.html"), force=force, ) # Branding image + # - dark background / default _file_copy( - (root_path / "etc" / "default.public.branding.png"), + (etc_path / "default.branding.png"), (public_path / "branding.png"), force=force, ) + # - light background + _file_copy( + (etc_path / "default.branding.lightbg.png"), + (public_path / "branding.lightbg.png"), + force=force, + ) + # English translations _file_copy( - (root_path / "etc" / "templates" / "translations" / "en.example.json"), + (etc_path / "templates" / "translations" / "en.example.json"), (translation_path / "en.json"), force=force, ) # French translations _file_copy( - (root_path / "etc" / "templates" / "translations" / "fr.example.json"), + (etc_path / "templates" / "translations" / "fr.example.json"), (translation_path / "fr.json"), force=force, ) @@ -99,7 +108,7 @@ def _init_web_private(force: bool): web_path = (root_path / "lib" / "web") web_path.mkdir(parents=True, exist_ok=True) - src_branding = (root_path / "etc" / "default.branding.png") + src_branding = (root_path / "etc" / "default.branding.darkbg.png") dst_branding = (web_path / "branding.png") if dst_branding.is_file(): From a3f1b20def231295e1b5992da34d0d5405521682 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Wed, 11 Dec 2024 16:43:03 -0500 Subject: [PATCH 11/46] docs: more work on v18 migration guide --- docs/migrating_to_18.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md index c6eec02d..d5d9c46c 100644 --- a/docs/migrating_to_18.md +++ b/docs/migrating_to_18.md @@ -2,11 +2,28 @@ TODO -## TODO. Set up light and dark-background branding for Bento Public + +## 1. Stop and update services + +```bash +./bentoctl.bash stop +./bentoctl.bash pull +``` + + +## 2. Set up light and dark-background branding for Bento Public * Make sure `lib/public/branding.png` and `lib/web/branding.png` are images which work on dark backgrounds. * **If you have a light-background logo to add:** put this file at `lib/public/branding.lightbg.png`. * **If you do not have a light-background logo:** run `./bentoctl.bash init-web public` to copy the Bento logo to the above location, or copy `branding.png` to `branding.lightbg.png` + TODO + + +## TODO. Restart services + +```bash + +``` From 8e42c56ef011393bfb55fb1f6621b3067bb89152 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Wed, 11 Dec 2024 16:43:22 -0500 Subject: [PATCH 12/46] docs: v18 migration guide work --- docs/migrating_to_18.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md index d5d9c46c..ed5551c6 100644 --- a/docs/migrating_to_18.md +++ b/docs/migrating_to_18.md @@ -25,5 +25,5 @@ TODO ## TODO. Restart services ```bash - +./bentoctl.bash start ``` From e8def901fc60c3bb33e14e16e4375182a5f0d524 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Thu, 12 Dec 2024 10:37:44 -0500 Subject: [PATCH 13/46] public - bind lightbg branding in local mode --- docker-compose.local.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/docker-compose.local.yaml b/docker-compose.local.yaml index 5dbd201f..0147a093 100644 --- a/docker-compose.local.yaml +++ b/docker-compose.local.yaml @@ -19,6 +19,7 @@ services: - ${PWD}/lib/public/en_about.html:/bento-public/src/public/en_about.html - ${PWD}/lib/public/fr_about.html:/bento-public/src/public/fr_about.html - ${PWD}/lib/public/branding.png:/bento-public/src/public/assets/branding.png + - ${PWD}/lib/public/branding.lightbg.png:/bento-public/src/public/assets/branding.lightbg.png - ${PWD}/lib/public/translations/en.json:/bento-public/src/public/locales/en/translation_en.json - ${PWD}/lib/public/translations/fr.json:/bento-public/src/public/locales/fr/translation_fr.json environment: From 8ffbe420f91508dc0f231c4c6b92918bf9a4e4d7 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Mon, 16 Dec 2024 17:19:24 -0500 Subject: [PATCH 14/46] Katsu auth + move Katsu out from private portal URL --- etc/bento.env | 6 +++--- etc/bento_services.json | 2 +- lib/gateway/{services => public_services}/katsu.conf.tpl | 3 +-- lib/katsu/docker-compose.katsu.yaml | 1 - 4 files changed, 5 insertions(+), 7 deletions(-) rename lib/gateway/{services => public_services}/katsu.conf.tpl (75%) diff --git a/etc/bento.env b/etc/bento.env index a414e488..059b9f5b 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -278,7 +278,7 @@ BENTOV2_KATSU_DB_CPUS=4 # Katsu BENTOV2_KATSU_IMAGE=ghcr.io/bento-platform/katsu -BENTOV2_KATSU_VERSION=9.1.0 +BENTOV2_KATSU_VERSION=pr-536 BENTOV2_KATSU_VERSION_DEV=${BENTOV2_KATSU_VERSION}-dev BENTOV2_KATSU_CONTAINER_NAME=${BENTOV2_PREFIX}-katsu BENTO_KATSU_NETWORK=${BENTOV2_PREFIX}-katsu-net @@ -301,7 +301,7 @@ CHORD_METADATA_SUB_PATH=/api/metadata # Canonical/world-resolvable URL for Katsu # TODO: services should use the service registry instead -BENTO_KATSU_URL=${BENTOV2_PORTAL_PUBLIC_URL}${CHORD_METADATA_SUB_PATH} +BENTO_KATSU_URL=${BENTOV2_PUBLIC_URL}${CHORD_METADATA_SUB_PATH} # Redis BENTOV2_REDIS_BASE_IMAGE=redis @@ -387,7 +387,7 @@ BENTOV2_GOHAN_PRIVATE_AUTHZ_URL=http://${BENTOV2_GOHAN_AUTHZ_OPA_CONTAINER_NAME} # Bento-Public BENTO_PUBLIC_IMAGE=ghcr.io/bento-platform/bento_public -BENTO_PUBLIC_VERSION=edge +BENTO_PUBLIC_VERSION=pr-240 BENTO_PUBLIC_VERSION_DEV=${BENTO_PUBLIC_VERSION}-dev BENTO_PUBLIC_CONTAINER_NAME=${BENTOV2_PREFIX}-public BENTO_PUBLIC_NETWORK=${BENTOV2_PREFIX}-public-net diff --git a/etc/bento_services.json b/etc/bento_services.json index 6980180e..8faebdea 100644 --- a/etc/bento_services.json +++ b/etc/bento_services.json @@ -36,7 +36,7 @@ }, "katsu": { "service_kind": "metadata", - "url_template": "{BENTO_PORTAL_PUBLIC_URL}/api/{service_kind}", + "url_template": "{BENTO_PUBLIC_URL}/api/{service_kind}", "repository": "git@github.com:bento-platform/katsu.git" }, "drs": { diff --git a/lib/gateway/services/katsu.conf.tpl b/lib/gateway/public_services/katsu.conf.tpl similarity index 75% rename from lib/gateway/services/katsu.conf.tpl rename to lib/gateway/public_services/katsu.conf.tpl index 6e265483..27d3459f 100644 --- a/lib/gateway/services/katsu.conf.tpl +++ b/lib/gateway/public_services/katsu.conf.tpl @@ -1,9 +1,8 @@ -location /api/metadata { return 302 https://${BENTOV2_PORTAL_DOMAIN}/api/metadata/; } +location /api/metadata { return 302 https://${BENTOV2_DOMAIN}/api/metadata/; } location /api/metadata/ { # Reverse proxy settings include /gateway/conf/proxy.conf; include /gateway/conf/proxy_extra.conf; - include /gateway/conf/proxy_private.conf; # Forward request to Katsu rewrite ^ $request_uri; diff --git a/lib/katsu/docker-compose.katsu.yaml b/lib/katsu/docker-compose.katsu.yaml index f2c0b176..470b3114 100644 --- a/lib/katsu/docker-compose.katsu.yaml +++ b/lib/katsu/docker-compose.katsu.yaml @@ -15,7 +15,6 @@ services: environment: - BENTO_UID - CHORD_URL=${BENTOV2_PORTAL_PUBLIC_URL} - - CHORD_PERMISSIONS=False # Keep off since we have the proxy handling everything for now - CHORD_DEBUG=False - CHORD_METADATA_SUB_PATH - INTERNAL_PORT=${BENTOV2_KATSU_INTERNAL_PORT} From f19c585e6df5906d5ada80040dfa14b1359d722a Mon Sep 17 00:00:00 2001 From: v-rocheleau Date: Tue, 17 Dec 2024 15:47:41 -0500 Subject: [PATCH 15/46] feat: minio subdomain revers proxy --- docs/deployment.md | 1 + etc/bento.env | 2 +- etc/bento_deploy.env | 2 ++ etc/bento_dev.env | 2 ++ etc/default_config.env | 4 ++++ lib/gateway/docker-compose.gateway.yaml | 3 +++ lib/gateway/public_services/minio.conf.tpl | 2 +- lib/minio/docker-compose.minio.yaml | 4 +++- py_bentoctl/other_helpers.py | 9 +++++++++ 9 files changed, 26 insertions(+), 3 deletions(-) diff --git a/docs/deployment.md b/docs/deployment.md index 53f682f9..0f303fd3 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -9,6 +9,7 @@ BENTOV2_DOMAIN=bento.example.com BENTOV2_PORTAL_DOMAIN=portal.${BENTOV2_DOMAIN} BENTOV2_AUTH_DOMAIN=auth.${BENTOV2_DOMAIN} BENTOV2_CBIOPORTAL_DOMAIN=cbioportal.${BENTOV2_DOMAIN} +BENTO_MINIO_DOMAIN=minio.${BENTOV2_DOMAIN} ``` For a real deployment, make sure that your `local.env` file uses valid domain names for which SSL certificates diff --git a/etc/bento.env b/etc/bento.env index abeea0a8..283467cf 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -34,7 +34,7 @@ BENTOV2_GATEWAY_INTERNAL_CERTS_DIR=/usr/local/openresty/nginx/certs # Gateway BENTOV2_GATEWAY_IMAGE=ghcr.io/bento-platform/bento_gateway -BENTOV2_GATEWAY_VERSION=0.13.2 +BENTOV2_GATEWAY_VERSION=pr-21 BENTOV2_GATEWAY_VERSION_DEV=${BENTOV2_GATEWAY_VERSION}-dev BENTOV2_GATEWAY_CONTAINER_NAME=${BENTOV2_PREFIX}-gateway diff --git a/etc/bento_deploy.env b/etc/bento_deploy.env index 729fe1c0..a0d35234 100644 --- a/etc/bento_deploy.env +++ b/etc/bento_deploy.env @@ -37,6 +37,8 @@ BENTOV2_PORTAL_DOMAIN=portal.${BENTOV2_DOMAIN} BENTOV2_AUTH_DOMAIN=bentov2auth.local # Unused if cBioPortal is disabled: BENTOV2_CBIOPORTAL_DOMAIN=cbioportal.${BENTOV2_DOMAIN} +# Unused if Minio is disabled +BENTO_MINIO_DOMAIN=minio.${BENTOV2_DOMAIN} # --------------------------------------------------------------------- # Authn/z ------------------------------------------------------------- diff --git a/etc/bento_dev.env b/etc/bento_dev.env index 23622d33..56fa654c 100644 --- a/etc/bento_dev.env +++ b/etc/bento_dev.env @@ -33,6 +33,8 @@ BENTOV2_PORTAL_DOMAIN=portal.${BENTOV2_DOMAIN} BENTOV2_AUTH_DOMAIN=bentov2auth.local # Unused if cBioPortal is disabled: BENTOV2_CBIOPORTAL_DOMAIN=cbioportal.${BENTOV2_DOMAIN} +# Unused if Minio is disabled +BENTO_MINIO_DOMAIN=minio.${BENTOV2_DOMAIN} # --------------------------------------------------------------------- # Authn/z ------------------------------------------------------------- diff --git a/etc/default_config.env b/etc/default_config.env index c0d6c459..8260050e 100644 --- a/etc/default_config.env +++ b/etc/default_config.env @@ -46,6 +46,8 @@ BENTOV2_PORTAL_DOMAIN=portal.${BENTOV2_DOMAIN} BENTOV2_AUTH_DOMAIN=bentov2auth.local # Unused if cBioPortal is disabled: BENTOV2_CBIOPORTAL_DOMAIN=cbioportal.${BENTOV2_DOMAIN} +# Unused if Minio is disabled +BENTO_MINIO_DOMAIN=minio.${BENTOV2_DOMAIN} # --------------------------------------------------------------------- # Certificates -------------------------------------------------------- @@ -63,6 +65,8 @@ BENTOV2_GATEWAY_INTERNAL_CBIOPORTAL_FULLCHAIN_RELATIVE_PATH=/cbioportal_fullchai BENTOV2_GATEWAY_INTERNAL_CBIOPORTAL_PRIVKEY_RELATIVE_PATH=/cbioportal_privkey1.key BENTO_GATEWAY_INTERNAL_REDIRECT_FULLCHAIN_RELATIVE_PATH=/redirect_fullchain1.crt BENTO_GATEWAY_INTERNAL_REDIRECT_PRIVKEY_RELATIVE_PATH=/redirect_privkey1.key +BENTO_GATEWAY_INTERNAL_MINIO_FULLCHAIN_RELATIVE_PATH=/minio_fullchain1.crt +BENTO_GATEWAY_INTERNAL_MINIO_PRIVKEY_RELATIVE_PATH=/minio_privkey1.key # --------------------------------------------------------------------- # Authn/z ------------------------------------------------------------- diff --git a/lib/gateway/docker-compose.gateway.yaml b/lib/gateway/docker-compose.gateway.yaml index 442d988e..df736d0d 100644 --- a/lib/gateway/docker-compose.gateway.yaml +++ b/lib/gateway/docker-compose.gateway.yaml @@ -36,6 +36,8 @@ services: - BENTOV2_GATEWAY_INTERNAL_CBIOPORTAL_PRIVKEY_RELATIVE_PATH - BENTO_GATEWAY_INTERNAL_REDIRECT_FULLCHAIN_RELATIVE_PATH - BENTO_GATEWAY_INTERNAL_REDIRECT_PRIVKEY_RELATIVE_PATH + - BENTO_GATEWAY_INTERNAL_MINIO_FULLCHAIN_RELATIVE_PATH + - BENTO_GATEWAY_INTERNAL_MINIO_PRIVKEY_RELATIVE_PATH - BENTOV2_GATEWAY_PUBLIC_ALLOW_FRAME_DOMAINS @@ -82,6 +84,7 @@ services: - BENTO_MINIO_CONTAINER_NAME - BENTO_MINIO_INTERNAL_PORT - BENTO_MINIO_CONSOLE_PORT + - BENTO_MINIO_DOMAIN networks: - aggregation-net - auth-net diff --git a/lib/gateway/public_services/minio.conf.tpl b/lib/gateway/public_services/minio.conf.tpl index 16da0f2d..3a3a2c45 100644 --- a/lib/gateway/public_services/minio.conf.tpl +++ b/lib/gateway/public_services/minio.conf.tpl @@ -45,4 +45,4 @@ location /api/minio-console/ { # Errors error_log /var/log/bentov2_minio_errors.log; -} \ No newline at end of file +} diff --git a/lib/minio/docker-compose.minio.yaml b/lib/minio/docker-compose.minio.yaml index 6dc72fb1..1a1ad797 100644 --- a/lib/minio/docker-compose.minio.yaml +++ b/lib/minio/docker-compose.minio.yaml @@ -12,6 +12,8 @@ services: environment: - MINIO_ROOT_USER=${BENTO_MINIO_ROOT_USER} - MINIO_ROOT_PASSWORD=${BENTO_MINIO_ROOT_PASSWORD} + - MINIO_DOMAIN=https://${BENTO_MINIO_DOMAIN} + - MINIO_BROWSER_REDIRECT_URL=https://${BENTO_MINIO_DOMAIN}/minio/ui healthcheck: test: ["CMD", "mc", "ready", "local"] interval: 5s @@ -24,4 +26,4 @@ services: networks: minio-net: external: true - name: ${BENTO_MINIO_NETWORK} \ No newline at end of file + name: ${BENTO_MINIO_NETWORK} diff --git a/py_bentoctl/other_helpers.py b/py_bentoctl/other_helpers.py index d951f9c6..d581edce 100644 --- a/py_bentoctl/other_helpers.py +++ b/py_bentoctl/other_helpers.py @@ -138,6 +138,14 @@ def init_self_signed_certs(force: bool): "dir": auth_certs_dir, }, + # Minio + **({"minio": { + "var": "BENTO_MINIO_DOMAIN", + "priv_key_name": "minio_privkey1.key", + "crt": "minio_fullchain1.crt", + "dir": gateway_certs_dir, + }} if c.BENTO_FEATURE_MINIO.enabled else {}), + # If cBioPortal is enabled, generate a cBioPortal self-signed certificate as well **({"cbioportal": { "var": "BENTOV2_CBIOPORTAL_DOMAIN", @@ -146,6 +154,7 @@ def init_self_signed_certs(force: bool): "dir": gateway_certs_dir, }} if c.BENTO_FEATURE_CBIOPORTAL.enabled else {}), + # If a domain is configured for redirect (e.g. preserve a published reference) **({"redirect": { "var": "BENTO_DOMAIN_REDIRECT", "priv_key_name": "redirect_privkey1.key", From 78ffac970dec88cafb1ced4843c6bcb51a81c3ca Mon Sep 17 00:00:00 2001 From: mjdupont12 Date: Wed, 18 Dec 2024 09:11:21 -0500 Subject: [PATCH 16/46] =code reviews fixes + update migrating docs --- docs/img/minio_object_store.png | Bin 0 -> 126375 bytes docs/migrating_to_18.md | 22 +++++++++- docs/object-store.md | 15 +++++++ etc/bento.env | 4 +- etc/bento_services.json | 2 +- lib/gateway/public_services/minio.conf.tpl | 48 --------------------- lib/minio/docker-compose.minio.yaml | 7 +-- py_bentoctl/other_helpers.py | 2 + 8 files changed, 45 insertions(+), 55 deletions(-) create mode 100644 docs/img/minio_object_store.png create mode 100644 docs/object-store.md delete mode 100644 lib/gateway/public_services/minio.conf.tpl diff --git a/docs/img/minio_object_store.png b/docs/img/minio_object_store.png new file mode 100644 index 0000000000000000000000000000000000000000..d1741ec335efbdc7389baa0d155605928f460fa6 GIT binary patch literal 126375 zcmeFZc~sI{`#0RFPG)r)v@|uN$)POGOf5}4jpm%0niG~|254&H2y~jwl+x7Hl#^qQ zBnqeqHaMG_BO)Rt&WPjyC=&DkM~{cbuFWfdvC7q-q*f{&*$1i zU$Hj*W0T^hHEY)VVRre#)irB=r>|MFUS{J4;2p=PgD~Lbx8SR$=hl?8?U?`?>wV8! zon5o06uo)r=I=mT`p#vi;5BPx?ymg)Hs}KiTeD_4$Lzw{YhmCivD7Os$CTX72Op>C z>CA5tfH&w^>Jy#hBOX8Y|2uLz9dl`II9FLF{{7nh57%#8zwyw`Lx1ku_UXa)jo;6P zy$}qF3gXRG5(RoK<|21)^umFfg*M}xM-J#5IEe8r4z(W%jKnCbb)NBU2+c?YWck<6 z-)b4V^vxIg3Y0huNDgUSSx9JPce_Csd z?n9;i(;VO7W%!@gpXmSpBmcj*u&;BWgE$q&-4@P7cY8((xJJBpVp)*Oklz3B#oc1Y(cBlE8PgTz_>jG-2d^I=buT@kj2dd1;L(%oe&7Fa`-xq1ya0FC zfy*n0Y4^?*J-g>u-`6KB7yM=V>d>;!<@V9$rzpZHQ@zzsg_pt}*fK<<+uNf=4{9x_RKP(WH`A4Ir&u!fAb#0c; zbk86_SM~YB@PidyeeJVvbySeGq~-r2u?nR`|KWGi+TwMjL)#dAX7L z7Zem5H8FtAHgQARN3;j3s2ky^cwRoa=TLwT)3zz;n9ESU{1|dEk(%9QZK9+6W0aW4Px*2gYz%Di zgq?3xV4;e7ep6>_8szG9v1tvKbKSp&j*R7)1kL6>Ca$5~=oYha5`EgK35n)ivYl@qjXh-B{ag{5hX1g#JX+)@*qiYD~ zVIzyV9Ju6ablc|s^3%|2ea?H4BuBhcnq!rww~JmAn2a!I({sX?5f*Gx>-T_28=;U$ zNft|j2OTLHgB8Kc4<+iW8~JZ_7{BluAJ5s_G{zC0N-OKSm0KhX{dO}ztC;N=gwx2J zV?vfcn~SV3z2FpQDbT7e8Kl6Vvm)P`r4a3`Qze4MZ)O;%t5QHgi@g?IC5-v?oVrCX z(2CGjz=;i+r0kJ!vmgC`tpDy!^1n1L`b(%RV4v)FZ1`F_RE5koCzu+~EtZ)xm!TUf zg+yKKc@yu*K)X-mtyM`B9s`tZ>igyPz(yxRRColPlopWjZkv+6e{%-&?jOHsOGotc z8Jv;7Rv^6D*O>Xj1V1Y?;%Vtcnc>95@YT)}KzGA}m1G_t`F_H4)HC0By-{LcU;jS3 ziz&{D)fEk;wx+3nEt~~bKZb=AWm+h5|Inh>wM8ml>u=9YTO+yDcA*8%*nX7|5D0eH z@VSa^xvfRdJ7-Bijn1`}ad~8OebafcLe0#N&q?~{tE_6gNZHFvk2c3Z*kd(9s|ndP z2J$Xi-zg7Bi#Ox<(v0{1a!|5l6}rp`F4r2IhQ|1Y+&2G%hsAHv8S!lf+)oF%Nahoq zj!RF{u-Ih~Y3W(BE#n&9W(2fEP!+0FJ@P?h2x(fc%&W$C_fMxW7mMN)Iod z#8EJIy1|~}*)7T%J_&P;5mw*n$n=QR_(PUx8`Y$s)nr9rlmDh>_h=WnwiGq^$S+@_ zX$JO})TGyXk$mtL*`UZzW;El80r{iOukP-GsN(rEIIAyF$C`hJZn3Z5^l>%Rd1$ET_b7sP||G%s93x1<%O#9 zc#fhHor!kWRP;*9cQo2P|%_Vt~l>{8^&Qy9_QkXG`}NMmMS_@qV1J1k}Cf$7*} z3-^`_giGcw-|3G(ZEBL>+|&feYx$)p9sEudci5m_W@wt{xh5fEVFaSj#hSn|#3Z(> z>moBG;UM9y%uxe1S=3`bnpJ`<&4R5r9$$SzuVx0#q(p7zKSMRM<2I*?5{ck zxIA(zvc=FmsG~u6@FrMyjz+MJRE0pqg-!4th$C#aV$fs6x%=_ncln+dY5w<*YjX8e z=^=aYPOlo9-Xw#4T>=od9m^QQxZ5Ausu!z2dAiu^(oKH6w9!knni=0+HSK{4p145J z09SCU1Rv{g1*se)z0nM_a5pRc2(1LNl%K&g+o#0g<1bD1DK*CPKeBQJn6J7u76{8@{Sv@KSI-+$ z!^Zn#Wdeiml0R`L+~*rD@0gNf0{0d|}>!5^v56beyG!5m#J{|l$` z9XHMhjSVOzI}o^!sH-=)>$U|z18{CE4;W~%O(3T)2aP)PAO!3HikchkuQbE4A*h3g znPUf6r5cHL1|#K7x>2>FFwzjh*PK`x2@FlgWvw@fN`ixm~ZVK;G|y zx{l!`w?|35d^;MY2%I@OpoJ=~kXw3SBse|(^petP8aSaFAKU}=S9Wjsx-g;oV!V9V zA`i!i36$+TO)IfEzQCEEkajzNw<{!(aPlF$=QPZ*};f6bcf2u1Vs@10Q>dec99!SV^a?N0$u^JuaZc>s| zmu5sDKZKk?YNj{C>wNAL<2ibT;;|H)b#KDkl4EAABe0O?K{y7Vd#PNb&N4)w(9iUD zt>cy%>qVaFg<@*{);oVDwCj`b9aoAky*6RuKwAWr7s+ZR%5lQZVyoF?ywjrOI-U<1 zI?;y&vBQBZq=o+>~g4kx9IpNHJVa|6x78;W{k(awFhgak1e}|Lh3AX0;m2&9p zkRtaY+DC$WQBLvYXS}|E+&A`rRO79}-?#M_OY(B_K z8C7j2L(%%1Ub!-}pn`@gMq_=ssEzNU4K+^N$@Z|Qk6`S&YVL#9yZGzwLtEf=wN*XZ z0`ZsVAGye0Y9wv1;IMg_R~%6n$JorPaM#$u^(L9|!nX8O^p-+Y9Qbce(n?rt#36+O zDlM5<`UGE4LJ~5Hq398hC2jKc_9lM)m%vch7>pCLaR>Ldp)sS8KLacDjlU2_N$PYf4-t*axKP#+^0{en-QL#8-aPxvu=XanyT|C)gDsx#1hKqGD&qERe+wU2 zGn_X~1=Mp#Kipr%xB3dv8;Owu6|@csaNB$*GQ~NEQ9+l}<yM<}YpBwO6fdbt@~`By)r*+@ zGh;MsLYk$(Pi`1b{oqAva~ydxWDIvrjO&;}CT=Jb6!Wyy=%HWEObMQtNSs&(+BAQi z?+~Vb3sY&nN#$pJXZSOlyJV=46Q=EkC*OwB_4E!hsE`2DR~-DTrgwglEW6TMHL9?= zcISx8iL&9s&U|Ql^pAm}?mbM(xK!Qgu?rPwcXt&!Vj@-j^D)(4gc4GYVt#%><^-kM zv~UI=qS`I4a=?+59qwm2Y`FM|7`23K;d}V-yKJaFFlxJ9P^sz$Y*QTU6^Fm?8fo!L z)WdU>CL?H1ZP+W0gLCdJ6g5cXaH772|A&&^NoCTr>q)BezedA}&vADT(08>~ zyjnUfTEfcRujA$gNeQctsGblVqt|)0L6;+D?tL9Km?vPps*LvO$x9o-u*-m9!q2L< zo-=8No0J);Wft^5Rq?z%V%=QU9ht~+xK!T)=N*hQ>(M>ogk!XOFvGDAo_TLGxmsuj z0zJPSjbm`Lgj1?)gz}vFXO?!P)fuGipifusxdjV0iB|uz)BwRA{m|OY0uQBNfru>D=C&n4>wqrn*DSR> z-d0XJ)*tA-rHAU349GGX03;jSIj%DL5i zf-I}RUCF4lW9AB}(!_oq$18GicaQfi%RlAIW--VrmQ=R+IOO?!M(?`EF497!fD&aF z9-XtNzlrY;Apq7I)3cXdDRSnXrVSSOkizW5ish*sd~iz*)!^5p&sHTX3eZ<%+CgSG z)U&c#bEE7JB&ew%AWAeepTV+*7O^i9L~z}MG#^Xq1=L(=cgb*D(X;*^+CW671+x3H zDYT)SHf^usc1>1Xi%##~jt0Lf+<=_IM2FO9HpB4&ooCdhI5*!_rm|D1c9C^iQ@S&dp?<>@xJm2dhbN_v@Ks}0V!2%*djvh!=1??Wu#ofjEj zd#d9y{X3%Y^-|J6>D=;HQ=7y6@1@>slIC4s2NpY(SHQc@p0EH6y+XhHn9Jpos*|%g zxAAJ|0L-C$B}UfYkqM=qFo|?;xN;1k{FzX!oaMTy&P3gQ*b4!i36E{tcO7xevN>?Q zax3ZPH&LZ7PW;jo;_Z4UST_kCdpGq7TclK+jj$$Y@UL8Zt1yjpvwp0hx{)>OZx<4! zl`dZAn%MM;Q}<=E>J)|5Mv7s7p3J64zLm8tehsDa`IHWU65~e1-TIN_E3c=AdXjEM`vomN>o*?1*f_JP|_5`d~_A zg0nxOaYuj;knT4>;L!v-T79T_JD__WPL>xUOxTPUH>iRGkQUUo9#OCHuI(MCrXzps z$e|wp)%hHJ*6DhvOy!hrjFEinkKUr03JkjSKDB7p#62*?fHSXC<^j%hf{{fCP_y|? zwkgyms6i-;)@Tav4VNdtNcPU@H5e=A5xqDQ2~8^oIer#*pL< zkHOVXWR&(Tjx5+c>}x~FcD(v6n>@yI|d-_!N>`P}43M zZ#zf@k*(om2gd8GhRKp)`8tt3rf-INFTD^HQ-3OBZp35puO~hAHuTB*bFVnhVkgi@ zev8MJL!-e=eV1R8?x*LTZZWncH1K4VrAu8G<<4!KP$6-GZ}IE1jkfU0-WJ)^{HoKI z5Bv6!y)lASI{!TM?rM2OO36{jO!7hu0L+kcIh8~NW` z_IZ);`LwA5))eSZi;erm&!j`o>oD5Iv(zpn!>BdWy+3)Rf58cV61Mpss!6PPv;Ev9 zl}aH;_9r3qe+n{J1NemI%F!yNt}YuBWz^CNp=EjMA5LLLE#nQi2H|AAeFdw3@q3J1 zo^M9Ds$^l6Qn>RIi+_$0&*}r@1lKlR_Tlz(jn~@uij0iQV{VarEYEs{D%t9f=Of6{z!bS?~Q-iWEPd|8O3it%c$k`iU5P4G9w18cJe)ef?1G`QLG53rm8AZT*VG zt<4T%474-scu|f{BDEHfcJ^-4RQO}0o6G_aGy5;!w=DQ z3lUwpRw@eT0i`*qV~!I89D+!Ac&8$lmQyV?LJiP;fsl%jsxiR;l^14dY=_eTulX*CuPIG$>A+>UZRcv zW9JpRECu<$(NXp=J^9VzvB44Az9SCJ&%GPMsZmR6L%fw%& zI`I-GCYdg|B^<>zpT#1;4hIg>-4l?3^UOT?GlJ7rtnEZVsr*+{imxM3zK;U%GrZkwe7HZ_A-g83#rJMqF>z_yWW3eY_6^omI61 z!u`d>hGi2g52s~fh&|4&jDiZEXUaDSbiNnjMyF7k>j?zMNTGqhtf%M=;)BIA@%*wi z-wsq9@QgC;Wdbts=Q8+<7eT<@y+CeQMQ(xVk6(YmIoRlx^b)|rFP727a2dKYkZ}dN zT+|r}Zs^4oD9k%&&`mw63!-B1i3wvi84`3NY+}Q?lH!6}1Cp6K6s=D!&U0We)3{Gf zYA3MLz+wC8qW(Sm@kV&7o`CM>Q;}p!D{&gM^%8~5RLJxO8iI<^qFQ5%R}HLM!buXv zo+cl|xNu8exqY*^FRy~E66e?x22iN0;WRMajraTLrY~;3;Mium_`Oy~?}`p+S{&FS zaJcVW)`kZkU}^~voe^5CJ#ob`h*G7s=2J18ytyA`3|;z}j7YWUF&V0h2dJ<aPa2R_2$U1!Q#d8it< zDReeocum*h4F4?Mw1Z0xbvCb8+k3DCI4=LCY+l#BNX^6xJCwaim`eW{b{5n`bT9et zH46q;*5cE`_;rI^O!{6?pJpjK{ZO2ztIfv!j9<6+X%ioyJahh7QQ1oM%R?M@$w2N2 zwP(XTWi|16XZUELg~;?}F_xu=B=?t%+}3#Je-U=+HxPQUFl(7o9*gcRHWFdV5Kwt$ zgSBjf_WvMcwiyAloJtwZJb1p9Z@290m*&vH=kNn$Xr>akQYcM6t>xq8IFk^ei5@@t zfYIKrOaziQU86Pmz5!8whT2fJEy`@-6j}9ul)q8EnO|sq3;8wwm}BPC_9ixdY${c_NvALCBvnslihw5I zL;8C`HXOP!#VC<5qcde_wWpzCFw;{cW8~5$x8LhO^({XSi+VF$B?&Q;Ik4>hayzwD zB~OfuXT?w2euXGSiwcm=N~PPtUy0^>i17SLQ~&CX`!D>L$tl3Oc^I1eU0my?)8@%6 z@TnUcqL;pV9QlfEd|Q9oF0qdYFBKaoXr0?=`>UD)*5lM~IJcpyWSnaHtBW)2;;5LB zIJD$^*2(8Sc@|Ga&Qs26rNv>|8~~;%`xX*)tcCZHn;A+sfM;HscWM&jN2Y&TszZ2yWM+>t`%00?xc^->-Hm z)msDs>L@H9{BKOMQp#Xi^J_=IdrANFUcb)!)8VW}vMZ9UTH*Dp9kqV#`0jstGu4OS z{=@ly5O@BZe@P49O1_%FO$qGRuyC5mK^=kVe>puI(r(cn(OdQm#i{}#eLPx*%F|FZ zRkCxDYv>bv4$z-m9JJMfy&=|mxSBM+3!qr8RU>F*;sEVv>B1>vVZ{dE;mZqfWdl^xLvn-1Re z+bO_1n~SzuJhmrTEY;~vu?t zULexqa15`7Is<{GH%XZ~c)s6}nRgNyxHzk&*X}@NLlIZNyrCL%dd*O!m1t374gXcY z7o@T;DRiOBWyq=GA{s6J3W0I_mE*W+(1B`Z6MjcSB+i>8&2x2$r46Kr8;89Nn)#+S z#cnZ-X1LpD`19bcVP^1ZYetry3z&W@x5{K%G`O&oX(N>A3Fc>%LWFyL#XVJjD9?Kz z_*Ijq5k;X-WMX64yXyOdE=wDiT*Q)ukE$cQd}HS% zRnykc5{cT9fUA6c+}K+nzsudR2b#Q421DG{jQ1RN1 z)wO>h7z0?VS4uM0prpUl8<}oGN&dmVbG;7p?};A7aCGQ{2Ih3P*yc~GtT z&ZYomJ1hz0E>`j;aj|Xo`WoF@sC5_C_6zo#iv|9IB?7EYa9{d|wTa3N9eOcF9Q8V1 z%cSgRcLb*BSF@wAfu_0WO@^yx!H(iN7CF_rri+XdccsLtnO|X#A z0uOECT-V#&FQ9{%7GJL?)q`{#kN84l00|1~TQrtJj)%b}Ufqx?>T zw)On78C~N_*5S~HkgNi-BWb3+RY*WopJBe$tO?e?b(h>fGZb#0lMZ#P-sgCiQIA+E z?MA-2$@OhWQ=iU*5@!!r<#HFs7kCBK?+AL&WFmwt|IOJ^<$Z`-Ke8^Yiqdy97&sAs zvz$ykT*#NkIG{TP5=p`5P7C`EN>x3lA|RqJSk%k>?+EKFj$sj4XW^suj0N?qyO0+z zJBCEb;=xmH6tEepU>Gham_5L_GK0 ziB@R;oYX)inIq+Ab#+FKB^#b{*d~9yP%3ndoGiqvoCXPOE$c;T#)P65pT8S)=_Zi) z&MQxAXgeU{fuU(v+FQe@#?IJ~7PkHYp$a_&(RU)z+YgVH|K?zP>4cHK-2jN%+_d0X zr@#$F003epd+HG?K?{^k<5eB*Y+?tfz@W^b(Z-ir$J}fZ6n@onFd=~Q4Ua%KsYqXt zHU?>B?`j(4jZtz-xnHh$8ttV&B*w{74;v(Luo10oPiPZ@3o%&L9nr8h@p#Ghi?l$ z-R!biS6|62M4!dv^F$*hv96Jo-rDeW4d_Q&Mp+QkbEl@MR?qss_oC+@EzjoiH+v?= zMT^EGN_jG)gfqk<`yv==Mutw1EG+PJtc%H)khFA=7?gw9sr7+VA$gl$N!XcICm~nW zw&S^3kS?ERL<4`V4qYtn1e~REX`7p}q1tkW1Au>vT=ZoNDBCQ7ymTdo0De|evhha) zKuSioKP1U~V_&V_R;>TMxKlRJZJ@rzE`b>T1?i%!=3hAMMdE2R`^3nTD!tPW?G1(u zHC*|0yu>kR%vU5#+fZ3MM;w{q7056o8!o5;xm4@XxUp9Nbok(|XVLQ)%39_QZiZFh zAkPBYup)7H!aP9r^jJMn?;RsKeY5{$nCp&n8&giMdwo){b|5K4CV|7mn)F?3NkRoK zslGHontXaXItQ6>${wF=_yL;#a3u>m{m}PU6T6 z#KVn|{4h;`Bq>g)e#Sm}`sI{wb=py0%aG;7fHst_o^}k7W@l+-t*5_Lf9%_MLldoB zmGyY*Aez_Bo<&C>?PCUpPj_w8j!%Mv|G1fcI?pu{u2a{BcUzjdix{u^8f5tRq6c{7 z4%9_9Ut6^!7^qp9v-Xa(zE89O*oDD%0`%geHALr0@V&^UJq?ES&5Gf)5*h7MWfe8P z+CfDncPe?(=g;RRYOQzB|Er_2Aeb)pn*lqM=yH5Uq3#`;1G1=p9flv#`|K=poRA2~ zo2-y?w;43K6v5%a9ewFQZ!53*4yiv9fR9-#N{Aej2nP1SZB?A-5nOr z#jfKWlUHhZ19hxQE z)&x-mvyv5AneGx$Mx-mN0WrsDguiNaZLV^=fT7iHhPe32sfp*gat`#@3`H>2NWXn+ zIMxhLFRXcaMTO2f8lhE#XxgRRJ_&YYR9vY!2}W8HE)nE)KC)X1YAO941_@oaP4zuq zEf{Fj6>-0WYvWc%%L*Qzg z>Cf3=j}}AZIi8}15INb=XBQ@fbKrzg)U>^ox9g_pG#Zsq`sCdtvm&U|%v!}K&Y+J$+!h|Nvu6Bfi7&s$?*tx{lckzFKmsT)OaH;HmU zlm(Y@V2J%c+#-=j@fh&tW7K7(Owr%TJ6rIU>~4(fa(8ZhPcJRV5c~Lj+ndk?XlM&7 zKr31&N8J z(WOrq1;y$gf<=on-ODOn;?tx2iR@yq=WLDJp?-1eZ*`jm739ph?!M6yX48K`P0>l5 z_#5VlKm2#Cs)@0l1}#~?!#JLVB)~P}t9u`}mdAAjPK5=g59i=D!gE<>r-*FQaBgpk zSGV@vC1mR@VlDDI3HfH}c_4^acc{YO`5j7<8{K9k5KiLXk08HHU3#EGDCCz9w8v3P zhv4RCu)8^3x5+%CI8=|-{$oV;hk9$#_$daMP6-HvS0>Slgu7iZO50-7d+CegAzknp zA@u|-FE~2haqR6#YEwX2DJSBZU$QH+9NnWQV7*J*R@{HJ=A;g|VP2Sj4jb0%rH!H@X>ZH{Fk(L(~FH4e_H3VV0dkQ08xk6GLb6cn(&mrYeu&*mT^ znya zue|`koR|00^RN&D{)InJa98XU+>-IhAvpNiP`0|q&h3Qubf8CU#8GBqN1oVEk)%QP2 zS-kL*ZTNYP??sOuR6`vh-)tavQYj%jM$X*0TFK*+I^!buyx{k7-^bnVTnA8b|BIyj zubm=LSlBHUndhnib>M&IYsg4J+ur(3$2S5?c5glDqSgT%K9Tfk+?OSG1ocz zMHn4d5)C8dyMc6USi*fjuiC7+kqO{Pa7IDVf6%tttpV7D?cR~vWdN;G4qPf2 zIiY}aYaqZ2W+|Ku%(SF$S)F5;?g^CrmMz|&6-IBxrI-H$d8sOT8E%pBGPL~tr&MWr z0YDwdDg^~_Mk&>|Hk8-iaveM(Q_%c)4s7R4#R5unYz4Y87ump}d!)3}27r|gnOjGO z)6ZzM?w$!ezj`I^!-WUXCui?NpX9FrV78|?Hy!#*&I9y?5F!q7V#qtve*@X4Jnfr9 ziTFc{1>MpId>v%!Wr#ySf(Mi^?$z){e*U^u9lmkuEaCG$;P=`Zn(^A&2u|9hidS!J zY@(N?iD%jS#NRQI_I_mCWD)8%6bSHBKc>52(!LjCQGhq=CyY?p%kgzGjp<+HsQi8h zPA#8~&+!)a$9;c9$mGqO(ypBAof(oi=NiLl5`4rcG1V0%t zh(WneE>{Zj`Hn7?f-C~H%GzSbM1`JzCCkY<)@3?ssw#|!5*2z3Xhzz=qJm+4i}uBs zO+V4pUzhJSl%~0#Um#B%PDBq+g-emM{anmUTtMio%g~Wt`U!l<ma@jyh_#TT*Wk?Rv(#mC9dOCNhp;Yw|qrOE7s=B zwwPf&9xoY4y+y=2A}274K+S`3I_j%MYMUw5#(&GsbkXKzRTF>en=6#uZ7Wb?17)Ex zxwrnzRAKO}$Z7F)*wh2w3%anfa9d?*S4a_jgE;z`|IhT`UNk@sJOHS6yWfCAaXbYm z@as$Ji+^~n`p0~k6HxvKzGtBr(NVN4q7_k&(XE#+`6&f#TnNVLWqqSAE+VR-XvA~< zjpfCyC*#IIo}%IGG7}U)WQ~TM|NBUKBU~9kP*^z&+C7VGwmOr$sVvp%gLwg6Pf^VT zDXeK~g|psK2RHl2#uCuf%Xz?Ul9>2DA{Wh83E7{^(9@Gcih@7yPKBb!_PTeGj17z* z+v6BoMAkd;DZTj7ScyU4-iEW5ES z+iw1H;vE1F;J)-D=0q;_wR-HVlQ!*$w9gRHkydg!JLN`CAi0}&;8Zgl0TaKtBJk*n z@pCCbiMIqcIcm9xtNI*{qHIIJ91jtYKV}9B*xe1T%PT2AH83h|Ms__C#ZybF*8WWi zyF=@Ii1MP6%I&V+@YCSSgTmQUpZkEjGtO*x1nh)fXxTn_lvv2h$4EAu?MSYIQuXvm z&Z0#HvGW)fq(!hIXjDxv9fddDk!`C3v{g=l=HGBtB>yDvN7)zqb9G7dz(dKb3ORk{ zNw(Ds5uqmzV>JB;pGo_MoU$Ac5zJZeOLG-Yu_48vLgpd$HoPVs23=i@dF10bSK?MCISf z$%4A;Pgu&1nD5h%2pBi+MUqLbbP&nx?=ae4-)0Smt+}sXa)m%0?{YqcEcDS?Mu3I{ zWjD92m|cVK(P|l&%Y56dA-zS>g~CtqDi+UJ8bYPIzUuJcELcs{wfDg;)nPN2GeGzL z`oCHF*Os(t-+dNW>YUoO$<6#zhW$gnTgLjE&HQ*hy=l*r=gYk9J&M!&+GEf5gyStr zv?}=sOQb06w_>2+IT_j$e(Afv4z=)5=ze#0!;hhXBzxXm4=-(lhZA`Pgghu0ic!|ak}Q<#;WPL|gpkE@PB zsMZO?TiH>SyCF5N13?dwmUf5Jgn9sO)I8-|)`75s=a>^3PMom!4#_oNao=C1QH#ka zr==;9m`_)`un81C{BnXRCZQZfM!sTU{VYg4ZaTqS7NIbb8PKvetnd9>KaA}+tfYW1 z`ub4{^hVErV7KGC=UV`;f2a}udK19!-aA60_^N%dD7tz=HAoj?m=SCrgd>}Gjt#@DU!+Y@aYt;Y zh%+9{^_6=&Z;NMjM#M8w^vbk#l8-rnh0|)K*Tn?WwVLPq99)5V^Id5S{|gNx}(`8chKA(P8Q1B$Fo~3SowLi%|+G+WUU7FKi zN%26SAx({F<)2~$Xh{r5N1X=7r(>l8S`3;l0M{KTb;$)Y6Bimo%ZiszUOX?UQkdib z^?~*(kSNC8gyj_g!C2#>6XwfNxW>rPqne&DE#XMq7`+Xzlju#NV8o-ZlXZ=D_GEH> z?e(=EYp<|uw;Di_A5Z2%lFul0WLx+SV}&JljRX?GFT@xodFD4Cb?679@0Ct#J7EFh|v38KrJ%xi^CHI(Yh zhKD&VoeLv`qJ$JqrFUhgrlbNW`7JalDc5k4B|2U@3lyLp-hhJAiIe#J6}-S5>6q*F zqVt*!xiwsv!m;=Es=luOGEMeJdUhHxMZ7lQOY+(1ksC+t&ka(YiBiw{p@M~b9ntX| z`!V;#=ocJgzSt6rj-?$Yk=5zF$5)AS&Wra1+K6hg?paeA$wOJ|%Z8kCI|E*~T^A#i z$vAY^e(mUw&)aMQkaKA<;_`MWlZB6W`~C8A5;YvF{I+COsj$%ow#yq+(A1NYW<1LY5PZ;sH6U+T~c zhkUE(Q+)Udx-_iGLiG7)F?z<+1Y8pn@@f@x=VctR!SJKXbq= zjinp?&>?fdRle);Oo0**LiJ3Y=OOKHkRHk%QN?}L6NWgIoFDX`!EzTfKX0m11 z2Ii7-n1DNPG1`Ye0u-|%ihQbZ2j&$2@LaVfTQz2a_%vUApJYh=q8=UEwNUB1IHHB3 zEv)O9EQVD2K_k$?Fs}eC|VkOXAB8 z`0}jQay*P_^0$M&`jo7cF=nAwO|jFhp&v$MD0;GqDW`*dO!beipnXFt=N2f-v8XV+ zVE$sPwlbNfS2m#4679AecUwcX8mE*ynQ_P-m${?A_65%K?J_#*n@7b;{!~~ zbVEz>%NZF%$4?i>3Ss4F6sNyw2985`?>3FR;nx#RpLzD=j!$nx-^^XBIu3cj(Q-IK z+D-Q$n3_0TS+lizO}o*ZYohCs4hN0Y=(-fGrL=xf=Gfl(_^UO$(uzxFp0dT-Dg!+} z)2GBq9ONa5H@At}NR7SMS;14Mi~o>LPiP(;7de$|CHK;ib5#}lk2kKcL4PZ&KE+l| z77THvv^rE$$6C`IH@Y=_cO*~R$4aFLIp81n<#%QZLu*8CLhiD-M*kr(n)e2vW_0_B z1yQkHvrGwxsV9BcY=Vp6M&_h^(>w1@j}nlWR%j#s^(>|{e>lNL4yERoTVVz@yVH7` zsJHaMSzHvzn|X15t67bNhwb7~-I*0;KVsaMGWU7P?== z+_hv>FMRPe?&<@s^CAK~2}|zFJa_&6-qz$hN{2kt2hxpLkGOydO8tt$4B_GgkI!2QNl}`$00MeofEPdSM!Jx$rtq%xL zPe6@kTasY*`cNxB8ZnhCM^0Vx6SVVdpNoj1y^hSo&(UhWPV;T#H5b6M4>K z0T1Vo&=KLur{a)&A|J0E(=J<4?{=_w2%R@~bwYv1G}%WTx>zDVCPBPKr1@K(y2%!F zTsQBAL~_`ms!0$yHG%UCqQ6AXRbm43YijRWj`US+)`U{q1>EyP5jpp8kBuB5iIrBPra`C?Z;=3)c_wr(;}new)$5m9M(keY}x>xXlZ=GueL4@ep?C!Bw)l zL-n2KFTa&9ixAKh>Fbadu9A0&nXj|~Q%&}>oYwd*t*3>2TNAM{z-q{-z|>9*5Yms* z1~nDuT+Q~nL)<&U7OAH0rs2R%2Df}gQ!-y7d=D2>8QqE0nV@Y=8^gV|l zgUwT4vLZkX*<})*7@b*ZPLLPFRcu}@fSXz!haZy^Q&V$wOR@1DGXp3%>vwqREAV4d}t84h{V@a?Wxzjj?vuUw$pjqo54CCtUMg+d}1SM(=ByR zw;{&Q$2!deP?u&eJx~l4sMA$?U{HS&htO<75FcH1y@p}~2tLu4Ybv;{v zJE+EyhgHmSyiaRGM6ZiZ2IhOq_{-$l?xY8*0MSCPh}M0(B?ex%`A(YsR8AH~yvLJn zYUYkddj*#;XI>LxuiEF4fRJ~$h!+~-;j{bWHn0y`}&c(EZP*sinl*$ zyyNw46S~@7I~Cg?)*Z)O1ZJpfUCId!d)U|^Vt;Q{nBCb@skl)--f2qW^Qi4CD~V0S zXF>K+Hc*NOge!SSSBMv)gPmnuOSLZJ1S59;qw5jldD$fw2&l$)(l--hPtSinAM+$O z_0GyI&|n7DBS3|2W!(_3zE`;=`Tk*~R>a56&r;YCxBOl;PLcvzxLFb7V1kR^ZpM`# zrB8AqXeB{!_A;`6bS`PQFPeKEt$vLLa%Ku@;rkN{v3~WJ!pDeZR)1`{F=4_KrbbNU5`o4kQUfMq(&Qfq^)2`=Q&4l@M>6WM|GXV`OecKrtn@NE25tJy*<#Xw|QXmqCg0@(}^ zdFpoItZrr^RGxp_!RYzCE;igM(9+%E(ghmW{?a7`5TaPboH&vCi0h5iI1Ku~==u(* zCe!SFXVh_Q!wjg1D2Pf?1VjV`1T6F_A|NeMsz3mx3nbC8(gZ=e5T*A>3ne6RlqyX? z2uXk_p@)E>B#;pJzd>hb_qY4sb7l``hLG=j%Pr4+?sMJCDJi#A2#G!5eeVDD5QZAv zV}~)nJ}cZRL$L?>fY4c3VLT(@NSiB&Bk3O!3O7N^s?quNx%pkUV9Lbh;D-v8S)5tb zkr3y;hpOI~(78)RMT>LWgZsB$!Ut#}EeAXSm)eiO^*Mzrc@~XscRAOZHU$=G0yUn-j;NUBV<3#$Rd=N;I=5 z+%HQ#yQh+DIL`-}F7C(YM0Q>jMjXKEDp8fgC^;2l4PsLsy>{bnYtjA*jVkRLAA^KO z7;ecmmw7hcs|v`~_9m(Z9v{ZUMkjoUAGD?obr;1_R@bY5Mu9|L(5n#IQE7^^HoT#P z&1f0CVyXO`z+?DUF7x%YZiet5$gjeYaDO^kr}O2rvu;I=h&mlif7%-2O~D?>1_*VuP#oiCORpqZIFq0Op2>duFcwc@PO~#3cW-V6PS`NI%b&NJ2yZa zkFz+SU)igi$Bgye3CA5sYeM_0u?C$}aldW({RRPX#kEfE{;i)#T1|k~y@OF5Je4Ff<6|`4AUB)1d#QzDXn3;_vD^ov*Ik-dtmv z=av+`qrm>a?etN4Wb&j#^x5wzXueGRY?3FyY{lb@ewE0<@;&IyEWYE4B;u|Y1 zO&?H!A1nlJtath%EJF<{4tJOX{~RzJNZfBWF_G?TwwWW$RBk-p7S@t^`aE0f@ZH8gV(|38+V65FHPI}SavS_Y z;xvW29&}e8^doHIIwy_x0WAY~pVTI4vxUDRTeiI3FKb<946>EeJpYul< zZ$bjkoX6j76)>rxBEqi78+#IFT@{Qeuu4;B(e~XSgyd&~Qgyr--|*wSekjk%!+!k! z*572d;Uspht0EUwn-(n1)N*@bcgxovYM1$4bEuuJ7N5{$L}Yv z16JAvB=}PMnJCtxfK8HUFKn5x5=D^l1`-n}1{#kXJ1*{VNW**av!!{W%f{;;D7h}5 z)%q**JCb}+wyc3uzm(_5GTnh2KQi5mT015OsW0(LRfhpozBN{Trl8qh@IcCpqbDUDM`&WYJlid*jN5jn!_X8FGV- zL}l`3-G$p3Z+b91BoDn&eM5R0(W5Jz3+|%uG5b-9uWtcwV-2<8-_tcz=O3j4%)lr$ z2d7iZ*#HZf10wB>V2PRj%$;o1`cnS1_Ik_44Op@5w=|LhbS#$nRD12sbrrqIGH(c{ zH~GNiYX*kmgAG_6Pfo@h0ZM6nWF=pwzXEQ_?6jwzutAG4cH|&73X)ak>YD@Y6KqkT zuFzOjk@9uV)1&HVaar`>bZ<}MhmJl_cQMz~{!X&J{kScNm%01|h=Q$aetTP!Z;V)~ ztO_x-HJdzmfK(PQx4}VgkY)B~3(9DNS2sROiBnK4goD^odFPqZJ|==op{jiR&_Fvf zFSD(oF}!58Ok^SLmVCKFp+du}SngnSKtu?%S8s53RTa;S@#subZmIyu#We-hp*vUl zW<#_ojunu}g-Dx*thjMOM)^?8&S1l({^G^=WFyiVa)Y`-JP2LprBl}?-WhisrQAAo zABM^Twyi!Juma^P%EW0U6Se4cJ2GN+h z0D=k*K74f{FHkMO`Kz~Yn0=2pBl{53irDOO|9h<`@=usPMz)nT;x|S2tlX*sy$Vt7 z=a*+rm2K7Ch@~6O-(#tC8|@&>-MbQo`}?YaK)1UqOzb6oq1rcJ|IZL{Jrbhd%Et9^ zh|V!G@d6RHP}!}e(V3!{J$)Fss^@6$-!zv#jsBFarEss!c-Ou47VY)&JBkos4DNj(c)Tec`edM_%s+8Ph&ccyhdi zVIN4}sa3M@a*z2E4_N(sV1bYIJpAfYKh9dpZ%3P@Kgn5_0kle&PccB6fsLK3Q}8BG z)~`rV{9Rq}iy8C#vapF4llBoGUf*E(ZeXS_6_SyxSyB@o@~S4vs2Da>TMoLzfpAQU z{m#@I?V2BhivOCUSJ-@|SJxPaZz-0j$)T;GHT3h>lH$8S<6tD+tD7faj#^uq?4#FEvrp_B-TJPIiqT*=lI4>TbH(XDXUvKE9$KoH z57G#(rRFWLUonD4@~a%>%Mr8J2ZNmlZP4B=T%XhP+~(3D@be`9XRI+7PD6~w9Qjx` zgwKe??ZwSvB`W93>}${vR2O?VjucGj4XOiwmGc%2p+t-X^EeZ{Mi#ajG`zsumupN} znD!fP)FbM{!6o;gI4zCYk!gJAGR})Db`?BW;4SEKHVsZpWDl2rfKyx#x?&|FN>hof z``2|BI6e9lV|fO*AC0K~eFTFlQ-e}9li-C}86Y@2+x*-E+M+&df#KHAGK>gSvd8;& zb(U?cO=?pQ3h4g1@lh6inwNPNC>@^J4Un!RoYP~TKLFSq+{N`}P?XC+XSu4~a|c~D#Csf-@Xv%5KwTwn_;Y90vX?I8 zK%VGs82L4OU2d;7_ZeDFo9r@dtM-LIgWH&-b(gSl!^^HpWald6g&=u#qOf&?88Q6J zcrK&Vp|eRJS9N~U=IPzu>a6r#7~WlqCgDaIvqTU}9wFW)-t||ez$x`+B~)Q?HNX>r z!LTXLHDL%laR^)d@N%!7J-r)l+5-*STS84fvRKi(?8J3oWhVD?7F0W(L*^bR7^c&S zwBilQ%0Ul@Zp|r457&vXN96NM&`jcIgeA4xd+y=$Qjr-u?L0i8d?+|3CZm$7Fy@Wrx;6TNUvq-;;npwD?pST;hUHogJ)OpbMZUnvO>D z=+pd&{*clDKtCg8%Wlg?DjP!t_V#NnPISs5%-_~efDT!=>4_W9!TmzDm8JhghA1`D z9vT6)pr7Fr9jUog=X1Mx@y7Be$?(w#=|dEb`nS?&xlZS}>ooC=5WD&SkHXSRpeD|* zheuwMq$qQBgWpP0Y)b7M;}v<&l8538ebVi=o%aZ+0ecNR;cgyA4zy%t<~M6b-chK> z!PwkpR^T2$YlgIYM^|;kCX+GFo*GmEZ|S-j?i{5f<{>Lp{1LXT*P57&j5(1+qvwz5 zAfkPq-3U|1Gw77~K^8Zql|^atGEh8e|7?jC|rYt_&BHF8UIm=vaGe( zOBr!T*vl=xzd?LcotrvB9%z0)FI_mtg>eT#u~wf~v3^@ayG)R{K5=Ch%gLgxdfnJy z!`TZCEtPo62Amq`J(CvKQG-|^4sjN;Ld9Vj5M&JYhyp7t3zT*XCM@%jinxs{;^xN5 z)tP&NM(UZ5!1Gy7|5Rwz8Z{KY*y+)&$u{Y}XU1R$BznKN3f%H=AMkSaoTUfo9-j(c zPJ)>ck|~U|_?3G@+EM8paCh@rBUrbzmR==Lh4rjT@37v>e$^3M;kZU2@azFp@qPpu z*-G?JKFp>dma@g=;OaV*d60tWwjI&vTFkWJrdy0|bR*aOJy5rRrs`%uE-6h}zB?jC z!q;z9IQq4_T;JCq_y{B4b**MRQYRBSKaLZw18GlHX&)XEFI$ePGx#0!cp-5)F)fQ( z#BMF?aBgh1=iN=3!~tpUa4s&tehWRH~i3Qh$FExD!MY>fwBLr&xZT-$|1vPj3lg&TT$#EK)nPw4(IdRMG<^0^rskV*9y z+`%PJL*5a-Y*#R#at3N5ZO4IbRR38vCHNSn2@ei@?atR@MmSKeKCy!2m~Rvg>R)qE z-FN-x$y^1v2lKVH!dEy+L}-eS=5m;^$XDy@^BefVk?zpsZ}T~`U1$Cda=-<)qF=3m z1NN2>Xt0PqaWZkJ#GCuz598uNKgqd-gl;3VUBRIp4h^qk>HD-r2f8}ho$aGT2*?&7 zwqUY8vo?B`iiw?niW>H5Z-Ai%7Y`sGzRM|2W>|4ap-3|zS|)hL?$7B7Dq?QvEOscq63tBN)~I@({Ex@ z>4-4sWw-HUPuiylSgbctY0*ks6>BLQ+<%bg$$U4tv zbo$eLls=ZOMN{?5d*u;(XdSHc82r5KjC1kzwxHtiGA0vVImMxm2?_B4rSK?UOmFv_ zw_28cA|TIKzg59|UDI&fk&^(;X)@Ljn$0XcK{+lsD)q+s#Ao5tH$I&cE1F)fNS<>0rV<#A0uO%~^RbjQ@1qd^oFq<}M58E3KzALYrML{P{<=_VKk# zSh2x5atBSOm60B5rUlvy4pAy(=H&3(^c|9;BEAl)MkO;~KQZoVt z4&hG>PTpYW)1iaoNmen{sIMrE?joKad}&h5)m_4XPWMwTgT>`t+9JKS2 zxtNlodCW*`-#}~7a{@_}A0O!l>NX^tC-=x|BLFh;eUF}^^q^FHC*``vxpg&pER0k7;@TUy~Se`m@s z8R@FA?LnH4!;iUQ$KrLeQ2mF6a?9n|6_x#=)qf;6Rizh-IajEww%ak4@TQl!t{IKb z$GP*mm8ds!-;pA8zQavV4fXyO}lJf2gAkN+jAh|eSXR7 zb|;XdNU8skRsEUb!p_2loS(@v6_Te&W|`Q@rrF9yxEG${IZnzYa{*-~78>z1Eo6 zm|SHqX+2E(#iWZL4Q+)?Eb!!oQ$0tB!Dp{fTuKFr<4&qS7a7Hbq{09pP?OP>xojeN4+J31r zKsznWQMEoYjk`>n3Kc1?P3_^UtQ2jc7@(;BFPfrdTs%zSQJ5pfckpT}tKVzD5Xej`)#H9NqAzKEhST}$aQHJyjgeVijXePfI?g+f)+NA7VKybdG#Ir3 zy*-OFHamU1xT76|EAS#u3OGTKH zZoUgqEtf+sW`m+ML9eb?X$Bqh5Sq!~q_Df0Ub4wqkBs4{qR^rG163KwjL;Vh-OeQr zJxfK>*FUhccv~=__cgp-ztcU`5$xK6ENDYeCk6l_JfOy$rDsl_2r;`)d1%Oc=mej| zO=~Ci7Q?7oRk;XyeFl`-mW(W--aHSeXs+DB|KC0WDomRTw?6PO;K=$}0aC~zp*lfd zDIv-HhA-7f9>Ol~dfTU=Q0RNzv!;xc0G5+OL`%EwXeY*I!*tLnx_QUT(65Z`Z`bE@ z>rs-K>8o>+7}U5}P2W9I=(6tQZCWvsx58mD1`$J9=WAG1& zx?Ui_eDd&`WFMt8R%tr>1UizHu!T*0!6JGkhh>B&@=L@oTat|a8rH+ucWF;a#@KQZ z9SX%Ojm>XcgLIXKN-;QHrQyJ?a-FM*Ci5;h$PW8_zq73A?T!hDw3q*iLV72B&o_ZD z0srHRDOf&}q13?cse6w!MBk+ z|5~`KA|tL4v<+WWrp#3ZGr5ABZ}3j%PZ;X5PR~dI5$|F780PM#F?|6P8uIvU?fu_@ zyDc}*0xUx!j^T0)AdfDdfHQgZyEG$+;kWW1DG`=@oBHkFwSeH4ZCMiHI;uV1?lAcm)(0xySm1fHpOVl!5bsuEU%@k0y1P=`UbJ4#Z z;FEX|nf7j!T~$pVXtLTO)aAoHe9ZwVYg78Xc*~Ptz|0RtcfcF=DO=fHgICOA6%No=D${7UYXJcdf z6A5(zdiEyT>MfM*y{3gY9gvB+Fh}%0K@NO{coufK_1mT!+VUT~){~bFF+_SbXu4Xa zM~R2TGm41#08&MKv`CVHl&pmj;Y(e2o6*-oDT>B)zVHknL~N+&-6i;B+b*bg1*~4* zBGLC_$5L+pn|u3%zdKK0)HCuF8zQJmeNAN44VugY*$;Fm6Pk#L=uxra?`!>!BlGXg z2$qjdksuu~8yt{_?X52_uX1CMtNi+lPM)O9gNBAFBaH9)dF3O-a9`nwb%;w%G9xVm zjkI6x#IWDPy(l(R`|5tfb4i{^FK%2EXPb{y%6@d`so^7_>_(IucWl^ z=lEvUzcm@?-j<~heGTXX{D^5FFHx3Wfs1u@35VY`WY(?&bnf#Flu)9zssm-3E|bEb zr__#od^7tka#AJ9@WuuwB{@(|UGiZ+>imZ_I53j8v(ssyA#}%!8K?%)0oDMsN0u3t zxnX^;!29s{c`MqdA~$STpU-bV>}GgZIBsrT{q0nB5l81w@-vz*cdQYcVchT=-mewu zJIn7_lVu3AZPL?+{f;Q8{#JirG^7YhfmzyXFIL$cpbV-_(Fdg@62K+mpL&yX|4>i! zf0ZQR@A-SUarrDvdlV46%a*sTuR7rz8WCY?I8xgc_3?(NLq+dEYC#R!w7}@kw6|6D zjL4l(%7}5$22!_IiB)VhT5i&4H+rusQuymkWrqHcSx?9cX&wVrt#F+5+=%5pM+3q$ zI}6&gqW|?3wmd$n%R{sVg+r`|)c^5?-Ba!@zLCad(Y(I+l2@F)8fKS26CgSE0ZQ-4 z*ul1qD~{=hwpRavj!B&RB|e$KocOsSV-KiX-uJ`|d(4lrrNBE)?foYfyz(4)%ikG+ zBz&PfS+zctK_4hB?uJ2aJ3OHcIfRPgv68WD=-lJ-od$%Fj~`@Ij0f>uJ11lw^H`BO zm5hAaJ;fvL5;nS{s>B^TZG}j6i0e&Jci`R?D$>Q0an)Tj^^=?)(9U4zuSb*$gemQ_^xaBfmw&8z7?yaENIx!CXAMb4f z461mkLNiIRd|ax`v`FugSNupjM8nMN3?P(vi&Lx{X1m)M4kz^cAq|SJSJJoE#h7oi)D>KgO5JSxvy_64 zofBaGNKF@7^}(=lkrB4a2nc`%JWuXM=+(tol$8d7$BB$+VbS9Fav;)-{o21|M0+Sw zuy`C~{?#2evvSy961orTv$l7)0%&n2GVG#N)f%1=n%lw>Ch#TEvD)a=x#e=+XEUpf zovBN(k$uQVCbn^mPrjS(f%lgS*EzOZ{=)WmE{fa;HIGT$ZV)-mus9zqZ1_I1+M0Z zu}&3z+wQE9KUUsQi$DL6yv+@qC!Hd1s3ZbJN-ti<{He*l(*ep$8CdjPUx5e9KWh=K zHAs+t1$(L)W)c%sj-P2EbS=~4(*rRd$-~TpMm5S5`=*c6GE!LH>bNJ`Mlx7lv3?-@q=>9Uf)H1#Gq9ny%nF2O zGW-N|Q-So8_76S)TMhy3+r#z^pB!D9injGQUK#Vo+~BQ(LzT>MIQ_`9<2>)8VzwiZ z@|e0}_VusL&dsb9wEN;F*X`P%ZYph z`*7+zNFXdLolPaxcap0!`Y9tG-Q*89xGyA)lXA^6Cp`te%-UF&IP6bvt@t19wYPiX zpNpko=~_=;vKS{`#y$XGBfJ$*zeH74+F5oue#~wqK@nE47DGs>TFlzi*#gAx{mKYceL2o0vuF z$p@EPwAZToS%@S;%)@GDUSt+N5e8V!<>|fW9xeTle|>k=`5OO4T+VMX(TrnUG26$m zzN{x8VPV7%i>m^rE2?hyi~#aZa?&G?j5+ zem1Im8t%mKqCF%jyweM2Ely`a7n{g9V$bP}p_|Woyo6orvhF4hb| zZGegA8kkJ#d<%%|g3{uI+U(De~#Y|HOX zJw++9e}$u@%Lz(L^MG*Hu-Nl@r}2+fF4GlR5N`M;T?zF)gx&H4%o2Nd8+a@yqYB*m zozLVB*4`Lfh9JWl4PRYI^k|FE)x`yEekA+9K0^NZBhDTzB=diNS0_xBgnxb787QYl zyYbB(4BI!-G=G&JRXzkM#2GL&?P*FpI4f!(S~lXR4+_w7z$~gbA$OzpOlNv5zsK7{ z2t+lK-x(>J$=nqa=?ZvBE(`@t`d5bb-4%e8Sp@va-wlI|O{=ss?wtqF8rqybF#WZ_ ztGB4X8U(BM_zQA&4LLFrO1@&7`5=F}zT06?cL15FfCOk@ieQy5)BDJQbl@H08EO3> zlUb;`(=(d&sAH&Z@#9&(9`9}N23J8-AOCGO6V>0Z0WBHEJ<`azN_bOb6%2f&K%RoS zyxDOMe(^Qvk>31elV8BTo`?)8Cd&8tER(H@aTaL!@=TS{GC3J-V4N&(yjxgaep^$5 z|76m?TJe8;de3g`Y~US>Hvq{8EWY1+1xRI~j7{nuX#M%&*7=0P?~5BJLs1263YEuC zvyG}$jap0W_}T5W3peXr@Z8$cnC0dtRsPo}0kC$L7J>sykp_d>Co_s8Lm9?Nr%iVs zIBjCCsjS+0Z=tXvny<7B`m_G)i+|^zk+`z&t@2y={pwq?K_Kz#$u=Mwz@G!z_hfIi z;8|r7cz@!)EU;dQx;s;wjFWO!cON()>5`cOuz>G-&tI~4Ad1>?5Gci7G4LXlr7}ck zD&UTlFzA!bUlRSkuK)H+`xr%v^>;xh`x^kiH=k3%;C}~K+)bDFwZJ$@-ZV;B!EA9- zLB^={0<$r}_21k2|9RHdGd*)4pLGedxSXd_?3jg%V-$N;z)1_^9@D+K9z9vQ9wQB_ z9$l}b`({c0-_L}B+hSf!Q+J%jmhbAZ*#NfMyn`aRc2?747}BXLVVc>3l4(20m(2!5 z;J@*bef+ls+3A7?`RD zZpk45eXE_RU>2Qt>B{Z%Se!_^!>)kC zV5dtRi)|UjeMOuSmTP-bKG;(5p1AOX-1^Rc$NnoeF0>x%?JSi|`cK7*x0rzj+;&JvKUkuaO@)B6iouw`S z?E=WZfWBj$pQ{}{T-UC`#lzyV+h6Y=^LKwbLV6-6RY}}9_JVrl|NWYqHwInN5Bp}6 zy+)n39Q*?u-ph$FYVF+y2neOUt+{Dcey*jDqGzfVZ0(X6V72S~Cv!=allv;k;s_VL z{|gGedkY?M^9}&T`%r#WX}FEG8c15_3uRbr+T`NDZL;_eGybzlMOcrIq>IWvzWG

V{A}l|U-f&p3TR#b7ih?w7f8Ki0#71@x6k>y59{V90M@ zpZ4(tF5LLn2Y%oK!Ls}h0+!9@T5r|4*4XP%3HP_%EPl;>1!9VP1HEYph2@PFtzCnuerl^8Z_*hv4=M<{(tvwYmPq&k8r@CMHG%_1B1GB=W{&_c}+k+gQt_G=VfQK+Ewk|c2wJs^? z_kvz4CYISU{K0Gqe{h||!q%8e-;T%Th0SBNhvD70AL{F1slL~xz{2q{*!xSC813cH zLzgk#z-%mi`VgBFHiy$54rFWo|2_el)&&7zDBm+8BT?zu@F-f0|2joPE#GzEr4r0@ zL62+#xXz~mVe`W@;JOTy<|G4#W-yPddkq8zT zr}M$WYV$Hbj+PO7&RG%iXpT;uey~IQlu_#tq9xHq+omO~338e*i{6S9Wnd>*t=N_oXR&^|@^9!hysi9~3Mb zo3@-ec9gQi0MycrE8tfgF=($OM!N|{!6%+?9gfF#7=V*_vmOka=_{@I*MZ{i(Svm# z&5ifIxvI0ZHq6DexWY_l^YbV9i8EwI2o&izJ=U)YvwM5+b&$(oY}FH(I3IckewqJ| z^$i>_?R{BI#=ZQ+b!~NbucdjX>`Zkx|01q@)$hZxHRF7+ysm)u(whIc-%^JnSVG#N zo-}u5iR^eZViBurNCjSG^OEk+$pz-IFyu^;8y`mQ2kCj}&QwX`ik+%8^88Givd8#$td2une2{gh$cWK(zG<(5DUcjx}C;#>z*@i=B1O zg43E~Jb0XC-GTjJA9MPPZSoWOcGNg(`OfF>=CB(N0$MVH zg(Y3e2x6O>(UR#ZKBp07(SL&EF5zz< zKv;Tr0W*TRAmzBt$oS8eAmb^(PRTzt%oV zX)EBXaNs~8$|dVIyTUQcahWVhE`8KdWL5U4qt}(66@ZJX49>4%tfm&0b?5UAaid_W zzi<6AMx!^7NKGlLo8bJjao72Q)|3FC%Flo`xQGTFGN}+(?kIr9CObi~A-`A1yyK+U zbI)b+d;>i*U{S6HtaurIqW*vWjnqBh@%X_pAa8GF7;wR-j=Tq<*yM%P z>uH)?z6}x3Tr;R=Mca^ zE;E(Rmx=Rx|Gw{&8OE1frRF{OnxEZ>?gC0sjQXn3We|{zgNPsW9pPBpf$O4EgnvIhL>p*&S?$cse=R&9y|h{L;Pg6LSy)=m2mbV!E3qLqp*&XDIR+Q2y{3i( z`e^46;zzOhA4WKHqn6(?HRkd862o3lYC20}rL{NYw__c!9rvgARKNul+vaq!{a#dX z#HpaX2C{5N>K7ZnV=j2q5xL)^ke@}kS%9ZBwBbLgTMl;~d4}&1r;{i?=EUJUmcS`2 z$o^-f`$=3qkpbm32S?3g+mjT`pNicJNZ69}48$(_qJ+v>JoSw!ed%yzH{$E;o3ujB zsoR$`8tb=l@n!{H815}!xH;2AH736~Z1SW^Liiw1^n&~I62!Kg0TnCh7r+meOHjbw z2S1d=F`7PD;9w}VcCc`B{3Dx3FC!>A-W^w-1~WLV{uLzwvzT%lXjYNkcu)2=vF1a% znWWSKFi**V$wr@_dnhi8U>R2-8R^3Nk;jqjQRBW#PYK5v`1v=vyz1ee7Q`9&w;apf zpL`MaWR>INl5eUrs8HxUfAG9_f3iUMn9wwT5_R~1yxLr2)g;2VORRe33ltI!M^WvL`HOt~|B)DmT^k6#?Da!zMfB5wE*^@~kFt?@sj_5=e% z3@DvSQdD8L0bHpXEGtpzAn5}30|bIzWyJL{kkXMV`=UjZz^R-!QXLNWs%O=U_Kt%? zzaFrf_@8bHjBN(NV86^&U8RMEq1_AR&ee)5Td zJ;=nEn1UEau(x*7K-qA^`7fQNO#$*`o7@F8Xv zUQnTJO}f+#3uZ((qw<4~E2-4q5$oev&H&6ohoNnSMWiy(tsEe1I$7jZX0B0RUKze_ zJgHhH8EZ5#Tcy8vH_&^1A{hA*5zh$IUaag-0S@U`Z(Z)`vB_@B~Mr@TFTcxz8MO;fV_GW0!q0G z4qxO<8Rd$FBwpi>#(1iL_Sx(eM?FD%0gL|AFdpP;M-mh&)ODHOUH8Sy<7?Jk+d19( zHdc!mDkJH%BUz^0Z)k@$IYrmErSCL{KkaB~*%z+hT@*!*lE+sS4%AZdx9J^~q5_D- z`zooUu3TT_Mt<|bSIDobeIEI!R6LUrCAz=^4%yI`97ydwKjycwRY2H#>M%>Ys*-tq zmj!gbX4|s67Sh^6AHM$naf~9#c|%ndqYB!Ql!?kZ*e>(j`^_^8YwuJErJoU{89*B( zh_v|HsR6XK34~OyPt~3hz8?04p5z1_E+}_Kj?;mvqN>j+3~wBbv~duCsn z+zVsBcco?NYX9*T@uDJ;e!(J6x*cQodNNvy^7s+fC~76hr*=9CR9hohrwZr1P|$^J z)By%v0*$SA_6RFZmN!`+cy5`_SYH=_H+TdQI8Ls&uKVKpLvF0i24&=Pcq26JSF8e= z9nN(d51vLYzP!y=YEkwftm51r_?~ntrR480!R(e}SI(ocmjY=uIlJ+k(%viP$g9uh zI;X>yoxu>)F8hStO*_E>Uiyo*(K)|={(D-IXu^EQu5vg zXxS_2EP>i5jO{qWV&wt33Qj)g+t4!omgh*O4uNQ7)6@UN`%TtcPRO!xTWSd-GN)glp;FH!D2>(lE|#Z#VAnaw-GZ1mpTSj%Y7%ND1ppld|9A z%xB+u6hbEX6^<70JL!dUsbCaV02rAKX?-RWS?q$1pw~LQXjHz07_^v|e?INXZ82Mg zB@9+iIrz1gp6K9epM(6|lH{Qm2HU71h@+aoT=vSP zUKIYdWU;!o{;m^ z$WvUmz!WDnywdm93-v#F2>0ZWQl}m<1r<)7ZhEA%+(~S%83Z4{H~jlm@yzgM_JBimTFviL|+W{8tn8rYYQtp#pavA9s0sj6@w1>G=1c6x&S z*tWJVfRtarQa4WW=GaKsSPg-G4k@G0CH4iF5Y_~co@PDks6)Jy3;Mz}4oZuat9|3s zu@ZI@$#lId*tOLKS=sDRwjvTgTBLVfi10$zam_DTwya}3EnwVg*}>7AM=vhJtE3mB z>&i~rIQo0PC`RMTT9uQ$X6jg+19fj&tBJ!m9268oKl#WLp~$`vpM%|dRYzWRE~nnE z(|X(kuR=)@)_zHzVJ!A&5vd`Tn&SxJy1yj-@pUVAi=st|=O^kKiN%hd=-`H5>~dZo9>;|Jrl<81F()_W_U{h;_be@4vHs%l)}2KuJ4sZTZe8?V=73M(8AR1RScD1?e$o6#)T)i=eq)3!nWfeJ0(gSVo&Ot#C+N0mwyp@VcDM3^p)V{JByC zj}5(KC9`kJdkW{(npm%if)YD76mFy_;eDal@%%? zf(zk8FcwA=ER8vnnh}IP^YwK@JP2nBfA_Y5`oraHRCg=vyw`5kRPXTda*0IT*^}Ec z;0%{nI+h8w*e<^-$B(p)$edIX5zgR%t}fAVA0t(xknzU(&ehu{a`7&8Ltv;m$)I4k z2pP3OB;Xm(11R3rMB_TfbB!o-=|%t?IK~X!og7XbvTCh&n5*Yzf>8zClkzC+e5W2N z>Ft!8*>Uy=D#qn2NR+RBgtN78IH1@A*&8(<0U}k~U)L?|Ka0qjUW-IChWrb?g`H?y_AXx~m>ud_&|s)9P?FG!#&h-8moy8LnDp~fkj1*eusrqPJo`f% zXadp62b;Y#(lDOnH_BB{Ug5oCS!vYlpJ!;KQ3;34alf&L?2&{EaiI6*ugh=gd4*bq zC)z+nW3GGxi)VvsOxDW1*Qni`)uVrvX|tA;u4rqRRK&*L7H$oiQr(RC-zryV>K$V> zr~7*U`YdCpWBe5uW}Q=L_<7}`c~s)#@_GgYGbuJzxGbQxWDv@ko}p%#V7R?!PZ@%{;HgUHgSwSNLhoh1O^wf+8SX!ORSsmvwpGm||FB?@OpO zlvm!J&D2SCIoWnnAx^2zbhLJ#kk4v>d{Xw>;`=kl4}zSacIVxiG3GG4ZisT?jB$lh z!mEqcS>LKJeEV`G#-KoR<))f|=8^%^ICJ6Cht&&ft=TaKAIBG_qEks7DT=b1cCl_9 z6UW+;qkJaDveKS*-n*d58l(Y4)}6ShV|n8Dz*0;U#xmfzp=-QbcVP>D?(BL>xj-fA zU^h)3!3Fvk!p>*Hf)sxAAXO%irY-8b$ z-Pua+dHS5&1&%~Nv3Fj{eZe{zyQiVeFAEujvgQ^eF35%%hZ?q@3qtFAODijyer^ zIpXcJ8oDGSXDdFj1hGj@bxFf?Hy!t!YM)=PcW#k4oQ+;P)m47JoB4U0jb6nxRqBmg zxlKZt#ftJyhQ24$sXQ(rejuiHT;wjp^>#u^(6#<3TZI78_p1?VOjgPqyvpf%#C7%=6j}KI z8fO>a_*|dpxymVpZ$zFf<93+F^zIc1n}0Os^K%UK%We4a<0A!AV^5k)l8felTF3d! zyT>>(wMq!xCKdK|DZumW&vja=yeQD|ypr^Sv1R!C{xV#!3Z1=WkDh8ST~{7r{FSIi zDvM5zST*VUpjX<-JgX%A(i5XkLJU$y`hMq4LRUJQVX&rdr|!fT%)lWzVFV4UYfH!~ zt%ud5&BphZA2wEH(mZ~duYsM^$|z$l{X9Z7xeez3INtM{8yXGn+A0ucA4&|< zz7Y+#2x@i|RU`QX4l*PPz-bR@uy};> zs(Y%^WLsX!IoN?=+Ogg!W1)1#`0N8XOw3euS7X%hlcSKTS}`7hRo&=lc|bwFOrrf* zGN{(LRl0a^r^p?;@87;0Z;zti8x-OWnU0>XGCtgGS9Ku|Z%Z5 zl%!o!9mJ{1RFg(bC9u-ae}xET9gwSeiDu{-sfrA7v&1&=OjX%YZgGJBn}DrOYkJpd zQdY;S+5W3;mnVDHgTk>EPJY89*ih4@wEdFKNoX0JFbNW|M9v3a=7=o=Y{}2`O5zD@ zL=ew`nRSHpTO1#01E|FdhU(CD**~%ggsdsd)OilhfPh`8XGl@H3ExD)L#d+Eyo6^Jugzxv1Sin*xvJwJX!C zLP21vE#*C_gOoqi&5zKV0X8~+($F(X>*VXUuu)om=19s5-}jWHCiqC;?2dG?i{uCx z;TxTL5+QAMQl$SYpPHh+-k6Z?a~bprY98%Z5cRE*B9_i!sVsmkKmZ{WccprOR^-B*}{$S352uxq39hIoHLl-`(p# zFAg&EMn;bIQ6XimZ08E|T<34T@nfqlO)DR0P7dbj=)~B9wmYc21t~eVKaczG&rSoCax%O*|pe)TOyJb%`Ofw8*a=X zh*y@;n(@P4xuO9G(Xg0y5yEc)-sj2^J~q-%2?c9%=v61Zeb1e1@sU5>Ltyga4f|pq zhkQ7iQ>zxY>T-oS{R=YT9WFneI-e@K{nqdb`vEy$Ju)5Av^p4Ot3>jWbY2QocB>T5 zf;;v_2k~CLwFLx)`*WLk@l%<6f2O3 zFh9jM*4}OFdTCZ7M{rJKKJez<)81&pC95!80TQBM-V2x_AA6&_A8phy*fN~8eqV>{ zpT%q_oQ#=c(k#NAf$cF*BRp5T!j4?8vMA3mCxAeDUy;7P;mi_Xz8BGXxptRbqCYIo5nS*pyZ2 zP2Kn_Rym127{kyG_X8m3p@+f3jOhzjXIpkJcO$18IBGH4Ce?ss_Z_!?4R~%}M^Z>y zD%LOe#@%^wTh?W;VqBRCgk&UOC;WGbIJ~@Dkm&rD+_QK3|Izg(&``ep|G4%&MI{L- zOA$iIIxS=;$-X69F$fv!j8?LjUAB^an`~nlOl28M$U0^QQ)D+ZmKlsOziaCAJkR&} ze*gc@=^W=6_dWM@U)Otmy`jwLaM(j8gG5)XFE+TosA7M$b%HZmi8*rPfW^xYFyM$Ykq{%O*u+ z2P^z+y)jWYwC4V(acm;*sCK66>#wAo)$O84)F5qm>j+!i#Ax;${aHg#M8LwDXF-&? zUirLi^*px6iC>cULc0x}dt6-!pc+*EmY>6*rmDZ+8l0%Ws=S+B3^wguf@U(d%=KhS zh3>6|sbfZ|KIW`paFci~3Y`es4D<$?8c@w46M(PXS4e22zP}f?`r>G?#;uT|BfL8D zhf00ve)^D=wALs#z%}W9Y{r8|QB^hEvUzA5yfx61=#*+YdB{24HsE(2B$#foHqDT7 zy~{`pd5x0`;9XD-UzXIr4#vh4=zRHF-kyfJdjr8N%L&|)@6gf|?vq^6D1TFST?uW1 z*1*4&Kl>psli9ZsWxzR8Q`i18n2MPsFS#idS@)6*+1MHYPtR^q$G}H0ddSUB$@k-) zO8penvWySPPkQ(%_Q0#hNy&&T;n9W>>bQ#Pw@<0uQ(b_y?1dzDUd(jxv}BK{Bo6K# z@BPV3EHUy5vP+adQ=M?ppzL#=lAVoM%3Vp^@oe)!-Q|l+7xS^J_BH;eyi|PbGIaWN zA9G1+H>eGYob!@0EJ~GAjU}jOv7shogM@1jd8+bRCsnCEbL(_{@F|g?JK~--54nvw zi**D$K*_V9A*nNL0w-DpA9wAQTfF@$*lof!-I5QPk~@zrE&3*l6CFi(3D_`en+?o< z-3?eW&ZW*i9Vup>&!PD{_e!o)=+EGH?Y7_zga+pZ2Yx^h04a2dZCHcCGFcEC2CIJZ zr%E1VI^7;o`f_HcF`Ie;OBDV`TSvWaHt>=$JvTH?#11+25tj{u7j@LF z15~p6f7K_EhhlUPTNO__$-cSb1`uoIedH0zU=`k#ZT9N)UOpqSgyq^N{o>Vm;+8HG z1)B>)NhAKEjih%qA4o<%jjXzE4*bcB>-NFjdu+uLIw`%8UV%|ZRmQD_!b%$F1j;P< zbx0@dSyi)41kQ&75@b2vz^@u-gzSO_e7m|quB{YKdLcA|38b(`;Iw536Vy2z4ztz( zTJ%-+uJjema@3On^carf_pcP_^H3XA_~&9r`%KcoqA)Av`(@kL)dJt!381D2w7(^9 zA%b9TQ-N{@X7Bj#4&TeH7yMQtTuUg)kt}OmN6gvUu#sb0*eGh>M`P ze6cBExp;XBU#hp<*^^arsQTh(*9VuA?(A%FIuzQR(yBi9K)m~jL{BtdrVy_>RB8e( z=;tl9gYRwP8m$x&oQMs`Zf7P0Y zvN@|vIYYi$mAaeqjvqtq?39*|1SJ;pA7gCu52TsVn@{i(f9@6gN9i6n9W=A;)<>jXPym2pygIX}Woi zc7I2`{w$6~JN4Z?fH4pbg~HGezBc6lEDdOm?T;ON)mExS9{&(beG1W{Y*2o}C!5bq zk+qTWPRY}P{_3?SnV(zCY`$>l+_);}pBt~XvaoES5ORAq{CpL6QCH5DR_A)Th^w~Y z_Cfw>uUx}!DkqiSJIm#AU58AnRZ)cJV3>llh_!kT@2w9@^>@w-`IiBtLT7BFONV* zzC-r+CRvtw9h91I zC{5)=yXu2~^?#pT)Xb_3&%(ZRPk4gtdg9B@2K{z8hJ95GQi)8g6O19I3iiZXwI|s; z(oZ<%p&fM1{#JMr|E5{u#ALiv#CP`&$_9Z8E0(~3C;8N=XZTSLfPcbZKm~} zWq*$dP=Ns|KVu;{P;Okvio9jx62{s4V&s>Il`lQ^Xe2{{AFp_ZZVTQ`sD761#Wt~=#IQVZ} zEywmG9bdq9)v-#&cI^V9kxv15b~1`!_Enp1zYj}=#S{XX0RAP zxsn(XZq@x`LWY`c7k_mWA;q*usd3d9IwOkYR^;{lr-x)l#Xh!=0H(G-?15s^#V=?r zWfOV8)ybMV{X5CUu!BP3ia)wM>|sjWwF_k=yGM@3c1I5Nvd6F| za`lByu*E$Awx_)S2>Vj)i;6k8(CNMZzR)e7d>Z7$PyO2>p%}8tqp_`5oa5@N2z-Iw zr4*6r?$kG^9rv%Wd=lIJ{OkXM)NmbW?nKthrNcJ4B2sD%`8cFco^Rg+EFd@y*vU}dNs!XeG}aUaVxvV|OUP+I+q ztv(!Ub%|TMjV)66PZRbuSaI+Hwkz5}OR<^R@{8pjaZqLl4im>xE0N#x^wJ-y?>|>y zeJ+wCrY9o~HZt*97>^(^*pHUH-u1MERV-j*yS3-f&Dd^7?K%p#WC1WvV5SR0=qyP) zVYVwf|Ghlm3j@kE&)$|KIqi0<$DkX#m-UT+C<^!m>l=Od@VhPwem;E0_U~gH0(x%> z)5TF>PCNHThQILkZWcGo2h!h5p1yM_1=zo2@W2-UhGVz?REl#rmv?8P_&=S{mDT=_ z_CRs$pZUHkhx6mVfdET|b=NCE$VW{wd;9%JrN8$-=o=_rIt|iXz4t$>wu@bP72tKY z_eHe7{bOV`j>VC+a$t=TNlaR-`~!z5tj_NMivF844?J1vF+!s$BB@|oY>{0_)kzK5@^CoBfqaKU&WrTxU z=%guZY~_7lV}nE2J1Tjx-ZYqK)!?KD&1#kiUOR+%-yrd$VK)0rNCVX0XhbNw8{spspO0s6vGlS9%zO zVY>^nI1Jq=V7Z|7mKajy@A5cR0i036{{mueVo#b{C!vV`nX!jw1)D@!Qz?18o5SuR zgGF=4jY^Q zF@B>weJDE<3Z7Uq4hl&H^C(XMjn?}!DlfsI3b3b-QeE3#0KP%tQb2Q;{1{+S(_lpq zH5h&wNDV6Dfr`*ENn(%6zy1&$8(|=+>^f8uQN;RrPeLpJEi}C$t2~D;0gSD{OI^(0 zV{;w|2O=0DH3xyw>Ko?7kIA%AC0Jy^ZL5Fv0EPdIxg6dF=v!}~eB0GJsFFeM>YKkr zoE%p020dbK{2$2~YsJp8S;z^w?6iu;YbKF{^cb`-FQdCtkRnPKWMs~$JkjeKu^xa`p)-HUq{i7 zmN)2x+&~3#7vq1UAmt6{hr)qp`;)mEW{g|D(P|_G96&AjFWmb5A5!ishtClM_u)4dV2_Q0(u2L`hkmsNn^4DRxR)+EJiihlQLGtRU%+n|FS^K7{kMjKkL2yPBtw z-FlZtRAWaJZAQkb6F7fnGFG=bP)~M!C@d+2TT~@PjOuqn5qRoEesACD%dc$M^k>6 z2V)~f)gBI-DC?IL>-&GJ(}Ic|^a=JB2>1JEzUoh~@!#*G=^XK+T6NzQKpDkBie0JY zUPQ?GLM>(5s%*}aBx&%z07*3bQsOWdTHt+i<1j*z9pXJ2v0w&5=JjEd_|;Lt45LLq z76}PUVDk?)e6wkIc(Z0d*!X9G;c~cBZp}kn?I;b zaQV-G;h6sh(8TfO0I5v}^&;kDn@M09d-(3^FxQqIIUJJ#D}!)+pEDXP-WuNL#;=aC z^{D9ZcGHS166cjc^}BghO$!m|p3s|Z10Wdtuj!fN4rX9T`|)KD4o7rmtviLq*m{|4 zc2kH8V{rMv#7FztWH}`j92Q1_M@o-qR4i4Mcog+(=3^CCUc+v_{y&!k^60r*Z^-Y| z-6yq!@Elsyw0qI#mE_SQNI>Y*V?#4cHT;aVcY*njv}(*3SL!U-qnmklZq`{_f@$OP zANXSOyccs$91(C>Wo^rlGfiLt{!Zxqu{}!8-nQP&mhT+tmon4L3Ax6Va5RGvP?hKC zjA*P?i}fPgo2@KUNBTK)z8IY7 zoB>oUquL>OM3QT*eW{vQnir1(b8W1uz@LAAFZ2Yg1X&!k^Ta*LxJ$xlp*%MyzxXLa zYbR8)d;jml!Y&m=&(H2)&Qh}-b@MKI1%kS$}z+N&=Ta!QJ zBG27{6?qx?&wV!oujLFD8Cg_?zu9(zT5ILOolFd~s_!qccMCuKZsc@iTDNPqsiMHUL3095^~4zsacXnwwN z$vW6t+qU*x&Y|uL4iCKAX-0J$x$#q~34Mv;6wx$`Vt$?3XLO@YO3o$t#@2EzN1tos zT2y>#operKhVG-L5WhXqVEXkq*n_PH-jF$PCK+nI(8U_PqK9-CoxbMMgH)Pr^5x>N z;INWu6)I(1_AH6JW?J87szkkiFLe)c!qvQ#9f1Km1u1|O8ea2R6n>^YA7t5xEFpxK z!Ibm{8#jZM<^I{6ti)84j#btRz#ci_jA{-+21bEK~?9sUT#FdO3~w!F-zj!CEZ z|9Cbw`P1P;xzuZz^vq>T0&#`?uW|p6bN&nc?!MANwY4=Vm4&YvUn;TYtlm9yWTQMs z$5q}htJuVPE{bP@uc^HUaTn2JrbkW?>tuf=l$|s)72RkMEHrY0G3pT*2*}p{xV}Gu z6apCczmWHIyEt-T0%P!wcfe5bn3K-VCpX<;>m4VXg2}TgD^W;Uz!c1LcidDk`5}Ud zE`Mx`mUACe_!|ct_%m$#Z;Kn?JnTS!zTx<@*6v!}-u|ac!ASp*^?MhEWSsRkKIGfm zdx|~X{>Y=Ux%)MS8c;AA{nw4Mru7^)|Kq4b^iVy?y;evD7sTMvA<~>(Y|VK1)V>w{ zSNn2YPN9Q)^5a7VFMf77=3GtkB@JPK)IG}~f=DNoMc*Xt_8*7Y1SlH4P$na6Pa;Yo z%=UxU!KtBER<{1?D}htnbpM{uzdktcTAydfs{*@X-FKOoDGV-f&+RB#o5lX5FsR-{Gr9i z>(_CTWJza>ZJz3xl^SxsU`A2jd|>?HzuYEQ-h$h=f_p#NR}KfNFuv^$ov?O&&R@XZ z9nD!ARg->v+JQc#X*TaG!O?U^vS>kQbDAc8>7go`gL`rwg#Uk<&N#X0Dc(VCasheUx0BL zu-K=8egDqeM*X=Hgl2Kpw}m@KY?_C!0A5vFvQA^GPYH**lkrs>WBY*uXtieI)UO79 z4Wj;Yn`LXj6g_*-gxzxU64Cxi{|s2L_-LuYK7ABDZ8^+5hY>13gsv>C5^#L6-Ac|n zk9Z$}B=-F~H(vre`86=rmaHL1z#wql7mS!60x{kCzU~ z&tC=c2{{eOUttkCA@j+I#Mx=SEZ-RofLxL)7(HQrN3r`}css1iCT9Lg_ZhU?oP9ZPP1!3wyb>QuaJthV zvb+p7)1Mp?Z0i5DG71%=FY|ttaxK;3hg3}e)>(5SY93@PB-qkJEeFInHH0El4_K;F; zsR$3Ukg5Utd;fnAYFsg@W6k-T>f=6yQa}IA=?nc~O0>Og;D>^lNoE_SJu83 zCU40vRPE7EEovX0T1)ghT04v?BS|$%D)M7WdGPM?^6`GRz5ofkOD_s%WL?%2)xs?1 z4fLi8uj&Mmi>O9|mi9^=2bM6fuRwP76`KE6@ZqpWwz(}m^`+K<8yph*_#V3#G~gPk zU2ER8HHeD5dSti4B2EHu39Jn|RRft_L71_^nXVApBrIBad|#BCx8tLu%0ISRH+vAd zYk7O`sS2Y^0bUVTP0Gb=q;e&q3{j(0`0RqD9^>xy(SMDC{>e@Lr-{fmM?qxl-d>9v zhy}EcXmWr>S+N|ku0G~&Dfjk^*7B)7;TU-;sDkL}J-2WZ+cp!aXKv=go>-Bh$*%CT zNnY5K#9+!H*LRzD1O0xnhc|n-3E`Fs*HzQD@#;~NUF8k+nK4nAEK1qrCI*7JCefe< zD3m^`u1gt>`#n;$hN_zc$qm_qK1a2lX(+Mx>sDa{+ge?b5oW~gcc8w`OO1xvb^ zFxcnh9bM)bdTeXAa0A|%N)jaR>8l<8_F{k}>%XjU%4NKJxzY2^#6brKy(j)*(6{SV zYk;@&0Y;zFM-VI`tkTzg41a6j7jr72-5yxJeOT=?y5A$y3R5($UQTLEMY(N}ou0*T zQNkOCHs~uO@7ATFu;p@C=XqRW;0<2eeJ$MzjR;}1>ts+XRuh+y^nH8NHNo96aOKEx zxYzrQ)8S5^>7L)2dTjGPQc}=)7a>a*dd9{E#YdQUGAeW_v-BhBAN?vqqG}>@Ic&-YMLOv5f~dQdE16{+R`Y)>uN=e2PH+rK#rP$4@w`S9TP0gP-=A=EyY2EqJJH~MP1a>1BemEYcDY(SU#e;HN*qMMVa z{*!mVy1QU;NU zTct4D1bv6V63Hd8sPb4-Wpf}Vn z&D-Qji7zREEgvJ7S`F2jMr_P$!lVlnz<8DpkDPmC(gjfa{mbpVZzdY()!Kojcs}!L zKsP%KOkx)c_XuM3P!=rl9#hK%Rl~yO+VdOSu4dSK?bJf^k!@ut9yE{MwTXLpxVfgS z2J;6m)^d-htGPY0${Oeyjm*~;LEcJ$B2^+$BY79AQacBKIo~v>gwmc9H%Avw3wOD~ zI}VMF$kjTkp7D!3D6P7kj;vJMI|wXvy>8Q60P_P$LUkf%xYJnpzos5uF=+*M}u84rWDOd6^~=! zV6l(nH$dnX(RGJ5c^{ya3=Fd^bsy6AHCsG^TcpE)QdoCqh9zLmr;<@cUGF@6E`07m zXrK%Ldr{Z704U5}7eEng4UKq&Uo9b+eXTye)1x%c(H)<^|J7Ch_p`=^#gjQ6Hrn`! zP%1hs6EY3!9b_MoI~z0?Zns;>@~HY2pSE0@e5~}-IsxXk;rD1UsoE7S9Oz1hk{4hR z!Q%Fi!oE45ne0eiebm%$*ovz~BB9DP3uQ29*7A!`pzQ{2~-aXCi#3^DG0?QBa6mDPdhS&Z#37fiKw0(40&n^;UYxrzAmIuX=P zfPTn|w3@HNNJbf*bVYLF7j;O# zI=WZAozS*Z{HS-tyg@T#avbO6DQh%{a@QlF7&o;2K-M7e|vx=Ytu4&fy;YI7e2x=lEL$q49}Xj$fr=1(G%sl6yvcPI6xa_BaERnSzv zVJz{%&bm17)pp)a4S1E5ArN^sO+Y=0C8yXAdoHB;9Oki%z-+wtj-*>|)l9XDZ5(|O+211N zVsBx|?2TKzRDwJGPEhsd`uv$rc&fK%KQhRzfL_K$@_G&xzTYx$;-L0DF zo+oE>Asq;iY%?a{RqJaSn0a|UEZu`y0uw*sL+A;tGjo#JtSavJzJllLu|)RE5tY%` z#*TaR*2?lDVfusf8nSKF-WG@H$dnkvJYM01J%_k*SiyVEcI%MG>!KZOdjaBiFN=ri zU+%0PiuqCRyqVa4u-A<9`I5qBb(CNTFg{ zZ_~}5EY4LgMQqZ`;ughuZ^0`;qM}N`Mdx__o*yvfVP_Pr5o|h7u3d_*?v_EljUayn z6Gq!rMpqNdm{s$+!j6*HmS+2;7@Ph2{>5b@F)7h`t{Ozb=?x!Ba_u^7%zM@2oy~;? zC**#1_+V|&?6<)j`(daD$&^31{{}9lRja_-y9yq`BR(A+(=rbRG|0X#y(mK9t5nC} z0g(4q;Y5X-e3XM56Gwe{f?wxn;WrV?-~yZ*4PKbuxsGV*s;rQcqvE@}9?&{{j#vb* zK6*8bvsxXae6@w6Xjz;0ku8AkTeH`9jhuf$;?Zk{1wY8Hlt4uyMnagF`9S$T8?@S6 z4+Ys6uu=t0QdZONzg|TUcgjV;ApONL%IgjJ zBWQrIo{B95bO8>7Z2#Y>BB=0D4%Ol`_lv$$ID<2ud^zFqaDkR1gOf{~KP`M(NLc8n zDy$DaJ5mAWL?IKaEm7nuD{NuAVi=Y;V&9cb`#Dz(l5mA$GMMYpqyaCpZ)v>O;=%v1 zv0-|Kl+&-DVom75cHdyO`ba7IDm6N7w61x6yZp|-1YRkz*srxE1xU>YGfjhdPtXjDFW~=Nwml@gl9Q zDYB2Q+eaRLms>>qVgKN6PYkTA(L{Z^*i~h5+DIwMfQv}1%{Q2{C+GIAqlj*SL1ort z*|%&G{PVUprt?N*x~6~XX=}@E<<;Un!Sx@b*X`h2F0r=oqK4`s+e|}1fAHilee$l) zpPv7>e~tw)iIKP=(9tcXl&h3p$nFQ-E6{sjtuWhRv3@<2$5_3B3eXpQ1eEe}@?S!g zpiCf!DP*;l6HT9)YrzcLoJPy-c_5iN%Tm+~V5zy}JYC9zlDwHs;h7r$E>*t%0C~QeJIF2% zlnT>zqs|evAgsXYFV{BPeZVCXkwhkKQ>%GoIv^`4J=q|et(wL6AYc=ic+ngR$0wCejnyk9@lU=?PFjgpDii(PoB|{#94}kBTgP#YS z0D2yNO+0;0ZS{*qyOSrFnO^cTfPgPL-d;mv1RD5wuA6bG$wShApZj#-cBaA4VGv6(YWh z-mu;748DZwl{qmUs3uDaUXIJWO7JJq$C4Up4NEyyt~fbVufo=XGek`Ft+emr$X))0 z(-uoKo~!??!$sm+Yd`xv_%E@Je|YfdGyfcVHc0C?8Sc ztFHUBa+{1ViAAL>>fUkp{)1pg0ZA&ZLU<|nV&Mz-%+GJ04#}39Pc*JZs+I^qa#JSh z@TxJTbc{EJ!a?-o9ch9+I9+PB=o{ebax`@8D;j~A)g zWqf^K`BIF(r8Mh}MPWuCy-;>WjO9lelRfk}#{Z>p>sgb1{ z2r9}KZHOJ`e6|1A--V$AK+X5zA?-$>+Q$)WODEv^=51(otqVSqyN;yFdhERWc0idn z;@uB`Dj{OQ(T-@^1kpHCOZEX$dWNX-h|^aT+`f%J>$0zuMphuo%>> zsuHg&%nb;0y01>3?~O|qiND9GP{Uu6FJR_FYwaeFmCbk8+Fx~1q$^|lZ~dv@A2$4C z2{oZ_{*@Q_H_6PuH-WK^ao_YFNxvIXc!%?Eeh=|?OsD(W^z%=%Oi(Ne@01#nma+d0 znR8b;e4cge-5ml;8|!R`Bx0vI{Ee3^+k*z{w}Fr#ah(31WEyMZ_1J8W5eCR*90uGB zcEl;5Bl$t1I4ELB+^Xi&?6t2+kKgX+5+=&(SjopK*BzfER%c!iCKhGc&&G*RZYOr# zMT#<(fo;GH+sZdXPoY1hEYz8w`+z*KACXJH^0#xr4Ol2V+*1ctQ3$vN-~jmt-K1Oj zhXf3ii>_Ug!Xt1Ew4|Z63q~v={a7HXmkHFH4{?{^?Kx%9%Ao}52*~;jdSX{HZ}n*UqkS=mDqw!3aO*?u2$K4}_+dc3tdl z0S0>5@9`s$=i+N=X<HQ|I@c zeSBS@4=8cYR|XgVRQ+e4@0BF1b$$qg6%7I&JlCO8@xP2mDIg+|AN8_iO_4>|p1OU> zIh{86q)Cq%OdZ>$9KGy9!nW?c`}CLCv+J7l#^4S~m17(`5A3)p_2%W6j;iKO$peCw zcVgKN9J|u8$`O7ji*n^i@O6gXO_ilJqo*o~Y-ANU=6=HT{b=W>;gWu_#%u*xW-SX!e@ZCdJ z-d(azKwI?D1ZFxT@LRh`=7MR_$7RkE&e8@d;jqw zvkhi-{j-8Hb8CgXk8uSb?V=QUWI}`8x^i4$Hao6QLa@#MtN&;95KjGTU&fy5FELm9 z4QTwFwSGI=eb)v}rv!s5c~YaK)2zg!u8%JU7Sv6X%cIr6_Ka zm<(GwdUm0rM<1=_p!&n-9NiDxk-mD<#P$~6=B!r&xy~8=ddBLjBx+sKs)KTIE4vY{DyeD;rA*yU+;ME^Zp(p3qRga+2PBC7 zC01&JAK`kr>{X|GYCI>3-w&3Y`ot%is=jawu)v)@_l_0v()-mAVfn8#lRP_zzYl#O z=Uk>+R=F7evNwAT#Y$!6M5~4llXmPo`@kd^X71w zJp;3=whad7G~$kEqrSbM5n>Z`gmd*e%`Hi=%vR|=)ZkP+S>^S8u6Btm-r$Aeho<5V z=Lo5(mOG_G?7R**25xJ;gJLKlirzDCFz?9KOelfhrd>*d^vE4kBJ+vQi|&@%g~#x? zQW>+awxzUS%yRi=V(xOgN zB(*iP}MjLVJ-^dOvjGHpIMkM^W*72WCLdkVj}XcTin*JQs1>cTbo z!NEalTBkjA#JdOY`SZc^1$Lr(f(l{BS>PJCy)^|7Co;ylFb}bZ?3h%d2Yvb&{jreH z%cB`O%k^=T`=etfr?@y-?>_>H^r`k1z;BnVP7e_m`1+U{XE?*=D zwh0nT9-7MEc5{CurPtN9gPT)Bc}KPJeZ_v}&Vq2P7i}psSuVX?MUl()D*oWZHft3X zt#V%b0sdhW3E@nyYniy*|Hc}&fvTm>IX+vX4KuPodoA|7Iy+H{Mu@lt%3Ecck2%MY z6>o)DIWN{-fJ5WS8(@k%0iUO#23h-d=F}#EOPXB0YE3E0)0uyD1usE%l^#87yjw9_nlPf)F8&+DeqXjr`skkn zgRFD-g^4~@s)|fZ&CH}Zf zvo%vqOABvfA>9sB4!skF7`6-D=n>ej0`I-Vg^!+2uZ;7=VX2Nx0|?{EkMXzY!^Aeh zm~9CnWvkiSAOq{pTmwgcUVG0qiSD^+xr|P;eZid)=mlve4cP`Oe&IHcd9fK%RAVOQ z5Jw)C6I9wBn-%pD|1m!|*Ee)yuwgY0OOoW?H}qv*Z?n>MgHM>ObL5XHUJ|%eZrz-! zls+4Lyg(nH5g4toS=!u51>EY_m5yqH&2bRXq~7UwS!Q+Up87RDj}+f`C8tQxJm$(& z)Kv1v&<*Tq;aTtYlSy4DA{Jpd812S;=6suv8Y&ZZu-kvr>oiy4@2bz3ErW`_#1GJ( z%wULotM<$x$y({VrSXSw*1;7jCij*^*32%kEO&X)jA{Pv@>)wm?m$|j+ zD5#1{JZV9f*6rKextlK!dNSnLYF!~8_}cnHom5Z@kt6TTTMml5{D|Y+YKE6*UR|0JP811AG|COl?l_?+M=~0utONL)x1{eHe z&mZ+$W9duJyOsni&Kul`pWy20BHWnB z3ohuCZcdJ>tq-@hAMopF8Z@YG55`oCAqGw#Q$Xp)05xK&17g^}cg1@&v-rjI*>0@? z*vIoREvA_9FzEgV4NKst_8d?^;?EVuc)3KT4z_%&}*Mg<@ny#bU1&Km_eB@6}5-^48I+dgN=#_BnHQXu1 zWs5g8D-mz6Inrk_3dn^b!mCS0kSp}Fk84!MvKxqFC5@TKaS!uaS8F9lLf%B9v*c~D;>di6F6Z9jw!s|N*+XBa7PTsO368=?g7+36a-rY3gC*<*~!{f>d2 z$M6}KnCn=`O~<-6SoOH|=M~yist5HI`si+Xcg0esemE4n{kyumA^(-AS9L?={+0au zkQwLY_um5_CUw@WAf)jF?OnO0p{dvnL0MN1OSYkz&`&>M!p~nJPV`6{>A-Iy~;Y zz_l_8zi}D8(;{Znm6Joc`(ka3C)!Q!7*qzDZq?1%{o)>@?#t#PWhyXZb=iGn<9z(& z^e6k+h4Khf>&Qf*MP>Q(xk$8d{Y{Ih`IYDQnRe4W*cl12-f6tGh^c>}V;vYre!5t> zkuS`3N%BjwWaGoTKgw=Bj-DK;z2V{GyP?}VQ8V*Z>)D3l;{1{01!sj`(-;LJogW>7 za_b_pk9auRZGf?c2i`%7c5Du_p(a@D{xkh=%*8*eo1aGjlUjx)dn+t zJnub=dfU5mjJ$EVPc`m(lAHvd(55MNChgYQeZT6|B$8jY!^OX^Ji74FBeqbC;(6K2 zP^0-6^=F6Q?m>(SeqYAbLwGPhqs|r*cyL%TqJTmU$C=~im+$KDM%vs?jB|T^J*4>g zn^$Z@;{ypf7Mt2gzgb9$x+3Z$uHXK1%_nQ|ma@{s3~5+{p00OJso1Pf4kQtK%^}T> z-ae^(L$hw;bGgO)3FSHR+)8##i;6)2|2pO@|8@ele>6k6ae4TsEnJzype>O99J1ze zLzISDzy)HCZC&K9X`Ws#;SuueO2|Y!R;%;7RjU|>#ZcUIf>qG>mDQDzz%(Pemt~r! z<;ibN_Cgc=Jt|A%>Xi;KYyqUrc|J75;P>fHR6_(?ZIsq?xvO_U>}(@CDl>Xf))X&6 z#FpRkApg#znV=%B(rk3NR+S|RBF<~@Cm@clw(L5->}RvE&4>@eDjH(VABGDMO_5q_ z{Fj~YVpDZf^jI70uA`D*%znLs>$v`N@{}E%30-v@dW6P@1xKYM^7ib(x%bDWj9G!7>v z%DV4Sa&J9omnF8DeT0CiB9w~--_CUo6kd{MvJcN8++LEoG%__w4v(frUnp|SA503RHTcD{~Yz9 zR6x0=jdJH#UTy@aSkEqod!;N!Lv&H|;ml9rGppDuXx)VQ^yN6CpA zYEOyoS32q&==rL=fp!PQ$)N{c?rsk=pAAssdkgF3K7UePWYBo>%}U?%y*oFFq-_{M z@%6pVU8bmr(>Sv0@}8xi0#8vKyu2^hRybu zO72vqFH}&)82PzsIS&RD^hD#yFSCJz3cg63c=h)!zKMZq2(d*5A-Hl&}zHO#b#ypOy4A3xwkJyHiLapUgGQX>8kz91Dhghs!l0c zlT~7Kj>YadHG-)im9nsCdnt|sT5gQSGx!y{C_K~V6{ZrCGGhQ)_>S4+*bbR@y;+^o z>A&O#@*Q?ZC4pW+W7Nk7yeHf0cJf}&(wv_1pD!Z zqpT?4Nt!ulyP4(7NS3mfj;=a}Kl(dGtq||IV*(_G@-oidmDAkz>aXO7uoLI{vl_Ky zsF(c?Pg0Jc%Zf`+VNDm+AL^(F%RSEcrTluVnDpe~1&tJqv5#_e$oWG{t=n$0eZK;_(?Kh(fb^>VAK zx~|G6nV0OgCWRJh5RqL0-HtNnTJok;3=!{lo4P$`bB6XLu`bw?BD%!}jp?Y;Dzr z)Fb%w;^rfT-h#yqkMn03?6C5fGp)ISCyY9K=uN_zI*k24neMQ_uJPeV_O9{@15Ia^Kf=-RF6n$8ntJwR%d9qMu;bM+)P$`L>bU z%2Cs}JM<)5Qo??eY=2usx^xzEe~l8OnJ?8qubXrK$??y^iA0ya@tq<0dfgg^d!NYW zWZP9RYrtXgD;KukGD#ZQMl)O2T8zvJC8``D^EwU3+^xxD$&^}^VZwP1!EBCV1^O7^ zM=78~2lD>Ls8~Re2flOi?IDj?l7|{)?Jyzss6m1y(CK`g4nOHioX+w45&2~9sXb=y zZPfl*p6lPApX~Q|m3E|q`UyyS2&l08u-#Lh#~=1N{`egE6jxFErZ_{e8Kzqdl}gsI z54;YJpVw2+2y+TVm!F6KtkuWUWG`=%1ajSVv8L4FZ{MIp*kBc+KJ z5_I+L1%ejMBIf!1L7n_s6z~4Cr@vdA)%$gJ&XpFVi5Bn8?YD8jaF5}4s(Ioddfq1S zvxWxx&kLbOP3E#yzZ1ki(~o`CkU}+w3CC{B9}AxI1x>%hWG3uE%*|qs3Vg;bY$eki6%PgVNRo1CHoz56Os zB{uWGv=}@@r9EoGjN-YFP0nb2Zigcs;M}p_+u%(ion0|VbWqy0{yyWaaJVjkcNZ*^ z)~lO&cK&8rq+&#EGtd{Cp|iGQ6-^k)WHMGK3clvd5-1yq+XGpS%5S*VDS2@5BsNQw zNDl`ocdlH59P72Ia*r~{H&b^h9G{vkqJmG_A5cA2nR(TPBZSrDN-{Yw8RXkU{$z6d zGZZ#r_cGC!o=~wc`^W@TUQ=xI<+vgT_XjEO`EnL@CV~badFic7G>VO)xii{E~LdoNo)+YIH{2!b4t4# zQ|>j`vS2Kof+4S7d|z|Iql>xz#cWofzAZ_8*KV<2`>-9Z`;wcR+s^vqATRHpcVY{k zQ>_F~49?iK<38wl-ctMbUO*z@HfYQ5lr}0g8441Q?}-!pxQv~vpZk^!oJ z_Bdkn4$8TYN7yC5xi0l5D3-}OLw)ksQhcw#5&p;)GtJ&kpKP|GCRU>4v#A!pHHBj- zWJ=T9)U+25@jEoxF=yG!{edd)7p%~6ZBsA6rc?$EGqJk9o24&%ZfW-+}HZ=U83uVVa z(@Z7fvu$A)sudy@lc#e5XZs8%6Te`KQaKr)bMO9=?I~k)d1;w+)lAp5*Vo6{>NDG` zy@n;Osb{XC8UuwU#^A*69{R5qR&x4d*#}(oJ4$4GEzBaTdGk0)D3bgT(iQkUj8nr# z9JACE*t(hj420;FHw^_tUAxZN^OthD=|+HgXJCimKLo+Sb~v-}=3n!sGEPZtf(}}# zg7H~`X)R(sRktQ8HZ6Q^8o5TkT<#41G}6|lARt)Dmx^CqlP1Z@pkTU+>|ap)h($tA z5``G+u-33O>@$r~Wu<7bA)3a)rUw^Hx6BBYz3&y?dK=N^kuVWJ6eLR9jC^{?MN`N} zL2}HnvB6f-tfWrGvwP%P-$Siu&zR#d50W?vK#+dH?6_1{wwkZlIllFIQK`bQhuspT#hs=`py9d32UHweRg1Jh+(?32s_$*#uDQPw) zF1Zn6b-B6LT+>!VXN#=5bRnmdK7=TH%HFSM`+gL`6^dw5+E0%X$_JiMF(Sm11=S8O zde%G@tF%a6Ng)rOtW$&3+b|q9Fz%)4#Df6APJiTv8C<3Ft%=hEnsy6_ zT@kWQw7}&%ptw8&{&`dVH@V+pADAj9V~Q@1vOx=3d<~H4NXjH!K$Xd8S4W3`?oZ@; z`mR%FYhjbpbVUTKR=XY*4KZ^iO;0;XNcbw9M)(_!YslmWeAZ(^pjV&kMx9f!-l?)Y z!RO0|>PFx$t>&iU0j#Mx)N!WV;ZE_E;b9pFnt!|CrYrB|sqssLQY z%zmHgAWO>y<*-Pozz<@n>0t}Us2gcHeNh%Sj&VV`cV^GG;^O$1)Rw-^FijG&T2V1RO0b&$ot%l-5;&y!oZMr_UFTIN4PV)U*ijyH| z{tdl&LG2GZmm@SCK_QKE7~k8AN0BBErfhbqxQpyLuODS+Dk>&++z{-9pSQ#E^%v!g zxjVj!TYyOPvM+KA_LsgqvoCh}p;DPooGU~yWfAorYLohWhd{NVp})-a&1)89)=wKdASOjzk>Io+z?li!%YNoDs9$`G_m zx{>`TYs(42yOfoE>N-F1xRMBM!}|m^0@sE;d!E>1Dk{~hhE)|?8jIq}KrISs%w$(jmbdmwpY#9hVV!yLnzN38LQ8d1>2J-I+=s(#(t!UP9%0?z+TyeSG z%)a#Rw5D>Az-L6Tel92DnV0QH!GbnO^XcfE#q=Uwf5 zxAddeL3~2yxYw!GYZ20>Mo0aX-!^d>MPImucJri|rs=f9Gbp!#+OD+A_jc#7SoBf@ zNpi0>-5HP;uYB<=qZ9SVnlO$+WkT109$&dLeiX^*oGQfSYFjP zZSa{D%&ZeW=B8r#^&~HmL<~Sa_9Yq9g!Kk7UV7Mb+^UM}qOH5D&lfNw#;!TN zAkE+?fa=MIGwcJ0Cxl+m(ro-&-n%*LFS_OY2Zo0JVFygnoJA-s4_M!fUvsHynM*|V9eqXq>*(RQ;R;7c8XSG-|6 zdF^nCx|-v08d6em++tX*+ZgQ7`U%4-pauao!QJ{(yy_C$f<@T@i3waRuiIWZu~|3A zcX7b|Sg19{7RCF*3V(V{Cj7!%hd?K%4N?qSVvtuU6tTxATwimXA&D{yE1fKGc@@lT zQ3w1lmWP5WEV(UeAjh2)>hzYwr2}`ZY4q^=HMlf!VRDsE&HlVB9|QW zfjtaXz5HQigHx@u+ce+6AX#5+?oFs*2?=t0Ok2AN719$Ha-2Mt{Y_4062Nl6G@qWg z9VEX3BF;1J!D%v??9!>1`6|ePUW2#JT+Os#pJ7|@2;>|yo%wW3s+ykc>LW14tOOs^ zz@?B;W3S;O?bI~f-q^7dx1PD%GmA3f^9pTd@tEYblNuhc8usFa$lFw^fy;m%(|^6; z&ad1%sE{}xQa9MLal;qMWHbtyglq|Aot2Q_?hZd;5V=IiuD*+QV)gKfEQXKzoIFhl zTdQKISu*Km5STM{ZC6>{Bl%_JkBOk-W%@Z#&~=1f zB4is>xc#9M{)4sP9q@45vm$!8LEy?JQ6)28=%J@zZ%oRg=ClUsKn9#Mj4BR5%!4Z% zG^ScDJ$l84uK`{BMnG+pRjZvRfFJ42+tX51?qdz5@!~)GlnZhwcx4fEZ&^*qDIH(|b=U|Hc8c4XJ0qjXXqwtIWtI_z+kGKIG>| z2VcIxHtTo1C0pp7E+?1d(@Quyx5N~?zrJr2mkMuZM9hKv^N3MTow?nby9j!L-UPhM zTTA(duTpCn?V=Ii;F{oyr*ear%>+OkwCtnVLI0Xy0G8><@7R4#2!=S)Z1gpe8w0(6)YAu{-F?D`+MTT>d*Eh_h0Eh zxBT81@x%K}la=6>e|5sZpukgw@pSsa`6eLVUMhgbh3<+F zZ^3;gHm#(TQ;vcke{thC%?CJwKfxJ{a(IWjoklJ-May56d$r}8Og;|c9!Cdt{3hYf z*8ZX=I;{Tlp8W9DZ;Z!aX8*sB;2&Oe{@5Lr^>5XxtF|hWNz4F7YQ6z@1$>(S!IL-b zF{deiqsH8XZW4L~R-W#z8S5OJNm0av?0xMH!}`quGDr zb?wEF#<0&yriPA?!1ewQ+d*Ey6*lNk6`Y0%?yO41ZAy&-D`aPIw-t#H9-`VqZ96rcs4IDi7Y5jZz*VNsWnj= zp$XoTcUYq?m+&`VXs24)$k!htepuF4@leDfJuvKq-NEwh(cQqgc#=#uo) zs>FGLI88H?#GO06qe$-dmhJ(Y$zt`s02~@dWcYnnU%K!g%n1Ptqj~dpNsmnY?9Hkr<*q;+smSm zI;BxKrp|{U<5O1z3bV-oKF4r&KH_eeRg(D`PwMi;U)Cd<6=ai#<1i=M`*g<4f33ci z{~L^fsZx7I0)q7f^SwXyJ2QKtBrylsnqJmTF?xO~;v%1{YkZ2c%c^ggbaXBDZ~xJ=~fS|Dt&}-CD^81UAf+; z4dR4J0vpYInbtPt5ta2MfdI>`{hH`D#jT(pdz9hP4*Q+6cK$T!)~g7cGG^RLK(j*Z z+QP5LgtFcfeBRg{2>e#N0hF8gIF3vuD(?7JL(|AV{2=qeU48MnMbdt8Hyd=}Ie{Cs zCa5uzIi)nBa&njrDJi*UydbER{8ySw{DM~_eRu6y_3UAE5&olHT?@;+k#%0}d#SxR zju{Ulub_<05i{1~(KfSAbZh%s*1yNN!OdSZ!(X@vyMbOe!V|h{zdGb?aV^+ZVQx<*kzXwY$t%mWfQz$fCd*} zOR^-OO%b9RKMJwk>GUOo5XvCFg;=L25*0U-SKH)2x6e*acxqa|BWuRdj;~Q|=h{F; z8LgZPuD;38>_Lbpc{ZZLwFyV?dw>@m{9(V)v|9F?4hQt@%QsxXUcp{@N-lqAc= zh}=~~8J%NyAz#X*So}CyjUJgCtVLXw%6DHXv01jiVgyLd>}dr_Wt;HvR}FPfc)ZuH zD6!h5`4jAw_TMTi8TKs8liHGypPv`qcjA^5r+ft~`*fm}Lscr-?{XzF8VBL;H87`w zz}R0r=$%3ypMpOdOY2H<^+&wEL;yms1wIoIqLNZfJuQ2UcJrMF&PU@VQzJpo zF1nsxwl-@W5U?R2^`7vbEmSo zS)3YnF88T45@0PM zntBO`HCtb+IYXtW8sQQ-%0)k(3%aaaztqjyx2U4pw|}%_wAy_}BssSqNUZ~p?*OmL z!|1L0tSBg=b}G^x)^w($Us3qImu2}BMclX=sHS&<`2yT@M!W=@^GBM1it<*~^>_o5 zemWF?pUeqSkgnjxmR1})^hG}l1))hd|4I}mGmU%YdhQ(ZUd}foL>*P=@jVek5sU>s6i5(z!ZJIo>;e+hDG2 zFHdgdY}QKarJk*-%%`QaKCheP78rC3l)Q6&LPJ9@w}%B0Gx|4Fil>8W-AUa7ZY9S? zIsU#xz$0C``6jI0Lmt&APOKtZF6ot*(3Z-QBpNuB^e1&9ZO0lk3S2ywB&8CL9leJG zx75sfchI>P~9 z$V-ei_vVmbXSgN-P4t}kRx;U{dv&<^*;3Tm0;wvv!Cu0*Yl9yb;NkP6%MZTNgUL@& z*vFTM-tlC2cXvl{uX#az{g?MP&Ewz7EuCCRFF_f^6iH;!x@g7~T}OO+yoH)ujB&Vb zhVERuVos7gDMB10&p*6;wlMXl$0y(|kZURaHI}`ckx1I?MhBTVG*y>+@@Kx2o{M6! z-7j|;<(_q{C^ha};hD+$3;J0Rkb}&b<@B0}($E)oB~zd}qnX|vByBZTVFIvt&MRg= zVM!xfJSHvDjSZ7A^o~>HoDEgLmC_oN;lk&k43z)-4b&St9(?C7s*w7 znpwYcttDCPe&^AUZeW;ZallNJV>>y?0OYfoQ@T%{=Mg64xjYbn-zzGCQ7%2b;ggR6 zMFjlY8npAd!9d?5E005>eRgNs=hrXM3c_kk)ISvu%SMtb>WIgqE_3@rx5D2CY;V2Y z4+KN$J8Ic)+K%geTMj=$X-X!KSNaXCb({L;!2(4cl&t0bg6H{GIFudbt!zkA+-Xoe z(X*sSc>bAUt@l(1TvO5+_)4mF%(uR=-aEYx&dWW{BS7#%jhZ!k-T1j2R*L5o4F^*> z+?s$z+JB3{+3lhte}~-r^kMUQY~VjU=Kga`)boGHDb71O>q!N6WM+{WpBl+)V`J^x ze_56Rf5U-lF~7BhNxD$DsHwn+{QD)f(`3oHLCW~UblaC)jgF~irzIKP8{Yx%uZxcI z3x9lqR3d?r;wO}a!p{$vov8$seFo*IeFlZfk#^%wcqzA>!CQLC)bN;`yoJoHF`+C@ z3TkPK?GHRju>Lm1F0!*8W8A_wb%l@}EKBT?Fu1VA^X8?sq}4-u+0P*(<>DCq2cPT% z(3|xp=qO$CF@ogj#e1vl%2EJ2c^6x@d=@4S47CfEjv*axr$agGCF$&&!J9corN~bQ z11cQ?hp)<`O1<7erB3%t1z(#+F`9lrodXi3ly!p~=ht5;Yez@%!tHNLyFP`rHg4Vi zbtv_?vGZ5r_Lykvw;`%cdzrc+`LuX+#?^!$uSKo1{YTQjMA2~u&!?WDRKA0Rtuw}R za{04^V|}J!^;)-0&3$F8qmp6bCI#6U{kT z1Gj~AG|GqU@T=ylSBwwW7b!O?0=iU9E~d zXuJ6NufNDqw=~sFkYhc0!zjp-I5hY{9tU6jw8+vY9clYOlN?0G5{TBoGR=cAneW_N zmuoo~VABD|B40xgJ088Oxv)UAF**&DxC|*2ocq9KhLmGlhs7vuBo;fr$_$kccQEpw zY?^ecXlR)9icY(|i_{=wKL$sx)ZM)xUk5EuZKE~_w!sseZIOL7m*EcJJGooQlIQV2 zxVB8JS1UFm(vDX}^+h9;=#4+Zo!fP@S|Ck~d}X;Du(~B@2)1_WkNNJp^NH-XyrrF# z3uYg;XzdJpQh|G56ZADs8ZGfw8LHwB^%-nfwB&ay;LfK2N9cEQ%(Y8bJgqAwc80^- zeGt5erZaR8#LsX4atq50xXvv;KRn&i}`RaCZq+T2d$lUBI2Bl6B#g9ktT-Q3Qc_p_<~ z`zEXCXnK{r90`@IXq*k$81n=eYX^Ee_nhwdIwMRQ1YtGcmSblEgODYS}eoGbV z!@Xm|K=nFpi|iwUj$^);Ko8s}u2hYu1$rB4>Umyp&9Xg0496g&jcvLf_m-=&n47Ap z8a?HMcTwyzB@0@B$5H71;sYDn6GSf)wUG8bMoKs*ml1*dvfcW~d=Wf_;)8)gAjdag zq@WjlvyDDk)}|#)!Fywxp1NeAc;n(sYB9^%M8wu?HLwc2=7w26&`Z7Ybet2#I~x+g z3tx`oj?17oyc{u<1`Tvgj3y=xg0%u@-a7U_hpP_t`t55?P`f`45GRrrNCpP%00}=W z6AwARC7`c0{9{k>2q1|yiwhv;VaPYAYsU1Gx{`*_f*JMX@LM+En!?AHsAzGdFk3KN zhm0yA)g;ZXiKm?J7&UC&{=HXro~t=}n!-x5rCT)o*z-~yotD)aN~6kB{3BhzpQN6h zdSGu}&vo%F5&KYe$eT$a713NDpV;{cq39L{{0N+i+ zyQEn;bcr~rN*L&FYD9d=H#{fn1>5~tDSM@7-cKs$qh!YILNw+)*R(DXJ30U4^kd*a z`GEtK2P|4g+Ic(RiQ>uRBNxFlrdE)4pRU)a$=W#ZD!OA{Lm-LSNU8>#I zkNRxA|N7NV-el*hddCaK&%xO>I?Eu~SsawwPj^tCC)pEvG{4 zcx~o5G7Z_j6+M|?CHqoT11!JjalqPm0rKf52$-MdOQGc@CGyvj$-=C~ z$i8Mv50RtnkyM#m^X1)FurajJCS8@;1FJ8VdEz$d?MvGImzr z&(2bRKHj)@kw7av5knd?k9-1hE@*8cldYSnF@XP^nK@Hsd-LRP0+b1`6aN!sE)k>7 zc2HFv_Ri~!OdKYYGe^zyau^YZ0v7e~ZvapTbvhevivls}_fNeoEgjolyU{__0MGOY zNF}Gh8;64Z0Of=sOENj^CV@{7_?F+=2UY>Hqwm|$Q09UwgN;vTq=?_C;>%*(Ohyh> zc~23{`mVYa3(~7}G8uUkeAmz8LGK*nE02ZZB3>J0HU^Wkp)kD?D9u4hoX8b!D<+am zp6;A)R+(7DPW~lJ!w<`HC8 z$B4q?wG8T%`PTm5?^p($!!J|GbNP{SGC(*nFgC6-hdBg>7L}IfGJZqR8{p@b+OU)= zwU^vzIbD!jH2`@Y|G>qn`Q!Gkp&6qmw@YXrRsa|35R$ z0*yatuWwaPc_mf_B;l)o4c27zk{+D7$lz5$(d;=Zd`)JY8}{y4m)+U$cE)xb!d6W; zzVHcI$l&aHRWs=5?t7x;b0VXK=jKv_8o6E$IRiDV;RIbV0Mh*Tdl@gIAW`s9o|>vE z*<5J34gR64>%wA$h*|4rcHPBN^oW=QMdnu9d||Ba+QuirsV`rSBlrNRUN8yMtY?<) zpgtDRs5$76{^*c z^L*Afsx$z(9UTlp8a?9rmxGdVC3w^ex_FhqS7o*nhEW6*0TLbm79^fVaGd_NHGnM7 z6|zFZoLy1!)eGVTmJD*wz|-yLS6iC_=i82WO@tA7h8ZOo>9nOs=LTy1QLh%7)62SY z4{G-~bVsvP2seEv?)G`R-m5GJCo0}Rox}h?{rn(!f?J^a1c7_Wl2MmEzp(EQWtB|M zGy)5k4lQSCOV`*RDJnA@bNRsLOYXvkRd#(`5Z2&@Sw@`y@ZpgG`;$L8n1>m?!!C67 zOzyRm-V4O@?k%y0NegHN>zZo$rS#mTqfi||Ty!OA-f7R{eTcH6?d<-9&9V=zsNrVJ z>v!(;v!^@jfaJ(`{h|UwA!2Lv5z_qdtf5+u0_*{fH{t?x5v79Qg)JUfltGO3xu+!z zX)(7xubf}E_m{^*sxDtS6E2De-wX%f>@GZ|`0mM#t>^w9n^GOqB|;Y|tO1w5P(h%w zLE{I@We2a-IChWtIVj~7p7|D^yOG&$Pm}&AQ>M%sJC-!N#nWJipS6IUoJzobQ)xbK+`~8)FT{zp z@3;PfRg8XN7L`1)C+9fkT)_Olw~3SB5f(TPrU=;=S|Uru+t1%(2&RMmCbcU=J)Zf}zSA3wIBmZ8C^TKFxph+&tZqN>od%4`9@XXHeelZ4jnREXY zKCIMrL)%X|wql@|{e7q+-!KD#yIWV*sb8(TjV^Unh=TcW`8B+7{yiW214-l5-m{MA zF~vHt}h0fizNnqAgv4L&U0PbWr~6V4sARJp^l={vqaN>gYWga~f}&OM@b} zk=$k5)2j`F)@DH@yQ3v{ap+O9o;}xChju~O>zsG1#kkbofc^sz{=#VS#r@&q1xl=* z4w%%LhUVs2N{i$Vt8z}?(1D6gFsUM+p|c5ql7;>AC1NcRUV&^L;1H}h-&@|i;%BTv z3l=B#xz4c8@;JiBHV4pKyw7&2+;?ciM&K|A`86h$3EOM#%`{N)vN7CSyrcAr$vEQB zNZV*&XU0t6#MWCbg@;c{KQzzu=XQtZ#~nmNbO97O1D1^WJR^7l>TZWS&*M%K*_}*w zv~w#tO$Pn<3{8_7X=-T(1N7j7Ti-j<6@I*gT+q+M963p{9q_s(Nea7P>DK;Q!o#=L zq=Y2q&c4;4Xl0f=%Ym%CQ84Wt{3-QF=8SfaRyvdw^W^W^`JS6HK+@9yvV0f=lm2<% z3q%s9s&g3C--*Xwt3hd^TctM3;=~=CB#3+FA2&ozjajB@0Y;p_EcKBgfAg% zJ&D!Y9+utULViq_J*e_i!5-<<-PUN2IYTn4FJlTCj6meK!>chLyDiLbqf?X;x@itbSvEWOfcQ>N%>Pb7Xn%P4I4Jl}jMrEnY1bHbgw+Mg)JgHmmK;K$- zgxt(6Dk_zA8#2utEMZ_$o+Bqey(p{D7OrA8*)Ad0Iwx4Z00c+qh14DO@t3F4=GOC& zM^it_RUgO8sOs0<)VIrSsw@=mVn9qi-`upV2#Vwl4((J&QH4uBw4 z*Uz%?&=>-5&%nfAbEQxkU*@C_*WuW1%tLkd-ee~LiH?A?!=bK^8auk!yOUPR!irHB zv%oGczn046%&z-pnrTOXA$L{_e5a>&gP51cJE$?@e5;o2qw8^dRTB30JY`TE`mR=a zU}K1k3d?dh1M+aXJGh%)I+d5j*12J`$9D1z9`&uGw5$U|@BfntlAt; zVefH|t?84gg8UN43DUZG?@hE&T9$YECPlvaVbji@Dy&Cs^&ycCp_V%+eO4?UG3%z< zW8^97RP1nOFT@@FO@#{_|4-TEJhiW*&@QaXeX<8%@YnPd@r}YrHjNI@x^xhX+JU*b z$#TnkTl{bt7p{a;LDE!8h&&~pPxOu{i4|eFp$VgN9Q-z3c+FulcgY_a8RhsAyvJXG} zB|f8u8Hk;!w4Hqw)qC#8FlF8Z5z2Im_yoL5&i+{&f*x;*Mx&QA`BC=g!Y~EA5b@t`-_(5Dc`9bby1u8%8 zY(S<}YtI$^B}T>l2fTopV)dJI?YKp|GWvkDvll~Yw`wFVN046!EUG##(`$(?5AF=P z7jKz8Bw~SqecrIT=G^L*+ef&JqVc%2qcJ~R2TXMMA1;N>teO=3o21on2(+6DsPce> zg3Z0=HuU~liD@az_Ohdx&^?eN(pOG^id`M7l;EXjP$y6!CGEB~__jv#IdoMhg)Ysq zRj1CE1XF+z^Y~lYRl z8e4CQC5?B$t3#|SAB7ba7t7St)R<3`8hlCm5C~*w`qNjs#wY6}zY`>f_zHaTo7%`T zLqVnXAdo+0G~4f+jMKEV6d_pa5Ujud4RuQIV6cq8-wm|$S};z7W1pZMAM(OR_8plY zN9@*GJ^+BmWS+=Y<_1Aah{d1sJ>LG5q%*7_&~ul%&zj_ zb#ah+A5QcN+~zG&4Tk5@Lma^bQp1x=VBl*8gylwJ$o3RJ>kF9u&$a|E z@!o3_8?Ev|=KM7tasQ4N;=T1?k3yDuXX6V6>BY+TUL` zD{*|8=$K2C#??Ekx%@kAl6zn+T6Xzmc)vuPlOWb8;9@0iaRZ#3 zCID&q1Ln@Jwi^cbD`p%yDYC&C@l{Ye%EKgkD)XGoiNQsw=525_sqhN#+a`9z-JVZ@ zOIRn>^&-Pf((!XwFZqDQ^JG8H+5J_}5eyKXakHVnk|Ig7G69Kn6Ij1)fZYT9TG0Q1 z0!*ldN*LlWE$Q>A>EWd#l#7v(miD3aN2=5azAKLH9Ckmv1Kp`DvE%q(!5`iUE60)$wxu2Z~oH(0_aZsGR zxGJ?W&Rl(`Ur)+B=i-gJo2brJeh(OBwBB)TuFnz7Io|d51cPmBKJo15BiSF|#8enE zQ_ZaXzi=+a&u?v(g0A@9zO5NGFoiW}IqulLe_jaC`P}Eu8SFIp7Mw#NyU$f6f_QVb z;L*QND0L%gewfDZmA6A59nTKVZHIzhV*WL6nDeD=LyIO9Z@)#Yk9wGrh3yRybai!I z6#d5YDaX8<;m4Q7r_wH)C$3|~i>I{S+$?K}ym4dUsPFmP=$3pQ|DOrLy$Dlu(l~fW z{Qa4>iM?G!)#LAw-3y1qn@jBU3abW z8Z7?6?*L581vR8`l@L{JUf)0n;88Bc^AM@bCHhp4`Dh!yo z3hw=w$xTN4)rfCiB1CL#tYbsp-9E1vG9z3QbNnCTlnUSYWpl1C6ko zlfv=+z#iRC6c2}nP`T{BKD!>P<^&@D{^C(E0@%f}vJ4h8gl+-KG@R-4f{SyK(BqNwatE{172RtYlam4O_k9Y#TBvRlIp{d?6k5KnRnjW%^ z32KEDR0U{`$k+~4j<0aFbfJmI<;-lnlFe5>@&a(t{$abqB|s?y{hH(@(TQCqJq#Fo zcGv)c{FUx~3qPaW@%Yw9P{18lDCM-d0xXdqX^2GDLeAN@{nf0|^-k%vtZmx`C)hYB zMtr~%e}9^d=&|H7CU!{Pe;ePt>(HaN7eqXCh}5ytf9OzWz5MmTZ7@eOr}SA`(=X@9 z^L^L}dFY2XK-|{>Qu4~aN63w-aVF_T(=@55rYm8O%$dDM^G-=5jp92bYDWRKyO*m? z;66MRUNkpQ28-YNdXqK7FnA>iew`*#at>=%@K8;_xR(mVuvJFd2LlFxzL1$4fWmec zLGdW;$T*MhmyVRDYW=|Gt?yq@RTTx?hKCuX($RP_+n}N9wdDYi1pj-YtOr{obmiSHKcE^gd6)`nNjW9_tK=Eu;k4s+TtnY;`r zk*5a^ZP2e%%+yf*ysK!ysa&T;hw3|Z>+TIN0LGzkf?7M!HDhf$YW$o3S>6wm^G}pU zOq>p~x#;hIx%lJQwJE!yu4HK1n;P%ooZCom6J5&1Y`;%nwnGNMcj^j^cyUHTF$ zb0CliKnlB}iP8g&<}KAVw;TdXq=?+W764kC3(#fb@6CxqM6&MwoV`y^6s5fI`Iri)}dttdQd-a zJS(c*l;Qid(}(F<*V+`G^&>vD521&-b)Bb&-~p2QFbdysfoDi9Qf=UYf;iTlP1<4* z`&>Gl!Gun1wsLkA)U=TIDpk5{nt!s}^o0Csje#F8q;7Kdd}lUmk;axQUECIz+!2b@89&{$x)F zs33(56#^X_#-g^p|CE^E&L*9jjUze~2gMTO)8B12Mned$J`jTS`gcgM_*s+aTp4g4 ze0+gTGk%_JV@0;Ow{q-2@QT4eCH#5H^2CmaWBkaJ4JV zl`1;5>k0_wc>mS1s5g4I!7})S;VwEUY81=(M57Q1lf|cJxd~7}N9y6jk>GyD0si@oQ`u7|DDs`;b z$%Hi#Uanmc_*n_5PH}N@sYFhdW2qK&Z(m>EA=+oQ7j-UfWt~YKA^^dUX1-py5hP`a z?h4_p`viFwOs<CgSb=!pPg=UEGMlrt`h z$!7hrL!e%#_5foD2d#}7P@PbT!nVG*YX6f}7_#Q?LSil-8c{LSZ&g6NO?`R*2_~M& zTlqe_K0k-;j?~#1HqB%`D{y~Kogk@}Tg)rSPZGc^Zi|X9Tbe36PH)H&kIRtGsMr@Y zW^JkE(Vrn;RgZY>=#w$cbUVM5k5OHqW}J%KC*g1DV784BU=kgu;HgdJVk%`kx*dp8rr5 zU-dvr@?v&}JdNG{yO2r0>@jK@h!bp*E!GO;Og>ae+VoV4y9+yrHJyh>ygN-J`}RL4B6 z*2&~r`#Wttkh_E01ja=nZdgwQB7R{r4uprmsz=jeRYBK(OXUo=`5#Vq%?K^zO!nGlpLe(aYH=uqRM%JZ!l(Yc z*o@wNhLv5W|BSX-7e+mY>bB<>y*V!5?98MzGbg_ z$?Dymuj4ctBKb!<3hXsDJYoNH$BQPvS<<%01_~$%Rx`$KXv&Hbgskk5lrLG z_BHfQM-r>w{l&S=qXd?s6O~PSsuNdBOZaLZA$5DZ?;y68c)J$}v{wyG^D3j2kooqe zUn=FNPaNFw!0bB34by%q6!$jMN~J6+$iBt&(zwc zUH_^%?B6q6;&HW|y1ro2#<);@zF=_MzU*Y3B~aLyJt4l_a6cSKS{prezj#3U1o@$T zRvke!pt|!cxC#>?yRv)Cy@X3Ysj?%+sCjdJ48-~IYK=d-5a*!)wBcEp{(g!?`XR8c z1n}vDq0hkQK%oJ~n#`?#^X3a^`EOsr|Ksbs($A=(1d4Y_@GrQbbb|Jq;fIg%=l?X*xYkbD_I=a^V@Ki=GpPIhCKe-$n$ zFf{Ztaxa6vx^KtT#_-7OMZ*GdgzG+Qc7lHz78xPp%Z`svuN`;DwKcxvmd^Am-Myu2(|{~vS)$B ze=RFEIs)A~+4hGW-2km9h5?1IeY5h+?bejC@KFwe>)A&^>Db?`q*+im`j0oK*C4$7 z)QjPwRa<`j0 zLa*7@{j7jr{A1Jx3IDIB6klMoT{ez~=8TKH1s4pBcrLJs)`tbC*-Z&pypHvD=E(7Ezm3x(CE}k$T~5Kl-K?;iogI7xOo6h z@V9kMlR9An1ZG^ye0srOyynwnNY{ZTkJVmF&9215HU;!1a ztWxue^FXz(WSt!o&rR9}mIvgOgZ*E?Bj^)?r{6^_&@ub(!;^Oh&Hc$>AF!6DzTL*? zVa60Ye?#A4W)^(QBf!9e1BF0L76Ppm4y|H=&NwbXfciSY<lXaHdZrIsR3r6L5y7k}$sebANyT5^XTs z@;z4Lw_}Rw=?2eK{nta5f{O!g%*mN!W&p*oCjeYY#RsB&Ea+($LI9wL0Mn`@fDwMX z1_zy39mNwP#k;uj^Rg-l2nE;x;Hu6H{GAEmaiA)cT{kgtGf$nc z9!MC@5142G4J$Mwi^gs*4=0X|A?eZe!<+t2nM%>r;~a&XiM2kX)A?F5VWpJi9T&fGF- zSWEkkZ&P%|E14jX<6IP~^@^^o3GQoG>Z$mk+ZG62Ccxvo_C%fLM%y)ji`DC2ouI93 z4kiGZK7Q;kff?x;m}nLmn&iio+zW~4d=Nra7Dh<%{_Wp?UoF3%%JoGMP44;hXR12i z)QN3qQ|`hT2XP;63ALv?-vwWh09!lJ{Cm>i6os|=2(K%ypZxai+j$7S@mC5kjpwPn54{c0};9CenotV8IQ~TXj>=DK|wh4D}b{B zxrNa?N!}AcY43Nt3uF}iza3IM@m|GyW6~R{c|Ql`{kb6fKxv`zt~;9hy}@*4q+C2; ztPDuADk4hCLFEjbT8klz@`Z-cTIX-Rk-##s5{BFN~I?E5FK z*_|6+hX_BZy!rmECPgsT9&MGemsptc)a|TTnyC1)dB`Wbf-L|1R3Qr76t*ic~hE+#%%DkLspukZxUm+)uPDdr{~ zRsCb}4YTPqKr@0SwxOY78l-E&nP^H)UclO6mK4c4guIQYP_pga$=7?7?3qh)+QcZh{!TMkf1q9l>`x`kMy}mSy>et^1Qele zmOEKh>eQKr>6F>UvSFyX1UBb*E*$Xv*NSJgczxCdjgP|r_~jwgYD`zpXch)~rIx-^ zTm(lM0B-|3oWMopz*u6tRkTVp;hv0;KT(+k1q}jnEem9E0Ihqnc@epqd_^!u$v~F; z*h^sJz?wJaJw#vWPh-UpMkzSf!;C7y+k)6t2M$TpDSZ)@C>-&(cOD#)LK}Ad`Cu~I zC#RG-wN#T2#;69`GN2Q0(CL&D7OIZO2d>c*92!Y_Z0!4;@2HO+4$03 zZG@IP+;cX6DBEK1V!7G+Rd@Su5n@R+k-R6xC)2^~D|nnFDeefQk3pmaJohj6>kaWh zSS5OR8{o63-3_+DqR*1#J7p2xgZyf^HB0$x#)d-`pp!(JGYu6U7#p+D1&-4HGL53i zGq|VW-=EWWs@X+(YGBMlv&7IuEMe!P>tR?`cS2c7!o1OSlQh>=sm(3^UW|9sMoKs7 z&eXh-OMCI=!KR7Zk!O2n$fE0y=CZkFY9j%j>8beIP*?Mm__C7S8wLEU8vIVrC#sl{o91MWOrCwHjny3#pmajq1S$25M?h%n5*+J_BN&p#+&T! zhRD%CR8=O1i3-X96%r7u{O;7(d!>4o*C3EB^*+k&J6W2DUeFB!@Z5xIc%3-upM~Dc zm|eK%jI^48nx$!Pq9vi%@JzNPwZ?|@xTG7nj%CyF0z*UB?aMS>-q>xy z?t+pAb3^w-uFZWK(J#kS9vFFd*nD?YOS0e;z0IVXyKgsUhAnCR8tXO$enZ?Ao_Nm| zPC0a8hbQr%2Q`=KoV|0f4DCRvy-nmB;+~&1K#BNTwK9rzL`8C0wo>ZFL#^8akFsLDT=eT&=d z?xw+3sl;;|n7+erk-bX5O{SY>*W-M;-PgQdOnQ4Kxvsrk6v%y(E^sJ`8sA#v?*gAn zB74=v$8Xxj$Iz2vW!jTuW!k;pX1W7|6escn^`|v)=SdHK8!`CjuJne_oZ8iGoZ6*r zoch(Hn(t<4N<*l50BM!GTnAavafE__SPNbV{!uY+gtymNI@YFYeKTttaR)|>`HG0z zBc&e0OLr&Fhn=1IB51`cW>ah5)um(K6`EL%wf&v|Y;AxM~t{r@@ zRZJFZ>Pk9{nmAf|VA!))161J=el<%j6@G zQ!XW|Su&wK+GfqwvbKS+3s@HNanTJLsRtJ(H%p#s7Qr$4b#6sED8v|nw~A36e>sDv5J0g{uA5g?vZ{-n(M;0f66}mGxd#S@ z-s{vVtYEtN?y-*GLaW zL*-p@?Nv#|GGx34O-{;qz0bhB{~^?yW{&XKtzIln)`}@`IjI2r*5iQ?l4C*&a`(%c z@quBByIXC%%)9E^fB+F3d#{?t{AI6L*9Z|C3;AmcTwIZ88Z4slm$hYi`n6h{#wY$Z zaBos_kGQ@ln;s`8Yk^czD~{Ps8JlTO({)5vLo7$SF?lF)-4I2n#?!jkW3CN!cFp`l z!BLYc%FWBU2{sFRR5rat{^!@uoP~&mQ{$g41&r8b19hFionl_$Wr+dLaJ1sx*159R!xc+5uiILZR=QJ$IVh7mDe>Wpl z<$rqCUvOR%^;8~mwJ$$x2#f8_3$~|NU@8(s_Y$QFXufuK+Q+%tWz`%U;Y?b;he;k= z1>Ro7Uwmdi>ydB3+9Q)A%DvY$V{q^DdKJdPHSc}Ai+EKM=)tTAlq#)6Y>8HvMyn$+ z!^y=t&$7&bk(SeyrnN%q(Tp2mpulmH^xLSrb73q$LGhrx2vWb`f317}+V(oWCgb)t zJp&*FH~n;#j#>@e%#70MvAmJK-;hFl=-MW(CAztfpL(b&f}}qt(j&NR<_BO;k(iqk zMiWpF&5-~e`ues=-fLT^aJ@zFQ5XQBYf6t!`V&%kg?M!G1&NB@v_qA@yU}YbNuEDo z$J=u#yGMCfMW2nED5VxG*lUu^zx%1|+;nx&amsM<<$P3nG8eyp^6F&{CFjALgtg`I zbvIRX|LP#>zv?FWGtvJuSbuUM?-HVGuWAvA3o!pwhpM@m zj+~GJjDoGx6WC>?kv5Y7KYU!(k%i)`0+bmVkY=91J9l>I(W?`W+v2g8Md5YBu~?1) z2tM>iIbovNb^p7)e+I(jPuS1mvUByaCk-fuq5-=Dg6Q&`beL#RUOL=uBECMD)|H&p zLReLjXzb+Wx2l2{gWqEvw+$OW2&niEtkxgeNBf%O15MU$3Zm%N%;%@P4ld&KC?>!q+m0 zicX0XY>eCU_@Br3u<^}3+^p>(rEp!(>Z|>*F&$ze`F4}b)wZis=WXj9J;R#?o543S zeAAm|xWsp6wYo;j*mre4<=}qK#v45VBQH`GTzQFmMGX{MpHIFR9dU64X{E=n`6tOuD3->fZA#NhMgK3J<29;(Gp z63-oyWhXB(^i<%+5(K?{K>in`qggp#s9QM($~TB9NMl%;Z5gFEaZ*y!$~*1x!L!t_ zX8rAe?ausj6CNW3IcL}00T7gTLQeo=u~RYCTWQ~U^zshWJxF%qAZLC~7V%CI32=at zKuiUQ#^u3`N?(I0-ljfL$Pz*Ma7{7MqD46YGTU2FB3a#FO2q!NfXAii!ZSG&tvd>a zv}bihhHLwx?|e+T+WAN#Z>5E@!?=GyyL0Z>;-Xx1$0K=KNzMSM{uTJ}wW8vCo?N?(I*_)5$6-FUz!SrDl_7y7g?7 zUi+Gp$LH0GdOd+m!hOD{yqNS7X1~^Cl4Yix;yS~quz4YK>0FzJc=P~&8JopT!yNO( z1bUs;Bk%WYU>d~URf^iWF6O`=B7A$P&hEa)lI${4aSBF;8$B`3R;;fsKq|Xq(!3@4 zW+!k@HdnvlHaouI#M+Vw(b8m71Np+5a(TnsD6(u%vuvewV-S=WiygeqPUN*m)Rmmq z_3BO(?!CA}L`sdB`ceJbf(1Wjp{Au}!y@d3o3S}{L=^~W1+yIbK`P!bB?6LhLS=~2 zPyIaDC-V1-Nctlo0DU5)|DWjK=LR5ZGS&b)9)4oF3iT_;E+%Cu6adnGNO!F(X;&ed zL8s=d+_}@|U5RZknp<+bFmg4}pa=+A;$_#>Z1@&kD!)*{z92Hwv78(H!y#`%O$e4% z$x%KS&03uGa%VejX_Q>9Xw$zqP@|u+*w78oQ{voT78pprXLY+hebGR@6S+A^vx#L%I}*a7lJnuJ z%aXgPd|dUX`&v3TDLGU&+wcqvE{#JW!aR^fbM)qyEwZA|VIaipt{{6gI(6FmxkRdR z-+T7-t^^?tE(U){OCegI`cA@Kry6=*I;w-T`Sg_A!25|JGwObTnI@3j{nQCcpI{?E!^X7`pqB_0v7&LGbH2O2yY4{Tzew@j zH_tkmdy)?=gNiuHj5KXADw*sRY8q%2Tg;Q{*fFnyz)KqFJb73Y<_qGAHQqn>X}gu4 z6s>CNiY9x6a)>$&E^z76P*ZW{mFS^*KYz%Tyq@iB;sSd$O5`q1lz&@P7Rs|$M<%yI z^aNMO+21%4jo5WYCZ4xVep^v#SH+h5J(k^2ygo7&YV$q00~Y&jD>1T=Ulg6x!70;r zo~V$`*qu)SV);DNpY^5CI5DHhruw%nK+ueUODT-iL{^CUl%@(!dH8j0f6AGU*}L1n z4E@LuIQ5HDRZhvM^o5EG)!h5$k6+gEJbV%C#y%BSAhxnABAip#P}Z_3iwbd1f`xtV z7{R-G2eLZ52B3y<8XBNNQ>(7Qg)8>}xvxj_MbLDU2LLE`j$vE-WdKCj_oZtXl!6Q1 zFRW@) z_$eQOb(=&Mw_Q=t6^=}sY&JZ8*?x|HQWL_lNN4tu!obrCPcIy0*oN#Fqa2f{Df(LZ z?5RctN0}A4>SD45FPxek@2O1dW^Oqga14FscVmkEBLCRk7aiTJ5{s(d<-^Qnq6hLslQe!)zYaMI|>JLS;OLoZZLJ8gO3&JPFzEA#li;N&j_XQT1Hl;JvJ&IM)<6& z8CZb~0`|*Y@9QJ(lxdvMIbp9V!D1XUN~?P{$mxLYwUn^6e=x$N`Z>*TPAb@h2!KH> zsSl2`pXmbQ!xM1JB}GNuwE*DjbU0L?HDBj-9k}GJs>E-Cds(b<^A~zgyI!g3^>Lnb zWpi*7xaj(fs$;Cu^6)U@P)F4TTR9T^DBB}kI2{_@cqAEK;hnxN^uQd198YBVfOL!a zL2mTQREB@c_G%%a$-o5UJG6cjLxtHfK#}0ST5PkJ3LN_27GFiGAw#L(EI{II}^vx%YJO@2b!z|Uz>no4w(c^{-rKeCVY%6P$=?Um<7|txkA~Lumd_pAmkq_84#H(v-1(XDEnx)W)8Qf6>1*6$ zgZK(H0GrR`f#S)$cO}d5tEglG6t|vx^Ynnyu=iqC{7Y9gFEFw=nc?6&u~YIctD?}` zsc6D5=Bi1z0>aFaF2c+gP*;T?(bvu;SsvK?O_gMw>-AwcT##|%1Y)Ri?pIcTdactw zeyt&WJK;Wj5`;t6$EI5>k!>3(#rgRimgCK5=Cym|0188;bDkCL5GkDwr(1kqW3juB{R9ulId*^bjSZU?(A_cyEx@9Lvc|fPU%m~MC}>oL zyp|D8OuOhTtKVi=(f3By-ytr4Nl`RYw9{lY@v#7Y8-M$@=wVdTPp725D;3qhUP2L+AAQPGGpcnBPyZ%YPen0rl$W*qT*Dn zxz`3|wEWX)S6bPLM`}h9A@c0iZOnPC9&F1`R6p~%grT=&2UO3!9L`pe%H|CUFH&C% za(+9QcK-o-YBsPUC`ywzav996j9pQAFRHeD9duVzw*Z7>yq*A`&sE9T@KT!?9bG69 z_uSvoHf+d>!z#pamcc1M2~LHO?Y+TuFmXe3qE|u=E+Ilz4^>n}wAs;as=RLuWb*RA-wX&@1TA#zb zeyU}*97mm(UZ+WE_zp25#x$CCWTR_ZBT&bVkk@|N4s+iI$jpz zCZhOEA`AIdvk>EgHGX}1sKl^UN~1xeEBpSJaJ;jh20Y&60m>i5UQ$LKJDDmL=p!%{ zA{n5(%NO7VJ8x%1etkaMtt2?{lR?nSKQ!VK$i6F(QHzN!)n12go8Q!w6T$TKgxSt` zOat*OGsbpZI$Y+dP!AdacujfozuQ;}qydcV@tNn@Bj*qy^OSMjQXQ5XQCQE@e)TDW zQP}G&YS*dd^cCS*;B4jvFkd4bliCmBEUk-;87|BMy;HsT(G9OF>%urjA?h$X?q@M zeBp;if#%-wD~sE2UCBhZB83Rz^alX!+!IPCEU--D3^;MZY^e_K>F^cigJ&9eGGFZm zv89<^0VBqQuV}3XKaB~tt+4hPZ|3dX>udd#5kVSz@Q`{xp>JPmCx>Vsd~>9LrceMM zSp-S=wU>1W#4xu##;R(sb+xzzXdUf(lC~etiyx!Y$s|yAvmKuirG=p+o#S?$TswOi z@l7?&d@j$7-R)|3g_)iLjq^YQg zZb;17`OROnk{EiCqlff$-2n4TdPX%hyp?p##3#i@=!&xkfN@%lt+(?QX_qxJFxY{a z^5|BK=j26rs{3jU+iULGy@-(uEo_)?aJtU#>ygl34=0_cJnO%n2fR4Szz@_bfCNfisRdxgGlU<`rJM`-&nD!6e?rPCI<3(H8#UI64!p!&2 zJ;<+Asl5C#l@(=gW_~s1hvBDvJJeN?+AO)!cR^DvPdi`dgvrHRz(K07P9rG;^1ts4 zs4ZfHe+3Scp_vAR>vV-bozba`xDdusm+E2%LVnU;A1-aZ=RQ)EfEF=Z87h*Qv-2u5<9`4szS zFZMxxa4=%PioR0gwOTWOewbR0ngvsN&-tyDY5w(*v#an{pXAwy0+dnPaj8kmdIv8!5jQf#$Z|JYh^{*)llMht!<8udN6EP1)iWuA zHff@9ck<{TcrNsP^zpnMIRUo;r+NP!wc&!%^{BXqwsEwEbH#sDMjWSdZDL8#Jl2gtH3x`nu`M{F-f*8 zO7{?dw#!L#v-r*{1==D??j9;|y0v-6#o0>c&0p2uUHyC2Ro2)}q$+-bI-PN=E+@Mt zA_LxUdHXvF4Mj%oEo*C)0RxSi5Eue0>-JSRAGO_0?})k9u!c)|5QTm2kZxnZo2E&T z_V$vq4b}CyKEokV${)sjv^<=0W(wCd_AZ}ZW${EN{~9Limut7lJBOoZ$lHmtVTKf( zb1rzHMv}f7Tvr;n(D|VFLKlZiv1unO*yX1R+v;|CF93;vSsV<}qqtzNo~Ga^oc(c( zhRJ@s+P41jVB;gesJxX7s3rsXSy_!DiU`R-bDap%`2_zZqZ`p}`}Znf0ki=weis60 z<9LIv$I8FXGi!Ya6)NP=_^kWHL@{?azQay&P;>yQGa-E*)89yM(#X3g@8Cg07I@)n z0wg7ox%O1hoq4Y4NMfKbW^{@COJNpra_w$T%5;dgtcz#=nduu55pfF%{uiMhw;#t{ zb7cUE^-sY#bc|EdiW+@DDZ8tL0xVFMGlQj?Rv|{643tMDSZ5AP#3JA+K)#d@i4&pc z5wZ@Yzzntq;u20_qGusV(pCNa^TZ}!H=ilM@+yu2Q;gza{KH=3*mXE3y`=iL8PA&f zg9kDx4ZAVukby##-sMW2(xPj-j z;ja`jVH@KTASDHe_CU+WaI}mn1RjqKq`Fh=vew51y)|Lmq#o$ZVJrH>Qm=DMU00#k zY67K4YQ^2IH*WDay$`;;P7)HBi@2j90GMB~^IkU){;42yMZOa`&GR z<=kI;6V5T%q-ssT-vQ=ut0fg75vkAh?TZoYEY>DV&L(>F70yY`I^2{k!QD}ByZKbY zS|oTeQ8&{JEe5!3-a>T-vXY9_W#J*j)orKlmasgUoH+%EU4f(ofq;t8VUvNY2AObc z>f29rl}QV-CF1nSfmzom=272JpL_i|yOxiNCLAXb5 zbTgiiQOg3IHEO5A=1)uzRQLs|T9PIjhBk!@&Lw=K1$M2;!s>z z?gJOuJKKgu19da0%q>eSVof_ve)$ z4pb8pAI8i6^s#@lSHTyB{G#XC=b*0KjUsCL6m9nuy==2w5!K$L%(0-n5)=a9$rog6 z{ZBI|2eMDh>*sd@*<$3h9uG(CI=D|&E`0-}Yg!PrVi5$$SX*FqS2|6l@ zD5e94O5whjYAryGwTXR{$QkqSSt9Ga@>r8B>P8sVx~xF|6@7H^yDEG_&4!Uy&MORc znv8Yl6*+(b+lC}v(BSH0)Lp-B5mg)o&ETeeK|d)ue;XqeZlcS&SoE%@XS~M#5W7rD zrP3d}frbbp<`FU!XzrJKRmgs)%Aa1n`0*)Ee_291Nx9nl%(KXZ%oW3 zT#t>meiR**mUaMfM8P$Y;hpto&6LiDziPppci*UaRiUq*sWE)3qi!_LC|lUngr*qA zVWj=l#1TC%VMff!8MT*r6-1u4fc8{OgpB)++@NF?R>6z-RHRP5j zb^m33ULF%ie4Hh^m`D254e{Zo>Q7+Ak;!e}@mQ=&Xjbo|9^xL?(Y-!ZLk8vRV1iG! z*S1RRQF9Eo+Ib|SDgA!Kqn-QZxT65{;TA6C7~k1Fsx?`<_NuXm4O9aO>R=!+&(%hU z2i|W^zQbiNwVM4E<$O(pV{$e-)?8x>sS%8~zbC;s8C^Sb=-%s<7Gdfho)?@&mtkxtL%+B=lKSWu$@H>XNx4I5>ryyPwW^@})g^o8O@qZtna%R75@A#V3Dm>V=S`%Iyv83>i7syM#nHT9 zngKfjO*ei*xz zosz9Nu8X8YMeE2G-HUB#Z~Dh!cMH$lDs6Hboq53Ac|p~On@j(`if896Q-C!X)n1%W zgjDyH0f0}8KL^H^+g_9bIT6Yk&`QyJLj?CLjCcjaOeUNIQwHgR`d{sOlNHJ!_&*1> z6}&0r&Kbw`ne3DkHsj`BS<+e%RV`DnN)VS|dWFV>*OX1pRS`>kjDy^2ak^4y4od*d zOE>$A}qHqEX@$h0x@ z?g^e2fy_2~)jq(kmv_88W$?YBp9y)1IdfS=H8=<;@l9Saq+%P5;FW)+fZTs z+Ovm@&)YdEe?3;v392v4qdMAW&3lBDA}GI8ZmB-F;<~1pqX0%v@4YdJPWJ8axZv(F zC`pgHv*lH;VNH6SI$UC>q`8`AVoIMUz=pYcXhWql7}n}FF%z?Jw6e#^Mtu>?gw-VB z9*2T3>?_c*cx2ijS!-qJI1z?WG83{pRFdpg_BtYUPwC9Ja~B0=(;84FB?M`~k=UDB z-;iI<&dQs~C2c*6p82wK*UXteBzEiP4Ae?66JRcOHqEFd!jArm67@y#oYu0ODd zInKU5t)c7tfl2-GHovav0(4?~8<}f5ye8Qg7i+!>kA&vR%Ag|cdxTnhsCC%dTuR0A z)hEnd)>xj<2|~lJhLgu%=l{wXXV39&!uC~iaqFo>PD~?SmUa-#cX}0J4hDVKXFB>6 z#$j(WQTT}2s6=h%wK8EYB(uI~$UW2Q+FJ7(|Isot;!!vh2mqM(QYJ=h2Jh((&ph!> z5iGpj%0zk0^fIGINgy*TaD1G4<9hFDbKXy1)+N80h}FySI<07(p z&`TcHzQ1T&7}DV>WLkK;gw&J!*FlUX_o(6Mrhb*&7uS}}N7PR(URid(znpTLmU@-t z&4{cvh7wn8o7UISENTeiJt9xBTUgtprk3#8Um}g0e^9e!%G60m++8W_4X6f$qzDNq z;d)Ag;_t~L4Wc;Q&f#TDJ7}3-1`x>bO6})}fTtm5T98({x)P6>a8v>#IP&xaBi<%M zsC66pc&#CAkQH%qk8C@46iTXxkGdORq(|Py_t+YjVAbiuwp8zS; zlcH&J`_3Kx8ctgxFwzMZuMD=5P)}vEB@8E$V?tIce5AyA%8kPf5Q5HLE)9ovXSnQl z80=z1C+Fg*oCO&DVgSG3cU@`i3ng0aB6zG5A~ZK4xs!u{Ld1@HVW*NZ{%kWq)OQZ* zt;F0mW3m7IQ3f*uopO32%K|V2;Isj}BFGOieE|vP&o5u7tOr#_L);7xCHRVUd+-5S zqTl($-#^T_9;J@1_t>)=e4q7z)U9zIPHXKJGCNMQh5Y_Rj=R&G@Gu}cJV`W9vd+kh zfE4<>FZxyHJ;dG9v#w^ng{IpYg*82Y>G}(x?Z~m&ZR0gqs9(cpr5CwUeFHnJXJZu~ zqr-4pZ!VcxPH81anfIl5X5Li$t5}q$;YZsl5WpVHFCg8IoXfQdx%=wutg-EINS1PnQ3PzMK;Py0@fe{LgZZ5lKlJ)J;dX1f^tUH zr#iq;FWgyd6?_r_K1>}R{Y*VMnqRDkZ`ED=%|j&U^3*vb#Rmj%Jn~&TU7X)Y#6Xfzd^_K7hEj0IlJD?0Z2}RBHifo3) z&ib}FM*Z?W#!nTgrwcnw*YZana)lh zf^v^m1N@|;m4(*u;{Z8_ia?6HJaExMK>}EB#ih?*x~h`EDLFZI?IN20ag`_{v7+dW z$vUvl9~Z542}CQ1>_~yu95-fSs&dBW{)A<=R4@+6;M^KoAfKyNSp?`@*m*K~SXPZ5 zdQuB+Fg8Hgos%PV(yspZYsjB4MTF)S2Ng#q+|T9AC*E5(41@(d_TFe`>jpJU*AqFV zo`5TK795zYSHggo@XxIpvZ&f+lebJ@-_)Ei5C2T}?7Ad#jtpqOu`NVHKZK~JqMxTK&~o5FpNMR6`+sq z0dpADn#9E~ov<3VZF(%}riH%pF)TUrSdm4$&jIcUGies6nyDy zIds@;aQi1ow&m!m1j$#h=$UL+(8cFa^%9Q7R*=^-gFuxBU1(T0#!dX?aF)j#t(hp9 z*_*)Il;SjIj(9{To^g?GVfJ}*{p%l3?DrRQFtgz2Yyjl(Dn1&)XGZas>ON@s@&V2B z1S_t$vzc~=?9*km`4eSR1RWWI!p~$3<>3_nKkr;)EOug9D?5lD9Q#D{M$3abl!S%f zi;IFxfY3}y+_MC#z{(H(*H*{_suiK44r@Z&Qh;e`t zKY)Jv%ijI>!6SS#b8N4OjH3Z;GRqfRh~BW^O`F+#4NtuDR)>L zXtR3!xi^u&l{;XVzq`A8m5GW|5Zdtvzuiw+pcT|rG0cB6lr4T1(9nPxm*s`vf5@al zywe5l7dyXVIdgK{{g}Z#K7!{V7+D>tdz!C7bODSo=J$VF{y(I__=?9Tb08Tr4}P~1 zPoOgYIzRw7(D)0Aw{PH&Pv5ZL+&oLh3+Na%A=}`~0LIDtf07TTzJ;2WaO_an0NS5r()d4{BYGsTb(4@K{>Q+He zuBx-W$0+w_ihq*t|F$D1zi1jzIPL)$ZU~q%|2f5NDR1uUHRb!8^S!<7-?la)XEtbe zfg3YHpiOCn8-PhS;9?^*j!rb6Xg#<3!JwMP)vU*|fF(kRp8v1b2+C10VNR5`$|5|wQXGeMvH`Zipi6#(&Uw6Fevi;c zD$W3EHN8%W0zd`J9ta&J@_4O>XbxnsAH5RCC%OW+uk`9wPD4a)8WyNUnp5sxl|2Tv zbapEmzds0U-IHMO-yVx_5Q8GBq4;v1(8@FWrMH#&01IUT4Lz&dcCa%(g~17$wAAbF zP*brJMU9fryJIWki>w2*oqe7Lga*XO*z9;fQ0m>1;YO~rv2&zGyS_XV)LgnhwQ@m) zQN7%IyTE8Wz7|NmJft&wm0MH)TFhqKw0T>Iyv4=Dq8#0_0j zk0(u)953s+#E|GBGWKb&3K#0?`{AaWL%MIgN&$8vfSf_p&0$O+i{+#(I(6xRBBJwt zpxeas`Jq*Us23WpP(1i)p0b#Z7-+Jas z4c+gvH0Jt$C@0+x7oI?Ld?^c~Jye7!+YB7{!Rb8v`q|HO8UFG%21-;rExCLK%x*x4 zn{T{sojne}+bV9&F$Bm_D;4+9^}S;F(fr*`o`&&?svM&>-`B@mIpS8(BQTkC&x%wP zkRbml_+l0VX{}F1G{q0Ya98iKfFMflOlL5|tW}e}N97Cml;LBdJp{&jS*v!Q15;8x z9sK4_z~?E@?=8Gz1A|oz0^mxULlvK44WR1EdN!tnz@_Dw6VJPzYF~$sI`SdyApWK zdwu=_Kg?mPrnq-&)|U!O_IoRV-Kf>mTd?;RAgMD3JvGx_QQZAwa8@>uI?O%&0G|uR z9Rj&3Di3biBVg*^Gl3(0S*7>UGAGAaR)@iY0-8H^`8w%Xhgsh+t6uVrCw~=k|7$7g z9N=_kPMLtTTAi~sItVD`bc<`Y+qTlZn(IwZS7F5wqbG-l=Sb%OTHuvPn!cHpx0p#Gwrr^PRRRC)^4H^6Vw*QM33by(y5)4+ zmK#p^>g#>qzQrIspG*U4-rsiS6A#pV;7%pXdnqpmw!Hz+I%&A(0FTE~X>BGy3A%+$ zT7K?8;foATH?+?;QKYyM@!|a;LCUHGDt;Fvi+-7bV4}}Y2K;Di;U%MTQ>C%B8UP4; zoR2Bv%)|qeAHP#>Z7V4YkP3gd#30jc0Noi=(1|kzfN6hf+-cG4tLe&gw-CC|dT*+gw;HGif~^PTIL>GEijnI&IdY zdge_`oU8Wy&uHbHSwd6)MGlz5YJ60oIP^UcA{>6X*GJE$ZYW%tA%m2jftEk+i!HME z@|&6FonO1kDGz!3mRRKx3M@$dhkdOP_HWZ|>DM=b2*ANS{ke-R^`P%xVT)QmE6b3W zjiYfoYKo(5>`6q07C)ORHGX^S@nuJ|NSD%uesR%wkT647&gdEorvDQW-vPme0PPw% zy&NDK_F3Rpl{M(v?y%s|uhQvu@sDN8?)bx$ADtYp3vz!D@Pk@&O|Y0 zOE6Pn&P|xS3Q%)puO%B7X|JNz>MO{wOmA(Fi>yEg?}`1w$AJCLX^#&)T=}~WSv60? zNtpb#^>w( zI8EGSEOdK@y|c2a3g0Q=5s-Rqi*uyc2YhN~=&;+7CgDd@0CE04K?;pq;1+Juy`&)> zj2_`SVd_ntpK`Gu+}%eW_%&ICA&%zXPa!lH<<Ts|MVTytowtFzu^qOGO?!1q`2}6ET84{S`wAFJbB4?a ztsY5GKE+2mJ=Bd0IXBX|2(3IvU6!VVXxJXsI}$?uY9u{N=v;RaoyMIBR2+dDBJQ@z z{(oLl8mxA4Gotuqd>m&DK(TF~veV5DxdavrX%K8J_bI-cIeJ2X&lv7?bg-xSW|{P| zv4rK-TYRHM`7*Nt*{`Cpx?9VJOQUhtDsN}ErAR0S?4CXM#A+7KJal+a$>G)X8j7la z{Xwtf6xXpzSh0L~7DU|htpT-oN-55~NhSHbCrhC$yF!WS;8_+i-- z8jV#k8R%S=cZ=F3|3!{cVWRzHP-S5|FY}{g=iU!4Gr2HQqFl}RbpGvk#Ma4F6)o*j z2-IP>kMI?A$%>>Aqz}`jfmo(lhw4#9kc_QX&rpqbxT)`ja8kRL5FxDvuMzt06ig>+ z65rno2ZVw>K_u14Vky~f3EIyux^x-L$waN@gfEg~m=yS}$oxngfTYIAVPEB)VJviO z0|~#`C~h$^8R+y~-gF|oxhQm`^X0KymoDE7lka#1*>p`ZWB{)yilJ2O*$1v=R zacfczfaq~Z~R`TDnDvR$i?I7f(bH3a8WK?Y}Ia3|4X5_^sK;e zv)K5|ZxW_6M14+-2l?y>9C1sioN3C;q+Y$$J?bO z-OYtxY~3Z{qTPfU$~&Hqy?gf>8pcCCXD{Quqzwx|Vhv!`e=~>PaoESWTLFPjLnsf7 zyr_(CXf_w;7}w22h>KZya z1QiIK$Yu?Kdkz=s9C?xJd-TmKx|MYzt!b}4`h)&!Sy9(YT{Qtg3JeIsSau_HZe&V5LbYN3Vc%iGOcZdZiJXatt*ecL)MN&cI zjlA1At5d279Iu<5J{^Q1uk-pC4`uy}#(JRj7uDXNw5CZsq0nod-L0sMhnaRWady z^It=3mpQ?_BaUtFLlo%&?g2>tl6FwhpbG5+Dy};_NE0{PRvM0k~rIV$B~g`IyRR z1n$m7+ah45yf6LK-V%VKOShp0IFX;_g}3mRlG$3XIjIo6z<}|t9;a}$QT49~bH*Ba zBWZ2l4D;gYrmZ&fm#yzxiDDBv!j^4rT6k@28ja5AYsMmFr2z}@@n6NEoPQ_|f&LVs z;uWNaP{3bTuduPJw^Dls0~5UdvET9!DR!2YzUA@U)bTG9od%M@sl@#whw`Z}G6_xL zB6%>5T@ps-OaD7TN5O1X556CgcU-RMLVLHV?EEfSfa8expLvx6LW@gz;tf(?f+O+l z711$z9z3CT4z%?Du?zqtOE@A+Xs?}M1R=pSc5^uPBlF} z&zv=Hy1Cbc69^jryHdq0haiZA(Ad=WuYg?D^z)n3rUgX^zNv#b!S0S&jzI*`T`v%h zCl^&sj&WbBq($JG7>@dWOOB74L{x4}Nb%qS5_;alUhB^a>faN%-<89D1JO>0DuL0d zRJr$9roLXGd0Kw20~h--^PEINF(=h&tR0AU6U8-cy-N2SCLq%_-!ISJ`bLoB)-xxg zI3Bm}P2}^|3;-dM%2=qv@D=UYLR)LspCFQPK&a-W3J3%`eH3ej|F}x>U1xT#_ zy?}5A?z#Q{D0>gErn0DA*coTU84F?=Kq(3;DnbNAN+^yE>7yW^2q;BF0ug~Agb>FD z(qf}Gm8K#fEtEi_B1CDCnm{PhOA;a^BtS^=?}JmEneV&z{?CK*Xim=AXYak%Uh7@u zJqSTPA6L5I^9Hh=a7(?2q!8R>K?c&|yEfhb$JmIWy4(j|-)KLE??kA39`|4 zEB9@XNAM8hx&J4+6jdNi(Q*o6Pm?MKGzS%bBvk@L)J(}1Pu|%N#f%(`7e*d6Pj%*L z0j9h+M{i_4G<({A zq^(sjpqcrX7ejJ!#0(&g|3Y0%shLN=|2_iLIe*l!&WIPSd+NN~qFP#szT*>=MZp2a zdH-6O18*WZPmhN8G@vHCTMlUgnGgBT8e3JBBi3_$LCoUfH4BSkC(p(Tn=xsN&Qez=N{2V9Mqk)Hw06{#_ zI=jA%JI10JoL!f7n!fgS(8LWWJe_~PN0vi?PQJF|CEOt=>+}m%cZ=FUpOD?&L-$!` zuNm8H$9qn!(lIjpW81K<-KRsLQy+m$1Q(DsB(__@o9%LkJzpH5Ha?BSK)L(ecI)y+ zR%yExKx|voReU@?mCLJL{zdJa`+7L@0R7ymM$=J)5YR{79#jcJjlrQ{O$-RxJbW9kQ!v@L?zHj`gxx@be4NKXYYe< z*)YtSy=I{zDNg+gSSAI$N_e0X~e*QdSjfqHf3 zhco!2iJ8}WSt;v_*8Ts8d>ppNhu?_<;t2>${sqQBi5ItC6&qT=EdWFY32T55-#5#W zDK?yh)Ch=Qp8ERx<91uT^mZDc4h0(z08#(2;eZ`rx{8Rvnf@II`A19?gwr0b{Ue?c zbZ!5#f`S+XzKwf53AbYc*NoNw-3=;L_xHB{r;A-&CQNXvLiTm4igj{NHHQ2Nb zz*ze>at954)Oy!PUbB(2{{2{WFKkODjr#+L49$myZC& z0!2&z7u-HMHg^4=sSN+{i=ZtMZu_jf9C^)iF4EIQ#`{O^MU!;*LwI~uN#m;0`wOf} zQaKx0AB`zv!uD@C5|JZQEc}vbRgA@L-AW~tZ2S(K#o#U*zs3_D8Vtp=K$&%zcN_fw!0oTBngy`@7fo^z<~Rf+An|bl9h*DO&r|l`kT> z()y$WUXh^P%!e+G+xH{?DB@VgmzIN6&=$qH0_xYvDl9u7sr_|_%+J0cat3HC|AzrB zZ`Y5~|2~GGEoiVD{rR(4;O|fnw0%MQLNG&rR*?Mj;gZmy`DfnwH+dt_+JdI0U-Mo5 z2{c0c@8hyMJ!upWgik35mwbY-21ISpGC&c0=%xO+?3x9gbPxvC zZh2QPNBEW}@4@A6(LBt8`nnI3R5Dtt0=4XLiU#*mEcU1$o|HbCVc4E%**xtU47I2F z=VNd?8+mH%wc1X6X3|D|aOel<*h`-`GzBXa6i{BM4ZGbqyhoY%=^p=a3DT4t9L5q*wJA&s|xb+M_7zV4lEbM>D z{_M$OgoIs%ap2E)phkjinoFzOYr=vNIt4jUdpKxqzUKUZX5fz}9pE=F{%mH?*vP}~ z-eNiAfu@JFYcK9>4-A?*@d9dc_PyrP<@Uaw&!V1bXiNY7tesYef&xM7%A&de>3+}0 z_eExH9%$+?>3~!1o*r=4Z%p!}9PIOnnJ%1m2Ij#xvpnR^83PSIEr9A!iL-d3*}^rl|oa z6yV<~f;!2$7kjjjEU7id7Moao&7BD0vDG_vJp(xelUsu=lCKWTcDck%A_Aq=;LE#t z!^1rQ$W09hKqa?KodO&SKh$o9Cg`ClHE~V*ot6%Q+l%y_w>Pw*|LU4@Wa4Yrlq+0a zNcn<=go5#YfLrjr?ALFCkWBeLhyPPYl)t|=^pU4x={a}u?p|nic0Rg+0I?hk9ndH4 z$jQBv{l(pOCAq?|f;2~-^wDKR^p6pP{g((Go(Z*k10h!X@-Hb5nNs>3e(z3zgJ z7dAfHqLq>c_lvG%+~4`H6Lh1>eO8Kh`oR?M6Pgxp!D{YI`VDWtN{Q}CNtfUE`Zu94 z&qde(n0-E|FB4xCsI&Qp#(qttc6F_K+3%75K@cAw|3)*(o#1S2zt`Et1sM->nP#^e zDj?Wwte60KJxyEe&w~zR=VkO!`@^HwK?FjeiK6L*NW+$Q(`wPJ zEqs>%g7q01*2cn8wT&wvZk&~B*Iu&$Gx;KYK`bJPDZr-$7Xx0PUHPoFcmc#=RUigd zdym-dtdjaR9-MDH zSwT9dysRwSC*!eX-F;TLV&Fp|y5m#g!kpc{Z>95(y>6=s2mm`ql<42>D>=R=^T@Vm zx}XkB20QyGqqOnYL)M80-bQcLZh+#92S6Aou&4N9v7t-rdg5Yd;klJd?8@;Z%NX9DU`JL8%6n|RND|1b+o+J$#c?r?RZP+mz! zS>tChpe0Clx&-3XL|xKkP6`N7x-ky)!!o1qRzoZLPkUph6v)z8H8?R*lDc(!BG9T3u`a>fO;^{T=vWbF)g7tz|LI&ayd7VRF*(JuLVf? zyS$yPWmu4f{ci>`bi5@UF_zodma)9+q(Nuc8L@CcT-G^WupiKX2`5BHmzM z>+x8E;pe#+%UXA|!!}tj*-Q_DuX1g}Tmwk|`j-g&pmQ=CoSkM*71#eX33{(RI{nBJ zpZVjOo~I{M5kGay#+OZ&Z>I2sJG|%p z=lZO+F!zSXd&eG{tDAb0zc($&E3I{hzx=pktTsL_(pQQH0*vQT-5!@f{e0O&1B;#B zS+2`TR6a@1?hrm;)IKeTpZiesACFZ`zm4_S{>jfEQ3M@84Zfv_2PrXTWoQs6jQdid z_exIH*DkVXsN%ID(*&P8TFF#=7YY=u83O|wUpa36gJJ!O1=#ne?J2PHiRU#;Lx4N` zFDM9DH=8_v7G6Dh5)161$6Ft~OS&00#U=`TpP2Q;u{14@!EOc*2>SV<7eni|*k}F3 zIMBWRBWRX^rU!0sEh#gVdJ)Sy`b-g|;){-dAHf0&bfMAJxXt;*v9gFjgy)yfZ$%++ zc6A9!4(|wbs9h&0{Cx}P5{DJFy5ht~X;2BUNbjA2ZC@rU#+J(P$N7Ce5`n&D`vjR9 z$pj&J(fk8&-sy3-t;!Pr7b*JJJ|1h*q8tPP5!dZdIe+ld4B1E0uRQ7CjYth%lkWl&+soG=wF-fw);x8;7=Hj*=Z~BM)mBFbZ58S5czm)X<=w|!9 zgG}zti-Y&?iy&+MuVygcWLWC{j$jv{8v>|?XEk1=@o(rYBx0IwOBZN6UNQM`EI~6@ zPO!DTxl?&1XYuG?A_g3jKOOW4C%nqn67#Q#z$&1_qp?R7BV#|kbU(JEqXqj$ zTsc)sX!`utF~x*!L=E^AAO32S$?J^RGUe~vwLDUMRwWI`(i#Ejce(TF)6qO)z8^|b*~|K?UC+_AG*V4y2Fz<#V!`XUJH)k(E=IwU#x1H z5ic4sAieeWeb-OGr~ZF%|2>xRh_7hTy+=D6crPW{2ODz+ywEp>$3MD>uO#P*wm4Yb zd>Oc3%llokm+Q87Tj`7aLB~3y3^p212jqszER6}&m?G{je z0UTEk7YJ@J&Hn1SMo(6uaUFL)dEsPAD*K#DK~v4YUC6cvhXHrfmwbFr!~Rg@bG-!` zrs>V^E149CAh7#2QwpmW!J)8b6)(N9bL?K&_+VlK>;BZV!3X36)+X{&9W&BrEv+GR zj1+Y6XrXa4qCj3&=Fxh0{U1a(zU!}8@{xp-r}>YE!-jBYiwBGbUbovd6ICo*hGn+X zG)S2t#}4D&L<0r7EzDw0E=#5;e>isj!PzAd>*)}&W7($)u%~D`@mX{MTv8RhtQr7>?Qz8->+BCN(Oz+L9+?=EVzcJ|E$lu6lk z9fab(P5hOtJ9l>}_WF`V!gN34T(5SH>cw{;GI8Ji`?u}dWAARzAXb}=55px7swLuC(wdjhC9D~n@z5@2^S%y+Mzyx#=JTrz1d`lUFeRCeLbolEl=>BNGb z4$Z_vml?l%F?_Wge!!PIcZS!7f*!ALZ1X{ODJQ^hRZacOO3?9U;#nP?wRD;=%+O#9HPR1iMO5waqOeaZx-I--lYW&5#BW}G~jUXNmU zJgfiu7Y?pzn4gNoS>N=*au|ecr~N07Kmfp@J|EB(cQ`z^Z+{%r>-J*0VS7Nib``0h z5#nHnkV2>~LFKZtTbH3vQ&sD|d%y}j-P+D3E?B7MN!J7swh(5u;*ZxYGw2aHF)-RM zst|eTmL3PmV&S|pPZMAQJsAmITID>KK3Q;M+q0@~wVvrSgo*c- zlT2;@Y4en@E7l%@#a)tgyM5OZE`4@sSYV z1>EJ9#&|g`RCEjBE}8=(Y=$-A`4bO8s;RRFK_~r`m%tJMW_B_NK(9&DIb}HnuXPaN zATuDaf^=6Eist+^tEP`xN}XlLOtudK%Jy7DRGeQXtXz{GIob0#0&n<9V(o$QfvZ)p z=V(=WpWhBz{j6+IQv4QNwq?T1+M2-tbbH&LZc$4kwoLHm+JqWAGC++k#U58&aHG0? zqFVxx2;jFM>Su-)>~2r{EMhNXvtRQjtpKJTibUl@tQG)TV|f0h8@GZq2bs|CXT^4vmgtB5S$$O63^;lRH(;^ zZjQ}oa5?$nh4h&V(G$jn<%J#uLuq_m^I>{Oj#oG7)hjW?B}!Ec5qja}W8n1?$T#es6_ zny|rJqS;A-Ss}_AOqS`7%Xln=mjRMC2zg$v!_qaq=0V_Un#9c)PX_g*JgaJab{f+m zlukao$(NTf0C;6dl&V)Ne^tj&v)8SOZ>L8lEBvxQDt$_sP5KlKc+Xy>i4Q-?fa6Pg z6-~_g&7+bgks{?!Kd%}ttr<*ns}o&SSi;;%jXDN=f7=7gOZ0HXKQQonk3`$)je9qI zdG0(gNeU`G!=GLX0~O1s0TV3%`%R$^4BtY@fFf=8a|bHR=NEk)E437G%Kr=|8dw_} zfp`BcX#H>`odue+wd#*O$-t0PuXf;?qsx)|tXn~X(f|6LW8E#>;s5<}$O;Fl<9{Dp zk^=W>`*7HQk83-|+SBC*0BI-g)pS5FnY{1im)dBc0@Yry1#CoNYsL3a*ct7vf9+kZ(4om9{>f9Jq4(UW|M zNb1fi6^wLCz8aH#_p`pFh^Jz?^d!lbym`OvMl5jfa}+2ci0 zna$RcOWAs((f$_Rjw$dIFx0*J<3f=p=TV0Eoq=G<93o^(OI!U_j8KF0v+*0K#`dI-O5#o%S^xXhT}hm zJTfQo*%+;|-l$sfW&M{nXL6Fx=ebC|N3y6AzVn`J5lKSj=4zm6Jwrled-mn$k5;yAFEmy^-%2O5`@YgAP9=Ru zri3KV{a{y`?$|m1FJS{SR0i`!Kgxsf3+w)v!*0cHVmp?7*<)@7u+UB~2@0DFGK8hF z2QH{;aqqTU+V|~IWqVXgr&n||C0~tNpl>0c)qpitj6Vr`duy36Svx_2m9g@{lr9nI zmcE29N(=UsN@{8d;-x2ipTI-m*b=0>0*~Q`Q&X{HZ!a}P7%x0jX!LophCQc%2AgJv z{_!(1km!XR81Yqq3{dbb4&~(^&wO|y@tWX^Z0{{@?F-#wY|Nc_Q&nSW6I&C74RZ(; zoG&kc{$D~N%;G}dkzzkL9tZttki4o(b*Gx1L5_q_sULHw+#PEnDH`?reeP$|0!rr5 zu*tqBnz18bi&XBtBzKmYNcRu=Af@s{7t7}h>&bavb)mRCDEAa9&f^{b_^0tqAAU&B z3)VDW*l}gmDv1rp@7l?hZu#}iWap~ma)*;v?%SuC`9$f5-?n~l`sUu=orkqUu$4Xg!)aH<}c<1)qT zAr>UW&rPR>%Nt!CkM8VT=qzq@f-iY|K+?(K<|swH82 zbE~4`_C8zakbpHvRjzIZx=_ zopY^t;2={dPCgeOIDHOQU;n;kZk`#kRat8)Xdpk#s;*#RrSYLGeKv*wE0QmcIKemk za#DXGI>S~hX7#_)F+&W{8k2Y{W$7s?=-`&`qFLLLQy7v1%0)FuM$AS!wZO?9JFl?L z9pM7lvxI}_gZGOtbIJW_{@dLIQ=Q&Zk^`B=WZt|*K@|_%wsa@TY+IrCJ=TiDFCtiL zv(mQEm19lzlZJEJZP3k^2w~*uH<|-yxEq1+~ ze3T&*uN*4%F-rameIq@=z_7S+oQu`(Z_G(RecB^iB){TD{@-h)inqUnV?P`->K3lC zbVFD$&2UegqLaO*WmMZouOlaWWnJF$Tw{ZUu?r6Lt@J4R93`q%U8+lYp53j1G)h-g z_Lz<4=HF(yBAPlR)Xf?*@}lGJ$xat-GcwAE_>x9>5gpeZPje3a^-9ru)QS}i#}E=L z%#I^Gx3gZ+!bW$IN9Ft5_3P_4Q}UWFv!f?eGOk{Z{b25i>dSTp50(g(q7Teakd1EV z`l}n&JDu2d-uTUQ@1R#?7Bz}h=Hk9pmAGfFAqrHd)*qd>5LA5-KfRueudrhOZ z=DM>G!S6|8X=E&cc_){eEBx3lI~nEB-=Q&XXy-vhQ!Bs_8zz!l{Ohado(9K;c!+{; zb9(qPE;o`XgvOMr9~XK8Km1O}755@9>(8WQSP`(F2WHRnhURB#ZyDZQLNAJRjML7+ zZ`RP(uXuA|2N+$p5?<>*$_{}O^b4l3O)lRrhLZOr(K?-@6ZR?vd*ljygUc7qDb6;A zUAdAn&fPKnQZK#T&~kYZyfT-E=a@Ozis2~hVOpKVe7dWEA1kmu2WKy~472gxL|6eS zu|{F|LgZ)pnHr-H{L+G|k%|WOC9wb>&@!1u_-w5=_=!6m1R8A5l~b7w1E&#%LQPv} z$DG*y*Vry0a83+%FqO_(&y5(WV{#TX_DkUhge?smr7AMV^}GeEV1ALNz~AC$*dn{5 z8YPYPBc8Gk)4_~>zz~`d#$SeywozJiHA%$lzDws8-o8;=xL!A(R3T2R<(sm@Om;ms z?vUazjBmA2hJu3KEzX-XdBf7td_|KH%ARRlt7aXC;f9|1@#Rdl*-1rZFtAS>z}9+V z`yREbEjE%R6`>qqjG|HqcP8eKd@7V%C_3odB-=OkLRxhQ^?pH70ednepqKJ8(>`*G z29~LYb0q6M`?$F}_6x!K3PgHfKP;DB9dPQDD6Nv?EHPkd2Q|BKw-a#z5maZ58 z??*Yg!dI+t{Ckyc5y-4F+vp6%5@%1KCRQNsfNk(NlGbu~BOPd{8bxy;D;HG%e7A?R ze#~(MPLJs*cxdCj=D#1-Nhh{sppF+_Ds&9|_ou$=CN|Q)TS5C7tmd9AMQOk9#5=C6 zf+Q0Eq%2*=DM=wCtP4=h?3Xqb0fHE zkF2b{srh->ii6;j>nj&Bwvlr%k_P)RtO|Bcvs(U~WbGl@{cyT{lL)goC2bt9AkT02 zi5xM^FDC|;b8~cR_WFc*S(KCUrAnVjqiTfgQzU`!6_-{4$0hKi-(;f+GsO)fbX!-s z{N&Gq+~|{vVhSaP)Q__7DGl}))@Fkhc(d(;d82bd>_feo$0aP^T$femU|WwOgBuIH zI^qWCIkdj^s)e3MZHal-y*a}O2i<)n-~NsPUmK>l=aix~GK`~6-^??wfu1t;{uNJA z$h^tDXN@V~a(Zq-vvk0^IrI>Q`KESO{B#ziDDM&u-fi`&Z>NlGK%S)+|Dx{v(AjYz zce=IoZP(#?o_yshM}!NWneB@u?{6#yKd*GgLj3w~1_;tNwds)1*ZNx(#DcjXd+`pR z-ijg-b|^j)dd}fG-K2SAhy8hl-We;`o8~tnr+=~B=2IsVUtTYh5K9XKa+6gkSBX5w zV`@)Id&;Nv3tP%_!3nyvPj8I7blpHavT40#t??J+WW6ehx(j8pLfj^8bWWbNu^fvY z)HzL$Olcq9)M6=~oyJ-W7*Dr*)z?bf2NjVt1^h{GmnDagEZ=C$=!AP5b`>L~T`yPu zfph9?iaJgbPa}$R_lcDop!WekQ&cycwMBmZsN$V{&>GmbPiaqL*;rlS=TgO=*mfCR z7w)l&^vM;rVI+D1(uzGlUY;E!;?Ucyt&No=*ok!_28Wd1&nYM$zo1Zr0R`h9`Nu7A z!yOa^j(&82-yhI4C>R;XiXmM~ti1MWmzGHm6@Q>acz_Z_W(bg1u*O|-HY3dwSvK19`w++x&81G z%=w7k^`Z-o2!)+mbcVeY9Vc2cn(WNZE7|>Uw`9bJp(}T|OUo>h~e>SY+RXA;H zi*j@7mzo4>i+Kav=u609%ky7MEx6?_?NyOW&cuR`3JHS=Nk9o4)P-cvNS0Y7j7_o1 zTQzI8VL)4cer89flt$6|SosM;K8!H?;{C*W6&jHNpQLuuoZj@ulnEflwMNP-Moto zaZ$nksV?BE8z+K4@fKd^q_T8yCd8Xt1 z&5oS$LI$e&mMe7gKi*s8#3jLdUe7RbSWHw)^Iw#jG-QXOdpr_!vVrZkv#dkj`_q1C zhE}O8KkJq@o?HXO(NLN^7J0YF+kAUO1s+CQJ<2>1GCs8aO&@0L~i zpR>!5&N}yhyy88|`)~r-K!g27d&{Y{g72jA^ z#ecjk9FE7%MJbv?+UJEwccL$D?o!Ph(1Dr8BPZYK{#~g!pp?mj* zvLxF;;3#>_qS~N_*Pzy?z~)0I!R4#a#=t1ykr{!VyU5uv#UkVtOfUkv1@!p^#ve@AKMji^BF&31 zV{Rl1<0anH1qa4hP|e*?7B&6xn5EDs*_ag>0L;ZPPV6@S6LVE|;C#?uxP7!eb2zL^ z&5X<##w@wMKQ)8BEILXZbf$cP?ygjdG5@P zNn`%DWDuB6;I?4H9D6E8a+Xq8lL*s`V+Z*kU2>_;lc7FBE8Y-FP9=6G7P@5A64^lN z*IVRv^h;GK+ld5hvrj*vKvj@M}@-z1GYAt`K?Y20w>eukWcO_Li=5MCp8$s2dj^mh-* zpVq6BTo*~t4CD84VeAm})^nVy7n0{`Y7^7~5*dx<8`~9TU+?3`3T@9ha?*z+B*#-x z#}r&RkQJD~80eh|rUH*fF6>&5)QkM-@Gas+nE0{FK)a+Ne%X5XW2bU=;mKBCB6=kU z{H(M$k_#9S6_8zBjRtm%@XkllM@s(fx$^P*PE7^_-Zb$eWsbZ~T0Bk>UKvIGrN}TH z#LJi5V&B)5)p1V74>$?F1)^ZTiu1Bzr-rQr58)KNx+ca-A6V;$<>2U_!e z_TtCgNb|;Ng=ljswX?9|E*4|GE0kPTFRA#F?M2ne4fieVwSUj65YdtPY8mC6#evj# z14B(LzO2Ylv^FGiYQ|HRJhk^7Y5E(9XiK0u-{!Iv`IBn(G@lrj-ZLt5T6C`YdXkLk zrc+g6=Piy6M)cMR=gI*g!;YGWp5q7#yvv*ThP&*YZ3>;vsu*i1doPI4bvh=hV8?Zn z*u1)2khbC*93EP9D-`VVsg=@aaPs8mSSR7Wo1sisq*H%zi~ZP=5ed&TtV6%*t8=at znVrYU&#_c}rw^4F)^{`U;B0-I+&5Q;IsT-Ol#~ChV!+&E1xqXt#2V~pu}-a0eGJbO zk~0D}T}W~gEUqTnC|2*GoWXrw5)K=6?wTI=JESc|yx#mgwr{SCDz`)b8S0ow2~TD3 zDU=-PWIV5*YH?b!cMe4;P-nAYp$FHA-;mCj5IV?ni}dCwUuK9CGM{;3psgZ)(ZN|j z69;>Ho-dSFwh^Sy3Xy$2QAIToJiW1?r4>6+1TyL1bNRG(#y4ut-Cxla{fee$G#D>6 zX(N!#yF0d;od-XWwe0Y6rqs!>cfrg(IGARPt^%jS`L^q9b*G` z22S%1swZ2_CTc5C@^Dji{!`?}&G0@(P!KtCLs|xZmS$APbB%6#D>0o;vMuAuY1ri? zCJ?hLoUw!ur@~G2sEDwIV6jUA-!}TmUQ`xe1uqs(n_VCY>)YETNtlx&|EMp{ShbpO z5A4N_bmhY?ey!M`pE~2VJO4Bwb%#y#IOgHGIMJR5FOHH?@T)We3wI9pT>cc1HlqM< zA6{dlqh9%9F;x|&ryf4ovs%&R{#NDRob!X7H5zMHkAbb?uX1K6AoQ#kbGOSMN@9i> zDPZ8vU;5Swko!LN0n;*Rk|itY z@-RJ&+s2JkR&8AxgtvT@Dvw}m*evDb5fe=EnMNZ6oaaeSArUO8ROMu2a5j74o{H0t zqJ56RP*tSijDh%RIZVi6!vlexXExOcM(oupP-_uKYhSYW8V$Ilb}pnx!ZcXc2;7;_y;tN) zL`6RTnq0TzOJRJtcn7)L)mZ>+OwF>++x@FMrD)0#;6Rj3)58B9qk(ZskeTs*0(|L^gH#uTUFcL}*v|l%l->EG$U?X6_Qz&=Wan3wDZL{< zPfMit=fX~?#s6(?JZct3v+RZoX+jauwl*T_PmnP4<_~>q<+uvA1#QW6i#&CBF4JRi z*=+lB7(vm|ofWF}pWj<7&gf($#Ty5)-bCk0eQQhn;Zpwb4H;#(uU_Y0w#Gj{|F?PL zO3;4tjU3*Cos>`Y?s`Pc-ivc43{y*Gy&6h$)$*v`AKN@80iRT!7@NFe1#0WE!CX{= z`I5hyl^dqd!>*52PA;a19)seRDRG9%iW_N1mhIv9ytn0H zA^mqI2Td|gvRJ4!HeoO|$8;-0!BT11QGeml6)WJ7PYzjPw~%QeU6o!7k#VM1a!;l5 zGS{>fj~2?PtX%Q<=JF+p-A42AG^W~tm&c$hA8?W!|O#GU1y^L7;4JhlI8 z#Q3wj@T7fs$>OpaH^IxFBy;Z(6ywv41qoiYy$h2`g{i5v0@Y0l{e$q{loXwuY;za0 zJUeY4jgFQy!Mk4+Gv)rilj*U1JRVAKEgf-Dk(3Z-%l6KO15NXLIu^yg%>J$})C8gzF{AlF-0=&b7&Do>8sm}GTzb*ba-6qPUO8H?uJ zNPVm_x>Bq#*{SA`;oKdz-AzFqb>wq88$R{E z6g6uzBmGLWi_Uyz4l`Gj5e>?9E5F8yKESg1>x37G!X~Yf*@3|x8WF{+;!e2Xa=~7+ z#}#F3X!(gtC$&za(G;p|rsr5wun}o@I-D18d?x4v%;EI`AKIt$;*E>H0s&aYVlSi| z>$u|MW8SDqoZX@9-1TDA`sp>1pNUrjLqyy)HiEpgw}e7hm0%wSNiuf) zeRX>ctq+1|$I(RsOxvSJHfX14ocyFz3#>XzYl!TRBw)^q>=kyTlf=J<+hvM8C5`v> zg^`{5T22YJE?WQn{LNbQIv|KBTZE*Vs$I5h24nR!sajovAMqt`8eQ$;62BGR7(QJT zw4UDFoJRN%bzMQq;L>YqJ+Fd2EWqlA&$^yKV-T=Q6=cpZ(e)T8;ZE_7fPIgx7LiB` zY1}urBy;Pc60)=?FQZHL4hfzeH@`jj-Oj&6#&RE=?$~~Jb&{&MLydMWhJbPhBWbkH zp3D&1t)FfbhX(B`<|~(m%ShM&4O?_TV=+78iyszaQ5eGpp1Y#)&_tn~+Y&1%w$Lc3 zyEuW9@VcHwV>xe|KPvQ-arjHn={rwc7@-j_-l7?O=vp7eVzDMiTg$WUUCt*SYDvr3 z9rnfFYc|Xzmp8XCCdh4f_WMH6R#Cx!1g9FBT}+x;o!>!VQ?sv1V$hX{vj z;jw2)pqw?Mg*mU;MXMoJW@k6fbts1a4%u7F8sU?-R4LGN1k^Ev3!lq8$eDOF>&shb zO=)q7SRA6LTW<=NPwp}}q?fH0Ix~UaGge~q*_pT$SDjarm>V{*QgW13d;A9wOxf(_ z>KYVc4IhA2acAWi!wcJVh{=>q7meThF1k`fn{ERVc$>MRo*C`A9qFRK8KmdgcPE~46Qz9Tl>p1mQD%;wnzf=>(mNhnEau1%dQ}hUZxDU zk#L&P^DbUA%e`vcRyU25N(5LJl2zbM)GL zENp*%+Mx4$ZUiI4c-DMj&1ob-STN-unKli~fGzM5%5zy+|JoS0S#{n9m!^=;PV5K5 zKosm~zMYjQ-{@Z(KL(CO$FWrf%RCrFF}4lYuC~GgYKnVVrxZS(6J+O3Nn4%3RgHV56Togb^%j6>vv4w0F8q&C^Of z?7}b*xi&3IlbN+esHWlkXJr8Tp|_J8{DS(@re$=DC2_5hzot`rFkNi9X}aJQfn8Zh zuNvCm=}%yqXuu zC48nx&C+8N~c^D+$*cL-s(3+Sx*q3o?T=Kg}#jWqh zgJ&aL);b`NAtN6T`td1Qxj20dZA!?FnyX!Poga++CY~-(=d{xErcvQUD2({k)QRg! z18lF0SI&_x9=#GtBQi(1OKV^`vewNOn^dfQ1 zg}}*3)ZJ^D%5_iH^}6Q#C_OcGw`Kan-G<#oyRA*Ft&)<{Qw_8&(>3#b&rGLi28Jjc zZKHR#`wh+4?Q4N+6pVgs2s~3zRvgKI_1n*3L^Z{cbeu4sqqWaYWC1s#{2t9JAqLx} z*BK3e+0^#_V)$ru9P5t$UNW9qnN5J&jT>8EL6Dr|PM?3~NzZ8ZwdT7+z&HXqlgO z$&gx^o?@s{*zG?yrtLY+@oGsO=M?&9V0RRb=P~LUSklf+yz_*^9G_~$dlwam3zXBz z@brDv5Inq8H@BH8oyVzCW$)^@55rRI`n{|9)k7uMuUtx?cr9{s+e%}%WQ-rK$OR7K*@n$vZtMaWqHL)=~M(LM-V5-X4T%2d_)Y*PGw%--e{ z(sqfV)o-Liqbj!TsNPzek)AZnw~;5=DP8wCE*FNfGdZ9hHX!wuF&rfIMpdIqIgEOj zDLp`({s|ivCX_upIV&YV$~R5lZuT|G~fn~4hP8P@#f84LiT2qRNSreb25*&EA*dv zSi#%nHTbNqlW$v1Za_OHiV;I45tJ;R|Gu!R8&r)bHZ5BdX~dB#7yF5 ze!)4U2l?}58l*?Gv2Smx|88J1dpz!>LXnY36y9-p{RxMby2_M+O+5+ zFSrWIbaDf2Jbg8?kZf8QWWL&18^dwRk)-lF52)u8tl+~Yll84SkWLAV=ztEf7iTZ);0FgzQgE1|~kJy&IL0d!U1IF}aG{pzySsX6hsx*T%8psKcAQ zhl87^XXPkvI>E8yaZUp>-qwQ#g;kfGZ_iFYsMZRxujTiY1?M}Js~3X$m>@?DBTzUx zABgDzr4zr{`}_MB+6%qiwv0z`I@67fIMwBM#v`2No7*Z^8h#%V`t}NI zn$wfkT{aWy;Ve&R_8tn}l^j$*=KD4jvA@wD%E)CvL7aRZUc)k;2pYZ&X2g7dps3K33y${bC`iC53#3dj-u4NOwpik zkzv1J{wID;J7vkQYPe-)fwONjd}NriBi&zgoMZvWdS2e`(>)RD`Q{7=8Kz+ev%R`r z={Y?^F6G4#>IWVL#gM(->@jkMx&c8E-j9J) zsUh}pX0N#K40UY$mmv%p9VJd5I!BS2d9);4Ju`51CV2+|yA!K!Y!G;CYhXL=ZqFQ) zX7SbhQ9X_*WcngMp3-%7djBz^Ps%&0uPvAw{GM+RRn1t>9qpV^lWMgez2OXhmQ4%n z-#mPFYB-o&Fx}!bmIiO~M--gxydb(_T~xiXl%X6{q!fxOh;Qj^dpLk*PUF5*8rqK< zI8oB<$$>um!unjZ3WEng>tCrc9n`|$5g#yh{s-!L1Lrj~#c77XO3#6urv#b^a+sc? zZIAdD@%q@0I=>iJ59|85%=9?S@U`U5`Zu}u1&NP#Dw@g9f20JU4Z46w(LOVvx3>mM z3kQw(L}eyRL3Yf8g@(u_Bh(aC0T%Y#7D~o}!G2%%a2LIPwCI3xi;)WE$(TVIjx71^ zigBKURBse^-KW)m`MDvxT_LeIjop5{^Hhtyh*BPUX;;d%)BQchB3?iKNs|ME5HdV)=9}hPo&}1!!DOc zCY-cTW09(brivh`MAq1^?a_-GVOg~nrl}d*(7NcTl1dw;`So58OVvU>l$|Paq^D`w(8bNM|VUc8{xl zaO|iy{1fA7$a_wUhI-xnqlP_?%?=OHe1cHgYsY`A-gq_CYcBnL%W~vF1FcE(}GM#*qj50FMyOmeY4_d&Emy(b+_X5w zC^s@z3lb3rWPUn<_EupyHIkw#f_wjs4%M{TaMf<2cipf@nM$`-`_FA?A+Qc()2=#i zY8Gs4Vblg9?ay|)jCa`yJx>wzjmsO@)`sY-b-a1%<~p|WF|q}(hvxiKGkW}h{8ItP zB5+YSSOst4cq$qfISn32tvHbd1kLeWz zrIv@F*MMbpX0`B?@YWRs&1+D?h|F~ezpCl7d6UmfS3gk_(6YHuez>?Uf*5z*S@Ev7 zJ?6J*uhx=9$_vywJWT;BRP!35p+uxFbaJn$C(El_ zB7MggnaohHm`GTt*$nT98m~vkG9vx!Ig#`_Z@1FsNl#J5V(pC+f4QqGxq&I^l4>fqtKY}d6s)i zD=Zx}{N%7AW??NZdpZss`1_?+*&xIpVPSFUshXKpQHH3pjF7HiCs)DZ+_u@DeSBD6 zqc1!6rYn$O)49EWDe>*wEQ*8;-bf2+r$d@$__9&KH0E<_Kqnj70Pl~Y87;=s+n#G+ zO?`ZPyw0>w{eSI!X;f3$x-GY~j-K+^pjCy^r3y+Z+lchW5KAp68^9KnR*8c26_F-{ zB;~O~14-G?6QV^EQ6YxD35iM*rAtYdNNAJ*F@z992wh0HYg2WEGsYWd+;`r)cf22O z|KJBB$=GY{wZ3nDbIxz=S*@8<=A9Nhd7*_jOQky7Nm=>z6U#?P$*lW3G|g6aO`yp=cl5(N_?-WvbN=e)QkTq`la*qvV`~;M z{l0ff**9J@(x5RMX|lXT;EnJdYA@mefkT<`tH%O~@GIDr?DLYs@irygg;;^#7vtBN zG2YOS>&=~5!$j6M6qnh|nC*)GRPXGy7Wm>~?E>Q|x2C1Q9IMoO07yg9KcFzU5%bbH znfzW`epK(hE}^jM^9W|OV$s*vqjC8&4|bH=*e{y-!@=T&{r|_yWZhy;{ny2uJ6N%i z`Uwj+>5EAC)9$uR=U=YMVE_7w+}zyuZWdEJDtintw|mLsfb@MK;Mj5Z%JH0#nC7Hf zwb3JV^|6I9mRg|Iss7Y^qvheTfni|`;>D_4;h8ZrZ|xpTy4EVr;YO*}A-$e+zgrui z-uGIbpQL0vrCWEP4!{@vMwTybsq`Ukglf%SD!p=Bh7Ow!-z|%WskS^I$r3)1r#gip zw`97H&`S@;VZQg!|Btq|=#+|ZpI1ygsG5w>o|W|z(N1BXMZ542T7+5doOURx6`XX? z)>R^H1y$1th%px**hx_XPi>iX*M-9XRf;+tT5DgW%_!Ts6TVN6czS@^Df|hFfJvyM z?ROC;gilaY*XlxP%6-rwHY>AJEB+huLRzOu$_m8aCh&EcZ;W?ej=_@_Yyzf zgO=+=yK`eyd*?FIQ9u@+pgXx3SXp)3YLE;pmk>RWQu= z!K*r2)_9j)t+p@KfzcF8r7=m@Wp(J%#JK)M!A=c z49>Eapr%uYS1%2uA*wfBgL|{Sqiy|dhJ{^GX~?lJhjZF8F_5` zmTA(89k0dP>~BKED(7qd`j~Y>adWy4UV9DHJ^(gY5_1!Sy3JrVgf+WT7B-Oe8el@; z*QKPc$E-CyZ@+VPzwk>TsoZm(23WD|FNY62)4Wcpt)rRp2$ z^|?QizINLmtqCUu-R|kf_%QuC>SiHCa^5767whM$va7@EzT~=;)6wD>u{vJ)-5AYTHoXlSMRDrtPh8+Fk+4z& z#85W(r<5?msC_XLZ{JRrM5h(jaWU;G(K!9BS->% zEg6Y`FFIv(Z(R{z&XSIXB7`E6+a%)MyV!hPHHmm(jZ!G8@X)_*k+Nt+z@3C}$ZZ-s zoz4nkDH}Zu&VWc_vt>~_MF-QY@eamz>k!Y~7-u}@ey&+7oHvorYs=pVlLYL*QztU( zdfQTxcim#{j3TH1>c`7OJo@`cToLbJV=`m?NqHW80px&hthxX-0Q?d0|Le%@zab@W z^HtYS?12~e`r(GKu6X~}&HmKn&ajIG#N|3?>41>d`6ak>MBHX4_Db4O8GOF-+&HZb zKrrUh;{{t8)#jRyP2p|XuR#kA4yWu&C4(LZ#qY} zKm`uC#_xep2wfUTHw4#S6bLrZ^}Eae`yV+~%R7tnnD-@#}9 zs%j8sGOHsxhKr{f4BC_^?Wvf-mSt^0GMUQdO30>9Yxyk@?e zYn!kmhm+a&Ab$O ziwB08l9JLZ24)r^Gx3+}<6v~25$4D|KmZc2lvdab08qxb_8jccocVdiW&TuE+pj&S zyUz9z2Y`Z~PaIxl-aiuFnn$NmA%S2?IB+7wCS--`r+0Pjp38aOT>;OA0-h}D`3s4S zTl^7eXFhLIk4Hfl7Z+!P8uyTY{M12qHAeJg8ss<^=ghmrS3mnTixg~9(CKGq-#b&f z!NdE*weo8SL!fmJ3W^yr@E__KQNqi&RCjhJb#)fF6uHcvAq0P8h#7ZlQ{N!$bX53y zp#qO2>s06ax~ZQbCtq`KpREpP%Qa-09+z*cnVh-E&g2;rPHNBX8>yrO#lv)pi%;4& zia6oNRm+yvJth*m_2m99dnR)sNDR(U6H@c?^Q&Wgy2*UQ@jTuDZ-T9c9f6Qm%|v%q z42$aYshlX3eI?v49WIgN!DGwTcEj15mQ7yB3Og*#Z9bAmduaJtbnW})&zZvAzEfEg zWM&tFea$K|oWdHa9KW?>^+9na5tF9s&Irs%@anZ8v+bZng@6Buk$u7$v30u-+a%w; z<32m$Tt)P@1iwNFc$_=u%w4p23 z0dciCVjC?U^#;6!PxIWxHPVkiI!+i$ZD36;Z!4MPLaa*;u&)e0_r%Qsd^U!!Tb~-& zYVNwpUfX^wpEr__@bRCxHff*P3xU(Y0qXIwl`hl}*y!#k^N#U-@-aujyK@NDaGu zkq{bx{noFb!(q8ZF-ZS$sob!lbpu}-20IhpE4X8fV2dVYGAafS=%P?PWjk;)6wWTW z8m9vC>d)+L*a!ITujlpZI8R#YM|u9}vE!c&XKG?|ogaodMVxzZ7^89t=W zM|z<}DFYW1nT8!dh;>xop!g#-0I3| zl~QE@{F^tj1Xl=kiTrE`9cP7^S8j@o=kA&6*9WB|3AX-A{#RVeDF*O&HjtiyCRTxW z{H;9dTkqI&!=1kB)u7a~4vn=kI%#o<9w(z_1r!{D{1sN;vemCL|7qQRC3KrrWm;l* zbBA31W@pPVDdo*{o(Y%^nH&$gb|mh5{5!MN(o%~(kwM(i(cY$DIcVI1J8pO2)apH{ zZ~6EmDS1HjHKijn96Vpb_eW8t+RilY3V@(1u;>VGtn5{)Ndcdx20krCU18noznDA% zZ&P~cXQLUOy_!(oGJD~%!IrA2s7(ui3K%SWF3GkB^na{ry^rUl zBo8_CcAmgHZcXez0(S3v@1+8;Sty!yV0}c9`J;PL%BO#XWf8V^ATt!IK3JqGZDdGF zffwL<4gxD&4iuQ>ODRDW!^5cTww9@55stA<(G>WP`Ji*9TZFBP*x@O_Qm?1HHs-rs zQ!YIx5Zd*On;s|*)k?(KP4CKWCF9Fvd1uSSiXChUnE z)kDZgTpB(yvP>#`vyhPtJ_y(!ZEUiE$m#UI_NBy(W%(Qd&dYYr({B$vr+_mWum7eL z!yl0gH~S(GP*>oeyA||K`)rsyn^vwq7cl&T&tU`c_6EdTamFmkP?(%hVF4^S7)ixC zLWZ~W+zxEkhXBvRO&8%c+mtr*jfs#$Qs>oQwtzQWb==>CANXjgxJoe04OW>1D!a2 z(d6g~-FoIGEwP-ewiW(fceU0t6v?2T*lqts#piip_XWM}#k&D=xP0^4JHX=n1Xu%p zAM(SZVXa}}Ujw1`6e($ZeOs9uSoxcg=vqn}l=AskS0nF&f}*7Dvys*ucn%<%?rG7l zyd_dD0Z~$1+>XlOJ7nOU2`)u`%>``Q&`^S;sc6e29OSTN8rwd|pBK{0s?e_Ss$H#f zo8Rf}W*82_wzJr0ywMWd(B9trjgRNn1?aT5b|U|+Hxoa54L6TNM3J&ITghwc+Ihno z#JJG$lj?bw2Ir*;VpIAWU(?AyZQq_h&5q{mNA${B*hHe;&T}uTA)Le>Rp)Ddcn-9- zF+7wz*}Yx79WOP7$;q5iMWpq@hSW!v`T#uPUVIT#33kgswBZZe$S^%bg@=bncran$ z4QEitm_re3M;`|%r6z!e1tiqC1u>(bd@K!s*(8cl8Dm;AH^0qP+BJ7}kCJ)@e;lFO zi}EZlQ>vd-b&)tnoBE;#%zd2X1~V@L z!EvIGH*>hhY!aIJUnAN@X`*h728c+F#XrCQEw%+}9q1y3cLU54(9j+rS>cG^2%DQZ zmi0tl@^oPj28{~{LYe5&BQkTBE(`6CjX$-y|5EK_+$#kuy}r9O#3r_OP$jj=UV_4& zCiDU`)#DpVft9zRziQaZ?l@Q0Z+JbfR}PzaIBafu!zcRng`P+ytGEll!N z1AZcfEBcau%#gF*^u!2(^2VZsfAndbR0RTM`5L+6=5$FSbC=@k6|i!8o-i#D=?hCY z!B}Xzigu~%OaN!es+RYa;1>+&#PGUThN+|n##d$pVR##^#Mdkq!&)vWL9j@QoxsC% zG;McC47nY{n(67QnS7i9-xqDjC^zD10M9gl*3Pm>W6tWX6mL%tKKhg~#cPa)=uf!} zx$8>mWaUGEx>)`Jay_Y*{iTGr-4|!RZ&PGRS;;9AVp9aX09$iorB?wx_@5@x`+ziV z2m)<^A^8VBn(W{@tA@W%BZ?W+VY_)(O4G~@1ivo0N1TGY# z{cBWTI>n=Q?kJeh@Q|+a{s^7DVNhwfxAOxN=?8ioZwv7beo$t2C z7}zFg9`R2kPN3HnCfFAYk7ROjG@Gy=*tx!CY6cN^%IbM?;y*nzshFxajK-CJXdMl2 zmpV4pDsC_L83|>qRCvsM_6BfTVnm_o@BB<4M#-8cz<~;NuabGN=^W4}ec0*|=t#I} zN||<7&D?%tr%lV z*3lXs;(IDp9Tg*WrxSgbVRbvvX3-dy@4%62uq)7KAXzK6TcAr+8%3Rpstp5~Jcvvk zQ?P&qOJOgv*fUG=X?ci@EQWiQKjKO^8!Uu?(x_l~*7D|Rqr_cNqbnr8%#Fugij*O-hX-CXqF z|EfUn&jo1bt9g{69c%TSkGI!<_-UaGaUjbe+w`aMjRi5?cF!%!7s7kzqlI8<4`^)3 zm1QtzI&E5X8Nyw_6h9meQOm}J0cJ6HY3eW@lB)rkW(Ho8N(WZ=@o~^yE>y6};V6HH zK|3iw>{XfRJMJ_vOC4Xyf=W|hj;F`;L3Q9tgS02&bLvIq?atZ>;GP>@>upMg{aLv^ zs}xm7w?JY>RLvYPxJ#DQpn#Wv&KVNbD$~-pGGjrRax#okJ;>|eqN%`0V<;ghxiYA3 zwddzLQIFANj*F%sLH5x4k>h0_pxLf^MzNoWhSc{~K1CA=8ApH=vf9lQt1Be&n|z+_ z#7nO=*rxesrY1rK^~!n6L4tvgQ_b#|P%OJYf%@=!EE~*&*h^NTs|69YYUHv1q7gm4 z1KO?6!m!N|*qbp+<;w>^;_30L&^w1@?**qE0JB2DZtG3lX{7z#tJ6;C(AT=i{+afG zw(w{M()lUGn4|q}Q&mBoPxCpJrKSsuPapIg?@$3C_QL8n9CHbB-_+-Nb6b{8#mS?( z?d%gkF~c$`&;z0+>+_D&9xVHp(>7$pwb5j63vQ!T-^cJ%y zg0&004=B6#8gu%}F=+C~I`TMRz7Nu=iY&{Z&Jl1fJ2>pa76hMDQ8jLnugV70q+?c? zzA$1`#O}G5hr#h0dcr8EKYG5|MCTQ_RmTx62)8HwOS$f)!Pr&LbU8twbL|b%?=cXr z^|H=`@@8M|dUFeCAA#hQ(-=IJ?Bl(oRDNIqnSYTh$T3b!bER)QoD^BX zn5aM^zwVC!@HJusavhIRO)*-~@d{rU3O8gd4DH_}0}Edm3;B$`qeQ*=HtRnlk3)j& z3Al|Dyxs8a?yTa&m#ZNy7}8Gj^Ya7RhMMOYDbTf_dim{(Mfc=Dk%{E^onXU=)wj#F zkRXi4VPK0T%mhOrT+>`4;fl4pLb}@T%G0gX(~v?cT`P3#yAiVn9nUJGXrCpp^11GvT!ek@LLFxGfKIuj>a*tXCj zuN@Pl8tWn>pY-ATY69vSa)Dml1^N!t>laAdGg;h;xZ$#dDjN#`kgBoYHRW(BHqF^PMlD$>FVN3Mv&6cY9z(-NLRdlN9z~ zXEEqQ3FR=l+4+qj`p^Lwe-;D@`a-PelRN)k>iqxa0{M4s1?z-Wfr0MS`tDi!KfD#k zfv&4LA$Yy8Xr&>+K0xS&P+^;9^`86Cu)E8k;0xlPO)lh&oB)LV<*_{f95ecne1|s> z><$I87(oNM^IQz0e{wJK3sIF|`heTQcG)P969Q*s@&ah0rTGs|;r4uLb^>SM)6LOyDfYyH z`P(VIyfCN(ybcSbq2p3C!zv%TS7)~#ao!??p|!`1)!=V%FQd? zI;88qYkuINzTNNVvt$Em+i7;}kH%&e7lw=5d%dwC8RCXJ92Y1S#(FVpr;HZM;0ZF_ zdJ(@Ps52LYCRa4>fEYXoY9`jN^J~+K_+ZLjV~l-&1d9#2Wk+*q;{yZ66az%>oOFdF zeVK8rt=G>AM(fM#q}B{Oo|q2~3PW(6ep17tf2zz!yTvlIw2+3>f}HCgzw#c|!vFG) zeSKehFIfP4i1M}pk#jo5+;@}1K&@2F11~DIVgexar$u~kX+GeJVwj>mFC&4)aB8?C zF?ATo`6nWlP2K)V*8xYC1p#Ib2t$ue+G+?&RcT_Yu;!8#TJk zXh&R7kT^O`M4s~o0`*c&gWO{bOP*`FCAr_$(!iliuHgz#7MIHupCmWD`kM*f>pg$>kA<*ZsrhqN;Fzowc8+b@$+W`^}WqpyU~I5<)l-( zaTRB)@^|31xyy;O^m_nW;TialSi6938_)+whXAhOs~Uw_MvAlK{fdLDX9vzrTY;h& zbVTh2b*`Zp4XBp@%1&boVOTlli1ypP8Z6F0D2nl&Z7Sl~Cr6Fw@$1OY`6GV_VrRn8 zxOlQ1y4Iz#c69lG%AynWIJ$DHW+$TD=wh(q6MoZW&_Gi{ADQnE9~Sf^KIX6HL6C4c zATZ)3{Nl~B-WQ#L@?-IDE9;~tP2A}%%J*Bj6frkLB{1@-RY*FNu94OJ-cS&)cpfa; z@)4-zMkZqndW|b;t}j;u`arS&FInd!S1rT}&;j4~0j!RL5R5EnxdKgQ_+@ycYVkVQ zR66NA5>1&N=Tr2(HaLa<{!ju~&Bygok%kMuR6Ego>&-56V=)j|Q%4PLz6E_PZX-Ph z7sBNKaOeiks>$ovmm62U&$-apmgi5SrKNSYFVdcb<+!%jrY%lHcF4Z8J*qs*3teqV zry5ir`ZndzGNaDu6XjPS1wqT$rSsewvcKtocTVR!+w{Z+>01rKlTHn*UZK|ke@u|Z z=Nu3TAq^i~zYw4fcyK+Sfx$!92Qx5F&^2@L|9|9vb6)6ku+t%Tk7o6*4uWRz;E&D+ K3ih4-`+owfMliJi literal 0 HcmV?d00001 diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md index 338b456f..455a81c3 100644 --- a/docs/migrating_to_18.md +++ b/docs/migrating_to_18.md @@ -1,3 +1,23 @@ # Migrating to Bento v18 -TODO +## Before enabling minio + +Create new docker network, init dirs and init certs for Minio instance + +```bash +./bentoctl.bash init-certs -f +./bentoctl.bash init-dirs +./bentoctl.bash init-docker # new networks for minio +``` + +### The following parameters must be configure in `local.env` + +Enable minio by setting the feature flag in local.env + +```bash +BENTO_MINIO_ENABLED='true' +``` + +Also set root user and password in local.env: +BENTO_MINIO_ROOT_USER=root (default value, could be change) +BENTO_MINIO_ROOT_PASSWORD=secure-password diff --git a/docs/object-store.md b/docs/object-store.md new file mode 100644 index 00000000..6c80392c --- /dev/null +++ b/docs/object-store.md @@ -0,0 +1,15 @@ +# Bento object store + +![Minio service logs querying](./img/minio_object_store.png) + +## Configuration + +Enable minio by setting the feature flag in local.env + +```bash +BENTO_MINIO_ENABLED='true' +``` + +Also set root user and password in local.env: +BENTO_MINIO_ROOT_USER=root (default value, could be change) +BENTO_MINIO_ROOT_PASSWORD=secure-password \ No newline at end of file diff --git a/etc/bento.env b/etc/bento.env index 283467cf..877e1478 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -475,10 +475,10 @@ BENTO_PROMTAIL_CONTAINER_NAME=${BENTOV2_PREFIX}-promtail # Minio BENTO_MINIO_IMAGE=quay.io/minio/minio -BENTO_MINIO_IMAGE_VERSION=RELEASE.2024-11-07T00-52-20Z +BENTO_MINIO_IMAGE_VERSION=RELEASE.2024-12-13T22-19-12Z BENTO_MINIO_CONTAINER_NAME=${BENTOV2_PREFIX}-minio BENTO_MINIO_DATA_DIR=${BENTO_SLOW_DATA_DIR}/minio/data -BENTO_MINIO_NETWORK=${BENTOV2_PREFIX}-minio-NET +BENTO_MINIO_NETWORK=${BENTOV2_PREFIX}-minio-net BENTO_MINIO_ROOT_USER=root BENTO_MINIO_INTERNAL_PORT=9000 BENTO_MINIO_CONSOLE_PORT=9001 diff --git a/etc/bento_services.json b/etc/bento_services.json index 4f165f0c..6980180e 100644 --- a/etc/bento_services.json +++ b/etc/bento_services.json @@ -72,4 +72,4 @@ "gateway": { "repository": "git@github.com:bento-platform/bento_gateway.git" } -} \ No newline at end of file +} diff --git a/lib/gateway/public_services/minio.conf.tpl b/lib/gateway/public_services/minio.conf.tpl deleted file mode 100644 index 3a3a2c45..00000000 --- a/lib/gateway/public_services/minio.conf.tpl +++ /dev/null @@ -1,48 +0,0 @@ -# env: BENTO_MINIO_ENABLED -location /api/minio { return 302 https://${BENTOV2_DOMAIN}/api/minio/; } -location /api/minio/ { - # Reverse proxy settings - include /gateway/conf/proxy.conf; - include /gateway/conf/proxy_extra.conf; - - # proxy_set_header Connection ""; - proxy_connect_timeout 300; - chunked_transfer_encoding off; - - # Forward request to minio - rewrite ^ $request_uri; - rewrite ^/api/minio/(.*) /$1 break; - return 400; - - proxy_pass http://${BENTO_MINIO_CONTAINER_NAME}:${BENTO_MINIO_INTERNAL_PORT}$uri; - - # Errors - error_log /var/log/bentov2_minio_errors.log; -} - -location /api/minio-console { return 302 https://${BENTOV2_DOMAIN}/api/minio-console/; } -location /api/minio-console/ { - # Reverse proxy settings - include /gateway/conf/proxy.conf; - include /gateway/conf/proxy_extra.conf; - - real_ip_header X-Real-IP; - proxy_set_header X-NginX-Proxy true; - proxy_connect_timeout 300; - chunked_transfer_encoding off; - - # Forward request to minio-console - rewrite ^ $request_uri; - rewrite ^/api/minio-console/(.*) /$1 break; - proxy_pass http://${BENTO_MINIO_CONTAINER_NAME}:${BENTO_MINIO_CONSOLE_PORT}$uri; - - # Add sub_filter directives to rewrite base href - sub_filter ' Date: Wed, 18 Dec 2024 09:15:08 -0500 Subject: [PATCH 17/46] =fixed trailing whitespace --- py_bentoctl/other_helpers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/py_bentoctl/other_helpers.py b/py_bentoctl/other_helpers.py index c2feae5d..a4e7bb5f 100644 --- a/py_bentoctl/other_helpers.py +++ b/py_bentoctl/other_helpers.py @@ -232,7 +232,7 @@ def init_dirs(): # - cBioPortal **({"cbioportal": "BENTO_CBIOPORTAL_STUDY_DIR"} if c.BENTO_FEATURE_CBIOPORTAL.enabled else {}), # - minio - **({"minio": "BENTO_MINIO_DATA_DIR"} if c.BENTO_FEATURE_MINIO.enabled else {}), + **({"minio": "BENTO_MINIO_DATA_DIR"} if c.BENTO_FEATURE_MINIO.enabled else {}), # - Monitoring: Grafana/Loki **({"grafana": "BENTO_GRAFANA_LIB_DIR"} if c.BENTO_FEATURE_MONITORING else {}), **({"loki": "BENTO_LOKI_TEMP_DIR"} if c.BENTO_FEATURE_MONITORING else {}), From b0a1ee48b1601546c671c766e4f028bd8bf02971 Mon Sep 17 00:00:00 2001 From: mjdupont12 Date: Wed, 18 Dec 2024 09:18:50 -0500 Subject: [PATCH 18/46] =update docs --- docs/migrating_to_18.md | 19 ++++++++----------- docs/object-store.md | 8 ++++++++ 2 files changed, 16 insertions(+), 11 deletions(-) diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md index 455a81c3..4d38a8e4 100644 --- a/docs/migrating_to_18.md +++ b/docs/migrating_to_18.md @@ -1,21 +1,18 @@ # Migrating to Bento v18 -## Before enabling minio - -Create new docker network, init dirs and init certs for Minio instance +## Enabling minio +Enable minio by setting the feature flag in local.env ```bash -./bentoctl.bash init-certs -f -./bentoctl.bash init-dirs -./bentoctl.bash init-docker # new networks for minio +BENTO_MINIO_ENABLED='true' ``` -### The following parameters must be configure in `local.env` - -Enable minio by setting the feature flag in local.env - +After enabling the Minio feature flag for the first time, +you must initialize the Docker networks, mounted directories and certs. ```bash -BENTO_MINIO_ENABLED='true' +./bentoctl.bash init-certs -f +./bentoctl.bash init-docker # new network for minio +./bentoctl.bash init-dirs ``` Also set root user and password in local.env: diff --git a/docs/object-store.md b/docs/object-store.md index 6c80392c..85655080 100644 --- a/docs/object-store.md +++ b/docs/object-store.md @@ -10,6 +10,14 @@ Enable minio by setting the feature flag in local.env BENTO_MINIO_ENABLED='true' ``` +After enabling the Minio feature flag for the first time, +you must initialize the Docker networks, mounted directories and certs. +```bash +./bentoctl.bash init-certs -f +./bentoctl.bash init-docker # new network for minio +./bentoctl.bash init-dirs +``` + Also set root user and password in local.env: BENTO_MINIO_ROOT_USER=root (default value, could be change) BENTO_MINIO_ROOT_PASSWORD=secure-password \ No newline at end of file From c4cbe0c5b42792425da065027520b22fc60e4842 Mon Sep 17 00:00:00 2001 From: mjdupont12 Date: Fri, 20 Dec 2024 11:21:32 -0500 Subject: [PATCH 19/46] =change gateway version to edge --- etc/bento.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/bento.env b/etc/bento.env index 877e1478..17d12c1c 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -34,7 +34,7 @@ BENTOV2_GATEWAY_INTERNAL_CERTS_DIR=/usr/local/openresty/nginx/certs # Gateway BENTOV2_GATEWAY_IMAGE=ghcr.io/bento-platform/bento_gateway -BENTOV2_GATEWAY_VERSION=pr-21 +BENTOV2_GATEWAY_VERSION=edge BENTOV2_GATEWAY_VERSION_DEV=${BENTOV2_GATEWAY_VERSION}-dev BENTOV2_GATEWAY_CONTAINER_NAME=${BENTOV2_PREFIX}-gateway From fd4f9f9232322ff61e493390bfdb0d695c9289a3 Mon Sep 17 00:00:00 2001 From: mjdupont12 Date: Fri, 20 Dec 2024 11:53:43 -0500 Subject: [PATCH 20/46] =code review fixes --- docs/migrating_to_18.md | 13 +++++++------ docs/object-store.md | 14 ++++++++------ etc/bento.env | 2 +- etc/bento_deploy.env | 4 ++-- etc/bento_dev.env | 4 ++-- etc/default_config.env | 4 ++-- py_bentoctl/other_helpers.py | 4 ++-- 7 files changed, 24 insertions(+), 21 deletions(-) diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md index ecb6fee8..749290fc 100644 --- a/docs/migrating_to_18.md +++ b/docs/migrating_to_18.md @@ -19,25 +19,26 @@ TODO above location, or copy `branding.png` to `branding.lightbg.png` -## 3. Enabling minio +## 3. Enabling MinIO -Enable minio by setting the feature flag in local.env +Enable MinIO by setting the feature flag in local.env ```bash BENTO_MINIO_ENABLED='true' ``` -After enabling the Minio feature flag for the first time, +After enabling the MinIO feature flag for the first time, you must initialize the Docker networks, mounted directories and certs. ```bash ./bentoctl.bash init-certs -f -./bentoctl.bash init-docker # new network for minio +./bentoctl.bash init-docker # new network for MinIO ./bentoctl.bash init-dirs ``` Also set root user and password in local.env: -BENTO_MINIO_ROOT_USER=root (default value, could be change) +```bash +BENTO_MINIO_ROOT_USER=root # (default value, could be change) BENTO_MINIO_ROOT_PASSWORD=secure-password - +``` TODO diff --git a/docs/object-store.md b/docs/object-store.md index 85655080..1b0a6d7a 100644 --- a/docs/object-store.md +++ b/docs/object-store.md @@ -1,23 +1,25 @@ # Bento object store -![Minio service logs querying](./img/minio_object_store.png) +![MinIO service logs querying](./img/minio_object_store.png) ## Configuration -Enable minio by setting the feature flag in local.env +Enable MinIO by setting the feature flag in local.env ```bash BENTO_MINIO_ENABLED='true' ``` -After enabling the Minio feature flag for the first time, +After enabling the MinIO feature flag for the first time, you must initialize the Docker networks, mounted directories and certs. ```bash ./bentoctl.bash init-certs -f -./bentoctl.bash init-docker # new network for minio +./bentoctl.bash init-docker # new network for MinIO ./bentoctl.bash init-dirs ``` Also set root user and password in local.env: -BENTO_MINIO_ROOT_USER=root (default value, could be change) -BENTO_MINIO_ROOT_PASSWORD=secure-password \ No newline at end of file +```bash +BENTO_MINIO_ROOT_USER=root # (default value, could be change) +BENTO_MINIO_ROOT_PASSWORD=secure-password +``` \ No newline at end of file diff --git a/etc/bento.env b/etc/bento.env index 17d12c1c..01bffbbb 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -473,7 +473,7 @@ BENTO_PROMTAIL_IMAGE=grafana/promtail BENTO_PROMTAIL_IMAGE_VERSION=3.1.2 BENTO_PROMTAIL_CONTAINER_NAME=${BENTOV2_PREFIX}-promtail -# Minio +# MinIO BENTO_MINIO_IMAGE=quay.io/minio/minio BENTO_MINIO_IMAGE_VERSION=RELEASE.2024-12-13T22-19-12Z BENTO_MINIO_CONTAINER_NAME=${BENTOV2_PREFIX}-minio diff --git a/etc/bento_deploy.env b/etc/bento_deploy.env index a0d35234..1e767453 100644 --- a/etc/bento_deploy.env +++ b/etc/bento_deploy.env @@ -37,7 +37,7 @@ BENTOV2_PORTAL_DOMAIN=portal.${BENTOV2_DOMAIN} BENTOV2_AUTH_DOMAIN=bentov2auth.local # Unused if cBioPortal is disabled: BENTOV2_CBIOPORTAL_DOMAIN=cbioportal.${BENTOV2_DOMAIN} -# Unused if Minio is disabled +# Unused if MinIO is disabled BENTO_MINIO_DOMAIN=minio.${BENTOV2_DOMAIN} # --------------------------------------------------------------------- @@ -81,7 +81,7 @@ BENTOV2_KATSU_APP_SECRET= # TODO: SET ME WHEN DEPLOYING! # Reference BENTO_REFERENCE_DB_PASSWORD= # TODO: SET ME WHEN DEPLOYING! -# minio +# MinIO BENTO_MINIO_ROOT_PASSWORD= # TODO: SET ME WHEN DEPLOYING! # HTTPS Certificates -------------------------------------------------- diff --git a/etc/bento_dev.env b/etc/bento_dev.env index 56fa654c..6f06f5d1 100644 --- a/etc/bento_dev.env +++ b/etc/bento_dev.env @@ -33,7 +33,7 @@ BENTOV2_PORTAL_DOMAIN=portal.${BENTOV2_DOMAIN} BENTOV2_AUTH_DOMAIN=bentov2auth.local # Unused if cBioPortal is disabled: BENTOV2_CBIOPORTAL_DOMAIN=cbioportal.${BENTOV2_DOMAIN} -# Unused if Minio is disabled +# Unused if MinIO is disabled BENTO_MINIO_DOMAIN=minio.${BENTOV2_DOMAIN} # --------------------------------------------------------------------- @@ -82,7 +82,7 @@ BENTO_REFERENCE_DB_PASSWORD=devpassword456 # BENTO_CBIOPORTAL_DATABASE_PASSWORD=somepassword Required for CBIOPORTAL # BENTO_CBIOPORTAL_DATABASE_ROOT_PASSWORD=somepassword Required for CBIOPORTAL -# minio +# MinIO BENTO_MINIO_ROOT_PASSWORD=devpassword789 # Development settings ------------------------------------------------ diff --git a/etc/default_config.env b/etc/default_config.env index 8260050e..a53fc062 100644 --- a/etc/default_config.env +++ b/etc/default_config.env @@ -46,7 +46,7 @@ BENTOV2_PORTAL_DOMAIN=portal.${BENTOV2_DOMAIN} BENTOV2_AUTH_DOMAIN=bentov2auth.local # Unused if cBioPortal is disabled: BENTOV2_CBIOPORTAL_DOMAIN=cbioportal.${BENTOV2_DOMAIN} -# Unused if Minio is disabled +# Unused if MinIO is disabled BENTO_MINIO_DOMAIN=minio.${BENTOV2_DOMAIN} # --------------------------------------------------------------------- @@ -110,7 +110,7 @@ BENTOV2_KATSU_DB_PASSWORD= BENTO_CBIOPORTAL_DATABASE_PASSWORD= BENTO_CBIOPORTAL_DATABASE_ROOT_PASSWORD= -# minio +# MinIO BENTO_MINIO_ROOT_PASSWORD= # Development settings ------------------------------------------------ diff --git a/py_bentoctl/other_helpers.py b/py_bentoctl/other_helpers.py index 15dcfc3f..dfcba00e 100644 --- a/py_bentoctl/other_helpers.py +++ b/py_bentoctl/other_helpers.py @@ -147,7 +147,7 @@ def init_self_signed_certs(force: bool): "dir": auth_certs_dir, }, - # Minio + # MinIO **({"minio": { "var": "BENTO_MINIO_DOMAIN", "priv_key_name": "minio_privkey1.key", @@ -240,7 +240,7 @@ def init_dirs(): **({"auth": "BENTOV2_AUTH_VOL_DIR"} if not c.BENTOV2_USE_EXTERNAL_IDP else {}), # - cBioPortal **({"cbioportal": "BENTO_CBIOPORTAL_STUDY_DIR"} if c.BENTO_FEATURE_CBIOPORTAL.enabled else {}), - # - minio + # - MinIO **({"minio": "BENTO_MINIO_DATA_DIR"} if c.BENTO_FEATURE_MINIO.enabled else {}), # - Monitoring: Grafana/Loki **({"grafana": "BENTO_GRAFANA_LIB_DIR"} if c.BENTO_FEATURE_MONITORING else {}), From d4f15a3759f360bf75bb6e30336618d108ae2c8a Mon Sep 17 00:00:00 2001 From: v-rocheleau Date: Fri, 20 Dec 2024 15:06:41 -0500 Subject: [PATCH 21/46] docs: minio setup and S3 api overview --- docs/img/minio_object_store.png | Bin 126375 -> 134940 bytes docs/object-store.md | 125 +++++++++++++++++++++++++++++--- 2 files changed, 114 insertions(+), 11 deletions(-) diff --git a/docs/img/minio_object_store.png b/docs/img/minio_object_store.png index d1741ec335efbdc7389baa0d155605928f460fa6..3287766beddb43b7b6c82e9610e15c82ffcf5d08 100644 GIT binary patch literal 134940 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 z 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 NGh9({sc1eOf)hSqv)_oJ&T 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 literal 126375 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 K3ih4-`+owfMliJi diff --git a/docs/object-store.md b/docs/object-store.md index 1b0a6d7a..0c3939d3 100644 --- a/docs/object-store.md +++ b/docs/object-store.md @@ -1,25 +1,128 @@ -# Bento object store +# Bento MinIO -![MinIO service logs querying](./img/minio_object_store.png) +Bento can be deployed with a [MinIO](https://github.com/minio/minio) service. +The MinIO service provides an [S3 compatible API](https://min.io/docs/minio/linux/reference/s3-api-compatibility.html) +for object storage. + +It is mostly intended for development and testing purposes with the S3 API, +as we are working on enabling S3 storage for Bento. + +For deployments, Bento instances requiring large storage capacity should rely on an external managed +S3 storage provider (AWS, Ceph, production MinIO cluster, etc). +This will allow Bento deployments to be decoupled from disk storage concerns. + +## Routing +![MinIO local deployment](./img/minio_object_store.png) + +**Note:** As shown above, the MinIO service relies on disk storage, which is why +production environments should consider external S3 storage instead. ## Configuration -Enable MinIO by setting the feature flag in local.env +To enable the MinIO service in a Bento deployment, please follow the instructions bellow. + +### Environment variables + +Enable MinIO by setting the feature flag and other required variables in `local.env`. ```bash BENTO_MINIO_ENABLED='true' +BENTO_MINIO_ROOT_USER=root # default value, can be changed +BENTO_MINIO_ROOT_PASSWORD=secure-password # change to a secure pw +BENTO_MINIO_DOMAIN=minio.${BENTOV2_DOMAIN} # MUST be a subdomain of BENTOV2_DOMAIN ``` -After enabling the MinIO feature flag for the first time, +### Domain resolution + +In a VM using a trusted certificate authority, there should be a DNS record for `BENTO_MINIO_DOMAIN`. + +In a local development environment, you must specify how `BENTO_MINIO_DOMAIN` should be resolved, +simulating a DNS record for self-signed certificates. + +Assuming `BENTO_MINIO_DOMAIN=minio.bentov2.local`, add the following line to your `/etc/hosts` file: + +```bash +# /etc/hosts +127.0.0.1 minio.bentov2.local +``` + +### Initialize MinIO certificates, networking and directories + +After enabling the MinIO feature flag for the first time and setting domain resolution, you must initialize the Docker networks, mounted directories and certs. ```bash -./bentoctl.bash init-certs -f -./bentoctl.bash init-docker # new network for MinIO -./bentoctl.bash init-dirs +./bentoctl.bash init-certs -f # creates the self-signed certificate for MinIO +./bentoctl.bash init-docker # creates the Docker network for MinIO +./bentoctl.bash init-dirs # creates MinIO's data directory to be mounted +``` + +### Start MinIO + +If all previous steps were performed correctly, you are ready to restart the +gateway and start the MinIO service! + +```bash +# Will recreate the gateway container automatically and start MinIO. +./bentoctl.bash run +``` + +## Using the console + +The console can be accessed using a web browser, simply navigate to [minio.bentov2.local/minio/ui/](https://minio.bentov2.local/minio/ui/). + +Authenticate using `BENTO_MINIO_ROOT_USER` and `BENTO_MINIO_ROOT_PASSWORD`. + +Once logged in, you can issue access keys. These keys can be used to make +S3 API calls. + +## Using MinIO's S3 API + +Assuming you created an access key in the console and saved the values, +you are ready to make object storage operations through the S3 API. + +Interactions between clients and the S3 API all take place over HTTP. +Many CLI tools and libraries are available to simplify these operations. + +### S3cmd + +[S3cmd](https://s3tools.org/s3cmd) is a popular CLI tool to interact with object stores that +support the S3 protocol, including MinIO. + +Once S3cmd is installed on a machine, you can create a s3cmd configuration file for the S3 API +endpoint of your choice. + +```bash +# ~/.s3cfg-minio-local +host_base = minio.bentov2.local # S3 API endpoint (local here) +host_bucket = minio.bentov2.local +use_https = True # Use HTTPS + +# For dev self-signed certs only +check_ssl_certificate = False # Enable if using trusted CA + +# Setup access keys +access_key = +secret_key = ``` -Also set root user and password in local.env: +With the S3cmd config file in place, you can start creating buckets, uploading files, and much more. + ```bash -BENTO_MINIO_ROOT_USER=root # (default value, could be change) -BENTO_MINIO_ROOT_PASSWORD=secure-password -``` \ No newline at end of file +# list buckets (empty at first) +s3cmd -c ~/.s3cfg-minio-local ls + +# Create a bucket named 'test' +s3cmd -c ~/.s3cfg-minio-local mb s3://test + +# Upload a file to your new bucket! +s3cmd -c ~/.s3cfg-minio-local put some-file.txt s3://test/some-file.txt +``` + +### Boto3 + +[Boto3](https://boto3.amazonaws.com/v1/documentation/api/latest/guide/quickstart.html#installation) +is an official AWS Python package to interact with an S3 compatible object store. + +Like S3cmd, it must be configured to use access keys. + +Future work on DRS and Drop-Box will involve Boto3 to enable S3 storage in Bento. From f69bf203bee549439290efc0f7e813678851e6bf Mon Sep 17 00:00:00 2001 From: v-rocheleau Date: Fri, 20 Dec 2024 15:35:47 -0500 Subject: [PATCH 22/46] docs: minio docs references --- README.md | 1 + docs/migrating_to_18.md | 21 +-------------------- docs/{object-store.md => minio.md} | 0 3 files changed, 2 insertions(+), 20 deletions(-) rename docs/{object-store.md => minio.md} (100%) diff --git a/README.md b/README.md index c763b808..db0758ec 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ that make up the Bento platform. * [Monitoring](./docs/monitoring.md) * [Public discovery configuration](./docs/public_discovery.md) * [Using a reverse proxy in front of Bento](./docs/reverse-proxy.md) +* [MinIO service](./docs/minio.md) ### Data ingestion and usage diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md index 749290fc..53fdac0b 100644 --- a/docs/migrating_to_18.md +++ b/docs/migrating_to_18.md @@ -21,26 +21,7 @@ TODO ## 3. Enabling MinIO -Enable MinIO by setting the feature flag in local.env -```bash -BENTO_MINIO_ENABLED='true' -``` - -After enabling the MinIO feature flag for the first time, -you must initialize the Docker networks, mounted directories and certs. -```bash -./bentoctl.bash init-certs -f -./bentoctl.bash init-docker # new network for MinIO -./bentoctl.bash init-dirs -``` - -Also set root user and password in local.env: -```bash -BENTO_MINIO_ROOT_USER=root # (default value, could be change) -BENTO_MINIO_ROOT_PASSWORD=secure-password -``` - -TODO +To enable the deployment of a MinIO server for S3 storage, refer to the documentation on [configuring MinIO for Bento](/docs/minio.md/). ## TODO. Restart services diff --git a/docs/object-store.md b/docs/minio.md similarity index 100% rename from docs/object-store.md rename to docs/minio.md From edde1028e70cd887c5c6635e3348c8d7a4f7f9b7 Mon Sep 17 00:00:00 2001 From: v-rocheleau Date: Fri, 20 Dec 2024 16:05:33 -0500 Subject: [PATCH 23/46] docs: fix reference --- README.md | 2 +- docs/migrating_to_18.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index db0758ec..f2b4aa5e 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ that make up the Bento platform. * [Monitoring](./docs/monitoring.md) * [Public discovery configuration](./docs/public_discovery.md) * [Using a reverse proxy in front of Bento](./docs/reverse-proxy.md) -* [MinIO service](./docs/minio.md) +* [MinIO object storage](./docs/minio.md) ### Data ingestion and usage diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md index 53fdac0b..9f2bf7d2 100644 --- a/docs/migrating_to_18.md +++ b/docs/migrating_to_18.md @@ -21,7 +21,7 @@ TODO ## 3. Enabling MinIO -To enable the deployment of a MinIO server for S3 storage, refer to the documentation on [configuring MinIO for Bento](/docs/minio.md/). +To enable the deployment of a MinIO server for S3 storage, refer to the documentation on [configuring MinIO for Bento](/docs/minio.md). ## TODO. Restart services From 23a2151528c7f0ff5ae079a92ecde7f01cb7a2b9 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Wed, 8 Jan 2025 16:32:06 -0500 Subject: [PATCH 24/46] docs: start working on service adding docs --- docs/adding-services.md | 59 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 docs/adding-services.md diff --git a/docs/adding-services.md b/docs/adding-services.md new file mode 100644 index 00000000..a3536add --- /dev/null +++ b/docs/adding-services.md @@ -0,0 +1,59 @@ +# Adding services to Bento + +There are two types of services in Bento: + +* Bento services, which have been developed by the Bento team specifically for the platform, and +* other services, which support the Bento services or provide additional platform features. + + +## Aspects to consider when adding any service to Bento + +* Service environment variables, used for configuring the image and some aspects of the service itself, should be added + to `etc/bento.env`. These variables typically include: + * Image + * Image version (tag) + * Container name template + * Service Docker network (**Note:** we typically give each service its own network, and add services to multiple + networks only as needed) + * Debugger ports +* Configuration environment variables TODO +* Docker container configuration via a Compose file in `lib//docker-compose..yaml` +* *As needed:* a gateway NGINX config in `lib/gateway/` + +* TODO + +Non-Bento services **MUST NOT** be put into `etc/bento_services.json`; this file is for Bento services only (see below). + +### Required `bentoctl` changes + +TODO + + +## Additional considerations when adding new Bento services + +### `/service-info` and service record in `bento_services.json` + +Bento services **MUST** implement the GA4GH [Service Info](https://www.ga4gh.org/product/service-info/) API. +They must also be registered in the `etc/bento_services.json` file, which allows them to be loaded into the +[Bento Service Registry](https://github.com/bento-platform/bento_service_registry). + +Each entry of this file follows the format: + +```js +{ + // ... + "": { + "service_kind": "", + "url_template": "{BENTO_PUBLIC_URL}/api/{service_kind}", + "repository": "git@github.com:bento-platform/<...>" + }, + // ... +} +``` + +In this format: +* `` is the key of the service in its `docker-compose.<...>.yaml` file +* `` is a special Bento-unique identifier for the service, allowing front ends to look up services. +* The `url_template` key is a template for the base URL used to access the service's API. +* The `repository` key is an SSH Git repository URL for the service code, so it can be cloned into the `repos` folder + for development. From 0177f2989b72bf9b3408e5d76fae4b9f6dd7d174 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Wed, 8 Jan 2025 16:56:55 -0500 Subject: [PATCH 25/46] docs: adding services continued --- docs/adding-services.md | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/docs/adding-services.md b/docs/adding-services.md index a3536add..27bc1a55 100644 --- a/docs/adding-services.md +++ b/docs/adding-services.md @@ -8,6 +8,8 @@ There are two types of services in Bento: ## Aspects to consider when adding any service to Bento +### Environment variables + * Service environment variables, used for configuring the image and some aspects of the service itself, should be added to `etc/bento.env`. These variables typically include: * Image @@ -17,17 +19,38 @@ There are two types of services in Bento: networks only as needed) * Debugger ports * Configuration environment variables TODO -* Docker container configuration via a Compose file in `lib//docker-compose..yaml` -* *As needed:* a gateway NGINX config in `lib/gateway/` -* TODO +### Container setup -Non-Bento services **MUST NOT** be put into `etc/bento_services.json`; this file is for Bento services only (see below). +The service's Docker container must be set up via a Compose file in `lib//docker-compose..yaml`. +This must then be included in the main `docker-compose.yaml` file, in the `include` block. + +The service's network (and potentially feature flag, if applicable), as well as container name and port environment +variables must be added to the gateway compose file (`lib/gateway/docker-compose.gateway.yaml`) if the service is to be +externally accessible. + +### Gateway configuration + +*As needed,* a gateway NGINX config must be placed into `lib/gateway/`. ### Required `bentoctl` changes TODO +* If new certificates are needed, add new entries to the `init_self_signed_certs` function (for development purposes) + in `py_bentoctl/other_helpers.py`. + +### Documentation changes + +* Make sure to add a note about how to set up the service for the first time to the + [Installation guide](./installation.md), as well as the migration guide for the version the service is introduced in. +* If additional deployment steps are needed (i.e., new certificates), add a note to the + [Deployment guide](./deployment.md). + +### Additional notes + +Non-Bento services **MUST NOT** be put into `etc/bento_services.json`; this file is for Bento services only (see below). + ## Additional considerations when adding new Bento services From cd169563eeedd1e2b1e0bec4ecdd8385e4adbb7c Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Thu, 9 Jan 2025 10:59:49 -0500 Subject: [PATCH 26/46] docs: adding services - bentoctl notes --- docs/adding-services.md | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/adding-services.md b/docs/adding-services.md index 27bc1a55..94c33e4e 100644 --- a/docs/adding-services.md +++ b/docs/adding-services.md @@ -35,10 +35,20 @@ externally accessible. ### Required `bentoctl` changes -TODO - -* If new certificates are needed, add new entries to the `init_self_signed_certs` function (for development purposes) - in `py_bentoctl/other_helpers.py`. +Inside the `py_bentoctl` Python module: + +* If the service is locked behind a feature flag, add the feature (as an `BentoOptionalFeature` instance) to + `config.py`, modeling it after other definitions. +* Add the service image environment variables to the `service_image_vars` variable in `services.py`. +* If the service is not a Bento service (or does not have the `bento` user in the Docker image), add the service to the + `BENTO_USER_EXCLUDED_SERVICES` variable. +* In `other_helpers.py`: + * If the service has a data directory that needs to be initialized, add an entry to the `data_dir_vars` variable + in the `init_dirs(...)` function containing the name of the environment variable which points to the data volume + directory. + * Add any entry with the name of the environment variable storing the name of the Docker network to the `networks` + variable in the `init_docker(...)` function. + * If new certificates are needed, add new entries to the `init_self_signed_certs` function (for development purposes). ### Documentation changes From ec66ded4d4e8bf88d53c6ea8c128f9de38ccb2dd Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Thu, 9 Jan 2025 11:02:36 -0500 Subject: [PATCH 27/46] fix: add minio to services which dont have bento user --- py_bentoctl/services.py | 1 + 1 file changed, 1 insertion(+) diff --git a/py_bentoctl/services.py b/py_bentoctl/services.py index b721d499..14af30e9 100644 --- a/py_bentoctl/services.py +++ b/py_bentoctl/services.py @@ -33,6 +33,7 @@ "authz-db", "gateway", "katsu-db", + "minio", "redis", "reference-db", ) From 678d14fcb2e34c98a68f2c6ccebb74e14bcd972c Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Thu, 9 Jan 2025 11:02:50 -0500 Subject: [PATCH 28/46] docs: v18 migrate line wrap --- docs/migrating_to_18.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md index 9f2bf7d2..3d67b504 100644 --- a/docs/migrating_to_18.md +++ b/docs/migrating_to_18.md @@ -21,7 +21,8 @@ TODO ## 3. Enabling MinIO -To enable the deployment of a MinIO server for S3 storage, refer to the documentation on [configuring MinIO for Bento](/docs/minio.md). +To enable the deployment of a MinIO server for S3 storage, refer to the documentation on +[configuring MinIO for Bento](/docs/minio.md). ## TODO. Restart services From 21157b8e27922c99c3a0a16b0c8cfd2e24291848 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Thu, 9 Jan 2025 11:33:36 -0500 Subject: [PATCH 29/46] docs: 1st draft of adding services --- docs/adding-services.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/docs/adding-services.md b/docs/adding-services.md index 94c33e4e..cf28ddbb 100644 --- a/docs/adding-services.md +++ b/docs/adding-services.md @@ -18,7 +18,11 @@ There are two types of services in Bento: * Service Docker network (**Note:** we typically give each service its own network, and add services to multiple networks only as needed) * Debugger ports -* Configuration environment variables TODO +* Configuration environment variables, for setting up feature flags and passwords, should be added to + `etc/default_config.env` and the example files `etc/bento_deploy.env` and `etc/bento_dev.env`. + * `etc/default_config.env` contains feature flags and "empty definitions" for passwords/secrets. + * `etc/bento_deploy.env` is an example / template setup (to be copied to `local.env`) for a production deployment. + * `etc/bento_dev.env` is an example / template setup (to be copied to `local.env`) for a development setup. ### Container setup @@ -64,6 +68,13 @@ Non-Bento services **MUST NOT** be put into `etc/bento_services.json`; this file ## Additional considerations when adding new Bento services +### User and base image + +It is expected that Bento services will use one of the +[Bento base images](https://github.com/bento-platform/bento_base_images). + +These images provide a `bento` user, whose UID is set to the host user's UID. + ### `/service-info` and service record in `bento_services.json` Bento services **MUST** implement the GA4GH [Service Info](https://www.ga4gh.org/product/service-info/) API. From 6d719ec21c62989cf921d3d54ba8fddde8dfd223 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Thu, 9 Jan 2025 11:35:45 -0500 Subject: [PATCH 30/46] docs: links to adding services doc --- README.md | 1 + docs/development.md | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/README.md b/README.md index f2b4aa5e..cf426551 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ that make up the Bento platform. * [`bentoctl`: the Bento deployment command line management tool](./docs/bentoctl.md) * [Installation](./docs/installation.md) * [Development](./docs/development.md) + * [Adding services to Bento](./docs/adding-services.md) * [Troubleshooting guide](./docs/troubleshooting.md) * [Deployment](./docs/deployment.md) * [Monitoring](./docs/monitoring.md) diff --git a/docs/development.md b/docs/development.md index c357bb1c..ddc476d0 100644 --- a/docs/development.md +++ b/docs/development.md @@ -185,6 +185,11 @@ If subsequent modifications are made to the package's code, you will need to cre and install it again in the app with `npm install`. +## Adding services + +See [`adding-services.md`](./adding-services.md) for some considerations when adding new services to Bento. + + ## Using Adminer An [Adminer](https://www.adminer.org/) container is deployed in dev and local mode, it can be used to inspect the From f763ce5d570fd927cb7c9d03382399a05908a26d Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Fri, 10 Jan 2025 14:27:26 -0500 Subject: [PATCH 31/46] set beacon to pr-120 --- etc/bento.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/bento.env b/etc/bento.env index 32fe1396..f6d9214f 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -407,7 +407,7 @@ BENTO_PUBLIC_PORTAL_URL=${BENTOV2_PORTAL_PUBLIC_URL} BENTO_BEACON_CONTAINER_NAME=${BENTOV2_PREFIX}-beacon BENTO_BEACON_NETWORK=${BENTOV2_PREFIX}-beacon-net BENTO_BEACON_IMAGE=ghcr.io/bento-platform/bento_beacon -BENTO_BEACON_VERSION=edge +BENTO_BEACON_VERSION=pr-120 BENTO_BEACON_VERSION_DEV=${BENTO_BEACON_VERSION}-dev BENTO_BEACON_INTERNAL_PORT=${BENTO_STD_SERVICE_INTERNAL_PORT} BENTO_BEACON_EXTERNAL_PORT=5000 From f446e5b1308ccc295f5cc85a39fa1d311ad92bd4 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Wed, 15 Jan 2025 16:02:14 -0500 Subject: [PATCH 32/46] set katsu and public to edge --- etc/bento.env | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/bento.env b/etc/bento.env index f6d9214f..8b423d00 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -278,7 +278,7 @@ BENTOV2_KATSU_DB_CPUS=4 # Katsu BENTOV2_KATSU_IMAGE=ghcr.io/bento-platform/katsu -BENTOV2_KATSU_VERSION=pr-536 +BENTOV2_KATSU_VERSION=edge BENTOV2_KATSU_VERSION_DEV=${BENTOV2_KATSU_VERSION}-dev BENTOV2_KATSU_CONTAINER_NAME=${BENTOV2_PREFIX}-katsu BENTO_KATSU_NETWORK=${BENTOV2_PREFIX}-katsu-net @@ -387,7 +387,7 @@ BENTOV2_GOHAN_PRIVATE_AUTHZ_URL=http://${BENTOV2_GOHAN_AUTHZ_OPA_CONTAINER_NAME} # Bento-Public BENTO_PUBLIC_IMAGE=ghcr.io/bento-platform/bento_public -BENTO_PUBLIC_VERSION=pr-240 +BENTO_PUBLIC_VERSION=edge BENTO_PUBLIC_VERSION_DEV=${BENTO_PUBLIC_VERSION}-dev BENTO_PUBLIC_CONTAINER_NAME=${BENTOV2_PREFIX}-public BENTO_PUBLIC_NETWORK=${BENTOV2_PREFIX}-public-net From 1e18d8761ca718232c343069f31f9dba9115ab58 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Mon, 20 Jan 2025 10:53:14 -0500 Subject: [PATCH 33/46] update authz to 0.10.3 --- etc/bento.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/bento.env b/etc/bento.env index 8b423d00..067306f0 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -80,7 +80,7 @@ BENTO_AUTH_DB_NETWORK="${BENTOV2_PREFIX}-auth-db-net" # - Authz service BENTO_AUTHZ_IMAGE=ghcr.io/bento-platform/bento_authorization_service -BENTO_AUTHZ_VERSION=0.10.2 +BENTO_AUTHZ_VERSION=0.10.3 BENTO_AUTHZ_VERSION_DEV=${BENTO_AUTHZ_VERSION}-dev BENTO_AUTHZ_CONTAINER_NAME=${BENTOV2_PREFIX}-authz BENTO_AUTHZ_NETWORK=${BENTOV2_PREFIX}-authz-net From dd88b555c353149817713639785f557fe57f9677 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Tue, 21 Jan 2025 11:10:54 -0500 Subject: [PATCH 34/46] add Bento Public flags for showing/hiding header links --- etc/bento_deploy.env | 6 +++++- etc/bento_dev.env | 6 +++++- etc/default_config.env | 6 +++++- lib/public/docker-compose.public.yaml | 2 ++ 4 files changed, 17 insertions(+), 3 deletions(-) diff --git a/etc/bento_deploy.env b/etc/bento_deploy.env index 1e767453..8793c6b1 100644 --- a/etc/bento_deploy.env +++ b/etc/bento_deploy.env @@ -16,8 +16,12 @@ BENTO_GOHAN_ENABLED='true' BENTO_MONITORING_ENABLED='false' BENTO_MINIO_ENABLED='false' -# - Switch to enable French translation in Bento Public +# - Display flags for Bento portals +# - Switch to enable French translation in Bento Public BENTO_PUBLIC_TRANSLATED='true' +# - Switches to enable various links in the Bento Public header (these default to being on) +BENTO_PUBLIC_SHOW_PORTAL_LINK='true' +BENTO_PUBLIC_SHOW_SIGN_IN='true' # Feature switches end ------------------------------------------------ diff --git a/etc/bento_dev.env b/etc/bento_dev.env index 6f06f5d1..ec5eb59b 100644 --- a/etc/bento_dev.env +++ b/etc/bento_dev.env @@ -16,8 +16,12 @@ BENTO_GOHAN_ENABLED='true' BENTO_MONITORING_ENABLED='false' BENTO_MINIO_ENABLED='false' -# - Switch to enable French translation in Bento Public +# - Display flags for Bento portals +# - Switch to enable French translation in Bento Public BENTO_PUBLIC_TRANSLATED='true' +# - Switches to enable various links in the Bento Public header (these default to being on) +BENTO_PUBLIC_SHOW_PORTAL_LINK='true' +BENTO_PUBLIC_SHOW_SIGN_IN='true' # Feature switches end ------------------------------------------------ diff --git a/etc/default_config.env b/etc/default_config.env index a53fc062..f7121acc 100644 --- a/etc/default_config.env +++ b/etc/default_config.env @@ -21,8 +21,12 @@ BENTO_GOHAN_ENABLED='true' BENTO_MONITORING_ENABLED='false' BENTO_MINIO_ENABLED='false' -# - Switch to enable French translation in Bento Public +# - Display flags for Bento portals +# - Switch to enable French translation in Bento Public BENTO_PUBLIC_TRANSLATED='true' +# - Switches to enable various links in the Bento Public header (these default to being on) +BENTO_PUBLIC_SHOW_PORTAL_LINK='true' +BENTO_PUBLIC_SHOW_SIGN_IN='true' # Feature switches end ------------------------------------------------ diff --git a/lib/public/docker-compose.public.yaml b/lib/public/docker-compose.public.yaml index 9d239f65..3b80eea5 100644 --- a/lib/public/docker-compose.public.yaml +++ b/lib/public/docker-compose.public.yaml @@ -13,6 +13,8 @@ services: - BENTO_PUBLIC_CLIENT_NAME - BENTO_PUBLIC_PORTAL_URL - BENTO_PUBLIC_TRANSLATED + - BENTO_PUBLIC_SHOW_PORTAL_LINK + - BENTO_PUBLIC_SHOW_SIGN_IN - BENTO_BEACON_UI_ENABLED - BENTO_BEACON_NETWORK_ENABLED - BEACON_URL=${BENTOV2_PUBLIC_URL}/api/beacon From ca9666025ae5249428e09f17a64dd1ab0491ee8c Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Tue, 21 Jan 2025 11:21:59 -0500 Subject: [PATCH 35/46] docs: mention new customization vars in migration guide --- docs/migrating_to_18.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md index 3d67b504..e8a41495 100644 --- a/docs/migrating_to_18.md +++ b/docs/migrating_to_18.md @@ -19,7 +19,25 @@ TODO above location, or copy `branding.png` to `branding.lightbg.png` -## 3. Enabling MinIO +## 3. If desired, disable Bento Public sign in / portal links + +Version 18 includes two new Bento Public environment variables for customizing an instance: + +* `BENTO_PUBLIC_SHOW_PORTAL_LINK`: Whether to show a link to the private data portal in the header +* `BENTO_PUBLIC_SHOW_SIGN_IN`: Whether to show a "Sign In" button in the header + +Both of these are set to `true` by default. If desired, they can be toggled to `false` by setting them in `local.env`, +for example: + +```bash +# ... +BENTO_PUBLIC_SHOW_PORTAL_LINK='false' +BENTO_PUBLIC_SHOW_SIGN_IN='false' +# ... +``` + + +## 4. Enabling MinIO To enable the deployment of a MinIO server for S3 storage, refer to the documentation on [configuring MinIO for Bento](/docs/minio.md). From 0fdf2cc837483824df6165701a48ecb09ff19899 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Tue, 21 Jan 2025 14:35:21 -0500 Subject: [PATCH 36/46] docs: fill in v18 migration guide gaps --- docs/migrating_to_18.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md index e8a41495..acb5068d 100644 --- a/docs/migrating_to_18.md +++ b/docs/migrating_to_18.md @@ -1,6 +1,10 @@ # Migrating to Bento v18 -TODO +* Bento v18 requires implements some new features for branding, which may require changes as described below. +* It also adds MinIO as a backend for future S3-compatible object storage. + * This can be enabled now, but will not be used until a future version. + * For instances hosted on the Secure Data for Health (SD4H) infrastructure, the SD4H object store should be used for + production instances when S3-compatible services become ready in a future version. ## 1. Stop and update services @@ -43,7 +47,7 @@ To enable the deployment of a MinIO server for S3 storage, refer to the document [configuring MinIO for Bento](/docs/minio.md). -## TODO. Restart services +## 5. Restart services ```bash ./bentoctl.bash start From e8a5ef7a955064784c690572e20c47870f5f602b Mon Sep 17 00:00:00 2001 From: Victor Rocheleau Date: Thu, 23 Jan 2025 16:54:01 -0500 Subject: [PATCH 37/46] fix: minio net aliases and docs --- docker-compose.dev.yaml | 2 ++ docs/adding-services.md | 50 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 52 insertions(+) diff --git a/docker-compose.dev.yaml b/docker-compose.dev.yaml index 243e6bb1..057844d0 100644 --- a/docker-compose.dev.yaml +++ b/docker-compose.dev.yaml @@ -40,11 +40,13 @@ services: - ${BENTOV2_DOMAIN} - ${BENTOV2_PORTAL_DOMAIN} - ${BENTOV2_AUTH_DOMAIN} + - ${BENTO_MINIO_DOMAIN} drs-net: aliases: - ${BENTOV2_DOMAIN} - ${BENTOV2_PORTAL_DOMAIN} - ${BENTOV2_AUTH_DOMAIN} + - ${BENTO_MINIO_DOMAIN} event-relay-net: aliases: - ${BENTOV2_DOMAIN} diff --git a/docs/adding-services.md b/docs/adding-services.md index cf28ddbb..6bf57a53 100644 --- a/docs/adding-services.md +++ b/docs/adding-services.md @@ -101,3 +101,53 @@ In this format: * The `url_template` key is a template for the base URL used to access the service's API. * The `repository` key is an SSH Git repository URL for the service code, so it can be cloned into the `repos` folder for development. + + +### Making service-to-service requests go through the gateway (dev) + +Bento relies on three mechanisms to resolve hostnames to IP adresses: +- DNS records in production + - `/etc/hosts` entries when in local dev +- Container names + - When two containers are on the same Docker network and need to talk to each other directly + - Docker resolve a container's name to its IP on a Docker network + - e.g. Katsu can talk directly to DRS with `http://${BENTOV2_DRS_CONTAINER_NAME}:${BENTOV2_DRS_INTERNAL_PORT}` +- Docker network aliases (dev only) + - When two services need to communicate with each other via the gateway. + +When developing locally, some services may need to be interacted with strictly through the gateway. +This is the case for Keycloak (auth) and Minio, as both services require a subdomain and HTTPS. + +As such, drop-box cannot use the Docker resolver in order to connect to Minio. + +Since we are in local, there is no DNS record to resolve Minio's domain, +and the host's `/etc/hosts` entries will not be of help from the container's perspective. + +For these situations, we rely on [Docker network aliases.](https://docs.docker.com/reference/compose-file/services/#aliases) + +Taking the Minio example, we need: + - Drop-Box to interact with Minio via the gateway + - DRS to interact with Minio via the gateway + +Enabling this is done by adding `${BENTO_MINIO_DOMAIN}` to the respective service networks aliases. + +This snippet comes from [docker-compose.dev.yaml](../docker-compose.dev.yaml): +``` +services: + gateway: + networks: + drop-box-net: + aliases: + - ${BENTOV2_DOMAIN} + - ${BENTOV2_PORTAL_DOMAIN} + - ${BENTOV2_AUTH_DOMAIN} + - ${BENTO_MINIO_DOMAIN} + drs-net: + aliases: + - ${BENTOV2_DOMAIN} + - ${BENTOV2_PORTAL_DOMAIN} + - ${BENTOV2_AUTH_DOMAIN} + - ${BENTO_MINIO_DOMAIN} +``` + +Doing so, we make sure that ${BENTO_MINIO_DOMAIN} is resolved to the gateway for drop-box and DRS. From 8a79fe3fa71ed1d8e6c63717b1ef6211b9ea0e2f Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Fri, 24 Jan 2025 08:25:25 -0500 Subject: [PATCH 38/46] chore: update misc services --- etc/bento.env | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/etc/bento.env b/etc/bento.env index 067306f0..8d9a7d44 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -34,7 +34,7 @@ BENTOV2_GATEWAY_INTERNAL_CERTS_DIR=/usr/local/openresty/nginx/certs # Gateway BENTOV2_GATEWAY_IMAGE=ghcr.io/bento-platform/bento_gateway -BENTOV2_GATEWAY_VERSION=edge +BENTOV2_GATEWAY_VERSION=0.14.0 BENTOV2_GATEWAY_VERSION_DEV=${BENTOV2_GATEWAY_VERSION}-dev BENTOV2_GATEWAY_CONTAINER_NAME=${BENTOV2_PREFIX}-gateway @@ -112,7 +112,7 @@ BENTOV2_WEB_CPUS=2 # Drop-Box BENTOV2_DROP_BOX_IMAGE=ghcr.io/bento-platform/bento_drop_box_service -BENTOV2_DROP_BOX_VERSION=1.1.11 +BENTOV2_DROP_BOX_VERSION=1.1.12 BENTOV2_DROP_BOX_VERSION_DEV=${BENTOV2_DROP_BOX_VERSION}-dev BENTOV2_DROP_BOX_CONTAINER_NAME=${BENTOV2_PREFIX}-drop-box BENTO_DROP_BOX_NETWORK=${BENTOV2_PREFIX}-drop-box-net @@ -126,7 +126,7 @@ BENTOV2_DROP_BOX_CPUS=3 # Service Registry BENTOV2_SERVICE_REGISTRY_IMAGE=ghcr.io/bento-platform/bento_service_registry -BENTOV2_SERVICE_REGISTRY_VERSION=1.4.3 +BENTOV2_SERVICE_REGISTRY_VERSION=1.4.4 BENTOV2_SERVICE_REGISTRY_VERSION_DEV=${BENTOV2_SERVICE_REGISTRY_VERSION}-dev BENTOV2_SERVICE_REGISTRY_CONTAINER_NAME=${BENTOV2_PREFIX}-service-registry BENTO_SERVICE_REGISTRY_NETWORK=${BENTOV2_PREFIX}-service-registry-net @@ -140,7 +140,7 @@ BENTO_SERVICE_REGISTRY_URL=${BENTOV2_PUBLIC_URL}/api/service-registry # Notification BENTOV2_NOTIFICATION_IMAGE=ghcr.io/bento-platform/bento_notification_service -BENTOV2_NOTIFICATION_VERSION=3.1.7 +BENTOV2_NOTIFICATION_VERSION=3.1.8 BENTOV2_NOTIFICATION_VERSION_DEV=${BENTOV2_NOTIFICATION_VERSION}-dev BENTOV2_NOTIFICATION_CONTAINER_NAME=${BENTOV2_PREFIX}-notification BENTO_NOTIFICATION_NETWORK=${BENTOV2_PREFIX}-notification-net @@ -155,7 +155,7 @@ BENTOV2_NOTIFICATION_CPUS=2 # Aggregation BENTOV2_AGGREGATION_IMAGE=ghcr.io/bento-platform/bento_aggregation_service -BENTOV2_AGGREGATION_VERSION=0.19.9 +BENTOV2_AGGREGATION_VERSION=0.19.10 BENTOV2_AGGREGATION_VERSION_DEV=${BENTOV2_AGGREGATION_VERSION}-dev BENTOV2_AGGREGATION_CONTAINER_NAME=${BENTOV2_PREFIX}-aggregation BENTO_AGGREGATION_NETWORK=${BENTOV2_PREFIX}-aggregation-net @@ -170,7 +170,7 @@ BENTOV2_AGGREGATION_CPUS=2 # Event-Relay BENTOV2_EVENT_RELAY_IMAGE=ghcr.io/bento-platform/bento_event_relay -BENTOV2_EVENT_RELAY_VERSION=3.1.6 +BENTOV2_EVENT_RELAY_VERSION=3.1.7 BENTOV2_EVENT_RELAY_VERSION_DEV=${BENTOV2_EVENT_RELAY_VERSION}-dev BENTOV2_EVENT_RELAY_CONTAINER_NAME=${BENTOV2_PREFIX}-event-relay BENTO_EVENT_RELAY_NETWORK=${BENTOV2_PREFIX}-event-relay-net @@ -184,7 +184,7 @@ BENTOV2_EVENT_RELAY_CPUS=1 # Reference # - Service BENTO_REFERENCE_IMAGE=ghcr.io/bento-platform/bento_reference_service -BENTO_REFERENCE_VERSION=0.3.2 +BENTO_REFERENCE_VERSION=0.4.0 BENTO_REFERENCE_VERSION_DEV=${BENTO_REFERENCE_VERSION}-dev BENTO_REFERENCE_CONTAINER_NAME=${BENTOV2_PREFIX}-reference BENTO_REFERENCE_NETWORK=${BENTOV2_PREFIX}-reference-net @@ -206,7 +206,7 @@ BENTO_REFERENCE_DB_USER="reference_user" # WES BENTOV2_WES_IMAGE=ghcr.io/bento-platform/bento_wes -BENTOV2_WES_VERSION=0.14.6 +BENTOV2_WES_VERSION=0.14.7 BENTOV2_WES_VERSION_DEV=${BENTOV2_WES_VERSION}-dev BENTOV2_WES_CONTAINER_NAME=${BENTOV2_PREFIX}-wes BENTO_WES_NETWORK=${BENTOV2_PREFIX}-wes-net @@ -233,7 +233,7 @@ BENTOV2_WES_WORKFLOW_TIMEOUT=172800 # DRS BENTOV2_DRS_IMAGE=ghcr.io/bento-platform/bento_drs -BENTOV2_DRS_VERSION=0.19.0 +BENTOV2_DRS_VERSION=0.19.1 BENTOV2_DRS_VERSION_DEV=${BENTOV2_DRS_VERSION}-dev BENTOV2_DRS_CONTAINER_NAME=${BENTOV2_PREFIX}-drs BENTO_DRS_NETWORK=${BENTOV2_PREFIX}-drs-net From 8312debc08acc25e2e144d1e835411e082a4db02 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Fri, 24 Jan 2025 08:33:01 -0500 Subject: [PATCH 39/46] chore: add force catalogue feature for bento public --- docs/migrating_to_18.md | 6 ++++-- etc/bento_deploy.env | 2 ++ etc/bento_dev.env | 2 ++ etc/default_config.env | 2 ++ lib/public/docker-compose.public.yaml | 1 + 5 files changed, 11 insertions(+), 2 deletions(-) diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md index acb5068d..e51eacc2 100644 --- a/docs/migrating_to_18.md +++ b/docs/migrating_to_18.md @@ -29,14 +29,16 @@ Version 18 includes two new Bento Public environment variables for customizing a * `BENTO_PUBLIC_SHOW_PORTAL_LINK`: Whether to show a link to the private data portal in the header * `BENTO_PUBLIC_SHOW_SIGN_IN`: Whether to show a "Sign In" button in the header +* `BENTO_PUBLIC_FORCE_CATALOGUE`: Whether to force the data catalogue to display, even with only a single project. -Both of these are set to `true` by default. If desired, they can be toggled to `false` by setting them in `local.env`, -for example: +The first two are set to `true` by default, and the last is set to `false`. If desired, they can be toggled to +non-default settings by modifying `local.env`, for example: ```bash # ... BENTO_PUBLIC_SHOW_PORTAL_LINK='false' BENTO_PUBLIC_SHOW_SIGN_IN='false' +BENTO_PUBLIC_FORCE_CATALOGUE='true' # ... ``` diff --git a/etc/bento_deploy.env b/etc/bento_deploy.env index 8793c6b1..d28f27fd 100644 --- a/etc/bento_deploy.env +++ b/etc/bento_deploy.env @@ -22,6 +22,8 @@ BENTO_PUBLIC_TRANSLATED='true' # - Switches to enable various links in the Bento Public header (these default to being on) BENTO_PUBLIC_SHOW_PORTAL_LINK='true' BENTO_PUBLIC_SHOW_SIGN_IN='true' +# - Switch to force-show the data catalogue in Bento Public even with a single project +BENTO_PUBLIC_FORCE_CATALOGUE='false' # Feature switches end ------------------------------------------------ diff --git a/etc/bento_dev.env b/etc/bento_dev.env index ec5eb59b..7f3d81df 100644 --- a/etc/bento_dev.env +++ b/etc/bento_dev.env @@ -22,6 +22,8 @@ BENTO_PUBLIC_TRANSLATED='true' # - Switches to enable various links in the Bento Public header (these default to being on) BENTO_PUBLIC_SHOW_PORTAL_LINK='true' BENTO_PUBLIC_SHOW_SIGN_IN='true' +# - Switch to force-show the data catalogue in Bento Public even with a single project +BENTO_PUBLIC_FORCE_CATALOGUE='false' # Feature switches end ------------------------------------------------ diff --git a/etc/default_config.env b/etc/default_config.env index f7121acc..a30ca450 100644 --- a/etc/default_config.env +++ b/etc/default_config.env @@ -27,6 +27,8 @@ BENTO_PUBLIC_TRANSLATED='true' # - Switches to enable various links in the Bento Public header (these default to being on) BENTO_PUBLIC_SHOW_PORTAL_LINK='true' BENTO_PUBLIC_SHOW_SIGN_IN='true' +# - Switch to force-show the data catalogue in Bento Public even with a single project +BENTO_PUBLIC_FORCE_CATALOGUE='false' # Feature switches end ------------------------------------------------ diff --git a/lib/public/docker-compose.public.yaml b/lib/public/docker-compose.public.yaml index 3b80eea5..1a899d40 100644 --- a/lib/public/docker-compose.public.yaml +++ b/lib/public/docker-compose.public.yaml @@ -15,6 +15,7 @@ services: - BENTO_PUBLIC_TRANSLATED - BENTO_PUBLIC_SHOW_PORTAL_LINK - BENTO_PUBLIC_SHOW_SIGN_IN + - BENTO_PUBLIC_FORCE_CATALOGUE - BENTO_BEACON_UI_ENABLED - BENTO_BEACON_NETWORK_ENABLED - BEACON_URL=${BENTOV2_PUBLIC_URL}/api/beacon From af05313c2a5ab64f1e1e0bed028d67fbe0a3dd0e Mon Sep 17 00:00:00 2001 From: v-rocheleau Date: Fri, 24 Jan 2025 11:16:51 -0500 Subject: [PATCH 40/46] docs: typos --- docs/adding-services.md | 40 +++++++++++++++++++++------------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/docs/adding-services.md b/docs/adding-services.md index 6bf57a53..3948c8b0 100644 --- a/docs/adding-services.md +++ b/docs/adding-services.md @@ -105,15 +105,17 @@ In this format: ### Making service-to-service requests go through the gateway (dev) -Bento relies on three mechanisms to resolve hostnames to IP adresses: -- DNS records in production +Bento relies on three mechanisms to resolve hostnames to IP addresses: +- DNS records (production only) - `/etc/hosts` entries when in local dev -- Container names + - For requests originating outside of the Docker networks (e.g. web browsers) +- Container names (production & dev) - When two containers are on the same Docker network and need to talk to each other directly - - Docker resolve a container's name to its IP on a Docker network + - Docker resolves a container's name to its IP on a Docker network - e.g. Katsu can talk directly to DRS with `http://${BENTOV2_DRS_CONTAINER_NAME}:${BENTOV2_DRS_INTERNAL_PORT}` - Docker network aliases (dev only) - - When two services need to communicate with each other via the gateway. + - When two services need to communicate with each other via the gateway only. + - In production, this is taken care of by DNS records When developing locally, some services may need to be interacted with strictly through the gateway. This is the case for Keycloak (auth) and Minio, as both services require a subdomain and HTTPS. @@ -132,22 +134,22 @@ Taking the Minio example, we need: Enabling this is done by adding `${BENTO_MINIO_DOMAIN}` to the respective service networks aliases. This snippet comes from [docker-compose.dev.yaml](../docker-compose.dev.yaml): -``` +```yaml services: gateway: networks: - drop-box-net: - aliases: - - ${BENTOV2_DOMAIN} - - ${BENTOV2_PORTAL_DOMAIN} - - ${BENTOV2_AUTH_DOMAIN} - - ${BENTO_MINIO_DOMAIN} - drs-net: - aliases: - - ${BENTOV2_DOMAIN} - - ${BENTOV2_PORTAL_DOMAIN} - - ${BENTOV2_AUTH_DOMAIN} - - ${BENTO_MINIO_DOMAIN} + drop-box-net: + aliases: + - ${BENTOV2_DOMAIN} + - ${BENTOV2_PORTAL_DOMAIN} + - ${BENTOV2_AUTH_DOMAIN} + - ${BENTO_MINIO_DOMAIN} + drs-net: + aliases: + - ${BENTOV2_DOMAIN} + - ${BENTOV2_PORTAL_DOMAIN} + - ${BENTOV2_AUTH_DOMAIN} + - ${BENTO_MINIO_DOMAIN} ``` -Doing so, we make sure that ${BENTO_MINIO_DOMAIN} is resolved to the gateway for drop-box and DRS. +Doing so, we make sure that `${BENTO_MINIO_DOMAIN}` is resolved to the gateway for drop-box and DRS. From af7de9f90289160fed0d80da77fcc9a67c02f9a5 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Fri, 24 Jan 2025 12:33:18 -0500 Subject: [PATCH 41/46] bump event relay to 3.1.8 and beacon to 0.19.0 --- etc/bento.env | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/bento.env b/etc/bento.env index 8d9a7d44..0a377214 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -170,7 +170,7 @@ BENTOV2_AGGREGATION_CPUS=2 # Event-Relay BENTOV2_EVENT_RELAY_IMAGE=ghcr.io/bento-platform/bento_event_relay -BENTOV2_EVENT_RELAY_VERSION=3.1.7 +BENTOV2_EVENT_RELAY_VERSION=3.1.8 BENTOV2_EVENT_RELAY_VERSION_DEV=${BENTOV2_EVENT_RELAY_VERSION}-dev BENTOV2_EVENT_RELAY_CONTAINER_NAME=${BENTOV2_PREFIX}-event-relay BENTO_EVENT_RELAY_NETWORK=${BENTOV2_PREFIX}-event-relay-net @@ -407,7 +407,7 @@ BENTO_PUBLIC_PORTAL_URL=${BENTOV2_PORTAL_PUBLIC_URL} BENTO_BEACON_CONTAINER_NAME=${BENTOV2_PREFIX}-beacon BENTO_BEACON_NETWORK=${BENTOV2_PREFIX}-beacon-net BENTO_BEACON_IMAGE=ghcr.io/bento-platform/bento_beacon -BENTO_BEACON_VERSION=pr-120 +BENTO_BEACON_VERSION=0.19.0 BENTO_BEACON_VERSION_DEV=${BENTO_BEACON_VERSION}-dev BENTO_BEACON_INTERNAL_PORT=${BENTO_STD_SERVICE_INTERNAL_PORT} BENTO_BEACON_EXTERNAL_PORT=5000 From 36cf5cc022f22faebb23b17448fe76d742280a4c Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Fri, 31 Jan 2025 12:02:44 -0500 Subject: [PATCH 42/46] set public to 0.23.0 --- etc/bento.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/bento.env b/etc/bento.env index 0a377214..59b28210 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -387,7 +387,7 @@ BENTOV2_GOHAN_PRIVATE_AUTHZ_URL=http://${BENTOV2_GOHAN_AUTHZ_OPA_CONTAINER_NAME} # Bento-Public BENTO_PUBLIC_IMAGE=ghcr.io/bento-platform/bento_public -BENTO_PUBLIC_VERSION=edge +BENTO_PUBLIC_VERSION=0.23.0 BENTO_PUBLIC_VERSION_DEV=${BENTO_PUBLIC_VERSION}-dev BENTO_PUBLIC_CONTAINER_NAME=${BENTOV2_PREFIX}-public BENTO_PUBLIC_NETWORK=${BENTOV2_PREFIX}-public-net From a8283db74baa0d5e712870024ac62e0294e16df7 Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Mon, 3 Feb 2025 13:29:34 -0500 Subject: [PATCH 43/46] set web to 7.0.0 and katsu to 10.0.0 --- etc/bento.env | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/etc/bento.env b/etc/bento.env index 59b28210..376ace49 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -100,7 +100,7 @@ BENTO_AUTHZ_DB_MEM_LIM=1G # Web BENTO_WEB_CUSTOM_HEADER= BENTOV2_WEB_IMAGE=ghcr.io/bento-platform/bento_web -BENTOV2_WEB_VERSION=edge +BENTOV2_WEB_VERSION=7.0.0 BENTOV2_WEB_VERSION_DEV=${BENTOV2_WEB_VERSION}-dev BENTOV2_WEB_CONTAINER_NAME=${BENTOV2_PREFIX}-web BENTO_WEB_NETWORK=${BENTOV2_PREFIX}-web-net @@ -278,7 +278,7 @@ BENTOV2_KATSU_DB_CPUS=4 # Katsu BENTOV2_KATSU_IMAGE=ghcr.io/bento-platform/katsu -BENTOV2_KATSU_VERSION=edge +BENTOV2_KATSU_VERSION=10.0.0 BENTOV2_KATSU_VERSION_DEV=${BENTOV2_KATSU_VERSION}-dev BENTOV2_KATSU_CONTAINER_NAME=${BENTOV2_PREFIX}-katsu BENTO_KATSU_NETWORK=${BENTOV2_PREFIX}-katsu-net From d36d649ff3f7139b6a7fe0d42d6da85258093252 Mon Sep 17 00:00:00 2001 From: v-rocheleau Date: Tue, 4 Feb 2025 13:36:39 -0500 Subject: [PATCH 44/46] docs: typo --- docs/migrating_to_18.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md index e51eacc2..52915e9f 100644 --- a/docs/migrating_to_18.md +++ b/docs/migrating_to_18.md @@ -1,6 +1,6 @@ # Migrating to Bento v18 -* Bento v18 requires implements some new features for branding, which may require changes as described below. +* Bento v18 implements some new features for branding, which may require changes as described below. * It also adds MinIO as a backend for future S3-compatible object storage. * This can be enabled now, but will not be used until a future version. * For instances hosted on the Secure Data for Health (SD4H) infrastructure, the SD4H object store should be used for From 93d82c3ccbbf646d5d6f16c90520663ec12745fe Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Tue, 4 Feb 2025 16:59:21 -0500 Subject: [PATCH 45/46] bump public to 0.23.1 --- etc/bento.env | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/etc/bento.env b/etc/bento.env index 376ace49..603c8878 100644 --- a/etc/bento.env +++ b/etc/bento.env @@ -387,7 +387,7 @@ BENTOV2_GOHAN_PRIVATE_AUTHZ_URL=http://${BENTOV2_GOHAN_AUTHZ_OPA_CONTAINER_NAME} # Bento-Public BENTO_PUBLIC_IMAGE=ghcr.io/bento-platform/bento_public -BENTO_PUBLIC_VERSION=0.23.0 +BENTO_PUBLIC_VERSION=0.23.1 BENTO_PUBLIC_VERSION_DEV=${BENTO_PUBLIC_VERSION}-dev BENTO_PUBLIC_CONTAINER_NAME=${BENTOV2_PREFIX}-public BENTO_PUBLIC_NETWORK=${BENTOV2_PREFIX}-public-net From 7e4a179be596283e404b772cd886b8982d0fd85f Mon Sep 17 00:00:00 2001 From: David Lougheed Date: Wed, 5 Feb 2025 11:06:45 -0500 Subject: [PATCH 46/46] docs: add init-docker step for migration guide --- docs/migrating_to_18.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/migrating_to_18.md b/docs/migrating_to_18.md index 52915e9f..a186c28b 100644 --- a/docs/migrating_to_18.md +++ b/docs/migrating_to_18.md @@ -7,11 +7,13 @@ production instances when S3-compatible services become ready in a future version. -## 1. Stop and update services +## 1. Stop and update services, and initialize new networks ```bash ./bentoctl.bash stop ./bentoctl.bash pull +# set up new Docker networks for MinIO (needed even if MinIO is not set up) +./bentoctl.bash init-docker ```