From df9ebf7058aa0e1afb055096425ebee723c603c2 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Fri, 15 Jul 2022 09:16:51 +0200 Subject: [PATCH 001/135] Initial Instana support commit --- .env | 7 +- README-Instana.md | 57 ++++ docker-compose.yml | 341 ++++++++++++++++++++++- instana-agent/.gitignore | 1 + instana-agent/configuration-otel.yaml | 25 ++ instana-agent/docker-compose.yml | 39 +++ instana-agent/instana-agent.env.template | 11 + src/adservice/gradle.properties | 4 + src/cartservice/src/cartservice.csproj | 1 + src/checkoutservice/Dockerfile | 1 + src/checkoutservice/main.go | 2 + src/emailservice/Gemfile | 1 + src/emailservice/email_server.rb | 3 + src/frontend/Dockerfile | 2 + src/otelcollector/otelcol-config.yml | 14 +- src/paymentservice/Dockerfile | 3 + src/productcatalogservice/Dockerfile | 1 + src/productcatalogservice/main.go | 2 + src/recommendationservice/Dockerfile | 1 + src/shippingservice/Dockerfile | 2 +- 20 files changed, 512 insertions(+), 6 deletions(-) create mode 100644 README-Instana.md create mode 100644 instana-agent/.gitignore create mode 100644 instana-agent/configuration-otel.yaml create mode 100644 instana-agent/docker-compose.yml create mode 100644 instana-agent/instana-agent.env.template create mode 100644 src/adservice/gradle.properties diff --git a/.env b/.env index e4c71986ac..7df8794c3f 100644 --- a/.env +++ b/.env @@ -2,8 +2,13 @@ IMAGE_VERSION=v1.1.0 IMAGE_NAME=ghcr.io/open-telemetry/demo +# Instana +INSTANA_AGENT_HOST=instana-agent +INSTANA_AGENT_PORT=42699 + # Collector -OTEL_EXPORTER_OTLP_ENDPOINT=http://otelcol:4317 +# OTEL_EXPORTER_OTLP_ENDPOINT=http://otelcol:4317 +OTEL_EXPORTER_OTLP_ENDPOINT=http://${INSTANA_AGENT_HOST}:4317 OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT} OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT} PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4318/v1/traces diff --git a/README-Instana.md b/README-Instana.md new file mode 100644 index 0000000000..7705f24e4e --- /dev/null +++ b/README-Instana.md @@ -0,0 +1,57 @@ +# OpenTelemetry Demo with Instana Backend + +This repo is a fork of the original [OpenTelemetry Demo](https://github.com/open-telemetry/opentelemetry-demo) with added integration to Instana host-agent OTLP endpoint and application infrastructure monitoring configuration. + +## Build and run the demo webstore app + +Follow the main [README](README.md). This is basically: +```sh +docker compose up +``` + +### In case you are behing an HTTP proxy ... +Configure the Docker client according to https://docs.docker.com/network/proxy/ by adding the following snippet to `~/.docker/config.json` +```json +{ + "proxies": + { + "default": + { + "httpProxy": "http://192.168.31.253:3128", + "httpsProxy": "http://192.168.31.253:3128", + "noProxy": "192.168.0.0/16,.tec.cz.ibm.com,127.0.0.0/8" + } + } +} +``` + +Create a new gradle properties file `src/adservice/gradle.properties` with your proxy settings: +``` +systemProp.https.proxyHost=192.168.31.253 +systemProp.https.proxyPort=3128 +``` + +Build the Webstore app with `http_proxy` and `https_proxy` environment variables passed to `docker-compose`: +```sh +docker compose build \ + --build-arg 'https_proxy=http://192.168.31.253:3128' \ + --build-arg 'http_proxy=http://192.168.31.253:3128' \ + --build-arg 'no_proxy=localhost,127.0.0.1,127.0.1.1,.tec.cz.ibm.com,192.168.0.0/16' \ + --no-cache +``` + +## Build and run Instana host agent + +Create an environment file for `docker-compose` with your Instana endpoint connection configuration and keys. Use the template: +```sh +cd instana-agent +cp instana-agent.env.template .env +``` + +Edit the OTEL Collector configuration file [`src/otelcollector/otelcol-config.yml`](src/otelcollector/otelcol-config.yml) and replace the Instana endpoint with your host IP or DNS-resolvable hostname. Use the actual host interface IP; don't use `localhost` or `127.0.0.1` as the collector must be able to reach the IP from inside a container. + +Launch the agent (inside the `instana-agent` directory): +```sh +docker compose up -d +``` + diff --git a/docker-compose.yml b/docker-compose.yml index e14186610b..204019fc7e 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,7 +25,63 @@ networks: driver: bridge services: - # Ad service + # Jaeger + jaeger: + image: jaegertracing/all-in-one + container_name: jaeger + command: ["--memory.max-traces", "10000"] + environment: + - COLLECTOR_OTLP_ENABLED=true + deploy: + resources: + limits: + memory: 275M + restart: always + ports: + - "16686:16686" # Jaeger UI + - "4317" # OTLP gRPC default port + logging: *logging + + # Collector + otelcol: + image: otel/opentelemetry-collector-contrib:0.61.0 + container_name: otel-col + deploy: + resources: + limits: + memory: 100M + restart: always + command: [ "--config=/etc/otelcol-config.yml", "--config=/etc/otelcol-config-extras.yml" ] + volumes: + - ./src/otelcollector/otelcol-config.yml:/etc/otelcol-config.yml + - ./src/otelcollector/otelcol-config-extras.yml:/etc/otelcol-config-extras.yml + ports: + - "4317" # OTLP over gRPC receiver + - "4318:4318" # OTLP over HTTP receiver + - "9464" # Prometheus exporter + - "8888" # metrics endpoint + environment: + - HTTP_PROXY=${http_proxy} + - HTTPS_PROXY=${https_proxy} + - NO_PROXY=jaeger,${no_proxy} + depends_on: + - jaeger + logging: *logging + + # Redis + redis-cart: + image: redis:alpine + container_name: redis-cart + deploy: + resources: + limits: + memory: 20M + restart: always + ports: + - "${REDIS_PORT}" + logging: *logging + + # AdService adservice: image: ${IMAGE_NAME}:${IMAGE_VERSION}-adservice container_name: ad-service @@ -47,6 +103,7 @@ services: - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - OTEL_SERVICE_NAME=adservice + - INSTANA_SERVICE_NAME=adservice depends_on: - otelcol logging: *logging @@ -73,6 +130,13 @@ services: - OTEL_EXPORTER_OTLP_ENDPOINT - OTEL_SERVICE_NAME=cartservice - ASPNETCORE_URLS=http://*:${CART_SERVICE_PORT} + - INSTANA_SERVICE_NAME=cartservice + - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} + - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} + # - DOTNET_STARTUP_HOOKS=/usr/src/app/Instana.Tracing.Core.dll + # - CORECLR_ENABLE_PROFILING=1 + # - CORECLR_PROFILER={cf0d821e-299b-5307-a3d8-b283c03916dd} + # - CORECLR_PROFILER_PATH=/usr/src/app/instana_tracing/CoreProfiler.so depends_on: - redis-cart - otelcol @@ -106,6 +170,9 @@ services: - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - OTEL_SERVICE_NAME=checkoutservice + - INSTANA_SERVICE_NAME=checkoutservice + - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} + - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} depends_on: - cartservice - currencyservice @@ -138,6 +205,7 @@ services: - CURRENCY_SERVICE_PORT - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - OTEL_RESOURCE_ATTRIBUTES=service.name=currencyservice # The C++ SDK does not support OTEL_SERVICE_NAME + - INSTANA_SERVICE_NAME=currencyservice depends_on: - otelcol logging: *logging @@ -162,6 +230,9 @@ services: - EMAIL_SERVICE_PORT - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://otelcol:4318/v1/traces - OTEL_SERVICE_NAME=emailservice + - INSTANA_SERVICE_NAME=emailservice + - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} + - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} depends_on: - otelcol logging: *logging @@ -197,7 +268,15 @@ services: - OTEL_EXPORTER_OTLP_ENDPOINT - ENV_PLATFORM - OTEL_SERVICE_NAME=frontend +<<<<<<< HEAD - PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT +======= + - PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4318/v1/traces + - INSTANA_SERVICE_NAME=frontend + - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} + - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} + - INSTANA_DISABLE_TRACING=true +>>>>>>> 3b8f8bd (Initial Instana support commit) depends_on: - adservice - cartservice @@ -586,3 +665,263 @@ services: - recommendationservice - shippingservice - quoteservice +<<<<<<< HEAD +======= + + # PaymentService + paymentservice: + image: ${IMAGE_NAME}:${IMAGE_VERSION}-paymentservice + container_name: payment-service + build: + context: ./ + dockerfile: ./src/paymentservice/Dockerfile + cache_from: + - ${IMAGE_NAME}:${IMAGE_VERSION}-paymentservice + deploy: + resources: + limits: + memory: 70M + restart: always + ports: + - "${PAYMENT_SERVICE_PORT}" + environment: + - PAYMENT_SERVICE_PORT + - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + - OTEL_SERVICE_NAME=paymentservice + - INSTANA_SERVICE_NAME=paymentservice + - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} + - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} + - INSTANA_DISABLE_TRACING=true + depends_on: + - otelcol + logging: *logging + + # ProductCatalogService + productcatalogservice: + image: ${IMAGE_NAME}:${IMAGE_VERSION}-productcatalogservice + container_name: product-catalog-service + build: + context: ./ + dockerfile: ./src/productcatalogservice/Dockerfile + cache_from: + - ${IMAGE_NAME}:${IMAGE_VERSION}-productcatalogservice + deploy: + resources: + limits: + memory: 20M + restart: always + ports: + - "${PRODUCT_CATALOG_SERVICE_PORT}" + environment: + - PRODUCT_CATALOG_SERVICE_PORT + - FEATURE_FLAG_GRPC_SERVICE_ADDR + - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + - OTEL_SERVICE_NAME=productcatalogservice + - INSTANA_SERVICE_NAME=productcatalogservice + - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} + - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} + depends_on: + - otelcol + logging: *logging + + quoteservice: + image: ${IMAGE_NAME}:${IMAGE_VERSION}-quoteservice + container_name: quoteservice + build: + context: ./ + dockerfile: ./src/quoteservice/Dockerfile + cache_from: + - ${IMAGE_NAME}:${IMAGE_VERSION}-quoteservice + deploy: + resources: + limits: + memory: 30M + restart: always + ports: + - "${QUOTE_SERVICE_PORT}" + environment: + # OTEL_EXPORTER_OTLP_TRACES_ENDPOINT # Not working for PHP + - QUOTE_SERVICE_PORT + - OTEL_SERVICE_NAME=quoteservice + - INSTANA_SERVICE_NAME=quoteservice + # - OTEL_EXPORTER_OTLP_ENDPOINT=otelcol:4317 + - OTEL_EXPORTER_OTLP_ENDPOINT=${INSTANA_AGENT_HOST}:4317 + - OTEL_TRACES_SAMPLER=parentbased_always_on + - OTEL_TRACES_EXPORTER=otlp + - OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=grpc + - OTEL_PHP_TRACES_PROCESSOR=simple + depends_on: + - otelcol + logging: *logging + + # RecommendationService + recommendationservice: + image: ${IMAGE_NAME}:${IMAGE_VERSION}-recommendationservice + container_name: recommendation-service + build: + context: ./ + dockerfile: ./src/recommendationservice/Dockerfile + cache_from: + - ${IMAGE_NAME}:${IMAGE_VERSION}-recommendationservice + deploy: + resources: + limits: + memory: 500M # This is high to enable supporting the recommendationCache feature flag use case + restart: always + ports: + - "${RECOMMENDATION_SERVICE_PORT}" + depends_on: + - productcatalogservice + - otelcol + - featureflagservice + environment: + - RECOMMENDATION_SERVICE_PORT + - PRODUCT_CATALOG_SERVICE_ADDR + - FEATURE_FLAG_GRPC_SERVICE_ADDR + - OTEL_PYTHON_LOG_CORRELATION=true + - OTEL_TRACES_EXPORTER=otlp + - OTEL_METRICS_EXPORTER=otlp + - OTEL_EXPORTER_OTLP_ENDPOINT + - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE + - OTEL_SERVICE_NAME=recommendationservice + - PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python + - INSTANA_SERVICE_NAME=recommendationservice + - AUTOWRAPT_BOOTSTRAP=instana + - INSTANA_DISABLE_AUTO_INSTR=true + - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} + - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} + logging: *logging + + # ShippingService + shippingservice: + image: ${IMAGE_NAME}:${IMAGE_VERSION}-shippingservice + container_name: shipping-service + build: + context: ./ + dockerfile: ./src/shippingservice/Dockerfile + cache_from: + - ${IMAGE_NAME}:${IMAGE_VERSION}-shippingservice + deploy: + resources: + limits: + memory: 20M + restart: always + ports: + - "${SHIPPING_SERVICE_PORT}" + environment: + - SHIPPING_SERVICE_PORT + - QUOTE_SERVICE_ADDR + - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + - OTEL_SERVICE_NAME=shippingservice + - INSTANA_SERVICE_NAME=shippingservice + depends_on: + - otelcol + logging: *logging + + # FeatureFlagService + featureflagservice: + image: ${IMAGE_NAME}:${IMAGE_VERSION}-featureflagservice + container_name: feature-flag-service + build: + context: ./src/featureflagservice + cache_from: + - ${IMAGE_NAME}:${IMAGE_VERSION}-featureflagservice + deploy: + resources: + limits: + memory: 160M + restart: always + ports: + - "${FEATURE_FLAG_SERVICE_PORT}:${FEATURE_FLAG_SERVICE_PORT}" # Feature Flag Service UI + - "${FEATURE_FLAG_GRPC_SERVICE_PORT}" # Feature Flag Service gRPC API + environment: + - FEATURE_FLAG_SERVICE_PORT + - FEATURE_FLAG_GRPC_SERVICE_PORT + - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + - OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=grpc + - OTEL_SERVICE_NAME=featureflagservice + - INSTANA_SERVICE_NAME=featureflagservice + - DATABASE_URL=ecto://ffs:ffs@ffs_postgres:5432/ffs + depends_on: + ffs_postgres: + condition: service_healthy + logging: *logging + + ffs_postgres: + image: cimg/postgres:14.2 + container_name: postgres + deploy: + resources: + limits: + memory: 120M + restart: always + environment: + - POSTGRES_USER=ffs + - POSTGRES_DB=ffs + - POSTGRES_PASSWORD=ffs + logging: *logging + healthcheck: + test: ["CMD-SHELL", "pg_isready -d ffs -U ffs"] + interval: 10s + timeout: 5s + retries: 5 + + # LoadGenerator + loadgenerator: + image: ${IMAGE_NAME}:${IMAGE_VERSION}-loadgenerator + container_name: load-generator + build: + context: ./ + dockerfile: ./src/loadgenerator/Dockerfile + cache_from: + - ${IMAGE_NAME}:${IMAGE_VERSION}-loadgenerator + deploy: + resources: + limits: + memory: 120M + restart: always + ports: + - "${LOCUST_WEB_PORT}:${LOCUST_WEB_PORT}" + environment: + - LOCUST_WEB_PORT + - LOCUST_USERS + - LOCUST_HOST + - LOCUST_HEADLESS + - LOCUST_AUTOSTART + - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + - OTEL_SERVICE_NAME=loadgenerator + - INSTANA_SERVICE_NAME=loadgenerator + - PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python + depends_on: + - frontend + logging: *logging + + # Prometheus + prometheus: + image: quay.io/prometheus/prometheus:v2.34.0 + container_name: prometheus + command: + - --web.console.templates=/etc/prometheus/consoles + - --web.console.libraries=/etc/prometheus/console_libraries + - --storage.tsdb.retention.time=1h + - --config.file=/etc/prometheus/prometheus-config.yaml + - --storage.tsdb.path=/prometheus + - --web.enable-lifecycle + - --web.route-prefix=/ + volumes: + - ./src/prometheus/prometheus-config.yaml:/etc/prometheus/prometheus-config.yaml + ports: + - "${PROMETHEUS_SERVICE_PORT}:${PROMETHEUS_SERVICE_PORT}" + logging: *logging + + # Grafana + grafana: + image: grafana/grafana:9.1.0 + container_name: grafana + volumes: + - ./src/grafana/grafana.ini:/etc/grafana/grafana.ini + - ./src/grafana/provisioning/:/etc/grafana/provisioning/ + ports: + - "${GRAFANA_SERVICE_PORT}:${GRAFANA_SERVICE_PORT}" + logging: *logging +>>>>>>> 3b8f8bd (Initial Instana support commit) diff --git a/instana-agent/.gitignore b/instana-agent/.gitignore new file mode 100644 index 0000000000..4c49bd78f1 --- /dev/null +++ b/instana-agent/.gitignore @@ -0,0 +1 @@ +.env diff --git a/instana-agent/configuration-otel.yaml b/instana-agent/configuration-otel.yaml new file mode 100644 index 0000000000..0d893c92fa --- /dev/null +++ b/instana-agent/configuration-otel.yaml @@ -0,0 +1,25 @@ +com.instana.plugin.opentelemetry: + enabled: true + +com.instana.ignore: + arguments: + - '-javaagent:/opt/otel/opentelemetry-javaagent-all.jar' + +com.instana.tracing: + extra-http-headers: + - traceparent + - tracestate + +# otel-demo configurations +com.instana.plugin.postgresql: + user: 'ffs' + password: 'ffs' + database: 'ffs' + +com.instana.plugin.python: + autotrace: + enabled: false + +com.instana.plugin.php: + tracing: + enabled: false diff --git a/instana-agent/docker-compose.yml b/instana-agent/docker-compose.yml new file mode 100644 index 0000000000..14bf7ea95f --- /dev/null +++ b/instana-agent/docker-compose.yml @@ -0,0 +1,39 @@ +version: "3" +services: + instana-agent: + image: icr.io/instana/agent:latest + container_name: instana-agent + pid: "host" + privileged: true + # network_mode: host + networks: + - opentelemetry-demo + expose: + - "42699" + - "4317" + volumes: + - /var/run/docker.sock:/var/run/docker.sock + - /dev:/dev + - /sys:/sys + - /var/log:/var/log + - ./configuration-otel.yaml:/opt/instana/agent/etc/instana/configuration-otel.yaml + #- ./com.instana.agent.main.sender.File.cfg:/opt/instana/agent/etc/instana/com.instana.agent.main.sender.File.cfg + environment: + - INSTANA_AGENT_ENDPOINT=${INSTANA_AGENT_ENDPOINT:?No agent endpoint provided} + - INSTANA_AGENT_ENDPOINT_PORT=${INSTANA_AGENT_ENDPOINT_PORT:-443} + - INSTANA_AGENT_KEY=${INSTANA_AGENT_KEY:?No agent key provided} + - INSTANA_DOWNLOAD_KEY=${INSTANA_DOWNLOAD_KEY} + - INSTANA_AGENT_ZONE=${INSTANA_AGENT_ZONE:-otel-demo-webstore} + # - INSTANA_MVN_REPOSITORY_FEATURES_PATH=artifactory/features-internal@id=features@snapshots@snapshotsUpdate=always + # - INSTANA_MVN_REPOSITORY_SHARED_PATH=artifactory/shared@id=shared@snapshots@snapshotsUpdate=always + - INSTANA_AGENT_PROXY_HOST=${INSTANA_AGENT_PROXY_HOST} + - INSTANA_AGENT_PROXY_PORT=${INSTANA_AGENT_PROXY_PORT} + - INSTANA_REPOSITORY_PROXY_ENABLED=true + - INSTANA_REPOSITORY_PROXY_HOST=${INSTANA_REPOSITORY_PROXY_HOST} + - INSTANA_REPOSITORY_PROXY_PORT=${INSTANA_REPOSITORY_PROXY_PORT} + - HTTP_PROXY=${http_proxy} + - HTTPS_PROXY=${https_proxy} + - NO_PROXY=${no_proxy} +networks: + opentelemetry-demo: + external: true diff --git a/instana-agent/instana-agent.env.template b/instana-agent/instana-agent.env.template new file mode 100644 index 0000000000..b917e12239 --- /dev/null +++ b/instana-agent/instana-agent.env.template @@ -0,0 +1,11 @@ +# Instana agent configuration +INSTANA_AGENT_KEY= +INSTANA_DOWNLOAD_KEY= +INSTANA_AGENT_ENDPOINT= +INSTANA_AGENT_ZONE= # default is otel-demo-webstore +INSTANA_AGENT_ENDPOINT_PORT=1444 # 443 for SaaS, 1444 for on-prem +INSTANA_AGENT_PROXY_HOST="" # leave blank if not using a proxy +INSTANA_AGENT_PROXY_PORT="" # leave blank if not using a proxy +INSTANA_REPOSITORY_PROXY_HOST="" # leave blank if not using a proxy +INSTANA_REPOSITORY_PROXY_PORT="" # leave blank if not using a proxy +INSTANA_LOG_LEVEL=INFO # INFO, DEBUG, TRACE, ERROR or OFF. diff --git a/src/adservice/gradle.properties b/src/adservice/gradle.properties new file mode 100644 index 0000000000..efae8da500 --- /dev/null +++ b/src/adservice/gradle.properties @@ -0,0 +1,4 @@ +systemProp.http.proxyHost=192.168.31.253 +systemProp.http.proxyPort=3128 +systemProp.https.proxyHost=192.168.31.253 +systemProp.https.proxyPort=3128 diff --git a/src/cartservice/src/cartservice.csproj b/src/cartservice/src/cartservice.csproj index a4cd172351..640045b712 100644 --- a/src/cartservice/src/cartservice.csproj +++ b/src/cartservice/src/cartservice.csproj @@ -15,6 +15,7 @@ + diff --git a/src/checkoutservice/Dockerfile b/src/checkoutservice/Dockerfile index ca6e2e0228..fed6377dc5 100644 --- a/src/checkoutservice/Dockerfile +++ b/src/checkoutservice/Dockerfile @@ -22,6 +22,7 @@ COPY ./pb/ ./proto/ RUN go mod download RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28 RUN go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2 +RUN go get github.com/instana/go-sensor # Build executable RUN protoc -I ./proto/ ./proto/demo.proto --go_out=./ --go-grpc_out=./ diff --git a/src/checkoutservice/main.go b/src/checkoutservice/main.go index a9bd454572..37c4f0c8e4 100644 --- a/src/checkoutservice/main.go +++ b/src/checkoutservice/main.go @@ -46,6 +46,7 @@ import ( sdkmetric "go.opentelemetry.io/otel/sdk/metric" sdktrace "go.opentelemetry.io/otel/sdk/trace" + instana "github.com/instana/go-sensor" pb "github.com/open-telemetry/opentelemetry-demo/src/checkoutservice/genproto/hipstershop" "github.com/open-telemetry/opentelemetry-demo/src/checkoutservice/money" healthpb "google.golang.org/grpc/health/grpc_health_v1" @@ -107,6 +108,7 @@ type checkoutService struct { } func main() { + instana.InitSensor(instana.DefaultOptions()) var port string mustMapEnv(&port, "CHECKOUT_SERVICE_PORT") diff --git a/src/emailservice/Gemfile b/src/emailservice/Gemfile index 971b0d036b..a00eee35d2 100644 --- a/src/emailservice/Gemfile +++ b/src/emailservice/Gemfile @@ -8,3 +8,4 @@ gem "sinatra", "~> 2.2" gem "opentelemetry-sdk", "~> 1.1" gem "opentelemetry-exporter-otlp", "~> 0.21" gem "opentelemetry-instrumentation-sinatra", "~> 0.19" +gem "instana" diff --git a/src/emailservice/email_server.rb b/src/emailservice/email_server.rb index 6df006ee35..8954cb1a32 100644 --- a/src/emailservice/email_server.rb +++ b/src/emailservice/email_server.rb @@ -19,6 +19,7 @@ require "opentelemetry/sdk" require "opentelemetry/exporter/otlp" require "opentelemetry/instrumentation/sinatra" +require "instana" set :port, ENV["EMAIL_SERVICE_PORT"] @@ -26,6 +27,8 @@ c.use "OpenTelemetry::Instrumentation::Sinatra" end +::Instana.config[:tracing][:enabled] = false # default true + post "/send_order_confirmation" do data = JSON.parse(request.body.read, object_class: OpenStruct) diff --git a/src/frontend/Dockerfile b/src/frontend/Dockerfile index b4f5da5b6d..c13edc5a1f 100644 --- a/src/frontend/Dockerfile +++ b/src/frontend/Dockerfile @@ -5,6 +5,7 @@ WORKDIR /app COPY ./src/frontend/package*.json ./ RUN npm ci +RUN npm install --save @instana/collector FROM node:16-alpine AS builder RUN apk add --no-cache libc6-compat protobuf-dev protoc @@ -38,5 +39,6 @@ USER nextjs ENV PORT 8080 EXPOSE ${PORT} +ENV NODE_OPTIONS="--require ./node_modules/@instana/collector/src/immediate" ENTRYPOINT npm start diff --git a/src/otelcollector/otelcol-config.yml b/src/otelcollector/otelcol-config.yml index b9a77e46a4..2771eef11a 100644 --- a/src/otelcollector/otelcol-config.yml +++ b/src/otelcollector/otelcol-config.yml @@ -9,10 +9,18 @@ receivers: - "https://*" exporters: - otlp: + otlp/jaeger: endpoint: "jaeger:4317" tls: insecure: true + otlp/instana: + endpoint: "192.168.26.80:4317" + tls: + insecure: true + instana: + # loglevel: debug + endpoint: https://serverless-orange-saas.instana.io + agent_key: logging: prometheus: endpoint: "otelcol:9464" @@ -27,8 +35,8 @@ service: traces: receivers: [otlp] processors: [spanmetrics, batch] - exporters: [logging, otlp] + exporters: [logging, otlp/jaeger, otlp/instana, instana] metrics: receivers: [otlp] processors: [batch] - exporters: [prometheus, logging] + exporters: [prometheus, logging, otlp/instana] diff --git a/src/paymentservice/Dockerfile b/src/paymentservice/Dockerfile index 4f690d4c7c..ce8a64c056 100644 --- a/src/paymentservice/Dockerfile +++ b/src/paymentservice/Dockerfile @@ -19,6 +19,7 @@ WORKDIR /usr/src/app/ COPY ./src/paymentservice/package*.json ./ RUN apk add --no-cache python3 make g++ && npm ci --omit=dev +RUN npm install --save @instana/collector # ----------------------------------------------------------------------------- @@ -32,5 +33,7 @@ COPY --chown=node:node --from=build /usr/src/app/node_modules/ ./node_modules/ COPY ./src/paymentservice/ ./ COPY ./pb/demo.proto ./ +ENV NODE_OPTIONS="--require ./node_modules/@instana/collector/src/immediate" + EXPOSE ${PAYMENT_SERVICE_PORT} ENTRYPOINT [ "npm", "run", "start" ] diff --git a/src/productcatalogservice/Dockerfile b/src/productcatalogservice/Dockerfile index 50d53bceb4..4273631716 100644 --- a/src/productcatalogservice/Dockerfile +++ b/src/productcatalogservice/Dockerfile @@ -25,6 +25,7 @@ COPY ./pb/ ./proto/ RUN go mod download RUN go get google.golang.org/protobuf/cmd/protoc-gen-go RUN go get google.golang.org/grpc/cmd/protoc-gen-go-grpc +RUN go get github.com/instana/go-sensor # Build executable RUN protoc -I ./proto/ ./proto/demo.proto --go_out=./ --go-grpc_out=./ diff --git a/src/productcatalogservice/main.go b/src/productcatalogservice/main.go index 4b5455b0a3..49f6771ed5 100644 --- a/src/productcatalogservice/main.go +++ b/src/productcatalogservice/main.go @@ -39,6 +39,7 @@ import ( "google.golang.org/protobuf/encoding/protojson" + instana "github.com/instana/go-sensor" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials/insecure" @@ -69,6 +70,7 @@ func initTracerProvider() *sdktrace.TracerProvider { } func main() { + instana.InitSensor(instana.DefaultOptions()) tp := initTracerProvider() defer func() { if err := tp.Shutdown(context.Background()); err != nil { diff --git a/src/recommendationservice/Dockerfile b/src/recommendationservice/Dockerfile index 3e542988a7..6b197c96bd 100644 --- a/src/recommendationservice/Dockerfile +++ b/src/recommendationservice/Dockerfile @@ -21,6 +21,7 @@ COPY ./pb/ ./proto/ RUN pip install --upgrade pip RUN pip install -r ./requirements.txt +RUN pip install instana RUN opentelemetry-bootstrap -a install diff --git a/src/shippingservice/Dockerfile b/src/shippingservice/Dockerfile index e6190ec6f8..914e36b42f 100644 --- a/src/shippingservice/Dockerfile +++ b/src/shippingservice/Dockerfile @@ -11,7 +11,7 @@ COPY /pb/ /app/proto/ RUN cargo build -r --features="dockerproto" FROM alpine as release -RUN apk add --no-cache ca-certificates +RUN apk add --no-cache ca-certificates wget RUN GRPC_HEALTH_PROBE_VERSION=v0.4.7 && \ wget -qO/bin/grpc_health_probe https://github.com/grpc-ecosystem/grpc-health-probe/releases/download/${GRPC_HEALTH_PROBE_VERSION}/grpc_health_probe-linux-amd64 && \ chmod +x /bin/grpc_health_probe From 699614e4afc1f8e03e052dadb11877797f17b541 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Mon, 26 Sep 2022 09:12:30 +0200 Subject: [PATCH 002/135] change agent network back to host-mode --- .env | 3 ++- docker-compose.yml | 6 ++++++ instana-agent/docker-compose.yml | 10 +--------- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/.env b/.env index 7df8794c3f..de24742b83 100644 --- a/.env +++ b/.env @@ -3,7 +3,8 @@ IMAGE_VERSION=v1.1.0 IMAGE_NAME=ghcr.io/open-telemetry/demo # Instana -INSTANA_AGENT_HOST=instana-agent +# INSTANA_AGENT_HOST=instana-agent +INSTANA_AGENT_HOST=172.17.0.1 # docker0 interface INSTANA_AGENT_PORT=42699 # Collector diff --git a/docker-compose.yml b/docker-compose.yml index 204019fc7e..71baf375c7 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -41,6 +41,8 @@ services: - "16686:16686" # Jaeger UI - "4317" # OTLP gRPC default port logging: *logging + environment: + - INSTANA_SERVICE_NAME=jaeger # Collector otelcol: @@ -64,6 +66,7 @@ services: - HTTP_PROXY=${http_proxy} - HTTPS_PROXY=${https_proxy} - NO_PROXY=jaeger,${no_proxy} + - INSTANA_SERVICE_NAME=otelcol depends_on: - jaeger logging: *logging @@ -80,6 +83,8 @@ services: ports: - "${REDIS_PORT}" logging: *logging + environment: + - INSTANA_SERVICE_NAME=redis-cart # AdService adservice: @@ -744,6 +749,7 @@ services: - QUOTE_SERVICE_PORT - OTEL_SERVICE_NAME=quoteservice - INSTANA_SERVICE_NAME=quoteservice + - INSTANA_PROCESS_NAME=php # - OTEL_EXPORTER_OTLP_ENDPOINT=otelcol:4317 - OTEL_EXPORTER_OTLP_ENDPOINT=${INSTANA_AGENT_HOST}:4317 - OTEL_TRACES_SAMPLER=parentbased_always_on diff --git a/instana-agent/docker-compose.yml b/instana-agent/docker-compose.yml index 14bf7ea95f..b5d85a4a95 100644 --- a/instana-agent/docker-compose.yml +++ b/instana-agent/docker-compose.yml @@ -5,12 +5,7 @@ services: container_name: instana-agent pid: "host" privileged: true - # network_mode: host - networks: - - opentelemetry-demo - expose: - - "42699" - - "4317" + network_mode: host volumes: - /var/run/docker.sock:/var/run/docker.sock - /dev:/dev @@ -34,6 +29,3 @@ services: - HTTP_PROXY=${http_proxy} - HTTPS_PROXY=${https_proxy} - NO_PROXY=${no_proxy} -networks: - opentelemetry-demo: - external: true From e910e9d032d38e20509dd1ee19a0fb973b04d942 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Mon, 3 Oct 2022 11:45:28 +0200 Subject: [PATCH 003/135] instrument loadgenerator --- docker-compose.yml | 3 +++ instana-agent/docker-compose.yml | 1 + src/loadgenerator/Dockerfile | 2 +- src/loadgenerator/locustfile.py | 1 + 4 files changed, 6 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 71baf375c7..b61e57192b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -897,6 +897,9 @@ services: - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - OTEL_SERVICE_NAME=loadgenerator - INSTANA_SERVICE_NAME=loadgenerator + - INSTANA_DISABLE_AUTO_INSTR=true + - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} + - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} - PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python depends_on: - frontend diff --git a/instana-agent/docker-compose.yml b/instana-agent/docker-compose.yml index b5d85a4a95..cf855c3960 100644 --- a/instana-agent/docker-compose.yml +++ b/instana-agent/docker-compose.yml @@ -6,6 +6,7 @@ services: pid: "host" privileged: true network_mode: host + ipc: host volumes: - /var/run/docker.sock:/var/run/docker.sock - /dev:/dev diff --git a/src/loadgenerator/Dockerfile b/src/loadgenerator/Dockerfile index 503757f4ba..477c3f17a4 100644 --- a/src/loadgenerator/Dockerfile +++ b/src/loadgenerator/Dockerfile @@ -19,5 +19,5 @@ WORKDIR /usr/src/app/ COPY ./src/loadgenerator/ ./ RUN pip install --prefix="/usr/local/" -r ./requirements.txt - +RUN pip install --prefix="/usr/local" instana ENTRYPOINT locust diff --git a/src/loadgenerator/locustfile.py b/src/loadgenerator/locustfile.py index afcf29cb78..480a16ea3c 100644 --- a/src/loadgenerator/locustfile.py +++ b/src/loadgenerator/locustfile.py @@ -24,6 +24,7 @@ from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter from opentelemetry.instrumentation.requests import RequestsInstrumentor from opentelemetry.instrumentation.urllib3 import URLLib3Instrumentor +import instana tracer_provider = TracerProvider() trace.set_tracer_provider(tracer_provider) From 32e91e0a635f9cb6f0d0fa35b1fc93ea44250450 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Fri, 21 Oct 2022 11:36:59 +0200 Subject: [PATCH 004/135] limit agent's resources --- instana-agent/docker-compose.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/instana-agent/docker-compose.yml b/instana-agent/docker-compose.yml index cf855c3960..8551865ecc 100644 --- a/instana-agent/docker-compose.yml +++ b/instana-agent/docker-compose.yml @@ -7,6 +7,11 @@ services: privileged: true network_mode: host ipc: host + deploy: + resources: + limits: + memory: 768M + cpus: "1.5" volumes: - /var/run/docker.sock:/var/run/docker.sock - /dev:/dev From d38c90bc33d23f74f330670428ac599e4697fdf9 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Sat, 22 Oct 2022 13:47:16 +0200 Subject: [PATCH 005/135] updates --- docker-compose.yml | 351 +++++---------------------------------------- 1 file changed, 33 insertions(+), 318 deletions(-) diff --git a/docker-compose.yml b/docker-compose.yml index b61e57192b..fad011f5ec 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -25,52 +25,6 @@ networks: driver: bridge services: - # Jaeger - jaeger: - image: jaegertracing/all-in-one - container_name: jaeger - command: ["--memory.max-traces", "10000"] - environment: - - COLLECTOR_OTLP_ENABLED=true - deploy: - resources: - limits: - memory: 275M - restart: always - ports: - - "16686:16686" # Jaeger UI - - "4317" # OTLP gRPC default port - logging: *logging - environment: - - INSTANA_SERVICE_NAME=jaeger - - # Collector - otelcol: - image: otel/opentelemetry-collector-contrib:0.61.0 - container_name: otel-col - deploy: - resources: - limits: - memory: 100M - restart: always - command: [ "--config=/etc/otelcol-config.yml", "--config=/etc/otelcol-config-extras.yml" ] - volumes: - - ./src/otelcollector/otelcol-config.yml:/etc/otelcol-config.yml - - ./src/otelcollector/otelcol-config-extras.yml:/etc/otelcol-config-extras.yml - ports: - - "4317" # OTLP over gRPC receiver - - "4318:4318" # OTLP over HTTP receiver - - "9464" # Prometheus exporter - - "8888" # metrics endpoint - environment: - - HTTP_PROXY=${http_proxy} - - HTTPS_PROXY=${https_proxy} - - NO_PROXY=jaeger,${no_proxy} - - INSTANA_SERVICE_NAME=otelcol - depends_on: - - jaeger - logging: *logging - # Redis redis-cart: image: redis:alpine @@ -273,15 +227,11 @@ services: - OTEL_EXPORTER_OTLP_ENDPOINT - ENV_PLATFORM - OTEL_SERVICE_NAME=frontend -<<<<<<< HEAD - PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT -======= - - PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4318/v1/traces - INSTANA_SERVICE_NAME=frontend - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} - INSTANA_DISABLE_TRACING=true ->>>>>>> 3b8f8bd (Initial Instana support commit) depends_on: - adservice - cartservice @@ -317,6 +267,7 @@ services: - JAEGER_SERVICE_HOST - ENVOY_PORT - ENVOY_UID=0 + - INSTANA_SERVICE_NAME=frontend-proxy depends_on: - frontend - featureflagservice @@ -347,6 +298,10 @@ services: - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - OTEL_SERVICE_NAME=loadgenerator - PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python + - INSTANA_SERVICE_NAME=loadgenerator + - INSTANA_DISABLE_AUTO_INSTR=true + - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} + - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} depends_on: - frontend logging: *logging @@ -373,6 +328,10 @@ services: - OTEL_EXPORTER_OTLP_METRICS_ENDPOINT - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - OTEL_SERVICE_NAME=paymentservice + - INSTANA_SERVICE_NAME=paymentservice + - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} + - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} + - INSTANA_DISABLE_TRACING=true depends_on: - otelcol logging: *logging @@ -398,6 +357,9 @@ services: - FEATURE_FLAG_GRPC_SERVICE_ADDR - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - OTEL_SERVICE_NAME=productcatalogservice + - INSTANA_SERVICE_NAME=productcatalogservice + - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} + - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} depends_on: - otelcol logging: *logging @@ -422,11 +384,14 @@ services: # OTEL_EXPORTER_OTLP_TRACES_ENDPOINT # Not working for PHP - QUOTE_SERVICE_PORT - OTEL_SERVICE_NAME=quoteservice - - OTEL_EXPORTER_OTLP_ENDPOINT=http://otelcol:4318 + # - OTEL_EXPORTER_OTLP_ENDPOINT=http://otelcol:4318 + - OTEL_EXPORTER_OTLP_ENDPOINT=${INSTANA_AGENT_HOST}:4317 - OTEL_TRACES_SAMPLER=parentbased_always_on - OTEL_TRACES_EXPORTER=otlp - OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf - OTEL_PHP_TRACES_PROCESSOR=simple + - INSTANA_SERVICE_NAME=quoteservice + - INSTANA_PROCESS_NAME=php depends_on: - otelcol logging: *logging @@ -458,6 +423,11 @@ services: - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - OTEL_SERVICE_NAME=recommendationservice - PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python + - INSTANA_SERVICE_NAME=recommendationservice + - AUTOWRAPT_BOOTSTRAP=instana + - INSTANA_DISABLE_AUTO_INSTR=true + - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} + - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} depends_on: - productcatalogservice - otelcol @@ -485,6 +455,7 @@ services: - QUOTE_SERVICE_ADDR - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - OTEL_SERVICE_NAME=shippingservice + - INSTANA_SERVICE_NAME=shippingservice depends_on: - otelcol logging: *logging @@ -498,9 +469,9 @@ services: cache_from: - ${IMAGE_NAME}:${IMAGE_VERSION}-featureflagservice deploy: - resources: - limits: - memory: 200M + # resources: + # limits: + # memory: 200M restart: always ports: - "${FEATURE_FLAG_SERVICE_PORT}" # Feature Flag Service UI @@ -513,6 +484,7 @@ services: - OTEL_SERVICE_NAME=featureflagservice - DATABASE_URL=ecto://ffs:ffs@ffs_postgres:5432/ffs - FEATURE_FLAG_SERVICE_PATH_ROOT="/feature" + - INSTANA_SERVICE_NAME=featureflagservice depends_on: ffs_postgres: condition: service_healthy @@ -585,6 +557,11 @@ services: - "4318:4318" # OTLP over HTTP receiver - "9464" # Prometheus exporter - "8888" # metrics endpoint + environment: + - HTTP_PROXY=${http_proxy} + - HTTPS_PROXY=${https_proxy} + - NO_PROXY=jaeger,${no_proxy} + - INSTANA_SERVICE_NAME=otelcol depends_on: - jaeger logging: *logging @@ -618,6 +595,8 @@ services: restart: always ports: - "${REDIS_PORT}" + environment: + - INSTANA_SERVICE_NAME=redis-cart logging: *logging @@ -670,267 +649,3 @@ services: - recommendationservice - shippingservice - quoteservice -<<<<<<< HEAD -======= - - # PaymentService - paymentservice: - image: ${IMAGE_NAME}:${IMAGE_VERSION}-paymentservice - container_name: payment-service - build: - context: ./ - dockerfile: ./src/paymentservice/Dockerfile - cache_from: - - ${IMAGE_NAME}:${IMAGE_VERSION}-paymentservice - deploy: - resources: - limits: - memory: 70M - restart: always - ports: - - "${PAYMENT_SERVICE_PORT}" - environment: - - PAYMENT_SERVICE_PORT - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - - OTEL_SERVICE_NAME=paymentservice - - INSTANA_SERVICE_NAME=paymentservice - - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} - - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} - - INSTANA_DISABLE_TRACING=true - depends_on: - - otelcol - logging: *logging - - # ProductCatalogService - productcatalogservice: - image: ${IMAGE_NAME}:${IMAGE_VERSION}-productcatalogservice - container_name: product-catalog-service - build: - context: ./ - dockerfile: ./src/productcatalogservice/Dockerfile - cache_from: - - ${IMAGE_NAME}:${IMAGE_VERSION}-productcatalogservice - deploy: - resources: - limits: - memory: 20M - restart: always - ports: - - "${PRODUCT_CATALOG_SERVICE_PORT}" - environment: - - PRODUCT_CATALOG_SERVICE_PORT - - FEATURE_FLAG_GRPC_SERVICE_ADDR - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - - OTEL_SERVICE_NAME=productcatalogservice - - INSTANA_SERVICE_NAME=productcatalogservice - - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} - - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} - depends_on: - - otelcol - logging: *logging - - quoteservice: - image: ${IMAGE_NAME}:${IMAGE_VERSION}-quoteservice - container_name: quoteservice - build: - context: ./ - dockerfile: ./src/quoteservice/Dockerfile - cache_from: - - ${IMAGE_NAME}:${IMAGE_VERSION}-quoteservice - deploy: - resources: - limits: - memory: 30M - restart: always - ports: - - "${QUOTE_SERVICE_PORT}" - environment: - # OTEL_EXPORTER_OTLP_TRACES_ENDPOINT # Not working for PHP - - QUOTE_SERVICE_PORT - - OTEL_SERVICE_NAME=quoteservice - - INSTANA_SERVICE_NAME=quoteservice - - INSTANA_PROCESS_NAME=php - # - OTEL_EXPORTER_OTLP_ENDPOINT=otelcol:4317 - - OTEL_EXPORTER_OTLP_ENDPOINT=${INSTANA_AGENT_HOST}:4317 - - OTEL_TRACES_SAMPLER=parentbased_always_on - - OTEL_TRACES_EXPORTER=otlp - - OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=grpc - - OTEL_PHP_TRACES_PROCESSOR=simple - depends_on: - - otelcol - logging: *logging - - # RecommendationService - recommendationservice: - image: ${IMAGE_NAME}:${IMAGE_VERSION}-recommendationservice - container_name: recommendation-service - build: - context: ./ - dockerfile: ./src/recommendationservice/Dockerfile - cache_from: - - ${IMAGE_NAME}:${IMAGE_VERSION}-recommendationservice - deploy: - resources: - limits: - memory: 500M # This is high to enable supporting the recommendationCache feature flag use case - restart: always - ports: - - "${RECOMMENDATION_SERVICE_PORT}" - depends_on: - - productcatalogservice - - otelcol - - featureflagservice - environment: - - RECOMMENDATION_SERVICE_PORT - - PRODUCT_CATALOG_SERVICE_ADDR - - FEATURE_FLAG_GRPC_SERVICE_ADDR - - OTEL_PYTHON_LOG_CORRELATION=true - - OTEL_TRACES_EXPORTER=otlp - - OTEL_METRICS_EXPORTER=otlp - - OTEL_EXPORTER_OTLP_ENDPOINT - - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - - OTEL_SERVICE_NAME=recommendationservice - - PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python - - INSTANA_SERVICE_NAME=recommendationservice - - AUTOWRAPT_BOOTSTRAP=instana - - INSTANA_DISABLE_AUTO_INSTR=true - - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} - - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} - logging: *logging - - # ShippingService - shippingservice: - image: ${IMAGE_NAME}:${IMAGE_VERSION}-shippingservice - container_name: shipping-service - build: - context: ./ - dockerfile: ./src/shippingservice/Dockerfile - cache_from: - - ${IMAGE_NAME}:${IMAGE_VERSION}-shippingservice - deploy: - resources: - limits: - memory: 20M - restart: always - ports: - - "${SHIPPING_SERVICE_PORT}" - environment: - - SHIPPING_SERVICE_PORT - - QUOTE_SERVICE_ADDR - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - - OTEL_SERVICE_NAME=shippingservice - - INSTANA_SERVICE_NAME=shippingservice - depends_on: - - otelcol - logging: *logging - - # FeatureFlagService - featureflagservice: - image: ${IMAGE_NAME}:${IMAGE_VERSION}-featureflagservice - container_name: feature-flag-service - build: - context: ./src/featureflagservice - cache_from: - - ${IMAGE_NAME}:${IMAGE_VERSION}-featureflagservice - deploy: - resources: - limits: - memory: 160M - restart: always - ports: - - "${FEATURE_FLAG_SERVICE_PORT}:${FEATURE_FLAG_SERVICE_PORT}" # Feature Flag Service UI - - "${FEATURE_FLAG_GRPC_SERVICE_PORT}" # Feature Flag Service gRPC API - environment: - - FEATURE_FLAG_SERVICE_PORT - - FEATURE_FLAG_GRPC_SERVICE_PORT - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - - OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=grpc - - OTEL_SERVICE_NAME=featureflagservice - - INSTANA_SERVICE_NAME=featureflagservice - - DATABASE_URL=ecto://ffs:ffs@ffs_postgres:5432/ffs - depends_on: - ffs_postgres: - condition: service_healthy - logging: *logging - - ffs_postgres: - image: cimg/postgres:14.2 - container_name: postgres - deploy: - resources: - limits: - memory: 120M - restart: always - environment: - - POSTGRES_USER=ffs - - POSTGRES_DB=ffs - - POSTGRES_PASSWORD=ffs - logging: *logging - healthcheck: - test: ["CMD-SHELL", "pg_isready -d ffs -U ffs"] - interval: 10s - timeout: 5s - retries: 5 - - # LoadGenerator - loadgenerator: - image: ${IMAGE_NAME}:${IMAGE_VERSION}-loadgenerator - container_name: load-generator - build: - context: ./ - dockerfile: ./src/loadgenerator/Dockerfile - cache_from: - - ${IMAGE_NAME}:${IMAGE_VERSION}-loadgenerator - deploy: - resources: - limits: - memory: 120M - restart: always - ports: - - "${LOCUST_WEB_PORT}:${LOCUST_WEB_PORT}" - environment: - - LOCUST_WEB_PORT - - LOCUST_USERS - - LOCUST_HOST - - LOCUST_HEADLESS - - LOCUST_AUTOSTART - - OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - - OTEL_SERVICE_NAME=loadgenerator - - INSTANA_SERVICE_NAME=loadgenerator - - INSTANA_DISABLE_AUTO_INSTR=true - - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} - - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} - - PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION=python - depends_on: - - frontend - logging: *logging - - # Prometheus - prometheus: - image: quay.io/prometheus/prometheus:v2.34.0 - container_name: prometheus - command: - - --web.console.templates=/etc/prometheus/consoles - - --web.console.libraries=/etc/prometheus/console_libraries - - --storage.tsdb.retention.time=1h - - --config.file=/etc/prometheus/prometheus-config.yaml - - --storage.tsdb.path=/prometheus - - --web.enable-lifecycle - - --web.route-prefix=/ - volumes: - - ./src/prometheus/prometheus-config.yaml:/etc/prometheus/prometheus-config.yaml - ports: - - "${PROMETHEUS_SERVICE_PORT}:${PROMETHEUS_SERVICE_PORT}" - logging: *logging - - # Grafana - grafana: - image: grafana/grafana:9.1.0 - container_name: grafana - volumes: - - ./src/grafana/grafana.ini:/etc/grafana/grafana.ini - - ./src/grafana/provisioning/:/etc/grafana/provisioning/ - ports: - - "${GRAFANA_SERVICE_PORT}:${GRAFANA_SERVICE_PORT}" - logging: *logging ->>>>>>> 3b8f8bd (Initial Instana support commit) From 1bd49dee213a75c0abbf703e5471097776f4bd0c Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Sun, 30 Oct 2022 17:59:13 +0100 Subject: [PATCH 006/135] fix postgres database name --- instana-agent/configuration-otel.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/instana-agent/configuration-otel.yaml b/instana-agent/configuration-otel.yaml index 0d893c92fa..ae1392ac2f 100644 --- a/instana-agent/configuration-otel.yaml +++ b/instana-agent/configuration-otel.yaml @@ -14,7 +14,7 @@ com.instana.tracing: com.instana.plugin.postgresql: user: 'ffs' password: 'ffs' - database: 'ffs' + database: 'postgres' com.instana.plugin.python: autotrace: From 58f1e4553cd79018175cb90d867bdb0087c954e7 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Tue, 1 Nov 2022 13:07:02 +0100 Subject: [PATCH 007/135] enable postgress stats and add service name --- docker-compose.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docker-compose.yml b/docker-compose.yml index fad011f5ec..948a0f7478 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -504,6 +504,8 @@ services: - POSTGRES_USER=ffs - POSTGRES_DB=ffs - POSTGRES_PASSWORD=ffs + - INSTANA_SERVICE_NAME=ffs_postgres + command: ['postgres', '-c', 'track_activities=on', '-c', 'track_counts=on', '-c', 'track_io_timing=on'] logging: *logging healthcheck: test: ["CMD-SHELL", "pg_isready -d ffs -U ffs"] From cfbe2e68e1bda7a18b5ebdbb923ac2582839c38f Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Thu, 3 Nov 2022 10:41:07 +0100 Subject: [PATCH 008/135] revert 37f6fc4 until Instana support HTTP OTLP enpoint --- docker-compose.yml | 3 ++- src/quoteservice/Dockerfile | 7 +++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 948a0f7478..5e76f149b6 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -388,7 +388,8 @@ services: - OTEL_EXPORTER_OTLP_ENDPOINT=${INSTANA_AGENT_HOST}:4317 - OTEL_TRACES_SAMPLER=parentbased_always_on - OTEL_TRACES_EXPORTER=otlp - - OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf + # - OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=http/protobuf + - OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=grpc - OTEL_PHP_TRACES_PROCESSOR=simple - INSTANA_SERVICE_NAME=quoteservice - INSTANA_PROCESS_NAME=php diff --git a/src/quoteservice/Dockerfile b/src/quoteservice/Dockerfile index ff18c846df..409d208ec6 100644 --- a/src/quoteservice/Dockerfile +++ b/src/quoteservice/Dockerfile @@ -13,6 +13,13 @@ RUN composer install \ FROM php:8.1-apache +# install GRPC (required for the OTel exporter) +RUN apt-get -y update && apt install -y --no-install-recommends zlib1g-dev && \ + pear config-set http_proxy ${http_proxy} && \ + MAKEFLAGS="-j $(nproc)" pecl install grpc protobuf-3.21.5 && \ + strip -s $(find /usr -name grpc.so) && \ + docker-php-ext-enable grpc protobuf + RUN docker-php-ext-install opcache WORKDIR /var/www From b7639ef58683e3c04fef7d3cc76c05a0199614f5 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Fri, 18 Nov 2022 13:08:46 +0100 Subject: [PATCH 009/135] Enable httpd server-status for metrics collection --- src/quoteservice/Dockerfile | 1 + src/quoteservice/public/.htaccess | 1 + 2 files changed, 2 insertions(+) diff --git a/src/quoteservice/Dockerfile b/src/quoteservice/Dockerfile index 409d208ec6..a669f9a665 100644 --- a/src/quoteservice/Dockerfile +++ b/src/quoteservice/Dockerfile @@ -34,4 +34,5 @@ RUN echo "ServerName quoteservice" >> /etc/apache2/apache2.conf EXPOSE ${QUOTE_SERVICE_PORT} ENTRYPOINT sed -i "s/80/${QUOTE_SERVICE_PORT}/g" /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf \ +&& sed -i -e "s|#Require.*|Require all granted|" /etc/apache2/mods-enabled/status.conf \ && apache2-foreground diff --git a/src/quoteservice/public/.htaccess b/src/quoteservice/public/.htaccess index 66ef8f69ce..3c30d67080 100644 --- a/src/quoteservice/public/.htaccess +++ b/src/quoteservice/public/.htaccess @@ -1,4 +1,5 @@ RewriteEngine On RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d +RewriteCond %{REQUEST_URI} !>=server-status RewriteRule ^ index.php [QSA,L] From ea510a4479c15223bb63a1d82893f1b7d22cef6a Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Fri, 18 Nov 2022 15:32:25 +0100 Subject: [PATCH 010/135] Bump up quoteservice memory limit a bit --- docker-compose.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index 5e76f149b6..c2d1280872 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -376,7 +376,7 @@ services: deploy: resources: limits: - memory: 30M + memory: 40M restart: always ports: - "${QUOTE_SERVICE_PORT}" From 015ff03ca5db47840e8f4c97c899d33fa57b8bb9 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Fri, 18 Nov 2022 15:34:07 +0100 Subject: [PATCH 011/135] quoteservice: remove php service name --- docker-compose.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/docker-compose.yml b/docker-compose.yml index c2d1280872..dc7c9ab21b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -392,7 +392,6 @@ services: - OTEL_EXPORTER_OTLP_TRACES_PROTOCOL=grpc - OTEL_PHP_TRACES_PROCESSOR=simple - INSTANA_SERVICE_NAME=quoteservice - - INSTANA_PROCESS_NAME=php depends_on: - otelcol logging: *logging From 1b0a542775c8fc133a7cbacbeea0820e35650aa4 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Tue, 29 Nov 2022 11:07:49 +0100 Subject: [PATCH 012/135] shippingservice: Add http client request span The commit adds new http client span for outgoing calls to `/getquote` endpoint of quoteservice via the `reqwests` client middleware instrumentation. This provides a bit of the server/client tasks separation visibility as well as enables span pairing with the downstream quoteservice server span. The instrumentation uses the available `reqwests-tracing` and `tracing-opentelementry` crates. --- src/shippingservice/Cargo.lock | 217 +++++++++++++++--- src/shippingservice/Cargo.toml | 7 +- src/shippingservice/src/main.rs | 12 +- .../src/shipping_service/quote.rs | 7 +- 4 files changed, 212 insertions(+), 31 deletions(-) diff --git a/src/shippingservice/Cargo.lock b/src/shippingservice/Cargo.lock index 5cb67153a9..5ccc08cc8d 100644 --- a/src/shippingservice/Cargo.lock +++ b/src/shippingservice/Cargo.lock @@ -111,9 +111,9 @@ checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" [[package]] name = "bytes" -version = "1.2.1" +version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" +checksum = "dfb24e866b15a1af2a1b663f10c6b6b8f397a84aadb828f12e5b289ec23a3a3c" [[package]] name = "cfg-if" @@ -133,9 +133,9 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.12" +version = "0.8.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" +checksum = "4fb766fa798726286dbbb842f174001dab8abc7b627a1dd86e0b7222a95d929f" dependencies = [ "cfg-if", ] @@ -379,9 +379,9 @@ checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" [[package]] name = "hyper" -version = "0.14.22" +version = "0.14.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "abfba89e19b959ca163c7752ba59d737c1ceea53a5d31a149c805446fc958064" +checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" dependencies = [ "bytes", "futures-channel", @@ -425,9 +425,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "1.9.1" +version = "1.9.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" dependencies = [ "autocfg", "hashbrown", @@ -444,9 +444,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.5.0" +version = "2.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" +checksum = "f88c5561171189e69df9d98bcf18fd5f9558300f7ea7b801eb8a0fd748bd8745" [[package]] name = "itertools" @@ -521,6 +521,16 @@ version = "0.3.16" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +[[package]] +name = "mime_guess" +version = "2.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +dependencies = [ + "mime", + "unicase", +] + [[package]] name = "mio" version = "0.8.5" @@ -539,6 +549,16 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" +[[package]] +name = "nu-ansi-term" +version = "0.46.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" +dependencies = [ + "overload", + "winapi", +] + [[package]] name = "num_cpus" version = "1.14.0" @@ -665,6 +685,12 @@ dependencies = [ "tokio-stream", ] +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" + [[package]] name = "parking_lot_core" version = "0.9.4" @@ -856,18 +882,18 @@ dependencies = [ [[package]] name = "regex" -version = "1.6.0" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" dependencies = [ "regex-syntax", ] [[package]] name = "regex-syntax" -version = "0.6.27" +version = "0.6.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" +checksum = "456c603be3e8d448b072f410900c09faf164fbce2d480456f50eea6e25f9c848" [[package]] name = "remove_dir_all" @@ -880,9 +906,9 @@ dependencies = [ [[package]] name = "reqwest" -version = "0.11.12" +version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc" +checksum = "68cc60575865c7831548863cc02356512e3f1dc2f3f82cb837d7fc4cc8f3c97c" dependencies = [ "base64", "bytes", @@ -897,6 +923,7 @@ dependencies = [ "js-sys", "log", "mime", + "mime_guess", "once_cell", "percent-encoding", "pin-project-lite", @@ -912,6 +939,36 @@ dependencies = [ "winreg", ] +[[package]] +name = "reqwest-middleware" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a1c03e9011a8c59716ad13115550469e081e2e9892656b0ba6a47c907921894" +dependencies = [ + "anyhow", + "async-trait", + "http", + "reqwest", + "serde", + "task-local-extensions", + "thiserror", +] + +[[package]] +name = "reqwest-tracing" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b739d87a6b2cf4743968ad2b4cef648fbe0204c19999509824425babb2097bce" +dependencies = [ + "async-trait", + "opentelemetry", + "reqwest", + "reqwest-middleware", + "task-local-extensions", + "tracing", + "tracing-opentelemetry", +] + [[package]] name = "ryu" version = "1.0.11" @@ -932,9 +989,9 @@ checksum = "d193d69bae983fc11a79df82342761dfbf28a99fc8d203dca4c3c1b590948965" [[package]] name = "serde_json" -version = "1.0.87" +version = "1.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" +checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" dependencies = [ "itoa", "ryu", @@ -953,6 +1010,15 @@ dependencies = [ "serde", ] +[[package]] +name = "sharded-slab" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +dependencies = [ + "lazy_static", +] + [[package]] name = "shippingservice" version = "0.1.0" @@ -966,11 +1032,16 @@ dependencies = [ "prost", "prost-types", "reqwest", + "reqwest-middleware", + "reqwest-tracing", "simplelog", "tokio", "tonic", "tonic-build", "tonic-health", + "tracing", + "tracing-opentelemetry", + "tracing-subscriber", "uuid", ] @@ -1027,6 +1098,15 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "20518fe4a4c9acf048008599e464deb21beeae3d3578418951a189c235a7a9a8" +[[package]] +name = "task-local-extensions" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4167afbec18ae012de40f8cf1b9bf48420abb390678c34821caa07d924941cc4" +dependencies = [ + "tokio", +] + [[package]] name = "tempfile" version = "3.3.0" @@ -1070,23 +1150,43 @@ dependencies = [ "syn", ] +[[package]] +name = "thread_local" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +dependencies = [ + "once_cell", +] + [[package]] name = "time" -version = "0.3.15" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d634a985c4d4238ec39cacaed2e7ae552fbd3c476b552c1deac3021b7d7eaf0c" +checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" dependencies = [ "itoa", "libc", "num_threads", + "serde", + "time-core", "time-macros", ] +[[package]] +name = "time-core" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd" + [[package]] name = "time-macros" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" +checksum = "d967f99f534ca7e495c575c62638eebc2898a8c84c119b89e250477bc4ba16b2" +dependencies = [ + "time-core", +] [[package]] name = "tinyvec" @@ -1105,9 +1205,9 @@ checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" [[package]] name = "tokio" -version = "1.21.2" +version = "1.22.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9e03c497dc955702ba729190dc4aac6f2a0ce97f913e5b1b5912fc5039d9099" +checksum = "d76ce4a75fb488c605c54bf610f221cea8b0dafb53333c1a67e8ee199dcd2ae3" dependencies = [ "autocfg", "bytes", @@ -1308,6 +1408,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" dependencies = [ "once_cell", + "valuable", ] [[package]] @@ -1320,12 +1421,60 @@ dependencies = [ "tracing", ] +[[package]] +name = "tracing-log" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78ddad33d2d10b1ed7eb9d1f518a5674713876e97e5bb9b7345a7984fbb4f922" +dependencies = [ + "lazy_static", + "log", + "tracing-core", +] + +[[package]] +name = "tracing-opentelemetry" +version = "0.18.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21ebb87a95ea13271332df069020513ab70bdb5637ca42d6e492dc3bbbad48de" +dependencies = [ + "once_cell", + "opentelemetry", + "tracing", + "tracing-core", + "tracing-log", + "tracing-subscriber", +] + +[[package]] +name = "tracing-subscriber" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6176eae26dd70d0c919749377897b54a9276bd7061339665dd68777926b5a70" +dependencies = [ + "nu-ansi-term", + "sharded-slab", + "smallvec", + "thread_local", + "tracing-core", + "tracing-log", +] + [[package]] name = "try-lock" version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check", +] + [[package]] name = "unicode-bidi" version = "0.3.8" @@ -1360,9 +1509,9 @@ dependencies = [ [[package]] name = "uuid" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "feb41e78f93363bb2df8b0e86a2ca30eed7806ea16ea0c790d757cf93f79be83" +checksum = "422ee0de9031b5b948b97a8fc04e3aa35230001a722ddd27943e0be31564ce4c" dependencies = [ "getrandom", "rand", @@ -1371,15 +1520,27 @@ dependencies = [ [[package]] name = "uuid-macro-internal" -version = "1.2.1" +version = "1.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cc305b0c375fa2f078537bbe564516cb1946c1defa4041aa0e3f9cd5e07c4a" +checksum = "73bc89f2894593e665241e0052c3791999e6787b7c4831daa0a5c2e637e276d8" dependencies = [ "proc-macro2", "quote", "syn", ] +[[package]] +name = "valuable" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + [[package]] name = "want" version = "0.3.0" diff --git a/src/shippingservice/Cargo.toml b/src/shippingservice/Cargo.toml index f1d59601fd..b30808937a 100644 --- a/src/shippingservice/Cargo.toml +++ b/src/shippingservice/Cargo.toml @@ -24,6 +24,11 @@ opentelemetry-http = "0.7.0" opentelemetry-otlp = "0.11.0" log = "0.4.17" simplelog = "0.12" +reqwest-middleware = "0.2.0" +reqwest-tracing = { version = "0.4.0", features = ["opentelemetry_0_18"] } +tracing = "0.1" +tracing-opentelemetry = "0.18.0" +tracing-subscriber = "0.3" [dependencies.uuid] version = "1.1.2" @@ -34,4 +39,4 @@ features = [ ] [build-dependencies] -tonic-build = "0.8" \ No newline at end of file +tonic-build = "0.8" diff --git a/src/shippingservice/src/main.rs b/src/shippingservice/src/main.rs index f4c0087008..8ec8e221c6 100644 --- a/src/shippingservice/src/main.rs +++ b/src/shippingservice/src/main.rs @@ -29,6 +29,9 @@ use opentelemetry_otlp::{self, WithExportConfig}; use tonic::transport::Server; +use tracing_subscriber::Registry; +use tracing_subscriber::layer::SubscriberExt; + use log::*; use simplelog::*; @@ -74,6 +77,12 @@ fn init_tracer() -> Result { .install_batch(opentelemetry::runtime::Tokio) } +fn init_reqwest_tracing(tracer: sdktrace::Tracer) -> Result<(), tracing::subscriber::SetGlobalDefaultError> { + let telemetry = tracing_opentelemetry::layer().with_tracer(tracer); + let subscriber = Registry::default().with(telemetry); + tracing::subscriber::set_global_default(subscriber) +} + #[tokio::main] async fn main() -> Result<(), Box> { let (mut health_reporter, health_service) = tonic_health::server::health_reporter(); @@ -82,7 +91,8 @@ async fn main() -> Result<(), Box> { .await; init_logger()?; - init_tracer()?; + let tracer = init_tracer()?; + init_reqwest_tracing(tracer)?; info!("OTel pipeline created"); let port = env::var("SHIPPING_SERVICE_PORT").expect("$SHIPPING_SERVICE_PORT is not set"); let addr = format!("0.0.0.0:{}", port).parse()?; diff --git a/src/shippingservice/src/shipping_service/quote.rs b/src/shippingservice/src/shipping_service/quote.rs index 833b7c002e..0621f0efee 100644 --- a/src/shippingservice/src/shipping_service/quote.rs +++ b/src/shippingservice/src/shipping_service/quote.rs @@ -6,6 +6,8 @@ use opentelemetry::global; use opentelemetry::{trace::get_active_span, Context, KeyValue}; use opentelemetry_http::HeaderInjector; use reqwest::header::HeaderMap; +use reqwest_middleware::ClientBuilder; +use reqwest_tracing::{TracingMiddleware, SpanBackendWithUrl}; use reqwest::Method; @@ -48,7 +50,10 @@ async fn request_quote(count: u32) -> Result> { let mut reqbody = HashMap::new(); reqbody.insert("numberOfItems", count); - let client = reqwest::Client::new(); + let reqwest_client = reqwest::Client::new(); + let client = ClientBuilder::new(reqwest_client) + .with(TracingMiddleware::::new()) + .build(); let req = client.request(Method::POST, quote_service_addr); From aca47a9d42810bc2f5b310c2016d3dde0cd3b23d Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Wed, 11 Jan 2023 14:34:44 +0100 Subject: [PATCH 013/135] 2023 updates --- .env | 6 +- README-Instana.md | 84 ++++++++++++++++-- docker-compose.yml | 21 +++-- instana-agent/configuration-otel.yaml | 13 ++- instana-agent/docker-compose.yml | 9 +- src/accountingservice/Dockerfile | 1 + src/accountingservice/main.go | 4 + src/checkoutservice/main.go | 2 + src/featureflagservice/mix.exs | 8 +- src/frauddetectionservice/gradle.properties | 4 + src/frontendproxy/Dockerfile | 17 +++- src/frontendproxy/envoy.tmpl.yaml | 25 ++++-- .../glibc-libcxx-libinstana_sensor.so | Bin 0 -> 1217920 bytes src/kafka/Dockerfile | 2 +- src/otelcollector/otelcol-config.yml | 19 ++-- src/productcatalogservice/main.go | 1 + src/quoteservice/Dockerfile | 3 +- src/shippingservice/.cargo/config.toml | 6 ++ src/shippingservice/Dockerfile | 2 +- 19 files changed, 190 insertions(+), 37 deletions(-) create mode 100755 src/frontendproxy/glibc-libcxx-libinstana_sensor.so create mode 100644 src/shippingservice/.cargo/config.toml diff --git a/.env b/.env index d1f502bccf..10b1692253 100644 --- a/.env +++ b/.env @@ -12,10 +12,10 @@ INSTANA_AGENT_PORT=42699 ENV_PLATFORM=local # OpenTelemetry Collector -OTEL_COLLECTOR_HOST=otelcol +# OTEL_COLLECTOR_HOST=otelcol +OTEL_COLLECTOR_HOST=${INSTANA_AGENT_HOST} # Instana agent OTEL_COLLECTOR_PORT=4317 -# OTEL_EXPORTER_OTLP_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT} -OTEL_EXPORTER_OTLP_ENDPOINT=http://${INSTANA_AGENT_HOST}:4317 # Instana agent +OTEL_EXPORTER_OTLP_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT} OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT} OTEL_EXPORTER_OTLP_METRICS_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT} PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=http://localhost:4318/v1/traces diff --git a/README-Instana.md b/README-Instana.md index 7705f24e4e..0e103971b1 100644 --- a/README-Instana.md +++ b/README-Instana.md @@ -9,8 +9,10 @@ Follow the main [README](README.md). This is basically: docker compose up ``` -### In case you are behing an HTTP proxy ... -Configure the Docker client according to https://docs.docker.com/network/proxy/ by adding the following snippet to `~/.docker/config.json` +### In case you are behind an HTTP proxy ... +Configure the proxy behavior for the Docker daemon systemd service according to the [guide](https://docs.docker.com/config/daemon/systemd/#httphttps-proxy). + +Optionally (not needed for building and running `docker compose`), you may [configure your Docker client](https://docs.docker.com/network/proxy/) by adding the following snippet to `~/.docker/config.json` ```json { "proxies": @@ -35,9 +37,7 @@ Build the Webstore app with `http_proxy` and `https_proxy` environment variables ```sh docker compose build \ --build-arg 'https_proxy=http://192.168.31.253:3128' \ - --build-arg 'http_proxy=http://192.168.31.253:3128' \ - --build-arg 'no_proxy=localhost,127.0.0.1,127.0.1.1,.tec.cz.ibm.com,192.168.0.0/16' \ - --no-cache + --build-arg 'http_proxy=http://192.168.31.253:3128' ``` ## Build and run Instana host agent @@ -55,3 +55,77 @@ Launch the agent (inside the `instana-agent` directory): docker compose up -d ``` +## Customizations + +### Link calls from FeatureFlag to Postgres database +**Problem:** FeatureFlag service calls to downstream PostgreSQL database aren't linked. +**Reason:** The reason for the missing downstream database link is that the current v1.0 release of Erlang/Elix [OpentelemetryEcto instrumentation library](https://github.com/open-telemetry/opentelemetry-erlang-contrib/tree/main/instrumentation/opentelemetry_ecto) doesn't yet add the OTel peer attributes `net.peer.host` and `net.peer.port`. These standardized attributes are used by Instana to correlate downstream services. +**Solution:** Although the instrumentation library provides other attributes with the downstream link details, it isn't possible to use plain OTel attributes for creating custom service mapping via [manual service configuration](https://www.ibm.com/docs/en/instana-observability/current?topic=applications-services#link-calls-to-an-existing-database-or-messaging-service-that-is-created-from-a-monitored-infrastructure-entity). Therefore, in order to inject the required attributes into the generated spans it was necessary to modify the OpentelemetryEcto library source and use the custom-built library in place of the default distribution package. + +The [patched](https://github.com/styblope/opentelemetry_ecto/commit/0bc71d465621e6f76d71bc8d6d336011661eb754) OpenTelemetryEcto library is available at https://github.com/styblope/opentelemetry_ecto. The rest of the solution involved changing the FeatureFlag service Elixir code dependencies and building a new custom image. + +### Adding W3C context propagation to Envoy the enable cross-tracer trace continuity +**Problem:** + +## Deploy on OpenShift + + +TODO: ... using the official helm chart in namespace `otel-demo` + +Make sure you have sufficient privileges to run the pods: +```sh +oc adm policy -n otel-demo add-scc-to-user anyuid -z default +``` + +You should have a Kubernetes service configured for the Instana host-agent in order to receive OTLP traffic from the OTel collector. You can also use the following simplified service configuration: +```sh +cat <.:4317 + tls: + insecure: true +... + +service: + pipelines: + traces: + exporters: + - otlp/jaeger + - otlp/instana +``` + +Apply the changes by restarting the collector pod: +```sh +oc delete pod -l app.kubernetes.io/name=otelcol +``` diff --git a/docker-compose.yml b/docker-compose.yml index 8b1befbcaf..4b400fea5b 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -50,6 +50,8 @@ services: - OTEL_RESOURCE_ATTRIBUTES - OTEL_SERVICE_NAME=accountingservice - INSTANA_SERVICE_NAME=accountingservice + - INSTANA_AGENT_HOST=${INSTANA_AGENT_HOST} + - INSTANA_AGENT_PORT=${INSTANA_AGENT_PORT} depends_on: otelcol: condition: service_started @@ -236,10 +238,10 @@ services: dockerfile: ./src/featureflagservice/Dockerfile cache_from: - ${IMAGE_NAME}:${IMAGE_VERSION}-featureflagservice - deploy: - resources: - limits: - memory: 200M + # deploy: + # resources: + # limits: + # memory: 200M restart: always ports: - "${FEATURE_FLAG_SERVICE_PORT}" # Feature Flag Service UI @@ -574,7 +576,8 @@ services: - POSTGRES_DB=ffs - POSTGRES_PASSWORD=ffs - INSTANA_SERVICE_NAME=ffs_postgres - command: ['postgres', '-c', 'track_activities=on', '-c', 'track_counts=on', '-c', 'track_io_timing=on'] + # command: ["-c", "track_activities=on", "-c", "track_counts=on", "-c", "track_io_timing=on"] + # The above way of passing paramaeters ins't picked up by Instana. Must use config file :( logging: *logging healthcheck: test: ["CMD-SHELL", "pg_isready -d ffs -U ffs"] @@ -603,6 +606,7 @@ services: - OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - OTEL_RESOURCE_ATTRIBUTES - OTEL_SERVICE_NAME=kafka + - INSTANA_SERVICE_NAME=kafka logging: *logging healthcheck: test: nc -z kafka 9092 @@ -680,8 +684,11 @@ services: - ./src/otelcollector/otelcol-config.yml:/etc/otelcol-config.yml - ./src/otelcollector/otelcol-config-extras.yml:/etc/otelcol-config-extras.yml ports: - - "4317" # OTLP over gRPC receiver - - "4318:4318" # OTLP over HTTP receiver + # - "4317" # OTLP over gRPC receiver + - "44317:4317" # OTLP over gRPC receiver + # - "4318:4318" # OTLP over HTTP receiver + # Do not export port 4318 as it would collide with Instana's http/grpc port + - "4318" # OTLP over HTTP receiver - "9464" # Prometheus exporter - "8888" # metrics endpoint environment: diff --git a/instana-agent/configuration-otel.yaml b/instana-agent/configuration-otel.yaml index ae1392ac2f..9cfeb87aae 100644 --- a/instana-agent/configuration-otel.yaml +++ b/instana-agent/configuration-otel.yaml @@ -1,5 +1,9 @@ com.instana.plugin.opentelemetry: - enabled: true + # enabled: false # legacy setting, will only enable grpc, defaults to false + grpc: + enabled: true # takes precedence over legacy settings above, defaults to true iff "grpc:" is present + http: + enabled: true # allows to enable http endpoints, defaults to true iff "http:" is present com.instana.ignore: arguments: @@ -10,12 +14,19 @@ com.instana.tracing: - traceparent - tracestate +com.instana.plugin.generic.hardware: + enabled: true + # otel-demo configurations com.instana.plugin.postgresql: user: 'ffs' password: 'ffs' database: 'postgres' +com.instana.plugin.javatrace: + instrumentation: + enabled: false + com.instana.plugin.python: autotrace: enabled: false diff --git a/instana-agent/docker-compose.yml b/instana-agent/docker-compose.yml index 8551865ecc..4000153362 100644 --- a/instana-agent/docker-compose.yml +++ b/instana-agent/docker-compose.yml @@ -27,11 +27,12 @@ services: - INSTANA_AGENT_ZONE=${INSTANA_AGENT_ZONE:-otel-demo-webstore} # - INSTANA_MVN_REPOSITORY_FEATURES_PATH=artifactory/features-internal@id=features@snapshots@snapshotsUpdate=always # - INSTANA_MVN_REPOSITORY_SHARED_PATH=artifactory/shared@id=shared@snapshots@snapshotsUpdate=always - - INSTANA_AGENT_PROXY_HOST=${INSTANA_AGENT_PROXY_HOST} - - INSTANA_AGENT_PROXY_PORT=${INSTANA_AGENT_PROXY_PORT} + - INSTANA_AGENT_PROXY_HOST + - INSTANA_AGENT_PROXY_PORT - INSTANA_REPOSITORY_PROXY_ENABLED=true - - INSTANA_REPOSITORY_PROXY_HOST=${INSTANA_REPOSITORY_PROXY_HOST} - - INSTANA_REPOSITORY_PROXY_PORT=${INSTANA_REPOSITORY_PROXY_PORT} + - INSTANA_REPOSITORY_PROXY_HOST + - INSTANA_REPOSITORY_PROXY_PORT + - INSTANA_LOG_LEVEL - HTTP_PROXY=${http_proxy} - HTTPS_PROXY=${https_proxy} - NO_PROXY=${no_proxy} diff --git a/src/accountingservice/Dockerfile b/src/accountingservice/Dockerfile index 4feb5d090b..06da137cf0 100644 --- a/src/accountingservice/Dockerfile +++ b/src/accountingservice/Dockerfile @@ -8,6 +8,7 @@ COPY ./pb/ ./proto/ RUN go mod download RUN go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28 RUN go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2 +RUN go get github.com/instana/go-sensor # Build executable RUN protoc -I ./proto/ ./proto/demo.proto --go_out=./ --go-grpc_out=./ diff --git a/src/accountingservice/main.go b/src/accountingservice/main.go index 77084de5aa..eb55ea97bc 100644 --- a/src/accountingservice/main.go +++ b/src/accountingservice/main.go @@ -30,6 +30,7 @@ import ( sdkresource "go.opentelemetry.io/otel/sdk/resource" sdktrace "go.opentelemetry.io/otel/sdk/trace" + instana "github.com/instana/go-sensor" "github.com/open-telemetry/opentelemetry-demo/src/accountingservice/kafka" ) @@ -85,6 +86,9 @@ func initTracerProvider() (*sdktrace.TracerProvider, error) { } func main() { + // Instana instrumentation + instana.InitSensor(instana.DefaultOptions()) + tp, err := initTracerProvider() if err != nil { log.Fatal(err) diff --git a/src/checkoutservice/main.go b/src/checkoutservice/main.go index 235ff0eb12..712daa5a66 100644 --- a/src/checkoutservice/main.go +++ b/src/checkoutservice/main.go @@ -138,7 +138,9 @@ type checkoutService struct { } func main() { + // Instana instrumentation instana.InitSensor(instana.DefaultOptions()) + var port string mustMapEnv(&port, "CHECKOUT_SERVICE_PORT") diff --git a/src/featureflagservice/mix.exs b/src/featureflagservice/mix.exs index da3da01cb6..fd3b5977d3 100644 --- a/src/featureflagservice/mix.exs +++ b/src/featureflagservice/mix.exs @@ -59,7 +59,13 @@ defmodule Featureflagservice.MixProject do {:opentelemetry_api, "~> 1.1.0"}, {:opentelemetry, "~> 1.1.1"}, {:opentelemetry_phoenix, "~> 1.0.0"}, - {:opentelemetry_ecto, "~> 1.0.0"} + #{:opentelemetry_ecto, "~> 1.0.0"}, + {:opentelemetry_ecto, git: "https://github.com/styblope/opentelemetry_ecto.git"}, + # for opentelemetry_ecto + {:telemetry, "~> 0.4 or ~> 1.0"}, + {:ex_doc, "~> 0.28.0", only: [:dev], runtime: false}, + {:dialyxir, "~> 1.1", only: [:dev, :test], runtime: false}, + {:opentelemetry_process_propagator, "~> 0.1.0"} ] end diff --git a/src/frauddetectionservice/gradle.properties b/src/frauddetectionservice/gradle.properties index 7fc6f1ff27..78baebb5f1 100644 --- a/src/frauddetectionservice/gradle.properties +++ b/src/frauddetectionservice/gradle.properties @@ -1 +1,5 @@ kotlin.code.style=official +systemProp.http.proxyHost=192.168.31.253 +systemProp.http.proxyPort=3128 +systemProp.https.proxyHost=192.168.31.253 +systemProp.https.proxyPort=3128 diff --git a/src/frontendproxy/Dockerfile b/src/frontendproxy/Dockerfile index 455ce8ec92..616f0eb372 100644 --- a/src/frontendproxy/Dockerfile +++ b/src/frontendproxy/Dockerfile @@ -1,8 +1,23 @@ FROM envoyproxy/envoy-dev:8c202194ac6a2cb781eb6ce27d924b379b1e787f -RUN apt-get update && apt-get install -y gettext-base && apt-get clean && rm -rf /var/lib/apt/lists/* +RUN apt-get update && apt-get install -y gettext-base wget ca-certificates && apt-get clean && rm -rf /var/lib/apt/lists/* USER envoy WORKDIR /home/envoy COPY ./src/frontendproxy/envoy.tmpl.yaml envoy.tmpl.yaml +# Instana +# download latest libinstana_sensor from artifactory +# Instana agent configuration +ENV ARTI_PATH='https://artifact-public.instana.io/artifactory/shared/com/instana/libinstana_sensor/' \ + INSTANA_AGENT_KEY=vzWTqejpZuXVqwUYWeKcFy \ + INSTANA_DOWNLOAD_KEY=qUMhYJxjSv6uZh2SyqTEnw + +RUN access_key=$([ ! -z "${INSTANA_DOWNLOAD_KEY}" ] && echo "${INSTANA_DOWNLOAD_KEY}" || echo "${INSTANA_AGENT_KEY}") \ + && wget --user _ --password ${access_key} --output-document=./list.html ${ARTI_PATH} \ + && sensor_version=$(grep -o "href=\"[0-9]\+\.[0-9]\+\.[0-9]\+/\"" ./list.html | tail -n1 | cut -d'"' -f2) \ + && echo "Using sensor version ${sensor_version}" \ + && wget --user _ --password ${access_key} --output-document=/home/envoy/libcxx-libinstana_sensor.so ${ARTI_PATH}${sensor_version}linux-amd64-libcxx-libinstana_sensor.so + +COPY ./src/frontendproxy/glibc-libcxx-libinstana_sensor.so /home/envoy/libcxx-libinstana_sensor.so + ENTRYPOINT ["/bin/sh", "-c", "envsubst < envoy.tmpl.yaml > envoy.yaml && envoy -c envoy.yaml;"] diff --git a/src/frontendproxy/envoy.tmpl.yaml b/src/frontendproxy/envoy.tmpl.yaml index 295cdcabdb..bccf848648 100644 --- a/src/frontendproxy/envoy.tmpl.yaml +++ b/src/frontendproxy/envoy.tmpl.yaml @@ -11,16 +11,27 @@ static_resources: "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager codec_type: AUTO stat_prefix: ingress_http + # tracing: + # provider: + # name: envoy.tracers.opentelemetry + # typed_config: + # "@type": type.googleapis.com/envoy.config.trace.v3.OpenTelemetryConfig + # grpc_service: + # envoy_grpc: + # cluster_name: opentelemetry_collector + # timeout: 0.250s + # service_name: frontend-proxy + + # Instana tracing tracing: provider: - name: envoy.tracers.opentelemetry + name: envoy.tracers.dynamic_ot typed_config: - "@type": type.googleapis.com/envoy.config.trace.v3.OpenTelemetryConfig - grpc_service: - envoy_grpc: - cluster_name: opentelemetry_collector - timeout: 0.250s - service_name: frontend-proxy + "@type": type.googleapis.com/envoy.config.trace.v3.DynamicOtConfig + library: /home/envoy/libcxx-libinstana_sensor.so + config: + service: envoy-front-proxy + route_config: name: local_route virtual_hosts: diff --git a/src/frontendproxy/glibc-libcxx-libinstana_sensor.so b/src/frontendproxy/glibc-libcxx-libinstana_sensor.so new file mode 100755 index 0000000000000000000000000000000000000000..eaacb839c6e7e37c5addcc4d2f7ac741d4e2e95e GIT binary patch literal 1217920 zcmb5%3A|%zUFZJ;3Iy2>2pR<>;6m7%(+k~cKnQz4Xb#w5*sR>Dy45MWmP0MwX&EH~ zqhV_fn*EB8WtEGzw@~W{fBh$I(~D1%r-G9LF)ki1RlV--FFuHzWem& ze(jzIh5mf|+wFQy|L(pA-%sxy*5l97I}bRz^!awjJGk9zRsZ3`pPP3Nx0^gsx7Y3N zRt$IRyL7yN(Q)-z)zM$;_ReJ&*Y0?;emKr-bolc|r^=swyBGfDh2w{gSF*mzPlY3E znkd!n>R$~fik}~JBGmh{&)Ex#+wJ=NfBo3qe)s>e_60vzHK9NIc)QQLwSGPf@h_D4Uzhk-OFS-4> zGm8dp_t7k=e^!aVxWr#x;@?-|=SsX^;)4=@ONkFl{JkYUF7Zi;f3(DZv&4V5#DA~E zzfj_TQsRGE;(uG>|5)N*E%Cb+*Rea=pZ6*8Zz%Bxm-x4p_@hev$`XGUs~cP zO8k6@|6qy#aET8~{DUR_t0n&N692;z|BDj;pC$f(OZ@J|1JoVuhi@wJhnDywO8klv z|IQMBR*Ao$#9vn8`z3z1#BV9_*OvILCI0Rb|Ctj1V2OXM#6MZ$ixU6i68}<(|Bn*? zYKd2hCpveuf9_r4_b>5>l=#C-{E8BPe2G7$#M>o)ti(^3c(25NsKnn;;_oQ&pD*!G zmiV&7|3`^eiXT$$=sZ54#2;DWPb%>jmH5#Te`Sf^QsS>I@zcyC4Q&k7Z!K45AR;$_b>4WmiTv+_!T97O^JVJi9fT%pI729F7cO@_+E*3 zOZ-BK|4@k!O8nLme@BVGx5WQ_iGQfXKUU(uRpOs3@l}ccO^N?giQlRC<i{*V%Xc!@uz#IGpv$Cvn1O8l86{`?ZZzQm7|_{kE_O8jDpzqZ8l5`S-rzrVzP zwZuPB_``1Z`x<}wM%y)OqwwrtRo&Uf8{p(}j zqxgM&xYh0Z-W{oOu#$g$i`&aR501N&d#RH zT2yYXd* z#`laGhsJk`ez6$ue&@LRxcJQ{i_zCc_t;r6KKD(#aV7f3;=j9(@cnxpeE+uby)nM? zrQ3h~$&>eriuFD9(0unhm~S`#`GfiI5j|Jmzi=?VYt+{G{s*_eOLSc0Z#)>^JvyUt z^z{zaJevb~=mBUpRMa|4ejx|Mao! zmf|q`=gyrud*syFV|y1)o;|bsb|Gia?F!ECUx-fcohrT;ojA9@A7y9HpX?nezEMnf z!iiz2isDo;g+&YjDHvEt?zZoBE}ix>8LyVh>Jbjv^&&m7>f(A(b8v*#}C8V}1WQaTr%xcS`4Vx}WU zZaR^jJ9*~9iCve`iR|KqV+9_&a7(s-RA@KiCrS-tuUgv>6SyX7FX^T)dT$B*1{a=$1ok|_2^5qaSUx?1^-&{<-S8T?M=lAv1 zks~M1pFMW%wMT9`U(9yq#O`D`$AgTE@!t8{ot+|v6BkaN-am3GI(_tf5m6CWaU;#5 zNs4WHHY<`YKJRwc?(?xzXV32+>`)!KNZwx+o8s)LQ^kzMK;P8VMlv&xFEWX0*o zvi)<#cZ>6L_U41HPM*K{e71LN*G}=}L7(Bvqo?-H+!($*cBZ&Dg)copQG2@?_D*Hp zy-;xc(btBogUb3 zOC3M7dB5-M$upNGJHB6B#JUGt{%o;H&+MH!TiliRv*^UZK09%Kf4{hJT-sxM$D;!} z8=bhYUtBn%6DLkxJl{RoetXA{7uT8-XQLwY+rHjASzIS|Q7yiao!s5;vU6vPPEYUe zvOlxCZXG{${+83l1?u2p6+OS$;@6+sJ9hHS4bR)Vaew#a{<&xF72Dw4?wTF0UzfIO zaTPn5X7Bv|ZmNTGyjyitbX{DZi-R7F&R;lQth@N{*^3vVi)RWxw(Im*bZr0R?b8hx z;o>{{#V$E{rr1Ddiu+t~*bAr5?3?5-%` zj(TwK+=D zy&|52GkW^sncbk6A=}?ScW^3-uXj0}J#l>Rmfi7>Uo0;42M;4Biu-xdc+p2uzIU?d z`QS@8cW~=subtUHb|Kn3c5J_Bb~o|4v&G%^mNOSmAKecN**|wvG2Wf_;@c-r>~cJR zuyg$Nr3>V);9{{;ickCce1nF&&*30fMcK)0|B8eEM*BDI7Y}pA<-fRg7tJ1=@f%L> zJ{1@AaDhL0Ly=0c{Nh@F@`hqF9X#IepW1bu6<5hUPEipQZ7XN!Gs>f}+~ z?y~b|FH53lJ@?s9ecF*LF1zBg$6fmR%FC|U)g3>zD>?Y`^zN&xcX%v(<(pl3yBpp9 z>#HvLZC_n;$r_iwy7tmnm*3XQ<+t7D@@t|~#~)Md`is5C^cq(`=IX0LPmeu!_Uwhn zURG?2y)%zJzIS2ovAc(=?iG){;1%S020S#NK{VSmVSMSMOiBcjdKLU-`Jp_l{lr*kXB)|JM^A-9K}zdwTEOjgP(j zva2sk4o$sx^xDg>J-T=G@vE-A`l_Q>UcP_r-qGZm#~r<9|HSd*mtV1W)zw#=NUlw; zE}6PG;K9b)b$!|8mmiw?>MM_3vDbLq@yA`$xa!*dE3Ur$#I=nR*IxO!qt{-!e{ApA zm6spgyXNv@VFy$1&dj+ByJ#-oeR=Xsafdv!S8SUz=g*!iSkHm|IwJr4*xdc%xcF%6 zbvX9^ABNW_b?B<^!s9E7r|iW?2H(6n%+rI{a=rcu-kAj-z*p)ghxh*|)DPj&%ZeXi zijNUIe^u}?{W`l3Ivim$%QGdk^ z;XKyhK5haZYuteM?-ufJ!YA?;ym@O_ZwgQ4ZTLp>bl|H>IBpl-*E|_Km-pZ!c^|&f z`~!IBEusG$p4?sg5I$1<2%f9nx$=BXP~X$}n!=~A4Et>k-)g*oFCHHHT*5c<6+Eto z`Ze6wlMOsmy^qgzMfVN;+CQdsRp7p!RN*a+Yw+gt!i;rzU;QNTk-P!#KO(HR2_MOQ zeE0ABSBm<(=>^SgxYyN%*Y6i{$>59UhkknSBn{q&H|059^AF*ke+2Jno-sU=PvJ|A zXK>Fyhp)7*1$-m-e9pP9$D4|JeGSt*ZaIzQU7N3 zQ-gawKF^#dLH&C*PXq3GnsE2ig8zc%N#X9J4fi}9_$M__7oL8L_AT7=^x$98Jbk$P z7{EPG4zGM)IPXKa=NZ90&lvtl%`<_!k15>q%;48)o;lq8Ea0AJ2|urSR&e*TfqVWf zysv#5ef{ChQM43EcfO;4{tNgu9;>-2J5R=!KylAD{QH z4(eyhxeIrm8QkmX!PlCn5AQ!X`_?ZGRmAHaRQ9PW9B@Ox;UG2HV^;O>74zmMjb!F}90{JyGR z!hO6I-1DsA_t!jIxaWx;aCl$2{|daSd1APaTZMnK>g#YHFM)fW2K>RArv>*sDct?H z;Sbe39k`F%g@3E+dvG7G5BEF+_;+ZYA>8wf;O>76f28J_zxovkGqAZs;_+G;r-_0#cv`Z5zOQ-aaL==VJO3s8q~=+{ z-TxYXqw2SCA1|sN-dCQd0zad9s&LO!gS-Da{G8@V;682xenIsuxQ~~@Jx?2cv*zi- zJx>OA|2_DtG*2Jy;|}0Ip!y-)#~Z;t&zP=xrf|(=t%~ON>xOMp3RNsL6culzHX~EyAdD?K#(}BDHF8tk^ zCxiRAJ@}8SegOCJa=7Oi!r!BL#&FLwfxG`H{HHa~4DRF3;XkALCEUkb!9C9!{yxpK zg?papn-A|R_g{hkyyl7FK5iBMi>j}~eY^zjc^dGE=4rt_PYQScZTK&1o(|l{?ZQ8* z`X1cJ>%%?I0RC&5X9)K^Be?q?!)Kaj0{3yJ@Q z3?A$Eay~wPFV{!?QtKMP{d>6~e5&7jj^JL`7#_VK{GMq_CPef_={o*WI{fp@+;cm|(p?BB<8U47Jdw5|c%>&oF?*AVV?jo=%-Yt9(H z>S*7>Ct8=+;r_jz8R{Q+D*WDZ4)^(8!fX2ZWd-+nU(=P(2JU>eaOV^0IPTy1RNxz( z-x$7ndB~>93p;L(ePm+GlQ?x&m8W47I62ogvYzTz+8N+ z;T`>XYWi@!se~t!k${TS1d217%tDhEpB=_yy ze_i*(HtJ7k|2rqw`~K2J{dv`AaQ`{A^WZ#v)W2Hu4B(z;2;XWvf@i-F&f^%~mrvli zdjST70bFebukwK3^O7diMr8#fS4?&e1~-KQEoC zz5@60s_?GHHMn!G!<};icg_vCb8fUHfsZ~A&X?E6+%nY1uMRo) z;LdFTUuvAgo!b!Z+(vNcHikR534F7AV}jyi3U_WZ`YhDX>Dr$Qc&2)$gKhQerv*;s`vW5E?-wu z)Ze7s+HmLAg-cW!OCbL+sJTNm!!GI*wS_2AB}4|i?@xO2L1V#j|*eCbDP2|4-5Nk26t|AxN}>;o!b)b+*a^d>srH|+Xn93ws7YbX&ufd zd8GC;-1{wtKSjA!;m)lN?`fRCom&I$+?sIb)`B~?6yDUj+HmLAfjhS@+_`1&>@guX zug`fpw?67`QEmgca~sk%9>Ja481CFAaOXCKJGU9UuXWAg&TRpAZcDgxTfx)ILvCxh zbKAgwNx5y|&aLvTho2|6HICuVtqON;HMn!D!<}0K?`T~Ox}Fa=;m)lEcWx=XwtGXR z;=}9Xe(RwA%gU__cWyoST;o36xeegXEr&a|A>6r*;FCsJ*BI{oHi0|0Dcrfu;InJP z{9Ye(TcG}dKNKDpmT>2`hBv+~?7t1%xozRjEz<4Wk8`WQom&jg9v{|Kg*&$z+_}}^ z&Mkqjo*3r$`rN1Qr%lv9U%9p5&aDj}Yutf5w=UedWpL-#gFClAe4}*@;OXuS$cm2~ z?%alO=Qe`pn#b#7ZWGkss@$e<=Qf8|zdh`?1>CtU;m&OZcW!IAbKB6ht}VRwq>x*r zzPw)NR)IUWn67!eKF{O*Rzv+;^Jd6r3E#+9 zaObv$JGTuydPtk-wcN~6R@igUDfjhSH?NPmWvKrF<<^5cw*h>qaSnHGL%4Gr!JXR}?%XEu{ApobQ@C@R z!JXS2?%Wpe^y%8qa9`h6@Ly7HYq)dU!dnjy`!&*MpBLv=fjhSt?%b+y=T?Jvw5~c` z&wCTNb8EnzTN57d-T<`t@cO(i=a!;=rQF(Z=hlT!HO}D9tp|5*eYkTQz@1x8*Sdyq z@3#@$xsBn@Z355qdtk4Rxy?`?zcxHB%;C;$39r|~ep|tv+ZyiNHgM;*g*&%M$8rCC zt*ZieZZX`sRpHL92G6bw`_1d~alPLX)IU|ZHQ>&z1s`gh!kt?i?%XF5J0g@a+1Ko7czO`lw$jw*lO_4e1(>;LdFfcWx87bDP4Q+YH{u@sQ)eHHibL4IlTJlu-_JN=eC49w-wyEt>MmX z15bDVAVKl5g*&%MeR;j!Zxy(6i{UfP@AY{e@3$K2|3SIc;m)lAA86c!JGU0xxutOD z)`mN`4m>{{a_hpKTLyP-J-Bo0!)s@>pW)6ehd<=s>i2JO=Qf6KHJ-qo+Z68HW^m^= zhdZ|gJkh$AaObvyJGV95xozMJ&F}SbzeSHZ{Ji3&%B=!-ZdG_!;~Lz#)#1)9fjhSb z+_^R3E3K;qcWx;>I~(>-8}8gX@V@H3KIWF8{#NDIgFCkYe5r8`cWy(ta~r{(+ZgWL zCh%PAn!=si4DS6lhdZ|gJqtN|eavlz`rlD*Yq)dU!dsVx{Tk`B=XY)uxO0o)&aDb} zZZ&wOb=Bd{ErC0?2Hd$d;iFfE+`K-o%h$IQ_5Y~c+HmLAg-BY8^N9181CFA@a%lZ&Ff=sGt@tN_YY?lA9J{KTf*y)4f|~ccW!IAbKAh3 z+ZOKJA|1#5_qDDH+_}YY=T?O~w;H^8G34g;`MBP13F=>_+!}D_)`AZ;PT|h24R>xG zxO3~mom&P^wXPoAx%J`BZ2)&}IXt;3(&Z3S;?U2C{=+rXXM7Vg|4t;6|bH;3H3KD+l@jQW{!tHPaI9p2M8fjhSb+_^R3 z&aDM^ZYjL4b+zHntpj&%UAS}0;Im%H&Ff=sebnFiN5b`O0C#Rfy2c~8a~s2*+XU|1 zrf}yrgDfHPk<55FStKaOc*54>WGVom&g; z+)}u6Yr~ye2fos}x^U-~!JS(V?%ewD?6qOPd40?+NBt4yHiSF3F?_4>1n%6XaOXCI zJGVL9xh>$)>%zL0aObvyuYNexui?&Z1CM_s)O&r*ExPLP^NKeqw+h_3RpDKYYjEdQ zhdZ|f?%W!1=hlSRw5}H1xutOLw>I3lb>J(_@AWaa4E3K?Zauhj8^D(u=WypXggdtp z+_{b6&TRtk48nex()Bv78Qi(e;m&OV&t9+n4EObI1^=pYTf?2(7T$VX*sqa3`@A@} z3f#HHaOYNqJGUCVuXWYo-fs!qxi#R@Ds{y4tH)#c>U_I-&Szv zwuU>m4cxhH;m$46aeUr8T33ax`)Lec-5PSJ!kt?U9=|2jdwo8xb4yVFcIDQ9JGT~m zsBsFf>9}opChx#!@-95iL;o2(mG|Jeybt$&8^E1g4qs>srHoKi$Bc+ZOKJBCW&utlk>Vm)B?aev486RpnNN zJGVN#r*Q&zZVk9|Yr>sd3+~)f_(tn$!<}0Pp1v*Q(1km~9PZqPaOXCHH?^)Y+__EQ&TR^JZZmlFj<7$yKIXPS{pXe267JmA@W!=a z|83y0j=P0Bw@9~hKQ+}?;La_EC#tW)SMnO%xz*v$ErIvn6>{_X+^6rSP1N7@jp6#% zf;+c1e5`Q??)}z~`Ax(0CXw;b-=hH&RLf-i<4H?NPmO;G;?iA}_^{s=aObv!JGT|wxvk;OZ3AzHr=ey`8-c)!(9 z-&JmPxN~d32O2lw&aDM^ZYkWkwc*aK1FvaaUAS}0;LfcFcW!<7O7nYt%q>U#yOrAz z?%c-kt;Q4hM#r7Po!bl^{d_pTbGUO`z+=@f;hB6z*Uw*TxO3akKcM{#_kN3>aQJz} z=agFo?%b;IuEsUE_gfwA+!DC=TLbRgn($2PYQeqVQn>e98}8gX@W}^5ZeAbvTZa0t zc~f{?=)s-a0KU{XhdZ|++_{b5&TR~LZWH)S>zcxy+YIj9=5Xh>fUhPYH?NPmtx*3s z<+g@9w=KN&#IRo@efInt9k&9He<}16!xMQG?%ZndRP}Xu|3hK^1n%4#aOc*9=bFds z^SXRLO;LZNa%;n#TNggnID>n?_2AxbeYp4A0Pfs!`0T?WpCR1)Z3K62W4Lphz(>Cv z=J)!T+YI&ZQf_m&b6dje-x>DX3hvz2aObvxJGU*|xkWmT`=4lC6}WSY;m)lJcWyQK z=p!LFug}NzeoIjQ8Rgc1JGT~msBsEUe(&ZAJghFwYw9{kDPsm~z{~om=I}ho2|6HICt#j$4I0w;J5J)#1)9f#;gP z0ndIbthY(m&kHTMb4%&J9p>@+xZgUc|Fm-J!kt?WKG(Pp_x*GLcWyb{xeejYZ3NG> zt})#A(+S-BZ3=g8Gx$dHdwtApf%<<|ZcDgxTf^JUu>Usj_^IJYTX-subUXKx%VT)< zlrVo4K2m)RzLMABwWoz6HQ<@XO}P7S!4u7s!ri~~@Vb1z?x6my?+TA2UAW&j-hFYN z9_ss=rw?}@Ieen=5bpJk;F;DthI_r9k9|&2|5NI726vwe_(tO;+#_+`Z6Yf51@QwPc!`-Ln^Krd@8mRwW_1T2G&lEn;xDEIHr~^-) z9y;j4eLu?J?z0D9dw;^c&)pZ-o3mc?4B_r$44-Q}fqT7Ec&7Ev;9jriW1kDue?@&R z;qG${uRK-PPq_Qs!YAr8((T-j`}BNvpO+Z*_ZsSXEZlw8;Vq35c=Wt*qy{{eH{prg z^Rdqq_5WLaw&C7CUHCxb4Bpgnd+=1=r|aJ_@qF&n|DHvT`uN=;&k=l~@fhxYCh(5> znZi@`GlTc93!Tm3uJ`fXzyCd?CF&oc{?~A?KYH5X=b5R;{(SIi@hFO47>*RfYw{}H z*F$(y;{@J$ahSgWU&(ztuh-|Rh5D)1dubi&-}jd`>OZae4!rU7kV^)iXxxL3PKM6< z@ct`;58#V5cn+Vbeh6R4NAQh&3}0z}_v_r8!xZ&@p&VxLv2s|zQ~46^99Hm&`dq`k zpEq#lu!TE^NXPfOoI?ff`KxfB-x_??4Kvo^8+iiv_1W{eALrae{hfa-Tu)kXU!R?; z=kY#oqyC#TPZvJcID`AV^xzZkTex!@zq=ZC+f2Wk2|5`6z&|_aOcp0&osaLWeyqYPbr5U+&K*3o9n}V$l;@x zeciz$#1NjoJopGcyCL`lUVBlPe+u864D~a3?fZhy;huj1PgTE!*G`3bR`BNOkl+TM zs?RMvKO5$Wo*CBR{AcnCT{* z1nzvM@Q&(d@VKXC2%e2>Ddu z&Zh>iy)o3+;j=ddPvD(fgE!!lw*+s(H+k?DJbG*J6rRf4@Q%C#pUAuLl{|x|Zwtrm z!E^Zl-g~~TxA4`|LjFT|^3E{-2=4sHbk$Gbop*LZ_zlJZg4>$058S1z2raWpL-p|gV0^g`UhR1&t=C8sNc@3V)>+sHh4)ZkNYptsZ z@2j5{d?HWbURN6)shsrBmzSi*UzlL>f;9l1j?(-Er`|!T?`KrKE^&i7?c@^&S zRfo4UPT;lc!gZzrAL)5Z6Yh0+K0p8Q^YE1QKOKIKYs39}l`ed%aRzsvJ$QT}Y^`@9U{5BYccy(`@3WeoqS&dU_;^D>9Kj}^S}UEzGM z;XW@Lc&f+!E!^iN(tN(2WU8;g`#&AdZw#OPZ15_4A+Nz#@;ZDYPvF@&%qiPaW=@6L?Ma4fyI8!aPlQ{=wia z_(-0@C-OFYChx$b4~6-?Zswe!{s)wEAMTuUxN{!EqvwU(CvfLHg~#f126xVLc%u3R zJo|81?-IU|ui()yhx#=^rqCD&)vo=gUOGbkCzSIT-q7`83XiV~ z`*sF*o^yCpc`o42a|!qLVFmZ~VGZ~7VFUN|VGH;5A<{aWkFO6ExUUahx9go}74=_I zo;A3yFA030aRcr=oA8eEY{8vp3itkO!@WN{aPQA9-1{?wdw=%e-k*KA_ovs*Jag1n zekMGx8^XOm$M8tMN1DK$=M>&oo-?@foWs387jW;-CEWXS1^513!@WN@aPQA8-22n( zW}X%0VSkkJjN#s&HTXp1I^4gPOW>WS>*r{=^K8OXJubB1D|rgfKBDV0yf5#-b9om& zl4tOl+`o@>Zhn5-NB#FH&m8W@sS(_dQxmwaCsX)!ntuj&e+zg$4cF%--1~n8-{^d; z;XYp*_)7U~;n7FKd5Ls<=hmMFufTJ83?Ip>@QJ(zuYD}c?{)jQ&ND&%o0Mk*?(0bl zKGHaaJI^*een!~;9k}!C!kg+pgD>Pgc<0x`di(H9K7jY-IXssS;S;&n%{<4bf4}ma zz<55ul_^uEqo)7)UR`hek0UZ;ITZ0 zN52{By>8Fr{aHi(?@)gZf-~ZsC4Bs_1oRo~NU64EO%5!aL6jk4H7Q^Q^=3&xd>xcCJe{W)j`XAFgbGZK;eF1krOZYEqo)z5d zUBf-k2L36{vxR#ezpjVpv7*<-*#A`X#Bi_2ucL9j`>CP+|7e~%-0Nw;E9$!mubm1< zYQYnE3ioxa4Nq0yfluUJxL-fqgL^;s;Tyf)cmR*ig#L55`y9e+svp5S@-f`6AD+Uy z-xHok&ftDrn8QbUTv))}=MtXjb;~RG;-;|PHN5kx;2Zen)xo#${_BEAT8Bna{QB@! z1wMLn@ED%FEqE0^`qAJuc>LqR>+t@2gC}smexm_D_r7qQZ^C`uYr$Wx`ZnCh^Z5*2 zM3LvoP+!$NeYmd!Io$n?;jMPqKNGn3&lEn>{+ZGBdzd+V^uDl?1-$mb;7j=G!@*bZ z(KPrP-uVx~H}KkT2j9Y1zY{#tx;2VMp9x=8;LSzw7{2<$;8l43N5N}wpT|1<_jDc` z@I-z4{DfI=+Yc$~->7*yaPNlEte+j;XNB6kUyU)?w4Ie z6nqGeza{vHUJE{^KP>nJK6!NTDLlPA_zdp+=kTAHjVGjQ+R5=Wt(V7Vv-aeuKMy z1^>GDhwGB_@b%}?K1BV8yboVivJc_zy9Qrs-UfWFaTA_uAGY8fc?$RbY{TR0!+z+% zYw|9`lU$&Jd3oK=$M=g2^$*ZIeYhW& zbGZ8(!&e$l=-(Cg$&{}3&fvaZ%;Brk;rYV??(57F{<~V2`(h4j)W1gcTeyGjs2n-` zxa>Y^@Rr7P_~N-ChXmeHJ`K2YXu>zI3_18XTvv+v|KfcD_qsB;*EN7oG|u5G^*@BC zTJH$%b&cUZzdnxF<^4ZJ{X>5~JdVuZKHm%YR^uhy=Vb+NJ};cFHQfDg;65)t4*QQf zhxgAJ^DTgh*FOPJ5uQ!)h;1hWaU&yQQjl2erE{5}7hsW{+UXwc~_v!P}ME!r$c}d|u zFCDngOAo%%xDWSv8Neg`9yo{lybR%q)-{4R+Z^HMo__aLDLj$4 z;i&*WWrF3;dIc@Msj_u(tKbK-f)QU7f^FC)0m%LMN8GKVL}!ueakQ{}&e&*Uq* z9*@@Wjn=h+M>mIkxP`~^NPRhnL|%cX@)(}UtMFW2gOB8O_(blU+>f8nG*I8vd1=D^ z_>{t@8n@vq<=la%&kxUMx^UkwGP?Tj!58vAd?g>iqh2^)IlLwx!kh9DydxjOGx-GG zmpdosKSTX7={W9xB(K0H@)*95SK%9Z z4Iba3$7^^ZPvA{?1D?vAll%AnZ=wE&m46EN<4p%X*SHIh(y-4ncqZ?`oqr$RQU3#Y zCePu0`4B#mkKi-;7`~EE;L-Po^D>3U@)^7)cTUWIf%^9=|0UdyD{FXtKkWYv+>gs! zc&_{--Ol|u{|Y=&|1mszN64WH_w)Q3{C>X}o`<+!AJ@+(6V!j!*I~FHA5*yd=)%Vu zXK?4!gHM!CAMShx@X330U4?I^!H00?GlIWT`M6)^GeP~MR6m0|p9S1~tl{+&+COmT zvxP6be{?(d>3k~i$!~`oVtDfV+COmTQ-d$Of8dw)5Bv?PZ^E5V3a@J1g^xAP;LfK9 z-+2GPozDQ?|Gf4OeDoLEKXB(Wfn zym#R~?-|_Z-F-PvueXo-_i4QYxcAKvzR`FDPrcvZ9r*?)P_1;eLPDHr(&;+JVP<-!`w?`FMY3sQ)|V*@OG{< zjdOUe+=lRxd<1u%W4PZpW&-#7#!TUU-_23JQ`|yo&8^EJYxWDIc=Q)I5dcQvSrT6QD zUwXej_@(#jgI{{TKKP~g>w{l(jUtAOJ_lxtoy)NgOqW;H}XB!^r{lB{K zxyBjX?}y)mZ(b6f|M%g}a{%}I;pcF_AN~;T_ro8-{eJjkxZe+d0{8pjPvL$){2AQu zhwnU?^8)q1qnwv;|9!$Wyn9N|li_|}{VlxtQvIBz+qoa-T!H(2^<%i-SHBAP`|8)= zeqa4M-0!QO!2Q1Z4Y=P|zX|vI>bKy2U;PyB_tkI1{l5AgxZhXbc{?}XUozDHxz1w` z?!V7DfR8oK;hXOd=W7U$UKM-<_rGuG`Pksu9G}Ad?;FnH8;uw6{D(t7OZZH_ zg4fjl8lL=6n8(Lq|69~QR{ck(4?o}V`+mppRO2e#|Nc%59{ot@rw*_6f+ukQJ46k* z|NWgN-2eVg3!Z3x_sbmGsQ)hI(1H8k-^t(ujeGEg*4u|~dc-%wL1gm2(~5QGEjM%Nz7}g!!BBT;76@yopU4+*&$EQ*s$anu@-^IjY~YvXJ$rb+ zMd!jehBs%S|0+C_CveZxfTyZ&!gF~G?mkku=k3Dl>OX^T*4hv7+LwdpaL+S@N2(ve zoANQ-eN5n^IBZhn4I=p&5%$vYF z4-fq};3Iho_dIQQruq(iChx&LPaob_{Q$m_=WwrQ2+wuCM)0Y83}4A7@QQMq!rk`_ z?pzk|#myoAB|N`2KkxBo;Kl`>Qi`E<2HOT2-lMid?okooX@477f^rUm%{V# z9=!RqaDE5yk;XYZdwu9<2=B{%JN7e1{d?5U1nz#Oa6b>6!RMN14tM^c{mJ0TbAk`(nkR>kR6m5* zzAMZ#fxDk6e5CprJb7-IXAbvz7VzYP9(Ukl`3k;}ui;zy23}JRTXc8Q`;qj#j_jzfsGvMF&39{i_SFJulqv`f$%Pfaj{u;qi50o*~?Q zjNl86$MCJj6S(`B!!PXzxF2_xaPO-P-1GSOJ}=%^k#e`B@jZ{Ps}t1wx;lmXJkH?1uk$#E z`?w3Z=UKw<^vmJ;yn;{l^S~P3dy#%#fIr~n!ME_=sRxgG;kxb|K5!&>1^&$Ig2!<8 zUxg>?zXs2q5{{R^J#Pa(dTQvb2~S=a_Hzqfds?VZ;qJ2y|F(~Wb#>tGGlP5H9^8HQ z;mscoeGcI6GlyrlhWa7=r(Y8K9KrAWnBZghA3rkq1b*uif=}VU@;$+4@c$s6!$0!0 zP``lR?P0-}@RxpP@D==N&keqYN5_M2;BRx?j}c>j#B-68J{--k}HM-wLKX5qDe^H+m_}8gEhTm6Sg>TeP4gOr^S%<$$=PQAKx9S`4 z*QmY;|0f-{1%H&T4=Mchnx_rVuT}pE{9aED>utdAul?49e@>4JEqJVblEQyL`=kwj>qEkEJMeGRJYD#^w68Mw zJ+&Wt@c*R!+=t(weK>%BRri-1en#~}_?0@pBlzRxWB7a2{{;RI-x_k5!iRbuGK2q- z@}I*WsPnaeKgIhWzS2A^_`S8S*6=TCUv1!juItYhzNdX2z54L}|G4&f1wMI6$RUQm zPWz_{|C}D*Yw$mk*WoSYkidUd=cNJvE9KLKzg*Xc7W}W3LkfSO?!RsLTlM_21OIyM z=Pvx7x?W}Q*Xa7wgJ0CX?Zcb84h-NQRsK2r^_qVO|9h=>1pl3rJ>E^=57WM# z!gC#W2LA<}uQ~i-%6S2Qme#w3e?|AZ75ou?{sVu$_Rj|1)jr?Ce_uI7{lokJ^SUlo z;EzxaG5mTxURU9d*5hUk{>|Dyb@;oKX99nZya69-e>UOYqU&=D{$ACm@Zm$k{kjdm zzaDow@UMMvsPDqxt9dfIu9H3ZS)G?Y{EfPv4B#KuzRKYbRh}dGM&mI&`;G8(_k{kj z;8S>CK7)_sbNEEQfY0Ph_(Hyd$LezpPvl;of1l&udu&nv6CVlZEBc|s`@HJ0KkLtT z{O8&+{2{**=DBn`)Ynk|6xG+^?lXbEQ}qq_^1h+(7Toiu@Wu1*deB)L-kgQ=+ktOX zpTXA}_uzh=XCJOC+)?0(epABAz z`}Lv;+^-jH!2NpBCfu(VZNdF|(G>32i?-n%_1S@E@-DnD&)|N&XbE_Mzb5eL_riIZ!fWyw-1o0J-1n~q-1n~~yrcP7aNobyaNoZ+ z@Jp|whWmA2k@9fPmtIE=j~5|_7~YpVSI^_?Z4LE*?&~w$_pb(gqHz=M`&SD-`~A>o z3SY_FaNoZ=aNobWaNoZ&c%#qO36CFkuYx$(S zcugL|H}WbxzF(N%>+}5H=XKP-?xW#(O9G$&+mKHK?&m*E_%o+ro)kXPxD9vC9e7Rs zcj1XVgLmXTcwgR!=kfu3B+uc|{X?EZcuns0G3PPre^U8O;Ldppcg{2T_x@_gc>%BK zd@bS5c?D0@{~F$uZ{V4H3(w_|j_({s@(O$+kKx$^Le5oqF8BI8|E2wm`j04|1n!(0 zaOd2FXCKpkhL1FE)2|Bscj)TB3!lg{c=Qcno*uj@@55910N#=3@Z=%d&+t_4^)cr$ z>c6ObCh(=kQ@C@U!GH4CLe4%vKCbH*sQ-%UeH_-WQ2)|j5A$!}@ehaV+m?Pd8^Y%rkKoPcg(HpO(K6&Pf!E|ycp{&{Q@M}N zbuCao)Vh}N#Z$vRT*I3`5_|)X{%7ca3-73(NVju8xx51Rd5qycFID*XQ`)!iuKK9M zJx>CEgXU?#-G|rh{yk3%^=CCt3U?o!67RyDX9gcBw;p_>{ojW>&m2D0cnJ4#NATKT zg!4Owr}7Eh$MtcT+YI%eRBm&)b6dirLD+{Yy7u83K2o0>_(Hy=D^DMX{a18+`(LU5 z81DXS@Rr7Pc>I?k=LDY08}O0533vWJj{Ee!O;LaMPlx+a8}9zQ@Lb~zKKfGVzXz}V zRq#H1Bp<-tzmLQIhp2yo`X9mF{{+6&cnbIapV9v&^goBso_OzrpUW0-_wVDd{}t*_ zs{b|I{cqv5*N6Qd>9glg|3~Pv0?*|!d?l~K-M^3H`MrPYsJ~VHCvf-Qgm*P=!IOUo z{ipCu-iFWQ9k~1VaoB%``j4ys9^Cy8;1i8=xcAQxUek4H1W)B-xcm2U*#8vuUs3-v zxcgtgw;C_ux%yeb7rw5-YyTL|*9PwXeH`{5y&>#h`~5!?u0IvH`>(>A8rR^_{|f!o z;Z1o0&*crc`}c9&r}uvg_0LlODct>c-~)}jaPOZC9{*EVR}bEl_u=l}$6^0D>i>=U zAHv=L7{1VW0-yb#(B~8$e>M0Fp2+8L_wVDd|0U|*q5fBJ_rHNx-x&7a7Vi8bec#93 zJThG8EAZN*g2!<8@8ftL@1Gj#KcoKZaQEMUcQkIo-G2+7s?QYOm$%{W-^XG9UDW@h z`p@9*zYm{jJb>qq33=x5m3#Y-NpT}$P`0|iv9bS_sa39ylVQx*-KVP}E z;IW>Ux8Z$_J82~fXkyqgEKZg7MTZR9e`me!#|4rb@ zJ462sc=UwOXA>UFTX6q9kre)c=Z5P^2mS|sy$$?6di{1EeoU{A%He;i*A0%~x9D|Q z6ZmhuB=j?bU*8G7fVZ9=d<9?Wb$}cApUI-Bq0_=A;O3co@7vjcywj+?=kdVOXeex+VNnZsY8c}DPt>L>87_donz-xl`U z0{+j+Z3X|UCxrS9{H?mbM{hlx|5c9&^)dWaI*&E@%YFTUFJBtwX~JKu>t_mosP{ko zWzHXdwfgMC|4ip4ho5r(@QccM0>9b$!=Iz$F5rKx>%$8E>$;wA;J0Z0=xvAd|9kZx z!za2f)!;v?>umymkIrus{%Sogr0}0reFy#_9XEr&TlcR%{GqDP;cwLIY)9~!>L>7x zu2(bo4`?4Q;4jp9S;4N*g^AMpIJpKI_Njt5WRXEjd~K2~li z{2{tuciNA0VNcW2-{C(QzDg2?%AO4?T68g{J@7LpOAMVGs z9KO;#Blugj-U<9&@)`V_v=0~X52~LP{L=o1dml!6UhkhTKB9SIxX)J&{>r1;|8W1@ z(SU#av!T8T_uo%X;RB7^@cxs-&mA53q8YpkUp+H;2H(hg@c3Dwz7J32?#sD(y*cV@ z|1qq02p?(e&z{GB{ys+iHJWD%Uu!&r`_Iki@VFJ$wSXt`B|Md{;F;XVcmK{|gZgKy z|1I2qZeID(!`FdK;~2hrap=Da&)dOk@QJ(*Z+1d`0`KnyZ@_EEf;Zs{c?;e@9_my0 z=tS@~d?N3_oBN@@3*X3{6Z7w(e)6BfKJ3FQ!;pIpUuisq`*mm|cr6Qkj^T-X0`JJD z@V+npTz(?{1d?s(g7xET-B~Rg_^V-kwncVAR&Rx{cl}|?3>$-Yy=iG-R&> zIeew@5bm5u@P+yx!&mYNJiZWen8FkJ4BnK_;i-H9k1uLJ!xOpJ$DG%wuYWG&vw>gQ z&v54)={n*0|3vfn`eAo{jQWTFK{##=-qyGdUwtmDH-UFPAG`sNKN-9U&&R=A@az-8 zQ+O_SUtX6V*E*t-C-8-Q z3g5_Q@c7fAPp^-;El}T9ZcDiL;R^13wT3_N55vCN!duEe(r5SMoGb8}`j6p>ybABg zYw*6j4$tKYd?atcXYwX|CHMNgF7MA2^%s>-8}6JtaOd2GH$ES7?!o68_u(8&SL}aKlf?Ddm5+k%~S3Z{(dVw zeroUzJdt+u~Uazl*Thw3oCn5jnCk|gf)2D}VOxL&ycMdgp`imilIy{pn@V>kOcMeUsb7;Y5 znkR)jhc^86%Ao^y4jFu+aS!es`ta=` z2z_qhfBOHi_a@*`6<9>`D2O14fCz|NP*GGi5d{&=|E+twlcL4>ocZSWJi zeQ#~|)Twh$omvt~A3g6%{x_;^r4K~lW$UbT$r1R;F#jX)RiX6lBJiUvt@67?;AcbW zdq&`og!tJn0#AL(YEMA~-r!NI{J|0U)=>IU5%}@Ydee*uoHj?B{#aQA-YbN!iomyq z@Qso9bgP`L5%}3q`kfItZL!kti@+y^*3C~u;HjTk=@aK)*^jBW`OWqRBJi>ho*aRf zhw#)0Jhg*WPI?4Bc!Y(wi@-}mc&7-wEQI%rz{^8;uL%5X2=5nx8||(B9TbgLrp=owb}jS+b2Obg!{fe)T#;X5Pn@({i+0xz9or9TmYUkK^R zvk~~&Q2L7zc)Ph)IaC(W@AE8NM&RWkJURkjRc576j=*osviO`Dfu9YfPmjO{FSN>O z7lEG*;hiGzUW=^s-6HU^#TMQ#0`GFO)t-U~Jlvjv5qQ}RRyl(s@WD4)_^1dx+@8`1 zJlvk85%|a^R(n=O;Fm-FxG@4RxywqwZ{d~wHKCt{ABn)fd(6ViBk&U;JbKZU<<#0` zrB95&_lDM?(j)LYKC;rci@?MBvD?}!%MU;IjKIV9IQ5Fa3vRORYw8z?UvJ?B5%}OV z3m+JP(|uMu2S?!TUbEUaDgy5p!b>CY(hxo)0^b5k?H!%XQjJHJK;c}8A@Z=b)oYV+BoId?`@OBY+xSUQAc(|Ny5qN57 zy|!lr9!}ruckq6{gBSb`J}?3g^KEbh9&Z1r2t3@L(g-}9entcyP9OH;!u_~9?3YHQ z-xR`EMd15G{@%t2JgS*BPPazjdqVnfX9WIb$Pe5Xf#-+z=NyT^-JyFO%OmiZyRCZ9 zM&P#VEc{{wzBlw;6!Hhdd}tK%lVt?nI^+*WN8q=F@WcpwNoXHbAOde1DnIPEhU;A& zN}nE){#t5%`y(eMkKw@Wx^L8-ce7 z`P%~{@YA9FNP{ErMSr&H9TkDs3-x1Z1nz8WrJoUj_YLu(ECSyW^5>UE;1@#eSrvhw z56g1|-Y(Q%TO;s}A-?U5z-xutxi11A(AsMMkqCTfX#Z7t1YRDR|DK4zn}*5{gzUBD z^_wof`M*^mKS5bhRt3{W4Yyiiz1*tdTuZ-G!)+RVHq;(fwoAvg^w!N+*2@zbo~Wh2 zsNusjoI>BF+W(A(OAQ~V;i(!vQ^PxH`1=|jSZ~=A2QdA+k~Lgt=~Fe_@=UCk=^C!e z3jegz@bK7H?>cF?Gn^Q|yJ@)2&z>4?{l!cxQ!fqI`P@&#trL`1`T`BNRwyidpoUu! zDhnU1;ks;%(s0Xjw$hhsxW!oupP}Kg7G(avOvB?ee5r=VYxpV+Ptfp<8eUDqw`zEG z4d1EZH8gymhF_!MM>M>qhL>x2Ee$`R;k7mVtcKUo@QWHA&~VyNC7*RQTxxhd4Ug9F z`Wl|7;SDrApy5dxo~+>wH9S?r8)Qm%HN2CC->Ko< zH2f|N@2TNkG`yFF->u>OG`y>Z7ijoB8a`0NyJ`4f4Zl~zM``$d8eXd5-8FoMhWF6$ zG7Z09!i4G(B|P{WfoypM*bYIt7_PuK8% z8s1LBb2Pk@hCim^-8B4h4ezPpxfNu7e2j*7((thw-c7^DYj{r$pP=ErG`v*9`)T+@4KL8}Ng6&- z!zXL_U=5$5;iEKss)m#(Z`ANP8opJ-=W6&) z4WFms`!syMh9A-JG7T@+@C6!vLcy& z_tWq-8eX8`Yc+hJhOg7`!5aROhL6(l^%`EP;Ttr3hK6s{@G=d5S;LoV_$CcsrQw@3 ze4~bM(eSMr{)&e0)bLj|e4mEDrr}34e5;0+YxwILenP|F(D1VwzD>g~YWQ{yr!7_T z|E7jZ4d0>R(Hj1ih9_$HP7M!e_%01k*6_DAJXOPYYk0bb@6qsf8vc%kchc~^8s1IA z-_`J*8op1%dujN74ezJn2Q<7u!{5{Jff{~L!v|~lAq^j;;fFQ6qJlj}aGW1;o$=5} z!}X1amKd$y^3o{o!k@BP&8si-&}`wF=b@EiG`rxTDGoW#L+?1`91rc2-f!J>NqUdC zX^QhT2B_R6e{s_Z*BwMF-M%uUaVy}6`?O6}TQR#St9iZaXM^{0eQoglhWyIl9~dJU zQ8^diaK^|`en~IpH(OaTJBh{Bxn?5c4^^AMcmaIm_n0`!!s*g0(|MUKMsx=r$`|=u zm-!Dc-`9*EW492M8DfbMD&#zc>uSMLy17T#*<>b93bunKd?VO-R&S=AO*3Ln2zJ1b z<$@hGd`Cp6qKerqSRneE;|$;P732T#e$M!tEE?qdtOwCDL#zr{gLr7To+nv;kN7iQ zeuB9+digo#TIJ=(4Oh8`pD`BV3ntp+8(u!s)|6<6%{AT2PupC-diZ;Gxz)=*v;!XH za9#HBRSwrB58o$aE_(Q9@*7UH$KyiILmn3rmU})xSuaP4ZBgczdcyTru!I}sFiu7C zq(M8_T{AgNG-jKetC;O)PEYlx8Ow+sRQZjyn75Yi7T)A;qCsMCnE6{OqC>n!o^BCf>F3%+T}v!Fsa)jXbH9dD^q>lq(gZ-)gMaGt~ zc#!Wi@grkL*}X(B7-EA#s|**>CPTbsu-6QHS(ufIm(g?>kB6BPf1awG{iU+6&U4jQ zht)Ut9Bt$C4d45muQ0#)Ih$B+ee<)wXneX$?&f?1lPfrXou!p?ev$cJX)2fW-)7k7(al? zLv3P=#e>{`BTsr|o_OYALNYr#HCj{;4PA_}{}k?Ll8JV#p-8VPyE=(I)w_Gy9fX;Do+yIQiFr2qfw|_`Xr|F+mW_Tj>W{V20)7qA7A`=(&b>r?c>>6D zygE`Wu!$8m_MA-<%!=7wCS&AntVRo>&}7uagzzvIzPl3hGf!!m ztQTf`n7EVK5%sG~8;=3C1bw}Pi3^Oq$hvFqP<}($t>*F(mexeW(N-oBnY~6N7RT%f zRagb{jqk4FUt{IL8gwpB z9;rc>;(kCUHY9WzgaU8>HaC`c4kj>cnSk=d$DwGT2Vo{}S!4K&*e|Ku7PhKFHHOf=YNhG@%h z!vk`n0nrO*{7t?JR(GJhWYAz{W;UvWo@*eadd^VrC8MTQeg(Vp0E?Soqc0(E^gZ)_ z%xQv=aD>xhL%}Z_fOi<)L!3S{5)N{@Xu{8^@idcr4{-Eo!ah#Bd4}0uly`{5O}5cD zs=N!#dyLa$BjFnq2RSD-&Vtm27F`|cdjzu|8#xtu(-9Hj;VH@X5Obc zjWH7Nm1Ty4*Qs{CZYVZ?Y$RMX==;ic?q_iuI2~8{&N1(BPUDRPeC4x-f;XysZyJit z$IRj`ROZ{t5}xODNag#Sd4DwMSEf2@ilN}=RlW^|_l!XYjD%ALoiJ2up z{XWF(s2PTWSEziOuju!1zE@eoQced|efY@p23=+eD1MTm;H4_xONJLU?K2X-H6VrI zd~dJ>2-Fdk4X!t=x757bLK71b<6#hOi4&MjyKt90Xe2^66 zL+)>kURB=*!3cjJ7>DnJc+4^q0IyQ@VX#2(AZIA-dWQ8o!2m67}>yW205fHQq*(xMz%w=D`88$_u@}%&CmIe&sZTdoH2R zwf7GbJ?#G{?>C{OP3%#~)^y`hqVt9XdD+xF=wI1Z44_-?G}|s4i@uZ^qJIzX;(45U zHbi>pNLv$Uex)x^0d)#JTc_FzM%OEKYL;2^FJh*k8BBa@qq%GsY|ocAF-6d~Hke1$ zA4O25f0yqusMg0qd19$KQS+F07`68>QZ9&?1zonAER!7yHpP%8e#9abfHUodEURXNS#_A$EE`z)h- z=7!4gP=F{9H-K6}b63nxVS&fom^74t^Y60w^NfALqRug8v@oeN;-6DOWEJ8Pq3 zHi0zYBHn&$Gndc6n-u6a%z2FT6Oz8*&AyTJjIe(xX_#GpCTXbg{Fv!g z7ma29wGu|6;RgKQX!Vk$_xQu0=QvudmYDuO_rErMGQr!+@=uiLlcedAwi~UcN?OGG zfj(y2V@#H`+++`U`ER71X_mXdEO)+HF6d*nea2i#s~s|6iLvBqMt;I$7%j z5^A{BK1m08AJF5)F=MZ!GY-X`DtY=>(jGL+{m3l$s97%P@#45~MAG+;#a6l3xA(pw zX%fpo&CeMAt>_)z8v0_It(DRg;t|ki#43iiTyO{^x?Cks0m8!O6A!Oc{zjkGutr>f zUd#pP=Q-S1v^zirLYwEFfnf~~bH3-E$Le94wpGOm|Dh7&2kom5+e`S@ zcci3!HrH@Trvx7@X@tW+RLT8#)TGk+X${IHW%b6+R32ETcZW@mH?Ervaa4 z)ZYW&TEpwp%b3u-jPQU&6fhd&`jD+Iw8L1D08O(%z>6^JYfYt~O1XU+CR03lhKKe# z98)}WN^-IJT%;`-Y$1rCfNF>k5R|Rm}^7J+oB;?muz)kk%;vsY=%{+ ztfMCUK*GO7H0cck7L(3$gy!f64l9Fiu1Cs(&S8o8=5?$b^b{_CfpgCVkk9$`As+ha zEtKLI zoutogbrxeBh-!b=2UPNp{-ImRWk^Nn2Fkgk#IrDPhFta@}}itUFKHZ`SRrC<7+xP52VuCsfFpy@1e zslX(4EPGC1;@}=H5Xh6y2d*RW;?y;xAMY`1_8@-`ysE;glY>r-R<=u)QSNFe&hMwDiD9nkoexrdbmFJtswl zWEXV)mN7O}@poMcZR2-*ltPO{+Gp^M?KQtjp)D>BdYLy7_*rkYcT#9pl5Z#c0o!Bpb&ko`7ZqP;u;&Gh=I%)X z5jj~3|DU%8vcqPZBG?EakZ7#p>u%vViq)w|zQX9yms~El(`o)8^c{Yn7cc`$n&G1F zSnbI!xb}TdyAW)>|05?Yu#2NkI%My=)J4Oc0{CvH3n|}seuf5{d7ERTn0kJhM104+ z-hpZEy&ECgHnGk@8$|D~9rV0I;O$DsB$Y|kH<~5QbiidDQvMZ|Xz$qP`VoeXAUF(k5PX&|2~5V-8yA5O}+!vc4Fs zHei}Q+>p2fahx$KTvp05cI`Gn!!XMg^dWEjn!x&!d`r+m;dxWg3gLNOKnX+at#+R_ zR$`uY1N~yiIXBQ?o1*vH89Ec6q5S?Q|%5nv`F+rI}7ef8~@%+R_NOq7S;| zTW#sEN70MDa(!D`8l~tTqvYbY^pj7~Z$-BW z*lQ+z*x{YwVPBZ^Wruf~hmDph%>wD2;$bUH`dcYSde~T}!go65a1T3S(t};zp&mBQ zrSQcr@6#yRl?i&iJMOHTy$v@KX5J%S^wLVN_|ePOc@aP{rO_N0vO(M^=_t)nqAJ=VfHR_!wX$#xF&fRqTho(Y>N>O`XGY6 zZg$M50~+JyvRjQ8&=@b5+-kgl9&2-5bhBq|yBQwN3Ga_?Rv}cP>2~jVys#^Ji`{$9 z&32jeF}wG3H#==th3<36<8F4uq0+39?n7?2S(=qOaXUsi59ka&7$?5C| zE}u?k$83t;E9Ch!w$rZYmmKn38V0VS$2;ZOG~>Dc`}W?=vDO0 zDEUnq8}3u|IiLJ8jeQcW=-qz#SsL3Aqv&U2*3F>_WVvzetc@q_KU~ z6#Yt~EKg(0sw;Y04f#x9GHZGv(O98nz zjh(Nn=wtQd(KPl>eMN6-AP=Uo=aLjXxuM*b#wr>r`eY-yCygCRR`i=Ga%UP_eXXMB zHJ01c*o-EM9^O>GoyNXvs_0Le$sK9z?dFQ!kSgCuV~biSy0oQyHI0qAPSF>xlUvi+ z=dBdIueIC)9$r6#+^a&~ zatr2vT)|s77FEr$A#aug=yoK6FCg2-{e`+(I!`tb9Vz8H;3{6+Ox#l$8&z{{>^b<0 zL>za}wJIL#8)aZFe+R*fZ~+`@VA!ehJd{Y3=xt3&_08vo@Yj{kF1Nt+tFgJ6#XV;r z7K`eq8!n&=%&b=4B%-9K+vz$LvsPtcPfCjW4r&#CZcNlTsynr5s@j;uYW9}DV3CT| z{=r~-nZ%00T0?wfU}*&&r^OcYTSVt;)`SDSC^x>h_ajF6u{#*1A+A-7USJ&*Ypgo; z{V>>f(LWA>)u)-Olpz9Z>6U9Sb5pZ7iPfJURqLPSE|4pDU8{_mbP|=HWU`FYd8PtI zlewa2s|5c={a356CT7Hhe*&us2aK60?_2Hy{X?j{ngovGpZI`dX1xIK_izdNVCa3d z_m~$Yl(X0kYEj3vz@RyX`eL-j{}GFuib*DORWQ1wKG4Gd8IP{k#($PxwiLHeniW&3 zwUWyPf@a#hSZa9A7W<2hj@VpZ+2}Ldec`%gdwDN)w$fwG;|{tdly|iu5xgijyyYrb z5xbq!eD1=M(K23@x3heR?hWOwlxN8Ke~XUIpftpuz%SY0KTpTegG3Md-(V1B7eccW z+1(*o>`&BR{*_8BxoJ7km}GqHp;b2ThaSX&UQ!QBrTYU9{VX#eQ)xi1;)OEWTvV$Al; z#(pk>ac-N?jdcSndtt9s_?;>nTbjDK9-s$8Wnb&=L#=PO>e1;YvK6%orAd)psYR-p z#t&W){`nB@DP^$YR-H{*gH8fH(W?&jUi||zq+LuP9J!ad2y6Y~IAb4Ibt}F@$-rb3 zG?`^AFxWXI1BXpB{HY;M8tjXzt&D1~aRa)I=r;KZV|TTDgRv(EBj+zlSP&l&lMFVd zDmlt-%9039#vQJ~2D|tA;RYMYHY39uYLg^3#fZZOd$%gXf1~_Ss{C=P{B0;7CBLh- zSBOsycKE+n{=fRY|Cj!s%fr9MpA;B~LhL2v&?zMlOl*Aolwr|coMG65R;ipI_!z5R zO2;0AT9D=YyNAX?3)YB~Kx||DOM^`|c)5X{=U9W9%Ec^>{a507&K7d5AhR57hip*` zj&E0t9#uBRdO~Q7V2du>!J3#O1tS4vTR&H?zYRRHwMes;arn5OF>FU?OALO>V9y)M zv0jM<2u>Tg*v{D&y&0%ewcQ$*99!N$XV?}D^@5q*M+O!#=?g=AXRxoUq+7L9@eB6t zF+QEK{tqKQ%)}lBZ(V%E*ug9LWv0!-!n<=8_Dnz%OLdzry$_?C&Y414Va)WF56qOG*gBP~Ky zTNqoT(tg1N^zTU~eq!u9J#7-JMZKUy`QKO;IR6|IFECoc1Ps?&JzbawF>|o>^Z{&q zWCDAyAvs?$_Gwi@bepQb4#9T(H46H2l$s8KRRac{M$~Tj^=U zP}PsA>;6qW{pT_RtifP}W;GTUXVHD|9rpGjhMEbaXKcmGV8XfmlG{e^oUy!#Wy4*&IF%dKWr+ z2NS!MdnP_)?7b>Rnct&y*}tNrU&S}P%Iba3uw|e^#J;e}^*_j6H?ockUj{+zCa6F2O`J7F!5*D*R&GJqgsAw2xd4Bi=OPPNJhn1}J zz4A{ypx2vj_hwaIc+U^YTgS!gNO!gJez$$6neSh3-<`^sWVxQ^tiS&pycOmj${`_j z&Kj)L@PI~)?rVc>RP9^H1;RH=)c3CD;#IW$YVF&t_;*b4?|{j_&rSaAGuSES13lRg zy9_o%l{bWo@oFy<%A3f=JkF+Ftvql$!v#k!$B#Zhf1qp7AMe5$Vlkj68DgiwrmOOv z=3*RnNU8ElxtPn@)c-55ivZVfw$fma`HvXvS>{D=u4Z)(84RcNK+jf_Csto#L2d@r#_B$328cOX$;0A&!Q&b_?>45SUaj}YH zDW*~xRgJg*puF76I^Utj$7uEsjE9*9w%cJOsPXWM(J>^y414haLxA@y0j{Ht0AcLX zCe_UCCc3MtndTh%CgsGI)Y+=SCx~BsY`VaoF{HnWAKZd9%oXby8^e;2Yo!WQz`2Fb z{HfZ=|C+eo`9%3qI~h%70)g{c3`Wt!!N$BOAXAvY*1nnSRuh+hP&dA%#v(c_ z$G_Jci!BN=fuPHvF~4I`pr@I(ezwwOf5g^zQI@Ee z3my5GA37D~!EB*C^z~OP4m4~PBw)HKufh;xm7|OP7|+FQ&L;o1Ke`HN?A|VjUalX~ z3*CrO0^Nw7J;mZc&oKn__yVOHC#XW8AyFPg@deHn{kFWj)ad+A$;*LH57dupxLjk*B=xuDTTHrdv1SI6O=wkdRkeni!rCnwz` z;CYtR-_Eds3;OXG6Q>vg+xWDzO#H%NxGIN&^2z@v^ka(5r508!+p~f@ad2=0S7B!8 zRQD&``G$?Y;suuOjd{WDJnW#a>`@0C^n+a;PeeMk{yCocwi;{`^UXC7rA;!Ar(s|4 z&uRh5Or_G*!hH=AbA`69iHvo?tbZB9#_>uY6|sg`eitQlGVAu5(*-x`$V*YxAV1a# zJR-I-y?XYGYp!^9OYIr;5t@=D|IC_VA+A$GANn(XSGEWFUBX|PzXC3QDp4ve|3;V^l*oUj9j9*L3!MW*ZUTzgFN}SB`r$qvGTc z7LD+g3SoJ0+~z%oRi%pAXBpz`z1*+YaV%hRVjag()^S3>G2e(jRok)K@IGJL@tSb2 zu0y4EdA>I7wYT}U4$W|Q&()@l*pXD5hDz7!S~O19Sy+oU$^_7por#~;q}QBrn`-i( z-Mv2y&^WK0TATKG-Ggh>kf=6?>d>Aj@6Wa9WK{eowP=&i^<7Qc?yK`-O*-SN4ti6} zljQ;05bHfui%!JeF)lza$Jaj|pfmBc_t&9u38S!%HMOSiSWSAiW&+-Bs+mBvucr98 zCcR(tJB|rpKM-2u!6372(P7k2b|6(Wrv$WuZ)H+J<8l7kVjWCE+?3mMkh)H^dK zl}VK8t6*#*^L@;4bghx%nHTf3gY3G>ZZqX5wvHU8t&Ef*!Aj{i!dr zK!uI{jH8Kyb{f$?VWHUEi$B=r!@kRTwuF&_*4ccB&DwleMLuRr_}NAmZ1-0+S$+FG zN%cOm(cj(Q*|4}8^}UVuv4o52?5;YDHkJFnu+bWx@R<#Zn2^1r+*gi5c)}+(8mG#h zWAnX>BfYi+6!NYOGkLUm3lyFhr`7T!Pcq|`l)Ls_r zIAGKs73-MBYY&cfoaMDI#yHm5YM+g9{AjxdY37RP(=q%@Ax_5dQhT+pP>$Vw2IbhJ zPsQ@x_Iej$`8Y>lcdX-GN8q(sN2zoJDU-2lV|lrZT^-A}Iu&xr<$BI1esV=0kKrG< zz0-VRwI{kfhVP4Vqm~b&)ES7cePVA6KkY+DzZ>m)KbD`2PIxbt5AovzC;EN6V)+Vx z!dtO?yB|7qzuz}4mY?<~Oo`>g)ZYr27UP=~%h$#vl;Znh)QO4D0?jwCz0Wc(BI@ah~G+1>i@yJA=ZWRh4SqD zBX@!fzB11ry6d7#Wu7Eftw)`w)y)`2g~87-xN3+auLct#Rv1}C$>uk-W=*IrQC;~C zqZaZ_#@b-Lva1gvkw;;v1~VTPswc1nyj{$0s+34mm+HDt=~AbNuGEFw*XA=qXAk+FqJHWbcO}^88{SPu zxI~5hM*k)f4)p%n_b!UQ)*RLw8Fm$`bwric7t<)5+kCF(>r(lw>c4^L2463_)2ct- z+OzXCqgLQZXI~!myiqaFDl10Rt;}nE>y^)mqGRRz3WU}>qlkwm7%&9*_?MV#h(T|# zq^}qPNGkGYwnyDHVfGK6ReRbIwetn(o-jYunvU;Ly2Ip0E#_%lqa*JKLBCHtgnZ`R zMt^!aq$_8)XQ_9{m4f3=l_i4z$ZmaE@B_v$wn6Yi+_zZpp*GJmI0$2#4zYgDE>_vY zWh7RX(V4Z6^S*De>s@fY+xcHI*i+GP(#EqoYY`4)wLzB}VzmkrLRo!d2psS}W55@I z$Aj?AuT=_C^`GqP8OVyz-tadntc&MS)>FeOSg+986X#ebz0Q0WaUx1B_3SX5hb3H1 z-*y}(<5+dsX+*{DLnY zX2V@1CX2UjsI+HkrjO#sl=z8g>^T|9Vz3Kr4r_5jZOVk8V3Foauv7)ta7LyD{&4X@ zLj{*D`B2Nr?tXNiB_FpEnDW3rV>)&tDJOFm_l?1cU7j!s=O>g;Iojs?)rOr)2{_cd z#Rg!P&373F!~`zeT8H@1?O8+4w&U=+iULot`R3Ybxvlo|cG|7-9I^RkVxx#H0l+f? zO`Iou)9pAAs(=Fmdia>|O|?^n2~4%a?t-_SAE|auP~r7NOPTMuzyezWo?kGcJ{LF@ zVdfquA1xFB#d7z%q{_&yal+mZ0GppV6!s)?$+2IgLb^v^lvquI~0 z^keGM2JGv5$8c`Kd3^IoQ^o9uSQji~siiFc9yfN4?FYS@S9{wH8@UXU@SSj%xp5q9 zJLs)ao^tV>5^fjmcRF8DX9XY|Yh5nDueh+lh9CAM{wLQf-Cw3AD_acL*e0}4d00t_h8G$SpX>;lPeO+9u_O6xuD-qTz6tT$6%xb8X?6xDs%nW{5j(RWgn9 z$Pbcfss|nTt;ahqndW-q)-|FzQPrn6qE~#i_b0PeemSWTZS4uBExvuYcxRI+j!qdG|JS z;iHZ;bm4P8Yv{#?oN4GnyMJovLeqvea-mV<8jXREXYvX>3bKc>OH%EWoXdXn^CLzK z{v_EsBWAXr_QBg&9>X^a7ykO%P7!k~8W*y}yctbDiuiLr8f#B1_t8*C=OsSc<2V47 zGA~9fjlrLQfDC;QBR+@ZsowbeI@K5P%yqw5WblVapa)Dm+r&3AwwRsbvCsM)3xr(i z=gS1not4?6pZD`A4lm%t4*8s)f9jZpR{kUvGTkZ9MT_~)n6uG*vr8`Y^KGu%aQ@64 zeJPrsaQjY2^N}8jgcCelk?CEp{3@Cs_F`|$_^9gJqWO}j>PLKhe^mS-AOA8c?x2q^ z_Nl6u`@E=WlTVfShEEmnw$FvE2YuLMgdfw}r5D#$>V|9Xk`r;w%(r;^s!<2zdBZ)K zV{#0y*3ws)Lo|?>D>Nxk1%MB=pfey^ZQZ!Rrk`s9V}&poX6e>@@TmdLudpWXgHKg> z1@`?wmbyx~SP!J)TbZK9q&bdfYV$6XYwtTb21D%6t)rcNncxZp?Qk`IGv@-zoF|={MG)cChVk9M&3* z&Aw`%B<$yxCV3ijkKb#P+CyaWeTCwCO9T>_YleZPI$3J4QHBIuYGB8P#r>=E>R&8l z_D!tSby4HJto>&Kp=G=KCl9@BmpGF7x?QQw;m-KaJv7TX5%ddg33{zt84jxnkV)+O zxK3X1up3Sz|1!Jy!b2xNvyTnu2(GW7us;-nd%()2R6n4!58{cfy#pQWZc=UW5A7=A{o~R~OxWwX=Wr>M8 ztO|`c<-_Uzm$K*Gs5uaPgSsGF6sg=J`YS%k5bi zuGh>n+r01ZS5?nHR@wLt!*`kU_sx3Vv5A9LJu~z?_sHjMd=8W2Z2Tx2_?ivAop-E_ ze`+XS<0G5++{%-!=lO$o1g2Kz`3vjysm(dfL4$?=l!KoWu5%84S-_^RwAcI4N&D?k z!=Kw-`y6!E-f*6Sra7Qr$4S=;Cry{F=R0v2wHi{$D3IUDMED@i1dywp;ytHW?}V;G zf2(2mn_=j_#&$gsy{%0bO*B~FAt=H6g~OY|DsY{PEcsF!SXoEMt!Q^zph z8YfLP9$Dq2;WqnQP8uzu*E^|9>|`6A^qf=da?%SiF3ON=z zc438_J*aLOk^o;fB!FGG8|`=U-hx1c3P!jN#b7ry4)4%$n<$ULIs0;qvbSAwdkoIy z?}o;m8{_#ThL**6Fzbl%0p1>ip`+T<3^fw|x#l>rRHF9B9^hh$6P(2n3*5rug8%)! z^elE#g@ge#^Y{_VKqHxJxQ(_kWkoF9Tdf|ZbNAODNCP{Du~@?1&{k@r@k1`$w3f9O zExQ^YBKeYx{i+D;BgkySlrsqj+TUildWWXiq7d9zZfpIe+G1bbEK7Ro-A&D)2(Q9l zf0o3V^X=wgiakul&#d~R%=I7d9E1L@_M=@jZ)BS~nD^L5pXKy;Q^K*7=+n4O3L7Qp zeHM)?9*!$=lHvUZ+xU(4II?1RvAh42aToTgb1#m{zR9imfB{<) z9iPFx=;C)+;5il0-h-4@VynG=f)9^>@;$^Y#4*4648?=!kh^7vWqDo2hk@0i50Lc( z=6cPB{c`RpHd@Qwqine22b+LH`TUrYs%fbmhbuO-6_xmv?W$lm4OqwaJ8??n6noc6 zTSe?zC;cqyg5G9VG%nl&eafB$`luu3Ye}C<7czV;hgO!^6x%1%7K-SnZE(rGyVQMb zJ>KUuoI@SF#>G&ZS{ekfOU?4|gKwyhl~O1V9{n2bp0T+XNP5erPLfP(?@%{! zTulc4liwbV?IdbT$u%Pla1&FJ-{E&8&*IH_nQIJgMP)8HGMkv%%yaejM&^xtc28os zMiQbE(nl#FU&;F{&dac<>72GQ{}^?VSq)4i7vo}KgEko9`XE;xpQyp(+7sO`{$v?1 zoHj-WulFDHm#c%8klKGZ!kG%vPC-paOfmWs*qc z*Fs%{;t}VUhRR0lmTD8###O%5(1j8Hc+?;oWGXoDQMyGgMZ=N&SK?zc!euL4-4*9) zI8KcrO17JI`i1k!M$9hG7aKp|W1!?0SoSdY-^i05&ZGQDbz8+0CKsw{`cvx46-6#I z;QlLlh^G>S{TrQunKEjevLOzFw{N5zVu*W41ucGxLohS+53(FzOzNcdm1j9z_%J^ zcTe)r1UnkE!+x^@93wCzQ+%y^joi=pSSCMUd@{p4YL`jwXYl>!tGISZAi9OyF}pQu zSVz8Q@J6nc2EWHU*WgdNrecE%lh{98#*U$l*jF+(bhCD1WxiT0sv#)l(QLY zh>$PF;F64a4A@t8_ox^;XK#;SfTJOR4;+_};XSAG6F+_A{6$**TNj6u)B(BqtoA65 z4YRcebL`tw-H89pA5&j!!_zhQ2>BrA=OVH1`m1LOTVzmR~^AGx-2cHeg$RE#BR+;B_=eIROT~lqcL0gzanBV|& zgZ|izJzKH6KNOR1Raw^`Zy$y8RIoP9TuVI&;*R#vKdLQsW9H`l$&Hm;-{)@V>1xlo zvAM{5&TY@F?;IL3P;Smx^&XvT345T zbRZD-f^^NSOE1YY$n&gA3{9aa?s(L(%pJeB5xwe8T+s+(6+gcbP4l?M)MM{>TApu6 zhrKbA>e1RL*UKm-$`5*^ulg4asmvEQp&|X^^PWkfSEF5XljwDS{L~~mOpZK=Tv4%j?tk39fPVX;U@N;(9c+`VD&UosArzxXm z{@`2uR0e;)%yH+B9{R?Ci&@l1x+C0&JHp2rI4DbFY+|Bi z8+$DXk3Ga}u5*=o*-iT)dE=e&KYM7AIlkAqCFm_~bvmr7O;?S{sD0wf7|KNkJqb;> zlF6~kagsyTrdmYnz-5^KaQju9AzjsZ>m=x^gElYfIf3J}9y(_`13h$1#v|tNqg0Wj zC2kdeSm{=JyD~p~m!|T72r&fw_$P6q--(YY`@RqbE@VoApI33BuT1hxI8Njl&#Dh| z&=MB9*V^+mtB!4zvlu>2>Ft_b-P;T-nnmHv)lwFPyA^h^dx6X{I$7_75;9h*HZ&o2 z6NPyGVRj#oWk%SaJb?NSu=-^N&K%2HAE6#aomOXln7o)EYuK(EX z9Q3xAUU8Kp-&~Je<)xoJa)p;(+;o168xAbu_cVf>j@mkPZ^Pq$OfTH$V=#S- z`Y{G#S8seQVfp@K4F0l6?P)P=Ca-|YrSDtqJK8>NV zo*GAEaM6bANDQs>G#M5{m%{8{Ybt{B+!lmlwRQC8#Z` z)nY%r66M;D3;d$$&hyiWD7?HBf9QFFKjm^ zmXINVU1{I5x^V0b_p63;jUlixVuO*OmXi?I!MRCX!i-)sum`~QB!|~ZH_nNscKFu; z|IB(Yhp8iOrv`A%)n1euHzlrN{C;?6%hhI5zJ@_KvE^`j$jPo5&ZpKGm0j>$Yqt6F zY{bA+tO)*ln)^w*wVNuh7W2isaekzwnl`jMYJQuwhQH^k>3`#!?5p~_BPu@lv`vh% zbp90N54FE{zo^}IM8{n?ss1W^e3czq3B2Bn%U^IX-blid+&ROw-Hz>&k1w!ePZwVP z#9iNDz0Q`jPvGJ$*K2nC<&(ST+i8?q8Js0ti1{oLNqYqTT)+ae)%do*ba(H>ZLRo| zD7b@>RbM301D@HEW*9YJaN-(qH!ivT%y3=COK~Exiio-3pm&9e8GUH?o^jy1|JZ{L+$CK9H3z-sIIA?2Id+<+cq(kvIu?H{ zsIUKs4LgNn-m}5TCyp05AL||_u!1L%;ut?^HdXaQ%jT{_c4|}Sh@GttaRS zC|L`ug;fr;f!#G6cS^%Ag^S4>OcS^Y7F#&+2q9p`p||IDnwnc*^_{vvmBg2pS$I+@pLF!ViV8dSl^HYniE(1 zd_3C}hY1lKh<72^NAW7<7x60P$#|9WeEb@`4b`uFsDt3mLE+x&z*PxqsHk>fJg#T0 z5RUtXVYRLDr>Ho)ZQG2D+??K71qB(!xkVX8!Qw!l%$(ek!eAgLFOZRuH83-yZ?HI{ zZ*G3?%-o{n6w1mUkXe|MnO7Vr3>KFZ<^_uTmE=7hD9#Vijnud?bM23Q|(D)GmD}sW;u7pGSYAoV)>1vZ~0+&&|y&&dKW=KvVh$@hy3o{e#Wup1fcnzfa)WTN?i@@I+=& zATPf-fReI;*~s5}P#`m4L+)aq$Q!M~J%K~0Nt`sUGJO7e?Qeturl{+Wf3 zQ&B-?R*;Hwa$RnVV6d=Rzx<+NRk8JynVqc~P1(Jh6%Q&1Qhz*T_6=tA zE-7l39V|j~%_1o{pkHxuK}Jboj_R(Azmx@)?YKcy3+baF~)V94-Q(Lxe zdwn`Rl2r6)AgRbjNkwfTK3M}OJD8QLzBZX|zKIk80Z695HEY)F$x89L8Lz@pb>mGp zQ*M4{ga|#Bus-&(bvx2lLeVHUvw!dGOrSYMm9q0xB~`Cpz^Vd0os*RTfk1<*WHGa(I6nmmpe3O0l&Zie zGzIBKRsPLw+g^$OzIgTMS3>Oz)KD8h-R@S6#K*U7n;k69%<2~wETyrEFknsHgOLf9 zlMmSl2Kqq-W#+0Zg95#S!Mp&*dowC*Oik)3sfO6*<`fm1a+Yd|TMJ7srej+cL?Eb? zTz+2X?3D$GJvmSX&CurQxGckSMzeb@FG z9Xj56{~h=iHU9eap&o^qc|}k&O*`ggK`Ws{ye?9zu82ByY~Mi%V4vI^Q^^&T6cpqa zDv7u|n4Oau=%MtblC?Z2A|+AyFti4vr+*-G0LE=*@7y5u$;vCvO-{;g61Y91d&eHP zcSxZY>CIZUYSk>YS&Q^^vKRoCK{%hlpo6A@h7ZZ0vI|N-0R(TMLo%{5!TXzUrjk6R z^U;drEfGNR9Hf;|E z&EwEYnT@e}m)AEZZ=l)Nw_Ruc>X=SFn}&GVv})8kY6LgE?$c3Not(xRSom2&YaxdUR`U>UUG$7NLK-2MY(} zWCa8F=T-3;{(`b)Ii^VlyHr(pkMF!v0h>K#DqHGb)R#IIV5ot;=%JJV#&#d5^z6_W zX%@H#LT6?u3Ou1iIVt-FQjIvU2k=uzvf7poX&^ zS3RGnv?%N@gh<(Es2KDXv}&+YWn^bqd^43)Z?MO*TbB94N1M)sWnRK&3#C3mDS=yH z+X9aSOOHexRfn3cLSYcfNolo!%9dZ4 z3B_r?s8j$DE7QE1{%^x7r{&t4ers(^OVR{-ALc;i%Yc#2DK4@MOb9o{O!?9l8o2oi zH#)O7R3O1IzOGg4>(kQP&}|sm{R@<7jIdS_@b8-|^lJ&^XFxE+(m_i9=vE5eWPVl- z7?yp7jWTVMa#59EWxmTnH^HbV6Qbp@j9hOB4-8FTbNCKwM$PfqEF{0p3UW)J=bB+Y z(p-5h!J=klj>Y>+aR`xIFly-~;GLAYDNCvug?RhZMa-)~+Hpg~H7SNU6*@0eb;*}_6F zC<}cwDC7fT8q}%B-Cb_JQ5mh9T{rgV+@nj!o0Fi-if(LfJ-BXcZoa(n)_XcUge09> z+^k;W7v7i{9#k1FYTn#*)7xh$Gh|vZHEy7kO^3>&&6Yu3!I#U=GA(|yK;WLd+(FQy zmf&SI?ofH}>K^IsiwNBrupU+ z30d=VOHB7aJSo6rw*+%1jOEOnj6S)UeN9_#&Ipy>h2hP{WQFn|W@Kg`fWcp7I?ZA+ zTQhkU`W#DRCUwc|Ldwggrd94!5x%UL`d|`W7%LKM41%fB#Ivti94vy}NzSj9c%&9c=B`A)|Y@ z_FcPIzUtobz6Uzr)-j`N`@1_*y{?&E>(QT+A4zT6CbMauNB`FH$&{weu5ECo5b3iu z)1%CRzk8+GvlNTz{5Dfcv!o~kE^$zW1}sI1aDr)3o5Cs1gSVhe{%xiMsHW?c1HPaT ziWt&jnn=^)DpBj7nKuZ7u0NO=P<|(z!m4=&CX6LTLAX$ujVKio5^3d%!IKYE6|UD~ zT41Zhj8KVGS(BNi$kg^~>_M88duEa$Cyzp*4-EePIjB=fTpqsH6d)CYsTx<-6w;hJ zW|}%NImMg=nlt{wKG_*iRIpD3KOiJ|?UgInNqKUXYJnl>Y&lB-^Hq2zuj=WOUy_$i z**QfBav`c>jwzV6P)^Gwfm02$XjTXN*qv0d9qluomXSQm3CAhsC=l^IqMl#wnF zqujt{h*iQC&_XCnKtccC^PY30BUz4>hFk9UeSgJIe&^luy!)J^Cz|9pOH?;->oS-P zjom<}dtt9yrtigNN@^p;MTs(*8fJlpC7}M$zCo!qL$btRRo{U@$~7{!Quq5-CR?k8 zGJhgS8L;X`(bl7O?;Q^BW5~xK&}_x@!i88Llhqq@P%FbY)+)`R0t-t zv~(Ese?waa_l;RIc&gNH;yT-^qY+YAW*^2pd8OP8As6{e&T(rP7FH|j|K3&o5z2Is zH9*^pP8wP=V|;*hk5#%Gk;cSj)On_lGHIm+wbrR*?&jj|W+BWd^JQu$c?u$< zTa3YrzOT5YbLaryS`YWJ?TP3`oKVfr$oUE9GjYMa^bF}m3waoH9$)uq(Kfe|Xt zrsyyeQDe5bSNeMTX`K_wTz!hj{L*S4jL9aGg37Z6nvdzTg_X<3jM*;pE^DnIV)cRy zFDQSa90}8c8B607;PQ~VK$+_UdU_zY|8PI+n{H(+KFP2n654AFoJte}mP!^pU3%4X zXxLbga8o5q)}_pauW3tDRLjoc4Px)3URtDeMerH?s4c5Mm`oyQV^u>_%KOR^%_OItdohtksI9b_GkN~8Jdh(;Y0KeHG7`3O(m^5zjm|cLRN%~0Zj^zuCvhQKd7|fXhJ*CVKX;TW_c_cI{ z;}hNX%T$IjE9+8pZA_6^CgL__uZMMdT0wQW>KhpC+qbuWFcMR1!jb)JSYDSx|Ucp*F75od`|oMIBu`SNZ*oEvvlt0U0II zExiH5MybuLtsa!f5iJHcdL_=7+MDa>bmaZA_)%6{@!!RC=fD8filIVph%GP~CLI_a zWr#4|H$pqz7okNCi?@X_lQGS)Etlz)Qr1IOZMZ-$k{J_&Yp&CGqOL;hD_YfOL*dF+ zr&igPS#?7=5MHlnAN9PJ1r#Afw3ssqL&cJ_v`U+dMYDEeZDGqMHY0lXvFXB$afIb)UFFv3J+CiDiq7H`xetKwXAk#dKa ziyquN%+{xvk(Ygu^A+JsKE!C3*t;c%iFH4>?`?*%*+$ z8QrAQZm~PeFjOiFrxmX4H>!=X^15YX#eVD3ojZ2!-npY=Q=#Kprp68uma)HVYzvOM z7#FkbY}6_>eqfk^zhR-6J00d`O54`<9lN_bckbHF>c%SO#O7GV=4W{=qYf{VwItca z=N7gaBWo8x`U>`@r5%SV&0VM+Fo_-wYnVJj76x8Mq{wioLOwL4KBKrr>fyU zjX(PoL@ngH`BvLxVYS+&*2x)xq19|aF#YV+bAEl_T4lmEIaNXS{PkT~*pZiEvzZL5 z*qFWRtrxXo&-gmEvvYUH&K+IGYJp3J(G;KAYEg)~OARZ(N9obA%dMvn#&|~d7SAsm zW>}*oW2PaSKQypm*&1aVRhI+DKDZG#C}TCp#Xwg&0=>UlGMo($@1p@x%Q*qER^Rv3 z37tcgI(=i^$G)^}MZ{=b2%xZ|PZuBq*#kUhyryr2++c%rR2OB7xmai{ByKbccC%5i z?age=kYf5I?&6Z48XPa&MC^yMHODi&%vBU?)#iDR%ZttR`0x#^2`c8T^bSLNR$EIj zRxvSVFjfI|fvV-pmwS9cU8s`ZwB@pqM3=I)I~;b&J>ABAdVqeR!`!x~ag)+?mCOXiFLOVNnYW$-vOGk(*1DD(Q!QgV zSX%JWNMRhtNJzNfN4$Pa}>|Bh2YN2~A_NC0Y*t;7Y4IR{(G-#Y;*dvFMIM~Bs7TI^w^P$xY zR7Uwofz`KMtfHYowy2|Qk4Wv>65-SmLyjISSo;Fj-doQ~SBW+&Hg+Su7~X9j?h(6& z1_O!69(EDXkwujrS#*&jH^%h5hfQHd=DpJS4y}?6LpmI58$x@aYxqWUoa;A^T2#3% zA=4E~&)nTwt=iZbp!1eltkiaMYfjpA>WegBG$O9fon0M4W_2MJOGi1BK!G!YUS;hO zn!Pv$W89lePK*L6teh4*Ea`>lCFMYZRpD)|wt3l27eRu}fsC;Wy}VCt+PPy#`=;Ft zL}jqL$?TrmuaM5Ly>sXG?cJAmwRdj{wC&j1zP+PsHxu%HWgR0ao?N?-CX3y9Mh8}j zUr@NZ5;~`PaR-2&DcX3)8*tb zTOwohxyfvTjL~QNrfHLuh_S9vHcR2wDQsw*ck_9=57N_^QAXooJ;amj-^Wl>3QXF4 zraaS6bgbslD-K66j92|stW}JXMvP4|V;&uijB$vD!Z%i&I=N4cY9L)!vEIlmsCcXC z@fqU~Iu>(P#C0ov?CI7+S^F~7W~2AmPDgGuJuBq&+&aa8LQ%;$*bvc&*@5f>-RSfaje`I!A*;Z)H@%Lh4_=4lF7mVkgQh}r~rCAPH1|?f_tM_0JE%1NzKrm zrtG=d2Wl57>U-fNi?u;s9FMIpUKY=Ka{E~K4JSbHSSFh+2D3geC^w36KBl;g%< zVw+cHY4+QQPu1vsQg_#?w5%dMP~|OHcZ^DGP-hg45Ge;}oiG zETNkTV{l+>>rFE=r&GcGC)(c|Zel`L6AZAqvNA_0|h(X5=g#j!a%SAiI9e$cFW63?KC> z96RELv2V#~)c(drhSD8mW-?D+v!1y`yWO-A}2jp%TPkOy7XWMjrtHe=;Q<+MoVpY*%q=h76?u(%>NWZxzqze$?4xXMR4dl;@ISr${>UoXZ=;9a ztA=?0gg(D4rNo-MZmFb}&?0l3hMF$BXDsL)&?Yno3}!3z?DW{u(uD@Q%^{%Lxy`a> z&1U*XL;AQexkKcx5v#9Qs<^A$xSEhfdzERTk9u&F^0R1a|WSk6b#ZIVYETC ztIg(RmmE=5>lhDq8@W`NWk^IWG7rEjJ!oX1$~YopR6c!Aw5bse#*j|8R39?622!I8Osyq3J#Au*lu0vdm0Q?EG;@*du4T6x)x=y? zH>S>QW`}3OSQ=?J`#re%@&16AamM}+o++(e={~#;Z zGHZ<(hnH>ZC2}K}k962h(BG`5O}9!r9#h=hv{a=_V*wdUu3Xj|+Ovnn$7O48rly9% z%+akAZbZgdpYLX^Ue2`cVWuke!&U=J&)Un$A8CJ#V*^H?rB*QWU#A;BW}DXG0{S)D z58L@!ug9Y+DJ#X1B?~!7Ynj52O9O1#C`y=yUAl6If+@^A%@x-8=jp)3%O4l2EVqd2-98KodN zQX8TabX0+Ks#G+p9~0f-y<#%Xfg>p=+tQvsDdEyRpVCXn#&!uyX0q&M>pYAFGkt=F zb#gh?vAb|+)7o4%ADS^b_$|h&`Si(#zNy=Ew_pT3wsxVCn_Ma^{hYCAU~VWeBGjV; znsn~~jZQ(!H)=PI6wwLWK4!uc)=DgVQ&WT_&meJ`%qSj+u3?Ga$xpKVE8q3J=bz1Mlg2UK23r}Ykd#F{b3blq2jlBgk z7xZRp!uq87FFTTI*E1U<=~Q(!EUx9*ZLPO$aoaqc*)d1$nbGQE6|aYTrO_Y+Mu;r1 z$mt1skv&Y0hsNa@DPv)M`aTvnkM1FjR?cr!_BP`V*l5)GO-9qVWwVk+nZgb0GCOV= z2FU5`u&gr;3~?HRqo~zBsa6>0>){RugZDAaWAEXb-c_ONqzLy?3QX=9?NM3exa?l; zuQ5VXy~Zq_BfWzM3nyL2A}rMoGZnLC%~+HvWmujYGtShIWRGW+vJOrb<{CUo!*d$b z8%dS{iW5(>rf(`738B7AO)oZnw051B?^c^-I3c5QYaUA>>0!L9Q%1zH+rDqL^~X|= zS<*z#>;OtzHfN+|cIfXWi=A&p;0j z>>ZF5P7ch{MC)?ZYq2YrQH5xvuA$-Tm*-ekE*p?_ORkDFuUM(O^f_9(R$^z>D`TkL zVzjIq&CSNm#*|SXm}WN4^742$of=Cyg`xF27rTnab|I^x<_2OF5Bd-rS}oaU)BE4F zRQfqdI!u;g85XkhXFZOzm*jGr@LZ(2icH_Tmq&RRU9IAYgzL?t()J~ym`oH#qGS(G zXpj@*WDHHRWag+WxS9p1miuCbKeg;aPV+3onlaH~Oi8Caq}n<=+jnf1g}aU&-Ird@ zA&*UMvU(R&?7``ccKe-b%&QfMYj5sU6i(u>{lsXnSXHP< z_C2PMdGJ85J1FZZL-xh?NA}A8G8tMv#4_rS9F?)sO!bg1O)7@oCp4N7k1^fi8_>Fm zF*lbC)n>1{gqJ>CW=!dssdQiz8@jxNq*w&=fHk zF&2vT)J-0rGR~LMI_SI5n5J3r-K3Xe&CLM0NzH9q`bV13!f7vKT;sY@p0`mhYZ$Gc z^JL~^_{;qm86OD^NcYSnTlOq;mEf=@V-LABHlMmBzZ5I1x9BI7WaeXyR%F7ocCDpi zN-G=cC52=@Q*1mtMIGVcM_o9ZBYm>iXgt@b$5SY{mt_J;w6FWb-P*ft{c z4Y;~Ei?UZb^O%DDwOP8xwiAcjM00aH57-yahgg&Au%e5nL+>374c)-_ zZVx$9Y)H6Q$$n$>Gcx8{b>M(&)ria9OiGSTuLPXk7zyn$#yLhED6v+kBYJjqP}db1 zc$f?Sh5k&f7-U`6m{4~Gc3#cZjeKcGR;v3IJ(gvUSozpy=;)vqYU2@~qA9$cUbq=Kc!b#g5UL!oRr)ZLwHzQ% z6!I{b9LgiBtS-t}1tm+kZ`u1S?yt=7IL+!p)nz8hV=#q7yR0m5gII?`U2PjX3e)d( zGV9WFFqcm+JIjoS!qA6A%^8BdIHU;Lj49$qv$mU?tY#4y&E1xEwOt-nqVY7^GHar? zx%~>-GiHl~p=*pR3|TFbH9|9n{nCC>P)2QD)3;Y9auMaxQz@(ES#CX`SlHDx7mr-K zX>{~~Di@m!mL@HnadfeG=0#TTT{L+E{jx$OZ$HqJWZjM&y>5z*K)kunP0`-67jS$Cb<2a*_VQwMxd;dgQB?tp~hiAAH^r_Zzh#VyBq>JjjpD1SNo<8HgV;g?=IzA?OpBl zvPmiPZZ+#cY^gX0q*E`f*D2djZ>6%1AW;Q4$;nubJ9fWyG|ZZEuGFV3SGxAHvc{yP zdt4v0w%assiwaX%+By5V70XL}C^MPa3tj8=u{+zr2~Ig0gGQrG-DnIlHnr&8BlEx; zPyWa~Cqo+JJRbRL?07L6klif?{L}Y?byn#&o`hH>XG@=kPVd^TRxx8lf+O>=z!=NH zvU4RRDQ%_fP0GZge_)jPTj@-(IF6B~hhYn?f^jt8y?k(A;jD}OIF`1<>C?y_dh254 zqQ|BfWJQf-v{mREmC8CW!c8ZyAQ;`Rmtq+F>>uESo_^RuZb!W^ZH!F{=b?=U`^pYO z-+GUEaRaQ>9?dIwYm+X3i!>JKA4MhTS^ZzTep6cqa5YWx)h5ZR7U#?knpzb?aw4x;O3IwX1!5o19Cd>67kt z{q7Akuf>jCb&a!*-^Dudm5j=#z59gqf|600ZTLcKVvTg$^$TfAdbwh9^>nCg+^bfc z(QS% z_+$Pfdnc^Ev~h5khb3L;$i_aCZ#`UeF&Ly~%b{zYgLU=f`?CLfayY{Dj z8N?We0}4*%CYQmK;iKG~Oq^t!n0YiVWm8s%sRI;ay`Usx8fk;&bQVFHvE;rgvth*A zXzgXc&3qhBN_9+H53`+E$MTZy3z?_MW65~K?4mcqIR<%DTt-61Q)}C;Q)Y~7WL<&< ztsPzC_1)cGpQpQfjMXsCNXyF-Sk0BK#*Q7$(vb1$1Fz4%y3)R*tGlJpk9TzWy4(3# zetBDrF}K{LG+q49>7I^0+<3jR+GReB-_h4z<_{V+UmEQrclx>$_F;xJZL=jRzz{Ps zx-D{$v0YhYy6Q_3Rp!|U<4a~$9i2AM%5%u;DduR$HpwJkb4f0TBlNg{IA!44(8$XNxG}TX(>09Qr zaVGa&<1NL0p=;b*U)ob(tPdRO1JPaMK95$FA3xmTrDFHRV(ioG_wwKim3&~Yex(S@ zdi}%H*%Awsk3R8nTpJ^DN6&1drMug#9W&aI%4BtJGh4EIG|ZVsnbO&97v3~idSMnr zz9eNnZgN5lvk%1f-k{wZ-krqXw*6`|k2;8Kr+wH z$=|jpJK&xCZ42=%cPD?_#?-j#AjLzioSY zlV2x)+hV-`p_9LD2RZuCDZ$GLh)({t4Xe$BB(jbF`c)@?+xk^lb@I23ak1*;Z(D>V zhfe;s?NOWeVISGXf18Pu$Tt4lOl(B9@n1>4cqwt?%&Ok?s8lDYG_oRQ&$1FPbjvU> zOTF=VySw-Atze64TnL$-*)O$NAN8ij>nbg#EGh6UqS_kOy|6}odXYi7wqzH27cDNT zE&WOy!QM+vKi6aYSjIR z__6Jb8s$2zM%|5klWWUg3Gccy`M@DEOq_hrtWkZWtMBX@^#;uDMg2C^d(SDAS1c=4 zmz!5oCrmdL$4xurfIckf5WTPedfKA!~tfe7vLh-qfmlj~(0OYH@)cjWTfr3X9z3VG+1$M@&T ztB!A8DGnbt{d^Q&6|7NV{P-U6eLdG=|BEK&`fZraxuQn7;rEdZT;Ggjk>$8|UR|Sh zA}cW4zPl*3*A=h5wrjhcH&xKT2fbesuEMX`f7XHMR^7B7WKDH+RbLW{=LnO`1>Bzf50z~DPN|% ztm}U@e?EiXf3xX7lX~Gno}k{orSs(F*|Y&q#vdQg6{X`eJ6uHuNTuZy}E(uA2?Bjc_IM z*VuGvxMjLtC3`2Uw`+!QHlzOtX}FHKiNuJfb^TQF9$T1ku1_I84<9&rS%F_q#-B80 zmqFe^9NNpog?_nSHR`uL33ndcyeLJTy0=C>4G~)Mp-&aBExpfRzVc_((?@I6Ex)W$ zhkwpJ2}S)^lj;|STJ+wPWln(X{S|E|GJ*ZKVZI)_KQa9gdp(#v4ZRz=E|t##AG)MT~&nQ_3Y43C{-DGU&EH+QC{g3mJ{moHsW2@u1PgvHOQg6J(1Dv#);P| zocK5L^jSM!$f&}uw`mJoW#gvj@;aH0e%Sz-tw1Wc3qMJBk*eI)cj=v+>T|){c=?d* z4~L~tt1YRfu7g8tfN|i)Dk~m13hk}dxmUs}amlHm!78%TM+F~x(vBOgAT8=hR~xjq z#8oF7hgG`tHp*M9*eySS9QJy)>kl_nTRpw)tb3n8q1SIQ-*~07po*OLZ{b)-m9g>p zw6F3SamglJ@t_lXm{kPh^=#CSLsuD+*TWm1`UhfFTK8|_p^ob94p!YdG;pBD+^DV6 zd#`7+-b$?2di`ZQ9<4twQRPkM-%JZ%rCpz|7=I2C=r@r`Wv!;b8qHc~xvR!a%U1mr zr4vn(*K?`fS*teB{B5$w*u`^zyzzXb+JdJF%2VpqR(5ZrVSSgp)u`H-`8s&IU^|ap zRO!Ii(rN5s?;bX?pjcj2`r!3;vdLflt-kU#EgT03s&&yw{EcS?LRH^m z^%SIWM!nilTDtT*Ms;IkHbhnR_4P7}(sifG;Z)0RIlx?Hw0zB2vF7f^win zzjC~qyT>PEw-dO#y`Hw-0gl7AjgME8e4m#g1ShHKu);LP@{CE9%}C33c|f~L%ifkJ znf&_F&ZUYmn9u6D+jvH)iX8TNBn@)p>I5Bno4UrsC)%p{Jho8uQ+T?rR+FxF{Q;GZ z{whnB!Km5mTVEEcA~RYx507`rhmvAdSoZpMm@np)!mYxA&tty!rrr9!P?Zk7J}WKN zc2xB{d#~T5PuW&mLz}PQXxQ*5hrp#ws|?3~0(QNPo$@gI75X8MD*g9*PRM$TZpW(i zyS$sJ(w)!O&X=Y55)4m!h!e`Nze=alFX{7H)!MHw%nGY?;q#b1U*X0y9CA+M{IBQp zZ+_U2xnIoZ@4PFYzu{Z?yaW9M=!^XD3;Fyo`t9id^$6zZZ8?OUPvrAE;EO+>&u7rz zioP55uRfm7uYqCoZKr)ExGso!?&o%kZKg#&#i@TsfBci5{_N+!_+|E2zy8gmkNx&{ zUQ>UyNz4Alrh4Q?P8sjpe;{`7rkiiM^)|i$TKaRHz3iNGm#;X_ef|X(u3WWxjqxSb zqMc*EfBX-B{L`QRlKbo5{{F;2IOTQ?_x&II@R1)`{-0xd;41r_ zZt9rjlgY`~ z{O4=$eBJBcka**p-u#xgzU}RYKJw9zef$&md@}W^Pv85Q&wlRnR{Z#Ku>P$wX<_08 zFMQF9UvkGw<1c&pD_;4k|9JJ;rooveE%%nbr9RIzpP-2Ba*C;Mm6H|UMpM5GbJU!< z^J?ZVsCAsOaM9u=OHVC+YiaE|K16x3l&k&MdD*V6-Irf+W$>!2uetWR=XcjV?di`r z?U~Pdw)6DoJokBLoOza&UskwQe2uSdE7jVzaT8x}*&67$WZU*jckG;a;7fDF|JH5W zbugCwWoDpO`B+?zeg`7=lU!eFyYAxJg^2zLB0oOaE?>CkmBw+%gUzXy?@_-UnojB9Ztep>d$ zA5psyxt91_*J9VYmV0Eja=8jS^0ViwmEKBWw_(?ct5ED%`L&tr2qI-Etd!?FO>@hQ z_$PTLza7Xh!UxCoPtw+JUJFBr)Efy?{Fk4-46S-2_T<{iFMF9t+@!qZ*M*2bR^7Ch zrMRz@esLrIOZ+AMVz0b>?CF>(AH*MVFL_<=-iogk|4!^!d1SAXXzTJnUO9^$$zw^Q z#8rNhXL3Ct3VwET(X;MNyS++rl(Lfe%g=saNV>|)K*~~D6e&mf+3SJ$Q+{vS^GEDU z*@(YZxl4Xn;g`n^qmti3RAMJPPpLW@>Zv>CDCu8xU;5)e%~xN3lXSBsKXD^JaVI}< zD?f2BKk-9;RzGF+%S!x{pXKMz7VVxZ>g@i2^x>-Ru5V_AQ=>bar@+>m>i%#wocO}K zZ+n#la^LXdcbo%XeqF4+k3hoj{n$N6m*Bz6YR>uM%Q*n+<9+@-N+k~h^57sEUY@w* z4Fd&rllj~XXLyZwjff?m@#@*4EguiGbPxA;^Oy)<0TXZZRnbB{pKOz-IEp$A)|()T zT8;X7J$dn(sYlH1Kb}zbdVHRGPlKn?)8uLP_&qINkJszU2`#^y%8P0-|N@;3RJ>YEyx8k?G$nw$JhEzO>0Z?mttzPX{f zvAL`;`jKyexJYI-{5cbH~E|Wet$~~QEVaj7QAl3SqoZ)$2fd)7TJ1F8q+T0 zNfB>D;TZ9+xR6$40y&{f{B-?Tdx8uJSbK)^_j2E)YY!2-JsQ#?00vE<-orF!g#^H zkBqY(Mw`KsCVCGg!hc3!LS*JG1T{)dRCm?_ulDo zdk=P2;3iyVcPn;ptYF{rOK64vE9|WyE+Uq>6|bkguc)_-FltOcFERDcHr1BCxF5#s zx5Vi!$ZH>1pg!}^Qzu6cFHol<66Qt=Jnf{rrxp|8i4p>5Ka(FuN65i9Gz%1?sY2 zE>QpViv?;Gd<6AoN3Ht!qFUug?nJs!=U1a%Q>$Xg6!KZ*Gi|l%F~qsCRy8A+BR>r~ z)L*W0s1BRl%=MdWYP(sb>rc&MclXt${#WwjWb~d@=6|E9&JeE$dL8QOK8JdqO%8IM zu&M24m99TIi`{R}VqVG56Vdxqng6GSjr7#R(_idR^X{ll_E%wdV-fHiz;dJCPruF3y*Yg$rYP8w*~zYNT_ZV`zsSFf(kH@vvH6e37Ys z$CBuoKUQXHMJ#nWXEKvyK9TE?H&waf=ZPv&f^%xkf0U0Y*S z@gMEVzYWHip|YW+o1b?Zmmhi&!*e}md20b$D(c>n$ zkg=0BmU3}@F``_m6}>qaaQK>0Rvk7M*DN;2K~2UB4jTE^0nfNvqqs)>^1qG)a{R*_ z*LlqM0rGHTL9^L>WkW|_pO+`t3a@CeIrA0X>QK?)=CPSv7X02kwt3$Sz8CEb%Rk;qHCo{r-;ad%aEer;RJwsQ1}z@TA}YUUe|kEg$%->`6r{rM@r- zv@%S`!&U-?#2%O_tupp5alLuWRua<;2W*CoB`&>99S64edhE%oWWjq}3!BGg^FnOQ z;>W*s{~QZ90oG^`_ak#j{}Frf1%lHebCy`+GV|{4O=I`Qo?Ueqy&?)U?_3HdxCc>$h!n8 z2B}R--ZDUxX9%)9F}ym|Ow6$H&VnbE812jS#GqXvF=E+BOr;>JO^o)X7^Gh>Wt?o$ zXiwxx_d@o|O=Ef8-Pg@KeRzF*#9m>FA)iDE%@B;Ow7iXlXc%9aJDED@_1jWaAx-jr z04umcR!onauU%r ziq_`Y$;8Z~zi6-D5Y^FF*3lSdrT3(_%z?e%DKRVWJnilmnR=vAqn9 z`QVFBQBIp&X1m_U_0=}@ZCv-+)OT}jcRz^Q?*65y?d~U0+uhs4eKOY)zTKUKZ&$yu zO#M#OX5N}FkYY)GrZHp%oBF1mKJ>F}dW-Lq;&oIrzE7&y9!z&ITL`?N$o3ZW*`h8l zG_qT-(s#4>uhw_V`fR>8n31vU&oH1U=3kzF1N3H%9HV=8S27 zxLW&WIms8Xj$3UC?@IIY`Z;;?J8yy=-ePSvsr08$QLjMOnetY6r%i3?&&2m&*Y5tq zC+L1Af2-9`mBsZw)W!FYc{o7JTtPN!X*xZRo}%T8zdl9%9&!HW6tx*y|AZmg+$qZY z_fym$vK{%|oAUYBaUSl|cjoiX>+|`uZqMgE$lDeyRQDiXLw6O|2}^*M zDcQoCF$acpb+xr^-kkzoSfD?&g{@^V?1J zYv7;opI^5vK~`d?m-BXS{eXV6vhg;*vG!ftrk7v+ZocwxX=p^hOn+3YP~!3=WN3)T z2F5XLm)cQZRy#II?dTQTyd%-x8`7Ri#5$m12&}6u+_*6FvRz&I(bi$7$57&suVX=#lO~_V6_Oo^(a%N5T=0ZpW*@N7G z$R6E|h-`+v2zeRu3gmUj8<4jm??T>-d=U8<@(JYg$bHB|$QP0SM%cxA%Hk{gjpcEE zHF}leeK-2{xZjJqJpNxt@8Pe?@6n67ID3m#agwmrB|-G{7uXrZe4#zOVdZM@HTa=k3GP>p|Qp$h%5D6cj3!f?y?4D*M7v{3!{r==1>Ph|1Yg=zyL*PG8+r2gZ~ zMe6fs86wvr?=$r+^^>9a`DENZSvS8V&hv=-gBL7PU$Tj)?P8gg+q3jfg#QXZPBgqq zX*m%;PR6c1>?>f`x)n`!sX6L3@R-(6*H??Js0x#|Sv z$+$VuF#gr{E5-S%r2G42Y5#SZx;!3#Ei-rQHuCS;CRf1m@kQ!(n~3@#BD9;?ukH3v z~RrCZe{BWmay_(mxUYEBrXo@T@Q`o{0OCwJTv- zV$BFxZ{g`+W81*KLm{V=m=W2vWShMBeF5v0^L&s%=B#+LcVzrv(IY*zDq7c{Y?$S1 z1ilmf8bRfdXZsX^8BAf)H9hVHBXWVysE&2BIao|t!IVv$XlMpQ$*jR{K0y{89_7oU zgM2K8Z(EgT=jd^5cnRPDAJOjal`kHLMh_ZGKtBD|C)+nIZ0l_lC!g)OAtc{*n$@=K z4(aa)5sQO-adcch{#G7MIV)gT($jmsO~z`XUaLP&JS6otM}=cbQeek%#%ri-&g_{b z=jr4lCwxzo<33fzK_XsoQgsZ7xaG(mz9dM#p~a^!*)HQlDEcd_v*&}vA+m=DiuQ&^ zZ(ys9EjqjNV#)bPpxlVF*~6NAm&G18`J#ZXrQ-*Njapi|b(LxAFl2|PEM{yv>bYf0XFmV;oAUV&hk3?) zUq0W_lh1#7S3bY^h57u4M)LWe-jUDyUzX4B!(Pkl^7);Y=kwcMo6p~j-OsZw?>oSA z>ejT?>*1@hW1ROYoy|5Gy2ag33a!`z*&3{h{yZfOR>hF3ZLl7C?;`aLlkW)UmNQICfayt??uSNYjtwZ?^Q3E|$w4+N_kWu;h zR+fCTW!Tao!^Dz&_LmO}ZS3azeJqypt5ihB=0)jegQRFnzvzTxSsvceh2LFQ8zsmd zMi+;DFtQg(#hjX67Ut4)d1gt#<@+e;m9JJy<+FWZO0S;IoL@dG!(@F`Z{-zp%+P9< z9K)KKWi8#TzDtG~SyonW%v>zXvKex$+WO_!^~>DjIN^J&eEIxj@3G=$!*=fsF`Hhb zW!a>c^?9RE*;c95{1h73l1(Yii;$2DR$L%az zX0^80ChGVJwoq+W3pH)4#-6y7kLSN5bIPmM|JKa${yQ?Kyl?y8nmO!zmfwdZw-CdD za`Oh>4L9i3ADr4B;!DVUWjxf^$55IP;@CBd)i03<;<|RRT7$^7$ZoktPQPxkdKt15 zxgYt8c`fQ+BY#5P(6d;*8+kQyAM$1MTGZb`euC777pv2deBWZ_g=@`gQE%mX7h<*< zWpiG}!)0G7^z4?mEE>ZVdPrLjLgO#3eQ}iJtvBp$VV84w^k9Vynr@@eq}junp0iDc z&xIkFuRfyRsb&p-^#ermjYiw|741F}&Hrm&CQvCMo{*>4)8`3$BA)(AZ%FWlyuIE& zZ`d30_E&maf-mIj_4WC}zKE~C(wh_NL-oD&ef8n`NPT~$ww}_BQr4h8rV|{gvLX&=hLwZR%?ZH$|HIE4^u5M^C>)A}`g=XS z-dXaAUYB+#L3YTf(7mZ@4cU=53Pw5l_S$@kQz*4Uxu3Q=~cK zkF-QWkzT%F8jeIF{rwbSKgG~bR`!z}{UoWMX!YZDKgNnjBTwj8d@Ype%y>K0%zn&f zKC{cG#H27SYvH9MVQF*6yx!10o0ZzM}!a_(y=|G4lb7C`pQ&@h+0 zu-?~TzU^`Qa44(~AXe|xY^kk2Ku#|f9h>=Lq4nE~RhLb+a$T-xH-EC%on{!qXMJa} zI@cy^xW34ywws;I^|hv-+u)gqgk#Bit}nHzE&Y>ako1Wk+u+$SXcN(wblUa)71z5= zKP8>N`N?9{{IkVsKXMnRoJoonaQr`?;*TXs}Oe;b}WBpvMc&e z>Nkf6^9w)Ihk|ei*I6ZytQLsDG79(icXQuRmVty`BWS752~AvdBHN#D9u9YwOpF(ikm z+mx9!^_P)*X_jmTpZ2rF^{iPK|jw9+b ziSqspIaA4-HuSm51+W&8cblDp9B))9r`qKVri|F6<&j!=DsntG|4Or&!k5Ik5lPF^ zj(q+|V?O`*cs~DhuHUydpMMT}Lyv99=dva5Yro?TI%ea3ey>cJP&njP0&vDIcZl&L{cOvPR{1bPQZ+t$b%QpRNAPc3;g_zO$K2{Ot8d^3h&@W()s+gSo^(xs3KtXpjFKQ@=oE z+Jn+R*xgC{H^)`#9^I>f(|N&o+;MER_WMK_pY`6C zRUd|5L)ueI)iaUresZb08`*$7ivH=?`N2I))m=yo@uGJceAOqGs#B2%KE71lg5>b? zPUH&0{+|$ua}fFEN0+L1Kd@B2?+1pwc?+9Si5F9E?LJ@lHcOOf4e5qJ|^Tv3Q<}!zi4@ztj@q zLHg1#hdO!cJk^TYQHMJRdH(cy>M)F*hQFtf|Ifl7m~|2^%sq#ESU6V&o`*h6o-t3w z#QiediT=5`TSOkOz#JyrxP!?Hpo9yL!Yq`JEd?$l-Y^I|VGNFldL{me8fIV|x)$T# zYQlp_5BUYtKGL&<_%+N^$FLV|q&)T#4xB(g2i>S0P4iR|wI8;k4!|G`!VwsSaTtSB zFb-2N0gs4&GsJxoI)=z+n3Hg!3v~|qp~Fu)pc6)+8%{t!Ouzs<1cT7E6#rlvbs8Rp z8JL4v*owKkh59p$d+3G%*b0MdsXs6VV=w_HVG1T;U>*L#ILwMZbns&NEObNnMWi1F zHjr-N#pJWF6?0zL;oge>gdgp|f7A(>fT>F;7wFhdy!eoo6S|=rw!#3M!d(I$fhib7 zKL=ybaVhbHF?blp;W6xGU`FhTTI}t>|5Lf&U@Hvlq?|+z9b@DdoD_8@;iFE#!>DsG zE4&Q-I^w^J@L?QIz$9$NeoFMkA2vOg*`BS4dKDqwbVzLh3**sKA(Jp z{%+z06L1QqU`q7+NDnVhi9r`kK|gdvum{udsBjPA-Gq6R{DIK{@)^cp7RI5v8ULXZ zCZPwWVJFPMD9pkMn1c!EyqFms7$bhDvrs*a_UZ+s3v~`A zVDg33N0_=3d$*!~2lWI--$njG$GfSgFb-XOEFyXr<}d{(VeCEBN9cbq_Fx9OZbv^! z{Gs!1;tf;q5DdPLe1Yx{kj@Fx3437lgX9}@e2DbGBvdaTJs-v%48j16!X6ldF&KxF z(0>SjVF2b}5Z1jA`_K(zA0Z!M98SQ%C&&l#Bl>B=L+!X1`!6CspTmEc{XG5(596=s z-%q+;OgImaE*OAO7=#nh@gVsCoiGF4@EA-&$4jvP5b=juc!+S_Um#owA0C5ASod_= z2k3#0FA_iKhjDQar^NktC})_=kghx6@5l!j_ygg?>|gNbrQ~;xbin9eaR;4$BORg- zC-67+57HAy|DV`{X*dO=3u@Fc=&r3%tuLcI;RKBFeT~B~x3ESzUrs(Qs!;*xTvDSF zFby-Jep-!kzXCN3!syd6ht6kUF8a{C!6-~T zr$!~A|G70P3scbfAGkk*aA5RI{DE1R7WG**DhC~|8g+#9Mpxk9t1*XB7(WmHp#K8w z!2qnAB)zZ|W?>LIR@JCDbiyeZ@ZcW|!Yp(*5Rcd35A?ts?17F(^5Gfun`>)S40U{6 zjY`49dfdSzRR4*87ZDyzT}(d1G)zEuEB0X&9)mIHcrE@zKlHbe4j6zF(7CZj9fCoa zg;A*PgqvzqCrrZ;n1OMag;UVcUZajeC(Oa<7UKOn!rw~zp&yRGYykgZ4yIwO1N&lr z3HD!4JYXvf!l0-x!+%l33G%_wMS4&>;SuP#g8Y61YUqZ6D@hLw!U>oPQr}=2W?#{Xf`3)3(Gqa(x@=AiQ}*uRl_0h4e9reGWfM#)DQ zghyc%=AeI!`|7Qj!yXtLuThgQ4wIt4pYUN2s<)Be80mv<7=(_4_%Hf!3I=W>oiGTq zFmW^a{dVF5TVeDz;ss+cF1($1!8kk$-7lb=rid4G!xRj{*o#RojKf31mtY?zU=Ai> z-8--k-7s(mVuRAOv4eFfpM6HQ!wx${D=OJkiPe$hE5p&DDGea zj=2S#BW z#^Dt7-$(ul?_t$8rh5v>5 z$4MV_!3^wy&LiX}bbp<2U;-Y4sc%q^K7sxJrk=qxJWPDk-y}a!$G$~<6!UN6-#yre ztuXc-{DT=d1%ny#4aQ;JCrRgbNgqtY7>s@oe_;w{VCMVO%M|hW0r7|NAEJIH>nD#; zKSUoMh5jEA?xzS3w!%0JLjO_1h0Y(74w#0nPviejFo&_9Vh+>rFiif8e7TqMfG!yL zIsQS%FUf!Cgoj`}Oa1>0>G>7$fjJn3j$e~rn1n}Q7CJtQ{ofECbUsQsK{rgo6g(z; zjBq|jdVh;Kbo>r;n1ET)hmOw^&N0df#(qzJ!NlXVS1|Ag;&T{(V3hpH{*id0PW*}b z3uAxAKbV1OnEVU=-A6b%?7;+#!Zb|4;9tpqn1hb{(f=Fw4Rrqt&U_Vx8JK|Sx%1T#n3#w8L*yUy!*tDj zH36OTu?M5D?pcgGYSD-OQ|7BQj4nd|*{GMyS3&4Fb-tQ{nY#HZ3zJWuuRKm!7n-kP zFz~GT>M(RV=PSqQ%(qXUuR3A+x%1T|Oq@Y{VDv2feGdMfjX89jLp)&S-1#a+d~(Zi z{{`ZA9^pd2dp=`+^7s7tDhJar@I~_B0^GsO%K7Rjbgr4N+-dULJ70~!Kt29JcjJ7e zzJ&W`>=91RkG;~*TkNC9VKXh+`xC_8Z)Y;ACFKT!Dd=-aLn1nHS z7^dJ+n1kxegtvu!hXLq^aTtVY7!&iY#9z!|O3YzK%%M7i`Db9hYK0k?Lq7-WzCwO< zP)_Kl;b9oKgmOSX3Ii|+qcFY=dt(1m!hxBc*oRq|fsRi6g-%%aRni6B&<|T-00vZ`~*O4C7iRTl(*y|x*#T@2f06M>p|IhknmB*;UrAJ zBuv7?@DMzTy+`)q-`R83o*~@B9L!+u7@n_=K{u@XCjLM-bdKOJOv6c-fk~KyY3RQZ ze?<*F-y%OoxexKzxetAqJV^PWpMw5nv@f^KS3P169z~sgA^xMz!1y_&|D}Y3Ito4K zk}t0yJk&XuK^>bUJ*eYwVma-?>(EE-gzgoXzmar^In1EWzLk9bHtu2kJp6wr@o*FF zdngC={dZIT(EUElVGQOl4}1{)^U0r&5I*{jk3!U`dk7zO8g^blc=r+x>Nw1y_8%sE z)B!kkA?_a}{O{oYA@X4*?!QF1sMGKm>e$za59&BftRmn38-G!|VPG}(zeBwg`!I(( z`UB#z275my{pcruin#}WeolQuoy`(I)QMkHj$Z6PN-tOaTc=A5{P?lZ98g#MZ6!>kK^;WG4_;koz&gXiOq zpYYe<4|F#yP={cwX@PRIpkB8?B?#XS4@o>=20GR+P$|q47cEfk?_$1TfvQ_e`Cq(1 zji8RUE>Ka_sW$APc5K8wYJbN9brf|RI=)B#Ll1ObLijKWCtwODVGbS<{q6Ywee7L| zJs5-&FaeV=1CK!WPVD^ve=j4vb)@qO@(*L@${lQ0K!(DexQv!8N<2{-~XFad*6@(nr$u=gYE z!2pcI5txPv=)VDb&@n`K8_2&A^7knI-AH_)bCh(UpB`VJCPjbW0+ojG{lxdjsG%Ds zVJl3-Ak4xM=s2)I#i0{UK{rf6KRf~hFbjiF{e*NvCyYZ6Ou_(6!ycG{F_?vuFb9*+ z5nG@RLnq8YH#`Od(D76Jg)SI}ewczmn1&-T1LH6Yr(h1IpyMF%gl?FH0jPe4f6xgN z&<~Ta6Q*Dkrr`w4zy!>~L(p*({y{f91_Q9}=lBObFa`rK4trn%#$Xao!W2xx3{1lu z%tGhQr1KZ#D|EvEY=uD>gi$yGV=xZma0({jVVH(TVHT=i63<)6FX)7R=!Tup52G*u zCtwgJU<{^U0%l+e=3oXov-k@=Fb4zBaVzn?nEL(#(uq0_Q>f#wCqLR~N1z|3-blQl z^R46q_7YR1TkO9B|2Crk9?W6-Ui{sR{m+rF&~ZQdV(%gHp`CuHQkLIeuF*ehtbE$KNy1(Faf7v5~g4pW?%*$gE?6DDDnLR@q})uE+M{8t5pHi zDHueZa@I07rM)}7R;6L^Ikl>88~OWO%wghrwQ35c&Zt#cm^rgndA8GjpH-`3(0O*P zIt=~GYS}Zy{W-O&6UNT1rOm_r@>+EirdHG{_YT~jSF1)~!cDj^b$+cn24fdsz7zcm zF^9pGn8VmA%%OiZ=AG!T!5qdswJHS@-dd$Dqo45+FBq>UUNG2zdl+lPJxny!D*rCx z>#tQ4FuS2v9f7H9@V5)~b+u{|#-3lR;*ww8wdxQIz#}jQkHI8#JVri?KK7$M=)*Lu z+f6(}_=kA_w!$C`!Z`F`p6(@l=g{C+zU~s;9(fpLph+IgGa=_ zXsyaY{{X~1c0J+#mU;mLFbR8L8hWn4pBrjb6gmb;CrrZ_<~f*v?!APAer~8%Ij_Y2 z2=-y}M#6>BQSuvm378Ro;Suz+VG8 zkE4cu=y(z3B5F7ZQ!okBFTowmzzht=@t5?aUWU1(^W~%yeg7+n&mS;{9+-qZFb!kS z`AXbl-|;Hy#Z}}tOroEIX_$C5_2`fI^BUp-(&=2D<2&Z5areF*nfpM6H38?-;I-nCe-#~pN-i`#} zqE5gl^uGo7(D8P{%i+%y;lUi7fR1;N4w!{Uq5GZK`z!Ssx?vjjz~EiP3ufS9m`IYZ zFbV7aM*5%|reQ10!XOO1A9pYar(g^ohB=rM^#>@AzmqN)fC<xWK2AQuEL8s>A3j03!N5J_A56m$ zn1OMag;OvGQ_%TI$^*J#7N(&4pSVwv?=T1_U=$``3?70Bn1(5M6lOj}e&?}&FX6%{ z?1V8Gg>g6mbDtsp(D_;750g-yp7no@{DuJ-gh4n0qc9HRa0(`2O89x=3sZ-wH@sUR z4LvXe127AFM13FO!W>Kp?0`5c$#vA2{;LpFbPxeFbsT&`w2$jG2xeqPYvOH1@|xx zqc8y{U=k)o{Z--vQ}BrJVd@b~e~ogSPrP9(%)%hd!4Xma7x93OBg6wHU=}+6oBLn^ z{=-ff{WkdzV{i(_VG1VT5txEmn1QMm``;lvn1d70ks+SY2@gRxOv3;?3ZpOwbI|X= z|L>AdFaalF5+-2^9)=m1fjM{#I=@GJPa)r-2L@p$jKL9@gmIXKQ_%T+{DDDu6vm-i zNPa;V%s@ZP!cLfjQRw&q>49!I1q1LfjKT~|z#R1d5ciAlA9lhdj7fX;2|L=&Os9_rVj}e}zq2pTAzsG-=f&o!K zj(?(taZ&#P_t5!A@twM<2vH;chUz_|0F%oy}+UBp3nH`6o*P;FTU8Ja?t&B zhl-*fe5OOCp#OA-3M|1K9z&fz!@(Gd@z&YcLq7$3P-m7qR2;S6?NC!Nae;%gM~qJ{ zbf`3RuEam_2j)cW!9Uc&Mu+O`As_w313E6kpQX6p=-^{j#CMBBxlYC3t=NNUI03V8 z3OWJ~&Xr*w9)s=ua0I5{B+S4= zFb9u7$7Q4gx}oFQ*oSVIf&u8>MSX+;7#Dq*gc+C?{Vv?YD0Dc9H*~`!48Syu!YqtK z$8Ow1H%!9-%)%&ioKE_$z&(ryaSt8Jw!Or4^uD*GcXE|!5DO$MLJ-R`!Wk%sN=(^VH(EKcZ^Wp zsQoaBIu0{1aU=PHzGIYl^wPe-Ru~;4f6rJbCLdwy7RnX6ZzUZPEIwRPJM^VRN0CfiDP`h73JW*%w zARl1#rIc$w=FoXA@q&KTu{cDXfKk-Wmk}OnHynXcm=JTAf*F{BIhccvmy=)1i4Sx` zH*AG|7=%$c0poBACgEY2h8dU>eZmdA0{>74VciPcK{t%SR+xlAnEL-%J0G~#>iYkm zyAAHH7YU1W8PzhXnPkf-r(y0YdS{`ck**@6qMV6|iaHgQx~Nl8QAwv_qN1%t#YCNo zii$N24GZmPlvGr+sHmv+t^2Fr^L@_QcFx%u;LZ8)K6hT9_xt^MfBu}$`Rwcuup6py z5Jm>b3r68AjKgJ^g}(Qa-(~bC48c|yhkY;!M_>x3VH(cD49r3m^5!nD=ZFI%my-vK z!6;0?ZkU7#n1LfO2h%Wc1@T}AW?>9^_oN;eggF?6>L7kF3)7;*S?IkIKj?$X`-lg9 zFa(1z0wXXAJ75gPVH^&^z*WS7A()kN=-rEQ=!b!;@q-~4hfz2P6L1`6-~!A-rGdPl z4|<2FANpVf24Dw_z&K385txQ)sKQy8g<0tPCh^{nJ@mmC48k~!z!Z$Z92|t9Yls7V z*W$M~^+6vD!61yl2#mrG7=v*bhl4NyQ!ojqU<#@*4VPgoNt_R04dZ7=-U=Su?1g2mNsxTqtH!#2D{JN3z?Rd`nZxI*W2UQq?IT(d8 z%GH~Q`$75*j)?uu#OK%tXE~1FLOmQOpb}$Uxs~>FoQ6S;1Gmu+9EV^B$I;vA4~}C( zjuYReUpP*}DUQ=A$Z-ZPbDaGSd2yVB{u9Xi4s?zKu$AM;81rc#@`ZgI$M3|B;{+V% zICU58tEoQ8ccelP8Uz6s)5*6y=!=aXD6DPVAp1 zzSuuQypzfEht$Jy97Z`#&M>Zx%p;iK*!LWHavXqZjw3%}oH>rdEXVO#^5HlEeckl` z^W?*E8b&x)e@tE+XN4Sl=g6C5A53u^dI54Afhxzb7s;FBIP{)EK0ih0I0Zu-XH@2? z@FnI2dJZNzPQ8pBjLg%nQ<+Dw0|tIU|3Vcmz|;cypN9S`)=}vDHRaH|h(C<{hIaHY zZog%|z}W8?XBf&dzhK~1>V>}F6X$gN{($|5=?~b=aT&cG;CMTa?m?fZZ97tH;K{(vcdp)PP1?R0HYx}ndrNtuGVicN}gHt{!Z;(HqC-c7tG zN;_eUp{^AxHaXW*3NE5|Skm!Ws_CO(tHJc0ojg%PO2KIp5W{2cOx zBOIq-8fKshvoI*-)!4&W%_hFzLH%#s#P>L8=bOkMCf`i`FtpnyrRH4v#kWc6fbrco z@x2Y~>uA?`NvZ&DUu=1}r#;&|&OB?_Yv+6ldfQ4V9!e*k%Wf;ceQ zLVrT<;nWM`Z~^9^_hTF%!8k+jk;H>Z*avfP1jbtNgISoBe^g+y{d&1S2p4J75&XVG?Gr_Z`c4!VpZN$6?Jj=4q7i<2VibI1YW9I4}oQ ziSrr8M~-3lLDctI@_;Fr6}_FjIZk|zb_H)ZU}Az} z{8KOvllL(WFau{{;C}orp&W)_>S+6|)*lK-XH!4S;B7>qr{ ze2CEhFaVP0&M!$FvUDVT&)Fa^`t zXQ#-EWAEe48|Z@yjKBzt!kPi>o}j%Sr~JuHiXVnx7^Yzd<)LZ%i{mKlhB4TOuEG>d zJWaod-81BS8S!8YhJHxcrYVpAk@$nmtG_Wm(7V%4ih33Ln|4w< zj$%H*I84JNRN*+x!VJv81(>PbN%0g559*6EFrxU>t^r82?>& z;+`6Qa29%Z+euMAN&i6~jKC0#!B!ZDF_?gTQtrcF%Hgb(!|Fq+en7Eb6-7(0*oC~@Ev$Lcob z$+zgg1oI3gE}>qDH-H{xe!w79FQ7q=QFe)`e6KS%3%T~VGhP5&V%%$96!uF`7HjAQa?;T z#=M|BF-`s)=e|$8cIHcl@qylFn3r-47hn#0KS%r@lHbkb`z(Gi_8fW3@$-z|EzBPn z#V+#`j-mGj#tSB2=RJsI0=_w3VJ_Je$WpyFa%ZD3UjaKmD4)k4reKbG1Fzu6aqgGY^9Abv4eh#>{9y;jsozqM9K#Wg z1HWUuU>vGa4s$RIYraT%mT`h{*eZOL{)ag@BFDdHT!`me!XHNd$ayl#c?L6-t1t__ zf5IO<3ga-gOn-cd^1ssG9Q#&im*_Br9{4-;z!*%xG)zJ7Kj>c=fy*!nYdVPo126}} zFz`>>3u7=2Q!pvzFb&ll^Ww|QxBsJ`U<`&~7Dh$?7k)4eN1(c$`FI=c`VV=31-t)Z z2fh6Icnm$hd9xDd*jKfg`%L5qr_iH2Z&qqoz&LD$2^fPa z9E4ezg5Hm9R>IV$!VJgB1F8Qc>|hWE!kd*O<=HLtKa3tkygOJY4o0Uu0|z-yG~*AW zhf@C-{RZP-BMz*Q@~z}8@eV_WQJ97?I17_-8K$8ZzYO%lEDS^M$LS~NgF)ga;h>bm zjFf+Z{9pijPo`g>A4XvZ_OZhmSB|r=6{e2B9|n#j4>^X*Fb8Y8Ic~)csxXbe_mk*% zGS5E6xTB|GjAP%il*9C=nUCnP&(eRV(BCk17wv8*FX;Oc_1{hZbTUpb_hrTvroKYI zjH4e@;{w< z-a~t#4~Ae6MqmWSVGJf=A56g{Ov7<0KZAUw9Ok4P)|^f`48SamK<}CKH}t_c48TDt zhf`7>Cm$(?HPSC<@wbg(^lWtcFK`Zd(9Q@q3VU6_5W!S^W#fjntfNF@%8Lf^ym!^_0uI1Rnzslsm2e@Q!_ z?^nzh82vTlKgl@1%6LI_iMTNSN9uose)<#j!O)-SU#WMQ^#w-$LLBt$3iIPp)}MdS zf6$v_TpnZm{*QcN=3m4;2mAk$#}xHdRw>Ic@rEj1`{K8Il@fn~di_=WP7LjPPn9wv z+`CFykorDQrHm6d8?547;5_*teiCmV?1&#~tl~57v>OJAf$p*g@1Q#|P66@rPNCGtJa{KF81py@ymOAsC0VawK|2jGh!yN2@flt$pA8;P?_e|rW!$Hy8tN5%ho;jU-Vd6~cm2$W&`q{*LhIXGryS6c3pdSXdQ9pX_Li!J;E~5O0*uxm*@dW(= zvoMIB9Hjp_PQwL`<5x32Gn^+kF&@x+EA@&$3~?N}4Lj_;-^Rb6^Paywn1m`EhY9`; z;R4J-U<` zfqs~RQJ99^(94e+j=(samE$L|zl8c=6vn5S2Qcvr{UZ7d{dOtsfDxF39WeDA{Q%V; zF&_rdVHm2<(=IuN%h3B{;$KF;LO%?^5RAfB7>6;Kg$Wq>3F8N2a7xOd3KMV{rl9w7 z+5`PC{sR7T{8QQmBQMb|n1osAdl~yH@P`4Y!VWo}Cx00IId;(d3V96@Z-G2u=vT~d zsJ_ZNaV7jc^9*KTQjY(CAB_AFzpJSK&-lU6U&t3m;4+N=m43Mz`@hkzFuFoq7=sJK zf6~80*ue-)zz!Js7wv&6oQ1J}Ge5sc`(Y4zw_^vB|DheC!wgKr1(<`%HH_bXX*W#q z*O{Ww$KSt8z&K1xIaFcDy)(btgFlQw6?VWJj6u1)W?=&6;0W|?#2&_B4klpDb+iKpU1(R985#6cV}f5`d}7@ zHWBA~`VWR-6h>hTcEdPKzyutDNtlKyI1AG-3stDxKz+~$b1(?is-2ZS=&QkAj&~vd zVf@}if58llLlq9fEKI>1oPyq3+7EqjS&rXKf89vlyOI}7>_$2CzJ+#t3p*HwX_$b~ z-KiJmpzkK^-%9(SuWn~02~#iw18*na5$b;@I?TMA_S{Tfft~ri9(33Ty?as)GcW_w z4fx$cKk;`2J75CFVG0hy$lmmqltUF}p!Zhl`vC2Lao7!$a1eTfv>WE2GK&8PX%|ew z4w&7C{t!NbWHW{%jI*X{5~^860{)XI4PlSfe>^tDkROdUgg-zC3e z$sa~wTo|RDF#S2^!yWj;ps<5_Vc-k26XrUZ_b~bu;*60OY=z$A=`WarvoQ2k^1GAv zok)H#dJ^&F7%srj$;7`4c2mFbRN4(AZ~?|oV}9Jt`0+OnV=#FJ;|4QlQa_Bv@gFBY z7=@{`XeZ3U42+zO9ZW+1J=6;$FnSLC3{^MB#eG`=T)4wox0sRJ}3F1KYV%l{d$CpqK%)vDDUP`|~ zAI!o4RPHA(48bI9g=rXrD(r(fn1t~G+5>%;kq68|{{z%>IqimN*bQTY*g@Zw^fSyt zUmClsu!G(q;=&Ldfq`#wp1?G$d6464n2#_8yI~F{VdPrk!X#XP=_K|Kk>_>T!{qhY z!{`mfg>jgMDX79UT!uO5eVB0{CV!ZLA(*_8{)Q=<;2e5~6I0#jkhJiHwAUgC;kp~Py--FB_n1BhW!ZZv##JIyOta+UH4-+3ICy5Ue zkI>Je!*Q5~8K}Yq7`soMc0V6O8J75aNp--j#FaR@9eTn|fQ2)>9FBpNXFbZQZ2K%7* zH_Vf#@rOPb%2Ezvzo$Jg4yS~Fp+BCXT`&w&f5i@FV4vtP3B4=yBMiVCOu^s}v4atq zg&olMck+fII0%z4E&4y`U#LR=49EYX|6mAqL+`(-2gbHDk6{vKVHzsW;s<>&3xhE3 zspfZH=r@>zX*dp5n1NZi0KFCby#+bm$lr8$j<{a_HUo@os%B5jJb|hl?^LZQKcXB4 zU|=)$&{su#7=h!^yEE}chYK(XYi6mpx?1UgkvCuuQ*a7~YN%h1Vc>b{gHf2-g}=K1 zLvN~9M&uZ(QeKPQkBRqY;=wG8!@#cmJ~|A+6pX+r7=VwMp*=7LXJH2Bq|%B_%`fd;O*r30(rnNOu}xMh6$K~ zBQW$1@`EWqdA&$E^ur7c!7OZr-glB8jO{`Dpb8gY;$8gR+@E4!Pd~u)yU}4_PsT^3 z9QMI19Fb%GcCQMPa2cx5_Y(GdQ6CJ!Rv6g_dzgZ=qJN0|UZ($G0D2o~5A?wV48ReX zf*CpfF!5n#U)ujO>JO0zjO<7LFtb1XB*!16{(16&VVH(d=sN&An1w3L!DSfz7GT&bz z4h+CFj6m;J{6vQ-n1fjuicsGI?STQ9J&gGYV;^U}!^|hJgDO;hN%`T#gE`m%V@J@B zFbPLs2BxJP&ceWv_`?LO`4x6B08_2Z3+O$Hc?hF0CFO7mW{#%6eocRVlJ>(0jKbux z*unH?83!2ZVEh+p*OwS4n1o4~hU3uJN&PScmERB-`k)GfF!5#bfN7Y7xfu4)cLMgm z#Si+Rw+lO%gDIFei9BHnsxSkWVHSFShyB+$A7B86U<9_pD2%}v?1L$oggH14LnqU3 zFb=(0@`6FA!U*(s)9)|<<1hvXVFIRL8H^wVTd>FZo z{(;`>v4?Ru3$rjQ`Y`i#g?erz515ACFm@CD1T$~}`bHS{zhi$h;|D9?{{f@VkunKZ!d=JeY!ga(o}ARi~L{|CSfG5+>o}P=!B)z8|@i7hn{=3!s%Z zkq?Z*KVPkcVG8y^_2{>d zufQ~1gtO9qn3eX!ZfQSENc&+Qe)6c*{w1BWk5)FsYc{;KYNK~>13$-zF8}BFTvAYM zwp8=c*Y;{JJiOYgG$J+ezxR5V(kA5xRo5I;?b}lA-{!g8eTB;vuJ&n?_mFD;mi%)) zW)J56ZQSP;KP_%YHD)zih%5OF@&CewE`_^(g@@>4{O?V;6u#A6c+~T3n*T@0<0Mh3 zlBcZ%{0j5wC|oRn_^p%2MF*ZZIuzZyOdcBA1} ztUs2oo=!M9|C|6{%Rkrpu^<0#{C_9@TDo){ofc@W4sWZt+;fHdLYM2s>Hvb2xsrvIfMS-O;Q{P?vXtv-SDPZd)lhyE53v~f9>5z!yw*I<;t$R_`~5odkA@)of& zLVXpwr2Q-P%%CUHUypjEUHn-c?nAqjBculUqnSzNaviKqROyc<%5#)+Ru&!&Jmb%Q zD6M=>txr_Fy)qy5cAi?CJ5nt3w;%fv>`xWJI)A^CpC}S{OzOifVc1#5`)q4m$$uXE z=!i>spV({T*;yDDDc?@HeEw~pLV1^^yw1b?qMV-)GyG4{&VScE)n2Xrlt*v2wqNu% z^j7pH@iQKxccI78kI9Qr^nUcIq0%_R=<+$v{2UZFiOJ7yE92T6P3Tz%y$yZALGMCW9rS+m zSqFU>-JVY)`AncsVgCZpi{shMVyZ7O*O;!j^s88D?OVbx$@|y#c6c}urX2J-bb0^V zZr_MLj&47HS`bnW_MPY>4tg)T`8CQYm)94H6nqboT z+M#A|kHgpVxUW~b-c<2%eJ{G%Ugmo}x`MuO1Ju`>t<_Ur*nc%^UB2qSZ|P&k5L|{JilHar|p`=SicVQH4DCz zQQTKW^Ug;366NxFg7=C8VGF@Il5j#d0VF+lz6Zu<6E@cl%n0WbpAzNGRy3fb&crC)Z zCjCeGHrE;Y^;Innob($XhvR;oOObu1Ltf3*-Ilbx8=TYX##@_ze9TH&e#xcCWhwuV zd0ACOz7Bdl`U1KyZw#es>_mJH+Ab0>$SLr?rLd1|uI}4l zY&@nc8;?FYU!YiGFBagrW~g{pd&A^f7ebf=fBTq_^;V8a<5O z;JiNC_u0ETu8&5{23X4m!~aWT|5#|J(Z=H~mo=ps`)2IBvF9rq`F`QL#y+0)thst{ zLvc-W{Y!TK?Efh>u8vzUz)jjQKpgeg#_KJ;-a;HxjK{12xI%8VDumLm=kvsiFS?X2 z5r~(+{%~L9$l~SPFQxkRpA#>Q{d*-LTf5yG3)gdA%j)(`V*eY?SHqt8axIemf(vU_ zSYF6)sqU8eGOk_Nr+({FJ}-jt5WOFL8J%u@_=_l$^A&l2$hzvq6Mp$SCy@Peup-8?@#(d*FT=w+_Ewt40Hg;VthRfk>8P6bjq zk0$=_r=E^KaGz5Ib32Xep>YRj%rwe!t4w=HKTYGmfIqi@t^Usa^vY`Uznu`Zbjsi# zjr%C(d>mi5y84`&N4w8=(xtsU#P|QnrQFW*VtY9+q`mq3T}jiXuh3e3ye1?+{H3}1 zhm7M4|0K}u*W*R>K6IA5!b9x0^H1DnUx!}%X3l4Hri+%}HdpcWt@t$><@W1)3wq3< zo=)@*hkAO^qpQ?2Y?RyUnLuyN*TeWonv&NHdc>wndlu2d=sy%geI3|Zy}Utt{nCi! zVFR`B50{dEy>413uFIdst=0Y$^3NrVjAIjiIgeZUrU>QNt5(yz)fR-H;opmYw8E|2 zy1M^>lfSIHllW)wuatqZ)!$s*QCu?Jsa+h_-43Z%&L7Wi%%|Pl+WxROA5H5_hh?2f zZg!g3TdK8q(l2eq3)Z`pM~dqx>sJ1Lu71DMJ+i?x!L@D)xRt)5fARj~Da8wqpK`7JZ0tL*e?jcmKHnd5Zhlz2wbuo0#9Job z;UW-^o2G~4Z}3ZgJ(T<3%in^Pa=m@U{O-@^Cx!ZTW)%DJ*I++~eK_D&u9X1x_=$Xc z?J}la_dL81AAb$@joAD5Tz~vd><3?i{Sfxb`_>m<#%~(?ZtS0SUjJ>^Dfhjrt^YDU zwYxKZd#$g2neWZmcQm-Q_ic*vHNT!4_xI1YPj^`b^zrS-e+vKgj@JbC!S}D^19X&_A9%-oYkn!q4Uq;uie}(hg)?a6q^w&{V zg^Mw=@OLZ&W`u%_64eq;R^G)(u!G9V5iS_04QJ3?A zr{yE(OY_^9{~vWLZ*%B3ceQojtc^eRt-N{kf6}0}*IUPZB`39bYyB}zJmmnl@?x?6 z((BEG&et2s-}83PkB_;PuS!7sdimM>SnKPhjB_LQ3)pizvGCBwA6-Q^&$lKlI?-p* zZxL&I{PRum%gn1${KE&j6>j$x9#Y>VdI;TIpXhVwLG;rK)_OlJp(oKtL@%6o`s=i{ zuB+0HhIep2<9~z2-*(JvX42Z+%86M z-;CsUlv{aNDzwEhwQtmE-yrj{%FllIXt%PReU-z!lvK>`SG}~W^Lf#MxAwZY-OuZ- z6KI#5XSRIgq%Yj+bKktdp=H|nC3%e!r?1Pcd`lM6wa=I1oYM;9tnYVL{LII0xAKGt zYsdTcYVl-VG{2Mc`4r3i)?cR@uiy0hnXXHn`d$3{@t?wfO!6u8lWksI>pZW-e;WVb zsrG%i&A+d_zh@8fKb`)y)L(L5TvRUqX8gzT-;w-feEaeDpTT<0`%@0%VV`%WY;+!w z4oP3)%@MErT-J9H)*j#MoWq61TU%f2-^F@Iyd7zuj87;2t>^97^{Ng3QT)g8KikDY zVSbd1&)==%!+jz57g+SQsaUw#q_0N$zH2*i)jqd!F=36k#p`|H^91_3Fa6q3&wBfH zx3W#HGi&y%J67g89>!bi*Iweqzu{I!MJV5{%beOE`Ap)U#lOYPL1{krd2?);>v#v= z+UtO-cN6adw{o`#dOpSe7%^R^D3)<;!ajE4j-NNZ_-F9n(RnqAf9Rqe^OyeHj(-Y& zwl2>7XMJDE=Xih3xWCsxh?e(oeZ9o3oX_);{_8I7zh3OK*zd^oO6r@$KX&Q*>J$4V z?9kr9yJN8NJ zpOW*r?D^;3%V`nO=6`_e`xS2aleeq*yC$8^U&*%@{|x?pMgQXYX1h-z_G8%l2G`%d zdF*4@?`VJ4?MeHtU4MNo*vGNok@0V#eFONb_}?MxeCc{-e;q$qW<3kzt?f7Gi5I%w zy5E$3TtN?_Um}L~b?zMNc`Ezq`uFjA%OOq^dIG)HxGrh;|68^D|Nk}J|JU|$5~mCM z_;6`H{pj834YCfAk15V>?)*(h(69p+75z z)_SMx^-8;kusTTjSo`AG_PFe2(YFxE+%pH|d8q z%3CSlS;~!v=w0X$baQ?(zxvU`=(`o?xqkmbdq2pyfA}Bk^kR3bMV7eJ`1{ALab>*c z(S7JGMqJhvWB#}gG_6m52_*JaA7H(_$F08)XB{Wbdh7goB zFB9lt^jGcck!ilT=StQiy!7*Qg=fo;md366Ap0-$JuTyAf1Txiqtkv!@@>IieXKNY zC;BXUhb1oSr#atGl%Efy_%Bac@FAcM;Pp$__$9D<)#N(xLJo|8e1-+)2 zpPVP!r?A``I8(IP`qC)vY{b5Ui>!G*$hfqiN6|m%6vuKOwDd-w#2pa-C#`X%oulZj z=t-VSJGK3R_PInC@8;ysOKo`d*Zl#@Pe!OG;(vEigWB9N4_22;Z>Hnd=8T@@eS$}=oB|q$Uw11jD z%=-U7`1j%;nA`FCC-G0GygPNR3*>T5xtM~|UDCARwdShzkFZ$7)O zDS3T*gjJDu+N7R_eOYg9^~gMLMqfaGm(#jeTe^Psi2aMD{WE~BqE9%*xzZe`w1XtS z8T_MaY1~EhR`mOw;$FRW+!xYEvg^bT}>qOzo&?z>!;hDtlz zuwVX#HIC%hg`P$K8_$dL(Yg=dQ)EutLaqPC@K3#BjVt+0qmQ5`i|sC4pWGLl$Jf~Z zU|;jg(l}N7v)-fk74s{^vF|UXJx$n0v45c0FAnFIdxV{srWf`RT&ks?dhu6(U7E)b z`Yif?j6Al;=L*Bx_3zdE^^c3VlxlINu^(Bq#*z5*=t=ZVnx+1a=qu=hHhXDL)kj%R z(JvKKeZ45QpRaOil5B%YPd_b>7W`FPTp6EE^jY*ir??LL_95*3zi}&kR9(x1_DddI z|J^@gw&gcGehDY-nU?s!b1Ux@!FXuxN6(_0*LTTh1$_a1Qf%$*ywlW9iX~1xoztDQ z#;HedLXV+$@?2gA>feuy$_7o}EFx>|$8H?E%?|U^wY{{yA?ycVwbmzb#?TY!cS(KZ zUF;Xv&9-jQ@}9@u`}@*3E9eUPeMTH!gB8d5j(k2+Xzc$EARp|9M9}-IWL;q&=y={r zRh{@R<9|!hzgXWo_K&0Zcl@EW9h2x$^xo2WabGjfd!s=*#Glya+{aK@a??RPRLZK$pJAKg7NlJ%P@0RCtI!gg)+|kD;sR<~(Iy zOry`D|3{)&=fz)~=EVy3BY(EWX~eaP8$C(%&lqvc^P)FDEzGAsc9L&1epC3__a*J< zX`~4kwYp;7}h?mT{l{Y)bv%l{B@>;KZ>keZ4 zw(r>MlV);i$3KJrF2?njS^?%zi#=Hu}=MDYnLm#+WYx3 zzgLLY$EWfJcy6rcg?ZvS*ECHi*2e!}&IjyoE83TgziZHW{g?VW@o(MWS@-7~hp?Y| z4ffO62VI`R{bkE}^Qg5wGS64ApT*vMzDk}|3|a;~e_b?PUsF!!eG~Rkw>6H$Z$ocI zck?{|5WNdMV$CZ{@Ec#n`o_~lwXV~wa7oq4&=sE1ox{SN$Q2z0H-!&o2C|HAXK?Rlc4J!LL7rKgWZnw;je#8FO;`&z7pYDg8*P%xI zr}1yy#iOk7T=F;d1E1b4yj*l$ls_Q4OPn6;gKSdF>xAe7=mB(X-jX(wW21)~eT6`w6a(yLyyLNx;ZM=1Bv32EEKaM7A{M&&O7kuSH+y zdWo0X&7-JNkG?K4GWPeIT#uJrCoq?JGl_r1=TZ7C{?_Z4tE*(*inZpy9seZ$iPikO zo&6gn2Az_{pW6wh{H^sLZ*|w|?ZI#Pf2el?|L|KZ*OQX-h2MO!ydIbNwS->+zc)y} z#)B<@;yIlC1^PvzmChsk{_+&3{UxE57UE=x^N01tdDbZom5H~upC2Y(YxD=x2#kn1|MJiM@FKNY{Ph(aE`d&jGK85Mr)PP3x#U_W;LcX*ULMJw0;E!Cles>6rz zb0~*eM?w!IdCm|gL7blz;}rAcTa=8MIZy36D&yy&sX@O-|9vYGwC}&`DetB{|GGfm zCzq^KS39j!62BAwW&A%YdFk=#2|3W$p?<0VogU>35h%Cr!;No0cbHnO&Fi38D-HZV zE&1Uu&yD^owEH;AsIYg%WW}&IU9U>l58J{eu^W!!eh&2vNj-X=)MNba56I?L~Wxo&fshqc5RCC&(OWNzml@_Z6qMSsisUKjt{ zDLzSPA!Qw?I-2XzyFAJRqLiD5H<`wv@NHgw9=G5hsP`y;TFw80a`RYUQKX-Th|}?I z55JkI=V98$$J|6aqO=*?90qgz5$_KUX5+8UY|DqKgoXQJIqhGL&G!I5gkTu~ zag+Y-@b3| zMDIgi?e*ekO2XQA9Qr5z8mVW3c(cTNE&EP6&zA60U&lO}j-|i$_9)*VcG>mvRBOYe zpL+1?!|x5^XFO!?4WP%-FBNU=b>MWTc`ogoBhD0Y{<*$5FFD1@Ul$}^eU$6#2RzC< z)-@kpe|3(>MVE)xe&U6L9{qRdG*zE}1L#roOGGPo{jv3De*VdMJcEA<|9!-t{ww~v zqrMMaqC7*n_C4LT`?t6cy~epkVXBe#G=G})`-2|K_f4hW+R=09+I_&%`fTU1YsI-1 zz29Wsj}b4kk4L$g=OycUVIO*iWu4Z}fBeE9@+c>ZA9=XG=)4cD`V9M-#%}<>41QeBwLIB}ej@);q6uk? za_>hx$}>`4m>(tk(3JHmQ@qYE;h)5xX^@Z4=a%KbSpV3ds+3fNRy~IA8ZKz796+JG-3rolV$BKI$oa zF14^PVal2A^PguOzv6uC#Xp6=(|RTSJWP3pa{In>0(}a7)$_El?>x)eTmW0I{xtD4-LXo3uQA>L@e*GsyFS^km&0qdcb<6OFM5>6$hWv273R0? z`@ya<-vcKI4;hb!FEC!OQ#{%4^%5^jyn|gF*ygb`w)p!9Z*-M=e_Y~B6KA>8qkL%1 zIIdOWRDF?rzVg4vX(P@;%%d#Iyj`_j-`lWSyM~FA_^L;lTQklrtHxO*j=$@FizDZ2 z!ItP=y2 zrztnD_Y!v$eSDR;)0EGy5_ggEWrw)i(X(azq~5wt&YxcAe5JgJ^1v$P?UYAWDet8` zwo3Uh<%w0wCn-;rDVP47r(8YPqm2!R+C%bQL0>@6Uw60h^*{4C)P9-!LFbqHHK6;@ z%lWlX9-{mOqb`BA{-Y~>T(4yw8;^R}i=OeeduQv1r^mmG`<@I?>|MnR1%zjeOK$&=>M!bUy@jj__5U=mFyr(Ib z{@FvyjfcdWM-QOO-X#Cf+K(PacjrYY<56`y0%PEK z^83y$=rMHOekeS|z7u@}-QM55=t&2C2z}5&A45-|dkWF@@tj8QL*L(~&!eZ%&Ev1l ze{{*m>2;8l*Txt>%4M49{lL7WKjcu#8z~Q7X!N(%PyGEJDdeGzKjq;v<4h~EHu1l?&q%NULs>m=UzMYPM9S8MDepIa?n6Y(a9*O%}p z&r1!3{PM4tjMu3Tn6~|Ni~g!Z@0S()M=o~mXX&@vuj=LRGU9)#F#7s@YoxsI5|6^$ z$AyQSKP~9-%RI^*qH^6gy?(ki|N5z!q8{v&%Z>Y+CHsT0Y2VZ0bX^bQt&Q&_aROHq z+fle#V3g0VQm&1^QC=+pjfd9$6WK4A;+FjWt5I&ge<$%;(0%yX*UwJ$8uZG1B~a?= zMfalbF1mIe@fRE9IS+|9Y?Pbpk@+-%uHdIFD24Ga>}$2ZO=0>Vg6pTw6KYE8l6pK{ z%unLw>qgS@t3ywrA1#8GpQ~^JN&ZcgXDJUG<;7J(kK0bUcd#^W54wWhYWQ)V=ZJj6 z8_+`jJjpf97_=g9zi)>ealf2lr-KK@XtK8YT9tW=*v?|ZUTUqV-ZVAUJQ-_yFHK`6 z=UEqi$)6bSW8-H&Po*CRD3AQinxE*S=*zE^>XQ<0u~eT!55HQfFQI4uSgLzYVLAG1 zsa}U3`e&)$h(7i2QoRK|qEzr-@ge=&De*T|D1#;ads|8Wiv5tp-?>8RmJOf^kEf9oj~`uB|19_M7a@o74p z_7i8V{_MnVb{%#D*k!T%NJ&3^t|6_tx!I(di(dYwO^uY=gkWKHK#GpjrFL| zfBJoG`+e4@oZ6qiuUt#a<})~7&n`WW+tK6byd5p)aga9<4$?ltrk%$O1`oM@_hUDX z9hax|oX1D5bsoYn{gp*yXTW>pX75&YxI4Kbgn9*oCk=XZ3k}g3~;fb#@Z}_{IPGdF(lh z^@%uZ^=AWixpmmJVOMj>+UIdEb^+|ZEbTY1L&iF$zmj)<%H00^9S%8fCh?D6TA@6( zzVrCMtDVP<#H%`+>+xWP`Sa-7b$lfM_njWkU&pmKU`Hfv*{?L?7re5f@cDnPQ}QOX z{9X-zElFSC^YXjeUo8t*W1t~zFqG^kE8FL z4+14lzhN)!%s)gQHsYK2N1{)lOFnje20e;ykF$v0>Y#5&kD%N0tnJn9?Ro>c#JB6s z=#r1UUG0XwJ)a&UzCHf|bjioAkD`Yi^hxxPgFc5IM7QU;WZ2tv&$)VhvtCC(*P%;3 z?~y@a8gFwI|9-MI{**iQcN@C&x4j)*Mm)RTkM7jIVRWbVO`toqZ^p1Uw?pz=G~%0e zY2SAA)!J8go^$&e(Vg1Yg6=eao#@g&kMyJQki2@)rF~{y@)|-fv`_2z!fhw*b>zev z<#TJ4udGrodDWh;*Kf{C^ak{REnm@_(f#Nfd7giW-j42buyvFXz80dz0AHck%h z9$TY)W{vWtRmvsbsy@Abd%Nq=6E zM)~v_<%_G7OFKMY*Xy_ETZgXN@)i3=^jUO!yIauZ`ecvOi9Ti1rQN;gY4mdK9$uq- za*gu&Rm!Cu+l_L2zO~>JQi==OFuqt{$lp=`h=|B(GjJ9=`WLOD+^0NOTy zS7QFceQNCwN1EGR zmsur08K*Ylg*Q|x+ABQT%ir16#;*%K=c=^)oky|nM_1gX_QU9r%2N9Y^j389eKt9t zW(@n{`BZ#AT=uC;MtLvKt@l&n`EBYU)qW||_qBBwFn_5BH=DgHYsv*;V`|jdHu+9Qwj4ek(?~-LL9G*1Ix(P2|%c<@J>c)6ca3 z-lBa_FMq4ib)xBgN7Lst>v8GAKYL20@*VMKUgYm*amV;3tv`8jBkdl-uKQHy{*v+u zqx{`Q9R3bE(d0m1C*~;c!(YZ+-?!=apO?^+=y|_wt}hkd2a<89x`^vvPi4v9nXX4y z(7h7Rcu0Gi&~v9%Dtn1$x&QU0{PfWFE1lSloLQ-VpPEd~pBs`K`=$J>%EI4)&|W`j zzoYIN&IiihZ;^T@u=k%`sjz%&?UNrzbGc5}zRkg#G@@#4pT{nN-CZK+`N_Qy|(yvts&bMCYewY4fFv=?>p79X989j{OZg~+(ymqlauTs1BsE-39W!Ol0FXd6n zi{tbaOZhP6scq%`Cn--;Ue14>^6W*+W}hrGm_uMJLWI#tGa~wg8y+w{o3mt$AXOT990x8oPOv{G?PzQ#lJ z+DqC0qfeSPG@>`4s{@smzl$w;Gx{w0xh^9Jkn^-1J#TtJd99bRm_uX1> zS;9YY1M|S*U)Yatv3?)fopAhKA#vm(`7~Y5`7m6mY_-R;-oM;;gTsO){=N8TZ>&@f zT;2ZzPX5yGlj8raN=3W$(;xC75*fca^ab>Tcy1p*c6!>%WF9}y71-TW8mA6Dx6U|n zzPDiSBTi82C7BPr32uL$MC^$~jD zHcy(Xt*=AN{XSqfp|p9oM7-SXmHPLJ3)g4zV|rP?Z{Ya3yH<%K^RDqK=5MM}=@CJ1 zXJOv)doyx^74{`Ej-A+dV{aZWnUB5bF?6*U$9jLj`u&l|oaUpPchkgCzEfHFK5+iL zyWGWZa%lN^wf*Q4c0TOhXw+x^Twfzv)zx~rcD>dbk$)e9A0jzKd*`ySvCproQhzgk z9mE}wank*?AM3r)C2O?4(n$O+>@s&4`+;@F7r#;bYQ`#+hb{Afb$?rh@fOkDuKeda z@*OYzK967WuF~^r1$_|RJRV|SHN^Sgpx2}Kq3?=K{vq?A$*^xL=2e&n?iQD2B1rr$ z?9=0==V3qkIC{Bp88ymZ%eXXB-#mUf;=UHYTKsCi$@To6(tc||524%ptrCFmVYyx!57DR5TfbMSoN3Y<(dW_A_rA9F%edBF!#@+1 z%AUr2X5A_5f86iT$2C8%rT%8IzrVD<+R=0OmG)N;`m%#QfSyI)m2mlooL{4c{o8Hl zm(O&5Nggxe|3K;dT0~z!FW0Z0YxQz-ze@krp?e>EZT%;CwBgr^pZ$8)g&sk-&!2wu zu!BB~9zr+whs2*S?9KB>_ER&4y=?c3`yRPFp#3Qq*VgLD!P*Zibz0tE4U4(>S0y?B zsc%R8C9f9zRs8Mk?nIw;XkRaS#z7xKpF)>wbp9dn#|(RI9E}2P{Ws#jUFN@O{q=1q zuD>#`m&E^}O65Gm&N8oiHduCsQeWM5Tn{Eo+tY|%gKi(k7Id#om;5@>74)y!^5YMr z7OoFc-vD-zM~r#Ou{>m4M$uc*cVt||e-ZzY9rTyH>bW7YjK6(co6xi9_I_wXUvSX7 z&{cH%xb_?N=5dwr8aCqRcwVy4ShieVw0+48_UT6}m5tKR_I*h%Z_iRjv9xPD_Q}Ue z+f{o5*GF`FyBg3FHeK4%jNXU7%yX%i*P(yPzd)3FIw^0RvhI6jUi6|z(Y5v!=Pf^= zQJ5B5yGF4KKED2T&0$~jL}|O0(7ovPc6o+L#->ZV>d5{X{MyiG z(RsO)L%L`=tEq0;y*OJLTCOtEUmy#u4(z z|Fymz>B3L_QEC77qtBw-`*#>UN560rZ?hyGPNN9oju<*qhreeKTjo*K}?DF1`;eP*%c`N1n6w15umm|%8n)2>d z{1++jE8{PDc}BTDQtpxX#zXWv^rVB{h(73`x1c9%y5!%9F7+4t)B1U?{#D8)k5O~E zk)On!H0le8ruAF#{lg}tdCDdKAt`5{!G6E=eUDz#{c>K^=I`rh?Z1urh`&6~Kk9kX zh_3v&QaMaSeg7h_kL7(;?beg*-Xyt^h)HzIfhVu7HJ;p=gPN0Wh zs#K2Ozya-c^Ec-5KPfBabCfT?T)upT@{xJoS9R(B+g$GF^AW_q_I9qxX)l>LOyBfYtew#Nchw@yXZ+s5K zcq2i|TPXL{Zd7EB=;g)tyQSS-lt+9Ul@4j2@esWqeQ6Xa=+94E5~<$@OSa+Ql;-n;BuUk zF6m2NT`BHo@4Zp^`ug&!bi6$-c|H32Ym_&yQQo;q zx#Zh#l&?463G6#o$#-sz@|88pYwuV+e&ZVDZL5^a`QBrc%W05*$T$q3N6WNJ{KkxO zyWcc=YZ*U@yJ(ba_YqkuwiUm|udQpIG2Q>|l8jbv{T+gOqkNN;8xP5+2|Yr+=6pnN zLl2`HOQYr?dKY@gLGMQoI_Sgb0SA2o-S42!p!*#3Mf4hUd!F0Ty$<%Zcap4w-hiIt zyt22e8GYG7Z%5BM=soBQHeDNkbQQhaIE@+Q<;H2oD7TN(BKjjW_uH6JUe14p^5`o5 zOKX%@eQ$ODhBeAt)+p~ z%pPwa$9U}9`RVA=7Y%qzJ<^^5>d9@{sJuf2<01Vpimn{A(eZP9Qa(+2kaAg@_4B%T zA3*wJk@7I*ruT)+`P;wm{$1xZTP3>Izm50tS`vQ~aQ#Oprv^@-QaP)rlAb?Zj+?~mx?%WRW(zxf?i ztxT>A(N+0Q2v4h|@-#k;q2<@1U5^my&$0Et`+b(hv4Wh znyIy~6T3d_-lbQm{VU_ui=I1bqY@KEpC|N}d{~2T#Bhs88**clEbSV@KKV&&zl%PN zKIov&qbF>-^y><`|5F?F@3~O#R@1mkdF?~IUZVU%JlEIL;x}xhypi%Cc=_&g+-$`sMnC)B45btJz7e| zJnA8m-VejXi$#n5u+3Hc9aR~JNy_7t%X594_+b_9#OCMSyism{owb7Ajh|VU`B*in z*C*$MvQ^^9`78IezgSppo_tOU_5NQhx3*F+QE;2KTG*W z?02*8M<)M%=w_gMhUkobH~8wA^ik4}`EpD;=d(r2rSeUZzCwDj`aSN_N^3i0pAL) z7-93VavH%UKWs z%^)Xk*UHbc-T|IuSJ|MR^aavizkN52AT{j?kU<%qud{ZEy1(51)M?MA^D;fv!( zUH)-=7W^3W;dmzbC%{#na5+`BRY!jb_qJZIHa+b%<)!DBS6pCxQ2aGt;J@o#KO&>;JWuO-M52RfXDUgar961iTN%1LGWtmpB%$S!5hHOj^Rha+hX$NceCIv;CVlN zMbM5^-X+pINNyc9eW z!z-r&z&FM4I`9?B8^@c$m%-C9`cCl07~Tj?ANT_J$3$;>#=PC~@9#^!C-m5uLaDh- z`QdLvzp$U1`Uh_TH~wPctR1(?lf}10dPj^;`egpe%6q?ZD6Y?NF@2ihpNh#yL)IFDc_aNzW@cI5{=OcDpkrZF1p4UBdI=_C4#g|d&_Coi68(&T!r{czq1E}XAtLKvTq;w0(d-*41pg@z{kPoz~k{{5_~3xt3A(yPk}$&_)__0 z>YwtT<}1x_Q~%(#;7<{5{MkOq?Z=l^(i>uY(x=$SvV==k%1F`_l)&&L_1x4QHv z2I={6Zar8J=`HZ@Q+i+r|M_M2owrv<&tplSarl~UW?n5mcPYO~@Bzqdj?=Kbyp z-|bAS?SyXPz^VOn5W246LjN2E?*Nbc=TY!B@VI}@I{IS%x#ZG|`DgBHloz>wsDC!Y zH+*lQe|CcJ2QTKI{cEJl4@XHaeMi*(!jFPizq1gZ1>gIwLi_~y@JJ!P3cm8!g?J@v zJQeRL#OuIoM+@<0@TR{h#5=(|{ZFLmSM%pCgOU+BM8;2q$_{I~HG>7AsH zd?UY(%&8)Bw`Yq~PyM9t{nn}NKMtKYUugeH@D=#u_MZn|29Mi+$rmAW>b^<;^qazZXa=7HkJm#d_)G%c2R;QJub&}DU#xx(yL2<3GJed? z0D9??pU=AVV)eH~y7d1;;(H@Y*7TDZGB zX)|hDd6)97`8MOdO{LymKU03!^V0~v2wo!l2l@K#!fm<#N60^MkXA_h;G4>p+V6w~ ze8tX_q;@2$)`TQ<;Aa|n)wxnnw#e6;uZNpgG==mq>u*~{ZO(IKzQgzh{=X<@zqZI@ z0$)u$-{M}RC%9!|bdo+pdPjkrRBPBigV1@8Dz48s>D8p4N}pNiTA(YY&l2f-NncAJwfD;Jv400$ zMtZwTcpdm5@NysIxA120u^6uU=mZ}DKS%VDdJ8@aVB+#1bWN3|!9Ha8{g|@zxJ!Se zd(GNtJUPzO9cdwdY3S<&2F}mCro%!<6$PpI%K$PrlRmbCgH=b|P=2Ik`NIr1z6P(UOnrN%^rO92r*o=Y*v1B>XGz zQ!H~{C6S+=^oz4!e-OUl6~!@;;x_F&_apS(UFyA30QOCB+(7NV2K>lHr5?X5{sW6Q z0_?ve8V{QxX$P;kywoGSg#0`h->mCA=V4e!k#h(+zfgb*+Dk|dpF9b_Km9{x$sT#6 zNjxG>CuP*ft78{pE z$F*-re2!7VxFm0Bf$?*9sn@OXeUg6B_v!6UeEtwtU6R-MFSNHC*jrqme!oi`HyUYH z-VpLO-&pE>a(()Ztfim)_BitP-dgHayFBzu_(|}#SC!iLX1X-txgS#=@FzG-zvRy~ z;G+MgfF!#`>NWM5q-w2)wFfzi$hk~%Y+NpwN2knmtJ*YWO`{b@#^I}Yb!pM>w@$nC z`y?0r>}kZ*K@G-Kt`kb%Tk6#+-Ce?0!AFoQbNiR@%Ae4GfN$_YVf@sAuiVCbCx$nJ zFC@@+f*%8atmx5;?~&T;;V7#@wnIse(ZI&?~yEBqHhOZ0FUS2173PZ)PBl;5ZnV# z%HPz#OE=?R^xnsrQGcAI{H96Y3jap#{Y&_9@LKTj_^uKBBzQIWiinYivzhsMn>%{j zS>Ca|ylZE9Tj~yfdQKN>CwT3!)c=(7!GDJ;%JSpKp|~80OR3+M@42A7SCj0-H@Py& zMvTfigxt;hire9^OD|@JS<+kJkK5q{coTTs4y)h|;1AahjsHq}fPdhRY=?u$t^TWI zJJevOqb}WytBE7|b)Q@PX_bl3$DwOLj{4HXdWy!ady?Xo|9*VM`?{YIFOYYu_b|JB!=zq)R`Q{i+tx z4>^A<`}H7i^IfIEbB#&kwL<&dTGW1%$ZJ5}AJcw{8aU}pkiU(BFM7jea9645_A*L#m5VoCDvoXecdER^i|-Z59gA}je&sW({3-v9`Fw(Qyq14weuX{fS@#g1sn6Sj=SZ4?YDixu{U0+n-Nx-;yc3y& zz93WZs`_o^4R(IhgPc9zW!*nnPHg=t{f<-34=0f~^Mg|FOUd%$??-=MqC9p&RBYKh z_iN(gj|=Oy27D`i60TSIPa}9O_;v{}cFVsHNb)*K?;!nLrMpXbANT-x+<%6^_r~%O z{Wy5jY@r`ag13N&{XlxngD-3>^Qx5rdZquoBxs*?Kqr-6TIQ9U&L1{j$WQeCs>}U& z0YIXS_chD-`(w%y*Jo>>X(qk;ab@1UV({ZnlaaUImnXU&=tiJ>bC}M4C-zM~oyvO< zI`7OfPu1#Q_1qi=-wb|>z*zj2<_01#hZpu#-V^Y(!PlF_ca6`dMC%8YzoC7hXSlwV ze;xQ<=vGx{QKT3Bb zt}E;)Z!7Y^TANf*{;TA(a&DP@&Q2g#D?gS0PJP#xd3UP+#eYtb|E|P!7dLQjL_|08 z+MZqJ9a_6Tzaf>-pUa=e;qSVr%zkIfv@^b=o_z{{;C|v=`>T3SJ7{wmv_rc({JneUknomVZ5Z^@A^hC-qmU z7y0dySDi4Rv2EMd&r$fsUS3vgzdLTX&P2Pp4GYzG=0B;Qt}^eY_0>Z$e{VvR*~@81 z-tskN-fr2|#tFMVp#GkR(d|Pa>F37AuVOd;cToE5`QzxL@|}=Aub}-U*K^!nZ%M3Y zXD_wq`v0Om_mp{;tzEu`SozHOT>A9E-+ObJ_jc~{_KCJHK424RUd7t0`ju(qO(Ac) zlb4^DF?%ub%g(2kpj(9QuC?-weZP==ql$=^OXX-}BW@D-=)+g`&M0u`!lGlU0W3T(;$g4!&B=QcuA=*z1p9dcU-{|tzFX2nzBj75Ie+ke0 zZ~Bh}yb64O3|D_t4?Y0?NC`3hQGP#K^4eW`h0@(6ya#+Qe2?)#ehVLT^x^S_@)>pX z`FU3Uy|Ch&BwhNQ!M%TpZ{EpE;#2!QNxI5=hnR}`S&D7FV0x`BMsuki>;IeaBmB1t zDawCElpP;_T@*3$`uTqlc>`}M^B!DR{7wBdY4wY4kkd>JHTH2(V<^TekrS?QIl^cSRW z3)0`E9w0xXU(WXv>1$KIf^Om?`l{bE zzk6Gm_gU_ppOfk~3I5)UNrHBv{9B=)fWDYrdq_Ve+ke15B>uF=RU}9-Dke{S zo#2b$#q{haz4YE>J)7YlCB1?4dF~@|Ciy(ZXOo)0^f-Z>Iph@6Bl8gcUPKR-uZHyM zgJs_9rH8vDw-J0lc#>UIpPi(SkUl0J{8Y<-{Mu{&7sl1i&meRa@4)Wsiht?l#AtSk zd4S^flJp(Hze@Nc7?=8S&Ykbr!ssGAuQ@+?qGZZXPrCoFllwvC*Gc-yc$xP$?u+H8 zUM8Gfv2mXAJB+-R50;sjVdIv4qF@K@U+s04^pQ`Nd7pRrnRQURzHm6-ycsNU$-h>i zZ}?Q1_s;@M9Aw>#-xrzLB~gWY`-C4mx7=GKjI$;nSsZ|!L(V@qyN2Ql)^sCK7gto@ zeWIUW-o3v1{z$R<=56B%9iAPiE1%=!(=he_yN$pU4C!D+|bMIf`TLmxur{a87=@M@<=}-5W z_$|JA@QMdwaf>%5`2A-)=}n~X6rb@cYRZkDq)#8|y`;~`UhWb;1YY~)GVfD9$ZzF0 z4n7B7Ox`r<-d768!Nizy7wjSy>5bwTT++SKrA0ho*$#s|NuN!;{ z{5)Zlx6eeA^UePz{*%5y`U}?=4^B^9&mjKqT*FY(V~Knw=9phPJ^b+#PlK75nmet; zJ4U)$U$uT~l_cb`+-4rGRlU|jSN)A>`>X+P1>X#QvE)a_SFDV=Fev^$=$fDl`-}7& z0&f6Mnpeqh4wGK`P2w!~>+qYsYna2tnN{TNMV=WKNG6x`tK>zIW8gasV*gW|uLE!R zUYYmqe4GpXMr-VDk;=TASLNx1{?PZ6`zxjQlV1AmA)1aCPO zt>=31K5*~2o6ki2BzV6HHVlTmMxx4n7{1N$CHaTaXI=W^#bL@pza4rX+LB9;&%ZNe z_%m|D{wV#cz-xaPU7v3RuLmCnH*q=`M-}XEkA&uXED)=Av-6!k_$z*tI8WlWVJHr@ z>@*799_U`jeY8CV+a>s4{>+QWWQTe9j=;BDfU!gVy86?_7HbZ_m>a|q7= zI)Qrp^!4?7OGV<>?j&6PGK>7Zn>Klq%HP@}h)+ByV-U`3SEp|C|FH2clcT<}nMq-vfS@GBE8ldOl>7^u46VhV0dTpIe<`0?M<0)4C&0auO$F8! zD$6Z>SdR3q17G13VKIGMNte91zTMyz;BkHX9ep?-^|J@TrSIpskNa`z(|O-jvhfSLMr{fj>cCtbBE(OJ2Nu&ER9;@$z*#`fxrfUmv*iU2plu zp|4IAmTwZg7Cc-&wcB~{sV8sxqnxvleQPQhuWi{BtZ(uNfO#&b5q#p}OX%nSVh1{;is6}uUq9fW`2A2xY&0*Z~ZrlNMPhjbRc&69uF_)PVXc`W|rsLO&+fZSx^3Rsq#JB z%X?o`-gUEolfFOkY$M|27blS4gg#00;zrUlo2jpV+{F4hS77gWeWm_aLUoyT*$jX0 zRN?%g6MPT&dm?@iZ7=B?@B+Nfv?Wb^i!>P1{*gEF`Di{W-!%B#^roWgAty+m`lo3B zB)(Pf8SrZERqy*!w0GTe$)BqJ%%<-V5Q$sC_g+}1c)8ycL}l#J4xjg>Xg@0bd%#!7 z@0B7XKRsV6JqE##d}EVYgR^?%_cg>fPWlw-GNXS9p9G%(kH_tKC+}}WtbE>M^H~BP z`A)K(Y9P%$j`6{_HU;m|2#x3PTGKE}MOP2q!aC?Wq1!yawmg+%5W3}WN6S|aJ}Q3n zEu5zXJw<{2>)@M*uMIx`Tv@0b=GMAdHI%k}WX@zf4*i(|j34ODSoTu=)VTD`f=s$r zOzkE8n_c=jf=Jgd;ho?!-;MTH!u!CxzPHJHvIyPP%zE#|EInb z6Jz3jEA;z+xXHUP(%$27Bpp8&Cg~b|8244m@>&~Wr z?709|G5L$Hmhiv$m!PX%*<_z1Ri<3Bd*<<4&!POu@i)8~k^cC`f)gg}!r6Gyikyy2 z*889Y+xo-G?)xVPQmMYsNk%&gu;m_vZw|hz#mDnMJSV7*SbrJ2j4M5tO+0_y3e7a> zT~Ew<6S6yHU3>hKet+VAqB7&^=BM({$?vSJ_bK_$spY+<$hhQ`=TiI0r}oL&$hwpK z?jU$I_z~{&cC`C5;XN58oA?j?81%+|=xawkykmt%s`L}2FOyzu-jjKPP50ZhFSiPO z5xy1y$laIfH@>7lrDr4Qo1c>Pe&FoR`xM-x$JXak_BDH{@1uy~W)Ji;XJ@^7XIJPy zU<9V`De(h}^gRgO!c&vWBR@V$`qrmqP1*R32Xq_-irC11{qjovBZB=mkc^&VW6vmN^0r)RyN=jnfI377q18r}P$Yj{R-IaQuf z()W{ItUQx0Jzk!9@B#SFMushqo~W~z%5#$RVbaa`68&i}G&gsyXU2@rg8f>Rr{;;+ zXG_+e=QZ|89k%5e4dk{$*9u+7Ia%*l$?YaSo_~B|J9OtSRnMcyTltG@!MfH_aPOH> zydU~m@KW$kJG;l?Ks^8C=LUE&S&{SPZPz7DoXA&~?Am%3^N(}0-YZ@He!s&$ETcRP zAOf@6`iFj`KI?r=0<2xX>Kjz{9F@FhWxd+Sxjgz4|2*qh^!*nn69dt<@-g%=@gI4$ z4cW;2w4Qu2Oz5h?FP9#XelFNs!9Ri_kf@BjM)+D{@??j0@FsATp&)(*16?IryA49$ z1-(Dc$@?Rn#>=Af1?hVf`Z4J5kO1qyp>=up9-Z)elrg(>S%Pl`zE6uUHonLYE?^AL z%IK(gi&z8_yYy(RVSNAGtanI2ATK(;=TK%X#tTX`Ymivwn9&D&m zA3R-Q49|3{+T^VA<(|U$|NLmbauB=*{0R8*NcsGFw*D4Au8+Ghi@PmU@fJxvPyk&X zMR2y5-y-PhD2-9qw7*I8T4~M}tUJzwdpoiP^P(k3@An0gq;hA@#@@)$@Xx=5SAj2r z*ZLs8h1Y{iet7*${Z%V?Dfo4wXV}+c?7$?CKb77?dI#xOxb&+->5@A{`UvSyP`bN> zkAsha$Mu_Z^k?|Q{1*K@_%QTlKi{PZUvl(i4%4q@eloR|J~V#BMburGPtoo5hpna- z+tT$VA;5n>LOpU?kyE-e>ouqy+IV2(Y_&tT^ixwlqrckY;vak!yRzO}oxg|UU-}Mu z4kOFfn#yq$`rZq(_BlNM)+PJSf*%4m=QM49@+z5F-Hy_iq~Gpr_fc*EX5rg&QP%rt-i{`clTG-!qnDOM!?|5?3CDa8#kH!ZF)jZU7cE!18fmB!1bBFFj3O$9nIHBbZ}F0>_xE{ua60Em1@#P;8t_Zz$0zA?82&w% zW;qwbA4&bjKy*BC#%W0dmTlz&?1+0q3#&n7=WwcJUcw?DX%kMgE1JBm|4FuuI-7@)nVI zUEaRbYOKCqSXf`X6Y9&p@=a%d*~H=~q~P zF?*-4S*xFvT_=&(@$zisxmxKx58eh&b4bcZODW;krX@eu2&*p1t9b_F|EscIXEAxv z=c>+MOK-LBKIAoZVFzUp*uk$SH-39X$cXrv%6k~T{qTkR0qHjlJ^+5Q*!U;bF229U z07&^%GVs`XZ8RU@b>Ow&<=jheO|ToeZ3eFfzb}$M(dt1NA_=qehm5pk@5%Q*`4JBWf6y)Omq<95&=SXK8U=9J<)h! z>L2_VczC^6{n|A69Qdne?k8PpV>zd zFPHFU@Lurvc&ih9FZiDuO8cMa`@jdlIDy)iYV&y7>>cQ#*WJ@WscaJ>VTNT=@)ww}GFY_oGlfy7zbg zK2#qJpyVHu@YUXuUq50!?MmPAWuN1u?frsrZ z`bO}M1iT%*EdlQVZ%M!h!JEM2_8J9m0FUc`6ntw8Z$zJ2aM^=xP`^DE*s(2YMtW;# zxlH-%>F;kX%&!LA1J78}fW8rYh5X`pJNR-;KgsU_UrfLU!50$nQSf8nal0P{pG&}J z!Dqltdn10a7;DOP!qICP$-kt}s-uthrScOZ`JP^4eaR z^`2L39Vm8Gy z*f?+b6XQer3yIwoth!{!=4VsB+Y0@r6TBq>?*nfFkNeFKctZmHIQZ5Cd=k7ihMV{Y zUJd?lQt*`JOMNRT{>e^N&%vLNqveEC%So3d+9~7*J;*z>H|t%zK6&huB}_O}CNAkW zDS5BU7JvU@Y<-kP*rEbW`){DVy*?XxFRbiY13m}-E@d3+=Yw~pF;dV|swSCPQ8izn zv-e`cNBHSMPVF1A-n#|F`1itpS3dvzc! z_3!BK7hwG_sL#|V@^zwQQ~%JfAm=B^{Zj0GXMDjap|$TQ?@c!)7ErlZy($}NUvHs* z5fJF*_OY2_-RCdk;bJEKLtpXM!g$^ZUJCvQ$#GW=zxy2hh%n^qCH91j3U(b?tjn*L zjzYH|{wT>7m7VtVsMph(;kK+2_pX z?|Bd0Qrz-Hx z;7y{9)e~jQh?PvYO;-e0gYyv#)VH{7;8FTp?Z?yUDkDYV-^ zCj-CFocg=aLbkpdVe_rohJU|@ef_od{$WgSA4`uE1 zb*I+r?j$+BUXs_3ycOiVW_@-~evh4O#3gyN$gBNG)*C7&FS_pCR-_)gBv1WDRWsw6 z!`a|{(f)aIzR5zf%0Ca@4BZ@b;r$Ku3!UII;Qu9oVSCXgBmF|^a|PXkzptorjU#8^ zV_EMSErf*S*!nZ8%;5$7YZDJcZ(}ip#wEzx$76qfKcW08ci43EVTi)~ zV*Z!@d7>SWqf2(|Mqb;eUH=>H7lOfq@*RS1FLVzSi?^|L{LP6O+x;!Y+vCVvnaFxC zjrcwBZfE(CieO!S2hEUP$!_2U9kTk%stbtM|0^5$ZoK5ygI9pRo%?(oCjR8>)xP48 zA!ww#Cmf5v5B^^Ge<}XJzUXD*xSMr77}d&!apUJl;jjJ&x6d5#hvHw%PESa*lQMVl zZztvXN6u|V>=ek0*LQznKkOQ|>aiVpy`N3!=X`&S#QW6ulH-I4_r_nxkvIG~_Q$30 z&hmwl)V_$nPLs|9y!O35h4zT+|LjElC7Vm_wz36zpU-;#DIhG5O4wOGRiXi>tEF#8 zE7g~>y-S!K}J<%VAz7~4< zsLL;)X9j09_2an8aUA*<=>7d8zZ}ea%&n#$qRZ^2y`F+j<*kEm1iD`C^W}}jt?)aI zOmkrH%BA|~fqw@6R|}xLA$^$j8K9I3wsRU+bn%VDSMimscT*uBrvr=g9fz+4zCSd- z%2wjdADEx&q!qpy_|A0x>X#3{3D4P5Y@wRkR$*BtwD&3-m&$t(Ib&aS`-Bny3!eKZ z;8gw0Du4LiDM1mw8~t41OU_>YmAeT4nq^#&k5_?zr8ksBJgf@(M(8(xE$cm5`B92} zscVC{ta5Zp9_dkeJ2{VP4_2j1Nd%nefWnPb<-09wE{k1~B z3jM@tP)w%vIb1Cyf=&yr67MHK`^^m@G(3O5CYoF^h z>X~+xMqhi*7JcPc?a(zr_rAOz7PP1IUG&;$W!(x!#)jb+(t}7FJN`r7*fAFm$d`TY zaWTj~s^4kSw|+O?569XsPj7~^lbu%Kn}ILXpFv_{lY9RqGe{ z)y((Wq2Kz0taqV+NPFY!hVpCYcm2?HKqsGx(M8rZ$Dtd5u0?dV{*j$}KSMuATuU^P{W?v(wPwKDzF*r2?t>VKV z^hcooGw%IMelrR_0iM*qif@wi8PYfSO#Bu;4?YF{tQfuoz6fsSQ7%pNnHMpC_!piZ z2+=okUj@D&d|J3Ihv^7tNVHYcueo{d$D$n@#+KYp_&5JJs$V^LA9w}$@ko6I&k3f# z7PKS3)~vrDhHv60e;A+2aRR=spJu(!=i6;zJi0FykKofK->i8t`v?D;^}ZG1FFHT| z$HaM(k!Jh(KI9E7K74(S!e8<8KaM^sU*;vWhhMO6A0Kxl&ezjVOI%KHGgZ}ZJMxbF zGV6Wc*^7Qnm8*W@s2?v7oqilc5)*!C%hF>AzK&mKy<3y*9GfqvU%Zx`)n6S)-ri;U zS0~SWFFO6|64P;zuFLp;2kUpg$$IBl$o#K%Tm`-e{)oIjG+H-y<+MY1#-;pPp+ENT z=r0M;xM$-r?ku@|&{h8j^AgF8#Rrwj?W~vpA^pao?>*_xM`19%=TLGc!S{gwf_ue9 z+t0iH>n9QQ4E+-Hwf~v*dR)GKz1)*ZUu~-*-`-65SvcGCU+bec<%j;zZ?oP@q))W` z!9xS0>w|7#9dx76ZC-KDIYi~{2=^n?&^4`tZV9?Q>!7Q=f_Q%lI@zZYx(Vp6Ei7;F zJd&wI(na3`{R;FKIQo2j9pK5@!u_;S=r{lG_0h|&v(Ps{Z{DkA8dfkq`;6bxM0XOp zxl_=Y`o9u;{dd;;ae}_7V^M`g-wJ*0@76~zzwU>A5&CeyC;TAzGPplRQue|RJ9_nv z{#DP-w4*oYm80dh>&tdLV;>jbUcBO4g>Um})_akFDBt#{}_OmJkDr_e+d54 zbk6&c1loE*Ul-4riJ2nlfD_++$p1kUw+Z4hDAAU1CHA@hIYt zc5ugYjDa^s`-jG>=UE{$)fhuMUzP=o>P*@N*ye@^PdjR18y}qtNe%{!2;n z-|5pMqRYRxelQPT^@bepVzhdhen0hd)9pju;@_|Z?xKO6XXaP{T7mCem!EkJMTP#b z{#r-+=F@WCK}8T--mw1{?8CjGG^qs`amHWzk+-Kj=RM!`$JYLSJ9PW``q~jnn>0e6IeSOCw+$Wai!b(b@pabdBE5VfyPB;dm~(Nqw;Fv zTSYGNoQ?20@CItDi~!MDb6wZ~5IT5vPJHkE7pBi2J->Ni3Z3ZCzhOvyV4Ul)9v z1h`B7dKkO|`~wN?G!#Ftz+!>Nnik5GS^l>K|I8zD9@9U+{+vB{LjPHI+-2yitsYg^ z;17??+4pn6qD%VKgD-=}?a&Io2%a&N_P>69b%QT}zf&8;Nq!UA4@=*kIKJk4hUp(A zKG4S-3zGZ{2C|dBC&-_d*+%-KR`6Bul{0hRW0Ut=iLBvs2I+4k>ID^|Z2Y?x`~G>3 z7zhw9Cvh}XKWy7Z>PPHG&ms6Hs&kR~tn?fQKLUQT*z@we5k2=NTFHIqRDN(0d0l7c zysMS5)idw|d1g2cX}na^O+1DEGmf71r-P=YU26X4?eJFrR_GdPa|O?}bb~j6htB~j z-uHvI2+#XtIG)7ppZZ-=EvtT~kyHKDoL#4sj$HNp90#ujf1`kS`)9?@wt4!K%lvy= zj>_wpZ@?GUSNYU|?@hp)!3V%;X2B);PVkW!z3kZsJ_i0$QAguK&^fD~Mxi?f-J3)g zuczR7DXNZSm3J2U+Nb5b`?$~hpC3=%j_n6S;grTMzRdOb7ktlBI|%HQUypc7IM z*<31LBYYFjh}O5t*A6}fJ}W}><^|r0%RCOx|H8PGZ$ETPw6Gg{VEa}yayya&{^AX+;z6kyl?)^*nL2&OmIn&35@x$Py;8`E!x9F!6 z=oL4PJNh5S<5A+e#*33np&-g7f2`YsKR-8T-^*m}l8+mQqH#m?ozQQ7Ue4}g#p&Ny zNIxX`>!g>TO-lar*BP*Zb@2vS%IX$4LJ-mmVFj zxc2plX!~MwswIlxD)5{7N8aAXocA=zbC;=q@L_NhZ$tQD@P-#KuJeicEjv$xZv`I^ z9*rk^LgNgjnsug=&<{Z0u&%h9K5MOYrg~&Hzk+!A!ko898AS6BHkD{VzABjGM*Nw<7$Kh)@FBhywQD4qq8UMx3S&Ke*6ZHYT zKW~W8H|6^XsiAsmgnk72FA8v%4cv~)bk9{QH zSNi#4K|9qkJu!r09AocA4RR?N;{j(W4~&#fQcXZeJ;hJ9@0lh|ADKoeW~!e-OI19d3MJLc-6+4~(9J-1X(63m)4`MKNz2@V zLKiUq7hTbE2L5NtEWSqgYT;|n`(NPa`jUcCP4lbNqW_2K_xs>$+L^QGLL>SICqs~v z`mP@Xq?YRAFnpygIqx?DVtVp&Vw)YDN*4Wb=#N2vv49x8-lSw1lxY1d$HMyx^yc|d z3mZ8#T9DtB3!b0Iw@+5|Sz(LIX@|ZV`X@LUzWg5WTJW&{$&Q1L{uJ>u*b|gIm2VQh z4&)`qncYF0F&3$WehK=K3#0vq@JuiM1RigXRp9%<Oyx@A}uPqwz<4)9@|B_kQkU?cr^{ z4iuTl&v-=yAhwe!2UHe+W8gXD}7a29K>W0s|G#_6WS8%kY4Z?X9SZ#@ak57PgUI3ZW2wjB>5Z>%F9&ux4O=3gmhs6o#!dmV*- z4*EMJAX*PM`URvOF81$5rg~U{ulA+6;QP6JWf*Szt*>U%bA9+L>355P6srg4)k@tO z>~+2(RPJ`*%R+yPhfDR+j+|lSoM90ApYR^={V`nq)FAi(xH+e2+`{@5>tr|i^)I@^ z&>cGko$6;Ex~*5_yuV%7yeEBqk#!w2^Jzq0&1=xFGhv;=#Wfe1{wunyW5@Z@yBq$l zm*u=GxsTOXaNb0E4?#Bq9qRk`Un3r+U%u9OPW62pc{4B1d9UGK`O@xQ9Ue!ll3sgN z&b!2==i5oXJ*(boUdwm{x^TRgzK!4=;FqmW-^R7{twY`r^7eGObp!k$-_J5$|AOgf z{qDl}*(CI(R~OE!=fOSjt5hy`8UF`w0XO??#vZ}2%It&WZnNn>5Rdi$HSEvZ3>&E9 z*tB2ms2w>Aw9OMQaNR{mw`A6)ctyb*j4c)3r^Z`EVFqbJ<>e)l&f)THc}brohY zuX&JH^n=hJ>CSm9*ZK4xw)F1(!n~H>raO3i)|(PE2LXy^i{a?s?qX_QIDsbhkKLYlm(ax@*N4 z&F^wQCQ~!PxipcfUWeeDfzQN2_~P~I;>@+7dUd_5)o&L5(miYUd$Q9>=&GR$_iNHS z_j=Y-zz@25$d@nmUSDs%-=6=2-d}vp@D1FU--oe!$L8nZmja@-;zvJxGw{9GUv+OF zKKDfB%P*S2hrtu-J2;;&yZ1nM47w*vAoZ)$;=%{PmlN<&@Y0(L>5qa}$8hN}3*G?k z&*MV%7o1O3ekY;pg)UtG^1oa^{tcdr*N2NM&j0?snE$oH-*8JV={$iw|3bYh|32t? zp)>7>zjX;80zU-)T!YyERDa{(bKo@zdPV9l_0xjt+gaXa1l9BZ5^^SP&3W>@=r}Vt zp2OD>gC#S=C%tOkNdEAddNZh9M{5LMl)MaJxV`%8tI=`brAhsTeJat)8u^_f(G;m{R!}`;AULw5`?dU9|BkL{Hvau%G>E*!9OC<=D)LixkN91(6+Iu zX*#53CT8vr+wZl)w|T(%$%=O%XyEpkon(~AG{)lEB{sH5B@;%IC*FJa4Is7d1sM<@-Y1Jx7GpT<6q^x6UsSg z5A*}(p+SEFKNp?Aig*1nL8M- zCE!)yiwSr=_%e8We$(pc<9N4|FB|!n%G(cKdRH_KR)HS`Zvr>;*m0k>Ask~pzmJmM zMY=h!OnN@fzrt_FOc^7?3p0LMf^QFep?R@8mm2VydZ_$M`g701ZBA6)wv z{w2H_d<;CkPSgp02t0hQTJ(M3bKvH=5+_Jy9RfcF{yAZR|1iLg^gl0&c0Z(vT>P`} zckIu3pBGS+|H?%EI#_c1sBid7^Zkt0H_S`0)0|tbq!0e$N2 z5prX{9_Sn1676>tX9vNzf^W;`OMIi~m)gx?@I&C|2-u}pc$J!Y>ooWj_`8J%_A~y&xjTD~iudB~mB(x^ z-_Or5T^FsY+SHtx97=xfPV~E%ahBvzo@MJk8}Qlkxd++kV!ryg}`i%HT zv31$>=EP}-k!IyJ-$lHBN6zah){pYYe0V)D`NbPnpzL%Id0p>HTrXm`fr=prQF(?z z<(Y>m}-+3(vc){1T%x~_att>Ka8HE@U@I`-qFdUok#SXB>foaX8kcH_mOMJ zJqe%pxA}fsuhfvPx>QeE1SZMpsS`9|M>07^A&>jd=P z``kGz(_GXZc?nF)jcv{<2}SDd;5$QqZ{u$(r*4S;;r%)98dr}&zfZ6=i#7RoQnZvr zCxn6FWVb%#G<_f!ykDJq_4Vf@o^8*HL!;2`g^q1YQ%;*7{hH~=i<}Q84Qk_$$KgLT z9__b{|AS9~Zxf-h@6~33QR5`pxAJbgvmvmo0PRTyTx|Kf)wDZ1Z=odbiv(GyQ z_H~1R5q|_=YeePhgTD9gSnuRs@=Z|8KSvw>-U_98ai}hAxsJj=2LH|CcbD{@1z!RG zv%I}zS9_T53^d1A{ECnstI#igi1RM4oZ}b9QiJiY{I~HQ@;l_7H*k8W zKWYbW`fzT&@6$Q3R)3`W8b{vPM_fLpzVyX8o1y$^n)C(Iw+o82hu}M{rX4InSNhTT z{IpoVpZa>zdX4g{Kfw4GIqz3~5&uYy8vn&TWQR`Z8V={Y>9~FE{C->Pe9p&DWrxGa zoA{VpA2W6cwsTCJohAJk=?wFe{3`w0a5IIq!M_JS=cqet2QhYe*j` zlCE+#lRiiKI={b_EwYSY){CUiLF7$+GH0I?v-REN*LOSVM@e5M{h@q0{rOUpKfX^t zP*UDn5hGLentL1T7x&>ul6wi~R$IzTuP(2+a8r5d1%4l|c2*DF z)KRxi(OO>70YP*268_(neG&if&T=H0r!4piq#18^Ltp)A#{Kfy7nN7snY!Tg)3zT- z@3<$k>+TH~44t-bBY|a8Ze!`TYxvtRrAgWGbaRqWe%XKLuQyUnZxZWGsz zBCqKmbN2fM0=fG6nFT)tzF!A9Xa@(hjdxEP+uWVu5aQ4VqRE}7Z7Xlsw~;4u(yvZ! zG9FGq4VpLMp(UG|CEY4C_a)n@Mkhy#bwL3hq>X^1DgowajwfK2s=fM_k@qDt&))fp<$@ zBR{!&na|9zUn>34?{3*|C{0Q3%rH6Jx8cI_sdVarO~!}l6d=J~)-~#3X@!5!H=JMK zw|8oMv@cC(dgCTPF6_$Y-#rA2DaRmuQ}BI3fUyfB&3n=G)uE_ zQQ2i4c}?HUdH)^A%iG!5#mM7G$-a$r+v(I7kp~nrvz4bfU&DsbGV+=w55LyeK~4Mz zul<%gf1xxk`9V8)HMp6-LjOk7CTL8giLa0Jt{9*2A@B}x$?z}X<3;Ev9evIx=C|nQ z!P^q#FM+p!pC$U1@~!^+Ofv6C)~5DXzY#fv8RYETx3Sd-I@1N4 z)b0W~Y6q3?#D9+EJi5!goEGV0SO<}_jGR4^b5VK4OK306*^BxA!faQ0DL!QTr^C=S9Czz2^gHTnc4lq& z!~`Lrn}@D<9dxVE9fEGH{!aB-GeZCV19#r&g7S)c^cs`96`zI_7w=TRvhTE=9ER&O zQG`LK9V`+Z)n2;cul^zJPX3gSi@VFWb_cCxXEybLAV?CCyCEHgZ}X3G_ItAV{(|L( zgt*w1-m31RFpllYQUm7~gg4~t>gOl(*ZA84ewE=5%6CBJE7mU!m!zMnj0*e5^Rvx~ z_>OF9l!QVRT4*n_&mj3Xoyd9b;9mLPt^9{%U)S%*wD!B0L9e4YKMCI<_;$;#dHb0D zKGvVIO`3j6a(Aj$Yx|+xyOHS5o*hlSHnIL}KO{RHmb_o)ydh;^{0MWH{x!uAY_ol?^#awxW>Oj6U6?g--~@aN z@R@Tz;^k6&SOs4Mf1*L`e^p9*4+i~}n>Svn_}=j)fBY#u>PfF4-RNQBP=X#8hV;P1 z%C85$J@B1wvoilHzd`UWaMLdtd9-FnqxLsWdau$|&-llXh7fnA&D<{adRtnW+U{(s z-Ttw|AC=g0o{;=s7p^C*f_H$MeeL%0ie2QYdaE2IKk#R&KT2v3`SHlk^4`=yVzrr3 zmCe6f@_v(xd{;!})>ZQQw${tMlD!oh-*fkUr+a6fN&IGbZ_c(WHXiyRDqxJvt)EtkG*;x#)tsYJMSnxL9T57U0W0-z!=l<36{u3;77jp6SKrXRNkE`dG zGTKTCVh7Jswj*PjpZ$xTc|U~FFOb7fs+rlHzxEzJ`$9!+)2Ad@#K=d<9pz2P(k1`W zxT2bejC5Wwb6%jIsc$_Pr(vnd3Q5(_=n`K$d@VlTW7o&m3?IuO-qvnw6yPES8eKx`^v9 zqrUO`KJ2{sJ6F%Q1?BmJ>REn2iJZ2R$dO&X`ibOvn~K&Otthb)rm&4J`EMot@1g(n zyf<^7Ie=W-o+A3aBIJ1TqdI8K`J4ZuEsF0ZtB-l-!A+(YfZrU(&_0Ek=l7G(6#m{K z`h7MZ{1iI*DIk~1ISyR|hb)`He7QmW`|&5{pZ`>(oboAM-TbT~cP>-nT_XGKOtfEo z&!*V7rP>ldO3M@Royv=ivzZMg-Zz!cZ$Iwa(@gfYhU(5vxyLdFN(vl!M|oG_cxqdD zmn+9K@(*n+@j7LnPawar{l>mYlYS`CJbaXfFK$seT8M+mS8tu8`dG*C+S;>yUdKxm~9_eV?#Cx$Dulp7^o(3@7(@A4{_L zA8dzK>@bAfxeDix-$|4!R|$2qsUIX)SC<(-9GARDlz5k#_^=*%>8c`T?NU9}(f>C+ zmbs7W=|G~qf^vVRh`>nwBe#~ta-9p!+_XNq!|RZH9JvdRbNcRFpWOB6TVFX3%Qd?f2IwcRlT(aTEUaq!RDZs<->sC-_nC7noxdNdbUxwXjgfwy(w`JfZv^9&+1?a` zq-U!>o?z2s{iHd`6bc}4*-QO*E{FUVlz6+j&zuWC{eHeb=1WVaU$KK->C*`P6!ev% zf2_^#LT5>(calE*!V>e|_e|E;*S>y2`Sp{&O!{lZpN{9pp{Y=YqGt=oYdWvQJ1Y90 zeKe+D_(*8AS-WIO#hZg(=iV~kfgb($@hFq(TJly&-`Z4Sz9W-)(8>$!MK72iR9e5N zW5PHG{biDOzm><*vc&NW1^6fiumqpbwbW6}_kx6xvx!lt6lBTfwra!J^ zDRa*iCEf{*lh3nsfnEIZ*3{YIjwt=P#It1=luw;aW?bq&dXT$tO^J6adSrh0k>vO` z79Bs-ou1sojp5_EBzGFQiyxr;jDs@YNtD}M9y`OkJyBow*y$^E$wpOY;2%d_dwZ9a zyD#-hV=<*SlHNvo6Ze^Ye)_9|^iI-y{q$Q4)B8yuCVi{;uk_QeG5m^Gqoj|KE?>>; z^wW2mbT(d%!-;Mhxmuz(@!DGj z##xyMKb%~jbCLN}x<2vjw0(92k)}QmBKO!6Q{FdKp9hM_jh*EhEFyQx)u$;xa_86_ zJ*4r_C5dub5{S6^kB)O2#|ZA$!9sPd6r4@#ezly?vJnR9}2Fkgzr z&+xb5?RtpOa~}Q{Uba&wyFT=xb=WoalOlR{C*i)HjU3FL`kB-7bL3;~y)Hd_5Yi8S z+pklewm~un67`I=$M!8=>cv~U8~AnI7GAK|!6Wdy%G+MPh1i-nZ)@A)y=05GV~ag^ zL4E@ayq~7_zcZE}osU~@bB`DOV{{s7+_u-qsjsAe`1h2zMRG1Vm7LEPmD7)$wv#FE z0hRwHr;_u@qH?B@bL>A;-d82(l;!$#Q8~FsGyeW<%KNh9Jm*yU+*ediJ8~9RQr_1j z=j>C-xxc8KQRMWp8EN!+?5X4w*XIOsR(|L7*?1~B#r3IU18?B>Devnl*KhwW+O7)x zXQF7i`jAul5b<4des(H3lZkQ^Cnk|I##2LIlAP~^<(T-(nQQ0Dv3Eh~6@21fg@0=* z?R`c353a#~Up#zU{>I1B{?lo5t|;@s8vGwi=I@8UZA03dQU0G>ga4C-{LLyq{0n?c z+30_N0slbo%mT-;8F%KFX+w`JNKR%m?YT5<>-9rx$th4|0M*SUIjzX4u1b5qR(alq zoFE>u=4*2w%si&pwy7GBpy<`3Q^&xk4{kr%M!(Z|AwE0d=Cc6edk0u4~9^zku{|NkM zUHd!ZA^Wc{|2jP=Rp;{mz#9As`K#V~;O}})+Pp_Hb8DF2wvT+{;Jqx7vtZloVOnL+ z&r#$oJ}+(Fx0^ZF%E^z{`1qBZH~Z`CC!pWY!;PPZH}j|zTMORtoGvmk7^dvHWcMZHHeHzZmblM6_-}FVGGF;V$ej56X7p1+s;murGKyTk+=;&qNlh9AJ(QnJo&x`44 z*EgDD?-otBBszNVn6{a>wmyOJ#N}!4t_*U|PL#W|d?32Mac+@yhyirdHLf4z?tKaV zAh{2{&#yOYSARVwy6=)|-QwLsl)h?<*TpY>Ua`fyeT&z+rMk0xg_o`ka2$1i`hxP| z^e*;dUIYzui}VvqwsGZtoPgl>A z=-G0W)ANi!T|Gyih(BHH^nBOYpKQH1pGCa7!Rh&gKV3bS(9^rg>G`4e{z=;NFe)B= z68$?bk-J>&{hW2_NjrZvZJ31t?owBp=KdNr(5)|b&HVzJI}e=F#^(qulk-u-#xEQdoPoH&;Ea;FVVRBl=fvICmL4G z-o*HmX<2%Oh1sdK|S`~ts(|o)9G)=(%wC4?`IUzb1u@}UH^55ZSDj;n)_?Fc$aM1`ZCwdFDPH6$uHC7SLkmC zGP?)?YW76R^ttP3_H&8N-t@Oe(f8Q6)Ay}^om~HaLi%>Ek8?~#Z<^is2ookIOB!CyVWwZ=74&8EZcDxbg~rtk~f zCG09clBOHLE$|&p*-q6L96{-|J6!d*^XT7jpIaAy=v_(r$IpT2GsuY>Nd5vyD{||Y z>s3#r-Fed@a--kCxuu9$bDpptc>|wudcL=aJeFue=T+9F=R9&-KI`Z$dd znsXT6elG2$%z8mso>|Z7+UHg^()X9d7j(MJ_y_*IpXbd*;y*jgAFSsToSz>mVz?={ zp3{t8lgOR=V%nZF`Pn-|^^9I-=%uJ`fC#!wlAC?p7S1>+X zD6-!^=JZp!JCQp!llFeE^`N^Fxv_H+zbbM#-S;cWt$Zfyecw%ccS_$k6p_Qr^}xACCV*mU;lcF_N90{iQKt=O?w}ezwRp{ zHyY<|D59>3$GLjSznJzaO#LLv<2mJM`QKASV5I!WUHrGSw<0~W>yx{09daj;JN%2Z zcT#e{dhfdG>-KfXt$Y^!=P%RVEvm1#7Lhv^>HpKmi}*joN^{8%dXU@po3wY1+Uu2x zatqF>eWgfy_0OqE?lf|1f1CE+E`85Sl*>zIqWXG8{Od?a->PRbzx-X=d>1uyMiIF& ze|Yc|_SJa154n4O@8$*Hd3#d5#oGfTY_mwsVg@^p-mA8FEMYJR*SPC~EfrUnAL4Cl zM@m{)wof%}@mTh_oD?SIY)vx4f>J}X)SwxS6*((2R$`YkSb_0ZwQc*Y;YCp`sf@>K zTIg?z=o=fSyr_sB29Tjk_12Hv>P*Iai{zfMKDn2jLayTBJaShyWXyXEGv9fezrPmj z!?<|po;S(G;-T3v?OjDqRRjLIG2=a1=RiM!oTUBX;Yhq@^T4b-VR;7NZCfgu%STFH zM6K-7gQXfFU!qx36lTroObdMUKPKZnR_72O98NC(Sfu>E zpUV4gHZuSg{rJb??2UGX=&~&pU3jZbn#x=I%<7MWtSc zKm8DLlKeDUPrjcr_457n5Po_DKP7_5PcL?U8iKV;hKpfvs+sv6k;nKeYpN-#RgMb6 zf;#Je6&nY zSx@=XJ;nN~P<*Ol^3!#0#```iS$=2NXvvY zimlCTWL(Ea#x}Q+v90_N6Y3+Zs}7`@M$<2(pNGY1NQ(NGnO}4PR~MPzrftxt=}~{Q zJ8oExrIPrwg|%($QS$=kN82*q?<>*ww|6JmmvPaC@H{nj`<7}R4LHUt85a0i+`v-M z29|&}q<*r+V`C=uQGRd+HT=|<__=+HhpOt^Qm>~3e=ncet@UGdUxW@3Lql3hC9GDu z<5wRz$q%6-B_E`7wEd%;oRI2RQ%tv&1<0-DRA>s%H!_qd3lyNK4_k&%*>OD*grZSQR}1y(__eA_{iXJ3V-2ejGsg7cpTy3?Ex*MoChc2(s;a;2Xp3LlJPniLuDQqO7asO7YR@EDvJ!my3|fa zk=J%r#-1lQkSLG&bHwi=?PO-db$Hyi0xz7}Ks%x6=?iT;d82U{Tc9G%WNHJ2#YV-N ziTP$oYm@e?Gv0?DP5I9$qVIa!$&aa&ZT!5~4hGOpQTYTv{KlcQvX-KoP2Wr*sKM76 zl-i@Qypkk55A+7^-VM>E5IL0Ql1}lb;xyzb>Q5~}Z46&fo1vBDB`8hJhE7}!M7NM) zJ^pE^Bk&&r9ZjowHqx=F^>^E9t}Whb@Fo7Cg>5*gJ421dG6znEPpCZ{-Nt&tZ5i*! zY7aNPHObF-PiQ9WXp#1CD05x;k<7O834W&dnc?kLb1YDgWwZu~5il>~lIu+2Fj4XL zFqWZRqc;UeXb+v+S)Y1c#^WdxDC60~zmrjmN(8mgI6T z$I4CbIk4fH^5smYI?{m+S96P58IYwEIOPRb602LvSFpqYtz|#4dYD+foJqY$Ls-If zTQjMbkjf@HDM}rIa*Urt+#lJ{Tt30il;I*q;&u2DR^*=lZ%nTIm&2}$yGY9HH@jEnFmrq(sj&*b@>hr65cllswg5qm`Uh2`+K@Pm8O*HqI*EfNry z`B@<-4$z4%q*9+U#in6U?#0w)B(sUZkCOM(@7lh1JBJ7uned~&cY%?SI?g??Ck z3ktK8fq&dkZf;KvwWfqx94Z347V?%`pQxxro^vQfhWo?CiMbR>8|-X2IT@ji`*~6 zu~LQ?Z4%eIEBZ(oWjjShQ{T3t8Dvt?gc-zhsh-DoF#djT#(S>n`K|kt?J*GP2MX(X zKh8SL&j{{4hNBK_NPWWA^G+3e|AtFQ=5Po5hpTf6i_?a_o=!HM7SK3;gc3AxZf@{zDpsDYaeB{A z=KCL}5;=dEIWJMaf_<6GAD0|F{B;D`aT>WD4`jUmG3!c+{t-X7J5*#@si_Kil{|o4 z`t^+WD(*ACwet262RPtbLDTf=N#8^IBUNudA$_fL{=9BxE87uf@gaCyPM0S+{m5y0 z(8>A4!Whbxss&Uuzt8NxyS%&HLGb4(xp!}8W@l$-XJ%*j?R(p%znP*RdCX?!__(;tY9b@yP>n-1LA6l6UL>`i9h#H?F_54AI%Ua z=;!~d$=~jF8?O;Gxc6nCm%KiZ?L8rVJQIITWjuT?gzh|Vj()!QJjRW)y_(O|cqWoI zE*zZsIV4h$#sTW7J|f5XrRd{6r+yKzh+O06bfkG6P2!{hm+&V)N1u1L7JT>&WldCZ zl9Z33d@|)@g#P34aveuW`E<&cQ9eP+?~j*r<|JoNN`Eb;yt-?SQ6l{=;UCDDi^Rupt9}mETV^V*QpW#1%SLdS*%20pO{5|Wl z^!4lKWhV(eUyeGD+TAmSUXmW)lB~s?Y&ZaZmV!SM{3}FWds6f*37H@I_bM^Aq^k^Tcy&*#)ln160bbs^{It zgI9V~j&Z)=-RZ>Ba?ko}T=0;h9{EUpi@{saJ;&I?wR@x!Pr6+{CpSE)x*C;N-3*?2 zwB67BHC}37wGT8805=)9Cx!mW2{>ttJWqFx(;klirVoE=j>$3pCGE%sKAk?MtS?oi z9hmJ8Ad8+gKz9p^Y|jYYf6Y!$H#u*bX**Ai$Za$9%;RjiJpjFgo@bVu$Rqz!{v2=1 zBc$;h{;7jJ1_0j*{4tV;yDkIYDfVwe26@EopU7h&bXWJt(dVL`m4R;3xXb=q2C|c- zUAv&S<*Xc|M&#QzOUXmEOFuUmZSQAoC%RvTzbwfyI0DOX#~kolFMit&U#|4D68O?{ zYU| z^C;gg{e2VVy1&JEGG6pM)|Gdw!6yJy34G~&ImT}Vexw6l+Y4UG5ZCK+l?ST@el_q@ zB@R7L*N?r>^PBkdtSS47&h?}pU(S7I8=>3$ha7`PCOMBO1KkD5``3D8Sa4W?O_z_1 zEB|QLs~^lUu95u(Tkl9WuGqhslz+|6$xY91D>-fX2;J$>Em&gn`*a4nhskdcx|^Z9 zdU=k)Q47QyY3ZiKjoBY&ShiRG)XzX(v@*wF>n8i3py%+X)pi{6x1>0vTKR=B;4OG6 z$6%?Seb4FfUP*(uQ0jXw$9PuiJ1QA3em+1$5}x)$8^No7A;(~=3i~%_B=H%?`*RAO z=&$=q`uAm9-*;%dcK_H>-}?f;nb44r@H+{*3;vU1 zutkY{ROjgW4?$P@Z=LYl)nhQ7L(ia_dcVCpSMw3d;;nPc zyM$i%vGf<^ir&8I2cmROWvAWz(d9Ncq>b-jIv6OSDH*Zl_p72mODS)pyiv-JJxD!sI@IHQr?8TIyk<52ucp6`^B4~Z z-G5Ds_qUwACi9>vaRsXArtMl^;7gD97{3$vP0`EcamI&T_ z@U$I}I7%J9!EI$X7XsJo1dm$lcTY=Ce@Y5{(Zh{GAH2tf{>TI#elvF$rN>N zN&YqHR}YV|Qt(ed2>z^&_wV|8_&AXE zFb*`F@Y5GK?>Qa=bwmECaIBRk;=LlJSL1=7*wce!dm_*?pU zj8CM#n-cZK+kanseZ^}0YzE#s*JIR5eFC2{&g|C?+b6=bw=4fz=36{W!;#_Gu@3b( z-)XJ%c7VW_d5p2C@H!4?ZRe|8!A}By=J}nczgXb=dyMPS)8C&;e^yvr>wq8BdHA5fS9TtLI`EBy zJ;pxKYtc9KG;a4e=jacre{C%lySG%}FS7l|*o0ok?N;KQn^~kU8MJDMN&2&*Te;ew zxEuW9As*xZM4!%a;wPR%1Js%S&l;P47Ng_s0Tb~zrpH(${2!a3N7XVk^?6bWKc)C6 zR`#G4Ja52b^b z9Db$GFTfw>F}%{w>k{p>{T&(`QuTJQtK-3&SM4!ef;YND`@m9)kDlth*FxYYUg9y< z!n1p12YAy7FYQ_fy!U4wohKi5kajucZ?{YE-Phw^!QU;{{S)nS$i>#D@ea8-^tlrJ ziNkIDQx6Yc{96O~^&FyowbXx<=0D#5#Ggt2v=W#Vz;C(KV{8|B?wK0zfB4n&02u;_ zW9_mZccs~YQ!e!$fX?KRwqJc-)1lsseznge{Lv_nK9^45JLy-)gSX{!+b%BeP)`TH zx=`S+u>GnNK7(If2Ylg}&eQ)w;IFj(YDfAV{Hp&3`uD2N(;p%5V>=JuAn-MvhhHJ^ zS9czMm%v}sdHC)(0za z_QQP>@Dn}8!vg_2&3I%3+5#f;SVqzQV_#1YSowmcg&)PX_;bTMnnD;CDg}LGW9_ zm-no@zrHnYAGBRcyKbK~HMiCcsmuwU2+`!>kFK>-eWu>azEY4S7N-U=GXgVh#zZ&UIX+d-saKgymyY?#RsFe z8G6?3-yeVeTGq3sd-OT$o#Sul!T76%-i8_2na<1a^n=k`2fbc*dW^qzp5AE(qu0HT zcy;FYM{hjztXbb5y%o?iL*EZQi6`B+lD}^7=yQEi`xiGQ%A7d5H@ja-JgFQ|jnD}~ zr{FH;WzrAlq>PIWbV@SPSqPo_xgKM+(6Ps%&KJewTXnv5> zom~vvGT{C!^4_805_*un|4u#FxZVxDf_v@wq;vEF2ctLOHsrPN`{VB(=(YaFW4zG$ z_Ga3?q5R4==uN)QWBjS}^nQG>_V&3QeO%-*9_&25Qw~ONI`oQu|NYV12))Voe}D9P zkZ^BY{Qb}q`#1@D1%I^ta;pAyu#Y_Il=R?CyPaJDo%#nn2CqEhxv7+K(SZ)3M+Q0v zpws-I$5<|O>~WYFUy6>?&Yqu+jq^_8GxM(=gIDjeU$KL|eWE@7*XsuP1b#IS+xAxAJ85q# z!K;77wzt{o@e+2^VW+2qSG2^ow>uMZJEXl`0p6&;d5k;7POsJSX}7ns>ZB4gDxW5P za2N3VA7y=)H5~T?iF%y#vebC>znRAE2(zHUqtseUJVO`wrs!9)<2b z&@~=s-kuHJW7EQO{6S#H{(|DIS*7Lux%TJc_ z3v_viEdwY_f#7$aNjwd{DnBc^+)sI5$~RDsd*MB!x|}Tmp{z-X*D|Pm1!I6K+Uzlo z6S!kF+%TIDY2S3pYbgI*%5!x&_6NCetU;DuKuGLwR_$!e61)}QS#R0v)NNBb_QR}> z`R_j9?FO$HJf?-LTWUPVxJlZ_DE0K1MSs8TF%}E_W5BCnCH%FoZ`>Y_qZEI7ePRT7 ztKYHpZEm6-^=u~#sW-*P=b&ygU0I*Uf9XBZBdBX3`1`jKw-!+E=tRBF@ya;xI2UTN zXLd=SNon>#kdN4b-O#Px?a}AO?Mq8Hb^Yi5^i<20UJsZ}eD;aQ;ML>Up#;4o`D{v& zkI1zaym_B`j3>BuuhR0-{cew=o8$f0K8|D@F9ol7kH;7)^*xZNuVX&pzmD+R?ibM2 zN96DYbSAd4{*wirh?9Y!WM zfIQu~`u)=5I!CuN@0VT--I=*IzqXx9#3wqg=X!*qLpxE06 z%C}Hn$hG@xtv~v`y!agMJ!F@kC*?89;kVsx@zhScyVvtS;4SDi3;ZhyeLSdLm3s2; zVm{L~*SJ#fmZ#QJ-JzZVz&8T_D}ldP!|QQu+sFB=M6>rO@z^)=knvXwUaxMsMwQ6_ z`UIZV!*+jcpHFvkia)jkDCo#XtbEZyF?e8t}EvdiD++TBx^x7!;$>EO8k zZMQcRDQ-K@gwk?fu9Gx$pYUc6@GLQywvXwQ-4XWUVn|< ztoAof6KNG`yXmLgqMTQ#G5#pmaX_-&oSAf9S@z@%@$O7$$S26Z>Ci3jmuvh|9m%A4%+a=W42laKJ#{cgrn zX|A!<4czh!d?ov{tPHQ!sFrau9(wZzU~jor^(Nxxgq_HmmSQLbZ!vhrKpXEb@X-l8 zk;7*2>cJZ%_1&rY*Kh4+FF*IbpnM7CHBvrBmxr>3s_`*Z?Yh-=w?~BdFJQxsOb-VM z^${Bo1im_$tLLrfX!!qMe&Xte>iBD7yTvZ51m1rS{X8LfaM&z}bdKO)lYn&?eG-aqKS${9gFkGvJoo4gXR=fj5Pimnz@ycAo%7NYkY5D7L9{BDI^W0XuWBbrI z8=-5A%Qfyh2D*RAKzEZjY2I);XO+pZxLF)~ll2_`{-TafGf}u_i!rJq~r`T4priRePS3F*C7>J zj4*U3Xr?%Gi8G>T3TH_nmBjx@mc#HkZ4pck_tJ!*mG~cYuBlB>UDdPEt_Mr+n=ab5g4(Ye8!`Hl?(6}Q*(`pdFb7+o6?PI=Br81i@?j3=_T0g z=J+c)V(&7gZu~$?XdV}wkCufZaTFRY<~J7;Rm%_w2%LFEE0GHFM0i>CXBJKGW^t-p zEC2R$#@$TLuWELus>y|i(_>mqkU#&^2CWfriehqZUW%4EI|8;CD`27N+@~qJ^Wj+c z4vnFA7z#8@4XY4%9j^DG{z=eT z2Ax^L|EdK4#94~}n;rZszq1(l>U(qb^AZnqthZf1vuZP_r;5#YL1%R+*I4hR-m`8< zr=K0pT|Xm(y-y@{w3F7ixhER26~f|%zkl($0=1lqx(X}^WSof6Q!S)XP}qFU)I~{2eW=& zW<2!vLvJy>xQ%;F&9O_4)O~I>pDH zgYmIT=>5~?gu@5_&6hjo->Rja{F<|C9Ucrth zOU(Q63-QOOvT7Xjemi*R3(j=#TfyHU_)`=3Y8=I%qq{4~9~CQIS^?goH*$?SnU4%h z;5qDq+OML+aeVS+XJU{i-q3CGh283j0$hP^HTd6KR9K-MF4wqkIlWzl6`UnH@yc$K zf#VEE2~E?OmKuGoH30#~3=^UdnaM}ypCf+9{A#nE&xrj(^>aL*A^lcMx%VCNFKRxe z%M<=ILtgXI42Hm&husL><}Ku5gzl=&(S5QLbp5}_e!iP)j1{`~c8+dyC+JRx?xtLI2cE_IOYCFcKakJzc=dCV*F!greH8hR0d5&^)5U)b zPg{RV+>uSPyA;c*)_IaPhD*Imq1T*i*Lzm_dM5$5S@`pLjVUr8J2q{-@@%v7-0jEH zHhXZl>g=5vII5;1KI8dU`A722KlBAO z`*@8K$wQsv#80f_rR2M^zDmax><-ItKYMzn24=$eX*x<3-D==hKB8ycA0%Es)7GKv=3(5b%A ztMj%)QtOjd97R|q?uEZ?z!wj)`8zok9soYl&+b2=zZZFpdu5z<(Qx=<6^F2mMQyaq z9`8zuL>2%m9~tMB;Fp?S<1E47IU%`y+MlP6b647K14{T_2))99&G#eFOJiRI?it{g z#o^|shwBU6F5tERmo4(2s^N6|?6z%V=B;9Lz2*Um*8e}_?=JQl=SjQfI@^_^|E(SM zU-%m%_`~dWj7`s<$gcso)g!&elTyzRXFZw5Np{x^@~aVlvKe}duJ9T+b%EZo8R#ub z_NV7(*gp}U?+c%O{=$0n1g}1SgZYekIdr6MEC3SALz>xFQQa@6SLlc|Pz_ zhIXrY`$p(h|J-Z*T;zCD271Z%@dp{`)ky#KcnJIT3%mc$gI*dv6nR$yw+J|n0%d(Q zL%k{T{!v;7AaBKjARif*i=kV5lh^1e^68@MPs}ew((z*&9w9r)XjNqeYJ#EG0k(lZ zv({_yN)pb!8?X4+_~@0gI}fUL6FYCeKRem*C_)d~{P^Lg&tHjGZ@1;~j;5D7FOq&8 z0o;DzRKGqCoYUUL_d^~=zdi&#?+m+N@6AB(F#7ci==Hk8ZpY}%?db6^`UKp`qECZ5 zQ*YL;gX#Mup*PDOKe?TvmvQ_^e>?-dg4uREUKy8GKczo*0q33LH3mpKmIIfrKa%1h z4z*4jhE*&7*!L0o7kWdW?Y=X8y~5uZ;EL|D;jYUJ*8tqSyKT5(>EUFYEd{ReUazrU z>OC)QJ5u~i)^F3dqZ|tQBl2-Cq5j|4_IJ-U>E)BGUq3yV-53GA{lE38X7Y z!`rt*$oQTPT;u&-^-gp5$-3Q%@y+;*k8jqnQ--(RXZH;F#(iGBA8ao5C?6(%Tl+P% zvE8ldJsyl{y~jiR;sNlB7kQ1RLh;CzW&h;Q+vU@Tvchb9DcnK|!4Pis{g8{i{uP z`S(Lt^m#LM%_Uyra_OJ>Y3ZhnlWcbecFRSs{>Nm$wO8-&8=ID1>ibHwA4^NHiZ}g1 zkWVH5rbE|w*=u~mm-|$w{%il_Sl`%^X?;W5yAC?5p>wvh_j9dJ2|pM2H%a3+t1-P@ zs8N2m`%>b?rC#HJ@D-_vk1MU;&T$#;I4*^s5#TTSyVu}RDdJ5he%$X8Rkt5dFh8B& zjmOvHq4$vRv)rrKOQu2Z(Dr*my7n=>DQI zpJI?|gwG)O1uMM z+@2<=DcAaU06LA(c}D2`>kxF9UL|cSQPEMk(wEAAF#lQQHI@mT$DDMM?VAyQhfG#ocZo6USqlN`9LzC@%7VNlNc>m^TYAr?FVnK;DyrinW7h&)>X8; zS3qycMw^cz2|hZG&%099v{>=;1^5%+z(420PtUacq`r44Kf`gRlf{o#((#KLz4~1A z{#V8IG2w@^Z|yk041zZuyyC51gGW7?H-ne1|B~b6OERrrDE|k&$^Wta-@nq*`)>a4 z3F76QHr>a*AG&>{{m^aR<<;xqbG6*s{d;!Odbr4IDe&bVdW|#0KHZd-k5oOf(&@C= z5s}vc=xvJG?YbZ>z3(Ki5&uU#`H4;Ugzt~;Qs}ns@fyXVFZ-@cr!PD>l04okGK}{| zHLBSQhaB7t=nelPU+U(1M+Umdd197{SoUFy6Mxy-!Cnr%CxpMl&n&veeybjDi%Yy! zk0mC(TZF$XDY3&R?G~boc#~d-jU+5mrED!p++l%AZ;gVB#Q$ta;dPaI`w6>Z*jK_e z3taq#arN;N%N?NI)n6jdqiOf)8QMKF*J(emVU_GL_1bmXlQm6kx`8#8)7W&wPc|X_ zf&##(muAA-^@>Ls2PeBYs33O;HZ>at){3sH-VT{nR8m-iqVS?s>yb#KCc zqAO)v8j=%Kpa%1@MBe_G%S-ffFYLC6?+0^viC!*@CAyUhUMo2w-H_vXjof(siM~6? z1}N)jnsv@HB(iAG=tV?MV0rX(hqDu zO8iep!I3V8j{b<9@~>q6+%?a*MeL4mjI!_8DSO{hmOf8MIrJL!zQPf}FF88TI9B}2 zW59Q`>+Aa^fmGU<=eusHN zavtQL>6BT{!Ik;TfYszTe0j!?WnTCg^z{6jI3#uclI_mQFo6+2)Bv5*6Z4E7Lg(JJ ze0A_czfC*8l2@5RkdL%?8+2=W<{3P)j=xMxH#N?=CR2RT7kYi3WPWf;p5D(gEYV&S zr^e&Ibo;%=gIDrx=+kECtcFgWijz9io~)PB%ex$E`Xh4c^EBiC9NLwQoX$&2H+5b0`V7nT zYX8=B=xsVTPoG<}Z&W(Dr_!si8fkA2CWg(E z^Nc}4Z+V9HChJ+34D{6c#3bk$WqJDi!1FrAUs(ovioa)|SA2e+K1VdSQ}l8((UbXm z{TYq(PKLNJFGSfSPr6`bI2p;U*`m{|VxV&Y*y^gdm|7K?n|2%`e70hy5L#XPhMS z^QSLM-%ir4j&^1rk!fECeIg%`-wNoKUYuui>jK@Tv~)Yn1CDbMVVov^isVmM{>UbC z0?&dgx@|ykn_NNW4nJ@I8Q^Eu9{~BY3PLBT;E50fF(NdPd)8VdwX2mRkR2CUH>MX^ zqYKd>GUA-H@gZ-dcF`xqwZtBTX3D=VejfjdK9bJlIZ4{7*WbhpvfrB>45YgCa##7q zj_bq$=rYe+Au@wb;V8z5_`x?XP2Ug6`j+*JbnPJcb=505Ty_6nh;1Bi@Ic8t8UV8(H;2=;NRj##`n}b<2A0` zcfxlfz96sU%tPLnKF_fY`~~%S#(grLM`vhvvi%yKVLU7Q)n^U%@U}cX|2{P>y%ay0 zm2v*vhc-=z-puKF#+%ZCINgqvICTgwpHH$Il^N#w z58|ukBmQhRbgS>q)9=wdJ*EH9r%KdY0t|asPfc>dQ>_QZ)6#~>bHG~iP50y(W4U$@ z()!t+zezq{P~w|Oz&{B5k3^n5HGHC7s(#0FbXn2l>ec*8uRpGU&XQjePfESnx*ee` zJrCfpLhkDEvkkaL;CTFj^L?ChjOS(TmQHf?gKDPEGxu1B{h7~vNBDi-*^lu&vy7!RHO&{2HccX)h=K0E}z^{YJNs4V!n&WR5ndVQnA{Gc=IS_h!J?Du)b4cX8g zl!0z@lAdKPN^cjNA)!9P?}!)4C;cJMI4cLb!!yv`ltefC>a7mC?)CVGzvdbDh#ZEcrQ2bBYf%Qe527pb>C3+{(5+sQXE5wo zCxx!|U#hRffj!V};NsIZHBJ|TXMwj^^sY+^Ka3L|DR(=@>4Id%Qwq#m-1SHFZx{5I zJZjV1IlP^Z#_r-sv#%jN9rvV--A6fpsCM|9m~So3)8}M8t?{)T9MWxBcfHm;Cdmvg zlUHaPW58?vd!F%u^w<61sY+OqmicjfT`oDEye5NKtNqYh3cZ=j@{Dm@yT@sI@&t8O zR=K@!T&&jIHv_kNb)L~A{W&BrnKrexZC6m`!QACf4~Op!!vpM+~l^O#oO0D zALeLcO?~z-gbY9`S3e=dR=U)vt82HH0l@e^CD=fAn}p$83b?B zx;*3mq`!wJ@RIvGCElHsp~Gj|-T-VkTItnA}msg`^J zyvRrR+YO!8_4Jp-&F@?i?=L5R#LY>0x$LD!q&IktHeJ#4%9mMheCi>QvmTqdE z9HHL`np-1pbf|e4#6!T{U!W6s=d{b|F zzH?LXrSIgETrd4RGjA48-Y507zzH9H`S)6GGXHX4^!MqM`x*F?*;`t<-gSIO+mTbv4%xKPO@>RCK_GmMb^V&MD=QP&lwKe;C&J@74_BZe@1>f(hcYx{r ztr>1L*L-?`xn_U1=~{2T{%vh{2>iw-;B9N3;Ohwkas1DHKm2Ouz)QF18%Evfmztr0 zw*YCF;SXx_&B(w{H|HBx-ckG+-`3W)KIaVJTvvjdgx@li!j1ZKX~oEj%PKCd7%|+O zwR;|n2Ev=o@aKW>x7N+?didoDgs<{eg(npFMmARXj=ZQ){`3koT_jm^BM_nr`mo~BBF$@SOXCO=FsKLV4lo-&0WRdS~$pF3Ai zxpv$w6S%nc+FI^iXZU(o`U^~M6bY5*P5xMWekS~_6&4HSPeCwRZw6^bkr}P^7n|W1 z&2W=-oaLgwYiW1%dcgKrUi(Ik8Cna_duDit^~FanLof^X!hp*+=TFe*(&SRMp>SF3 zsy)JtO!t>t=5QDgu~|35Kp@lZdLf3Kmhx!82*QFvn6Pk6qw;j{z7XG z#Z}>d7~`N z-YVpbeSLd7Z!rL~Ha`$~ZWC0j8JEBpttmIdg9?1TsKIw+b|7+Nfp6vDLYjK685vw8 zt?Oq->k6x)4;RwfK;)0=tN$O1_*Gjb`m^E#lq|HiFc9wHkDVn=nA2GI3Jtty)Do9Z zcEEymQ4M!}bN)x_b#2S8C8aL++2=LRl zat8XlUxL1U5`7zdpF;lTSOy6Yg}g8hPsv(LV6L0rZW{f z$&5}J8VnEcW0Hhx;PmAng$h^p`ESLmy0fzI$jKf2XpHcS0H>P zgJg!6!HJRu!(Ul*sp`V@l>=cpGQb~(Ownq;}1mc@Y2@>W@K`;89n;rW2I&P zwQk|$S98|7c`!G+Vob%A6<1Y^y>cz`x9Wc^5Hv5mE)Z5SZTSOGaw{1A4|jv%-YpT; zsC8yUw>=o{6`R%$VTO;3O^Rj3;&ftT6-$BhcXDKBzfP3wQ z`8likMN>op__a=9T~*JW1^SMRdB(qQ&NeOt%?ny>9z8bEx}}ObLhH+e;eFQ1S3ETN zBkPZ`E`W)V9YLvWWGC9Dbd+_0z6pm7SJ^kqt6_D?l9odL zw7Zz$Gw+;i)b=#PU#}lB*=U;Ei{6xvB}rB~a&*fP#FL{5NwiC94?jY?%fX7w7Ys8p zSGj>`eqgVAgR3@|alD}*h6(7q!3?c;NjDc+MZCL54EQlpfm{@*3%Ws>*mD>#N+Eh# zZ{M6}RNg(^->dTO@&4Y@fYX$Jmn%#| z`FaaKYELnv)5-zJ3r3bpH8D48<}xEVoK@Au!SG(|x|a}4XkB^2F076HAP{~h5MHmF z^$0ItiV@h!or+LfR^0?q(qCNzrxB!vWol}>q(DiiB63*)j9$#@UN9;VQFz~TZsGKt z(@_t^Qs51nNCrQb-PbuL(_^J|1p@;=ziLKm+l;S^IN&t$XqfMc&vg#_W*;g|GgfqC(`5%V8(t6A?qImXzh*l^(;4}y~9<2O$cY(%WJc+U+V?_ z#_?HbO{f(rM0{NBS64&45;AyN%}}}5CDl9(N-(^Cv}%SR4yGdI50mMONwvc5^t);L z%F-(O5~&5k9q3<_O8)~oLD4s7H3@eueszQP&>H%VkxPm6hl;G+_#QmlUh5k=QW&n| zTaN{_S`F>Uy~_3We%V~}Rkr!uV~^^O>3jS$MtGZ9w*J=hLyfMm8bFLBlQG0NTEpO> z2VCdJN6hG-pcgoZQZ~+XXQ) zjrenrxY$wX+CB`48UDBBh3qh{1Z?m-M#sIgpP7y)4PnBh;Y-&~I(H8uF-=9f$99EKsoxL?zc@-h4ufi1?1 zKgHTntv*AFfiBUh@U#ey$mHv9)kqv$s=+Iomml$1!>4pnrQZn6N z{FGRFt1spuK+MCPa%S*vf3yjrYk&feNnOI}JIzf4)WRGjbj`R2rg z1>(&>*=uzzICo+(>A!@{y|Sg6pTX#$+5mwJ@nF4ZB;h>jdquUf`(gI1X|+7MM7k~w zjl~DhP9~ejNon}ql9#Nn@@;A8>0>V|Z?MQB-jl(w?nTvQL>M@(u4d#J)nnH7N~va# zb=UnlN%!fwQ-z0iRxGJ2sWcoIQX zn=m+M^_1@2XI=MITbp&^Xr%sEk$?K)aU+;o4n2xlKJw`|v!$PmqEwU*6O7-ME_{%V=1SIZ!- zF%jgbSTOxqIq4^Y-t|f%5It7P&W?|j6s9JB$yi~2%W%0wc&WF3$fFX^7mJv?SBO1g zxUWz~OW87&VL830sH0?9Ji+kiG7pvJ{FB$SnBg)0iNSEKe{ulpD_&11Pqcb70L{o^ z|1!BVXKQV}7+U!uA3-X3zKAR9PvzPhs!UGTqf|X>umI@KC}nyJg|7Hwp<7_NM2|^= z6bjLk&89}N)~%**%^-3Abw`>J#>tMhYDny`Hjl=@M|1uQ0ZH7YxUo6V!bd2tt#1f+CrrszwB5KE(jRjR(UY zTRXq)VhmdEKFgrP>P5P}tm3n>R8RJjo+LW1#Wm5B#l-2l7kUd^fwh0T%ecF+{O*Ya zsV1!t`Y+-lOD@WTk;#%-^c{)2Dlb56%vBov3;4!v1tQw(SwBXU74sIW`xWz+`hP{a zn7nd{ye|si`+m)xK=>ZjxmC6aWCZrIM_{S7lQwdrz`jvry}=D6czr`cg00`gCD@0R z8N65LCHPOGkV8rEPmoWM;HPJFPJ%1nJ6s7aX_ugk5^EO>iUj4pNbqlbCrj{A?uZ0M zlSP7pmL$PHK_W?l3%H?r*o=t~a7ouZC_kXyL#X$4Qm>>SJ^c>`2z`_Bq)3GqD=OA& z+@_mmLeUNrWaL?^Y>NEEY8@|Or-ik7vW}y^$V%G zI%eY5j?<-Dt9~GfkWy=?6x(xAtzCX8D6-C$0w#qrNsS$EfA@&RYrwKhv^Z=*)m?A# zxV6o)qFZBq-oKr$n&Xo3+h_fKxO5XSm~)a_ufzAN?Ky5eTx(CWL#5h2vX1>6fBG4y zE&IMrOl05iNIa4hzw6nQUO)LpWHMQdF5y+qi^t++RJ@)~C@A52C50@q?Bd+qq#^c`90A4N7~qL@?P z%6l965(~}j=H3llo00oB@fAD5oV8X)h{|^pTyD4SB!0mAU(XiXM27u(xflLOMt5;U z0-%12IB|_TPchaFD@d^fS9mb5wdW-HL1sg_3)7GLBo#es%$vXzl{;?>h8$qX4#*Mq z$scm7ef}NVjT8MEVkctgi5(|=hPWlb{|vC{zCSnbP(SF4bag~@%^_GeT`_(LT18=*qNB>b)p2}A3=G^}M3ICdZy zi2S7PR6Rv#0Jvf`2EfoUpXYg^WflQla4u+TCDcov5?#h~_=I`4UL2p;|E!l1r;X9_ zCL@paD>dF!$|3w}K<2tcPLe4qwSKm@ixFYrr)PP?C$(2t!}%$rObdaCyK1BmnGD@ZK6ZrvKKi&*RW*2~9M$R`Q7qX1dSgdA~ZkbJ9s3YXRa6*h0_j$RZ zG&`&ZJ{GmM)#cZ_$7^&aWP^)0jaB>#RNBPZqWv`hpt?jJ=T0^z-AsP#I^&-_4? zVP08UWf)5zbyS9_06Uf8OO)ym$`If%0F>e9!FY=Xt0fId*D0-A&s9= zZ^T26RZjQ^asM3;plh>6uXTpdqgxhKXX$)gFmi#o{0f;*MuvEUW&7)VbV}?;B9AS> zvaiKoC#{$MrXQV*zy3*8_zvNyVrWD()%yDj$(gS>4YMX9J96JQ9x)z;lXl=v<7%F54;+8$skbADYAcVRy5!G_@7 zriyc`K2lGiOcIHEhhXn9i_=C~H#52l~Z-;@^FsS zco_0}0wLM*I#(KW2zlKC_;-}obr&b(wV3pxv|ux;F7i1XeJg^DYM;`xv886ykW$31 zBD(@1I$v_!e4mF=sFKJMrNp9LMBKW+uB&L|Ng4Dp2MiTI5{=%`%i4=|tJr&y*H!1y zDoJEXo?Fy(D@DS%{ZagU2mOais{V7UqyD2$b5+O2>r?jR+vg=VvBsLxUOXDB?Rzck zCeF3r%NK~A9lf($WWK}t8W@?lb2*bsQK(Uyx+I!FF8yok)JkBZITHnwsk|A^9=+DC zkK19jkSn)yTb>=7l|WSxf)C8K?J(BwfT6n4Ez96Y+rlrorzwyB;5)hfXrykxnn`7B|LE`1ex&Z0PxXZj+V7PiAnh-ZA#fP& zKg(`ETbJ&@U5eYV+fRw(cWV2S;(5vE2E(sbh1Und{|b-r=Zo!?ZB69J;`#V7Dj)wr z7g5?Y`FIJdy(3U40{gVd_*2dYwTe_XLH;C3#IGw4h9B}jD1!l=?=w$~=ZT*Pec4h# zdg)+^cySE9KOsILk|rxe5ch)hx1&&F-^ycT4sZk;Lf98`Ye6hmEgDLmMnUeiW&=j-R?ORcpH%Buv~ zm)f4fzGJ7{w39|xhxpMUj~zSP48Nsk5(P=P7lIq}#0za2Cqg5J)HQ~rqhtGty1&V) z`+@Y%RixgnfAdF{`y?{Ao}t(=d~AOfVJ)xR3PuOy60QZxs%Okk6bz$x7zhffeT5-Fqq3kDpwq9Aads@tB~~&sjE>M811L%;aH{bXS^?S zr+wPg*UZkb<9RW0Z?N-Ht7xkKUZ5%x1DWK%pXj5_?d7_f_XXef-^Wmm8J#xS`eqgv zD#BDw{0>l@t&jV2-G0?J+OHVN(0-8-Gg{StRbg`bRbWx57;Cc{X`i&;!Pt!dsP`wMuU&QSlE%?%s|exp z6<6#^7+W3dKDgwKIa}+FEon4et+!Riwg#hPE2_dTRP}zBlu%3P>#W*BL0-FejaO0y z8_d&(^b*kHV#|WzO>*UnJxpL*NI?NV>wgz0dtv%Q2^EhAhusySI}454(B3r#wRu%@ zUh*~6!I_l!Oqpf4UNFNWAv~l=Ai9|2HkjGNdYR#2#h4f2I4)eiP1V&!X87%rH`F_}+ zR5Z-8kp)vu4t?8J+Y@pHb)NFlTiO_z(F=*uXf8C%=iSm4Ze44JUf|Y9b*rS&!LY;L zvy3gI{1q}k`Z^f7sSuA}96bFd5+_4S17+)K3y8!=wJgLmmweLlCST90mJF&X@HMOx zgB=-!Sg>jW$M`5$TVPA}TIX(LiyQWjFdktye@m3owl~-Hoa|gNeS=#|-msRxBOtQP z4YOGg=)Eq`dp$cr%9kh$Ih2KxL1qkOHn?F>T^r2sQ0f{~8gOk4hQ}2LT(1SNvaVp+ ze}le3{|$zxjM_U03HRJP2=(@uk>S-bw;3H?5pZG4h8G0G*VCg@ilkX5LaTW2ya9f^ z#2yka_MQlPM;SNw5nE%xChC!{HcaTkwq}{Fj4H*XxRz zNHS*+thU$s+5YN7#NI&fje#`>9Gd`wzQ;cdkW;2LFZkxl_eHXrKK6$DB`)Ec-k6_tapW1}P{(<+9HU?urx#eL)U@VIP zCDX8>(fskjsDDE+JYJmecyVg^ql3{t+?j+MlPu6)>*Qx#aDhi7!w`rJ^O|M*@plVR@q6n zy()aFOzv2T8p3|RAq7=oG!F*hK&E_UpVyv)XRu<0?Nu^AjSjLX!uv2sB{(RQ?WiAP zCJU_pGG~tMkSWj6xCDB&IFUJ*?KLdr+A$0 z>)Io4J?QQEVKBl>5T02)uOqqIAKFYs+iLq^fm_M&&o+3jFVp~Cq57DIYSxOY1q&;e~-}@DF&DYuHvyLq!@1f~hdDw-}=?MFOl?Hk-vnPrP`p z(HBSk-w05ZYqwLIDsK?gdC^e4X-3YJFe|i^FiS1h1*t$JE!#_f5OtqWF^}ytvJV-f z-#1n+$y5yOduHfG0@)8*1^FWC9~!Rwh8wT4pR|vEXn4#wEFG|&Q$mg^#l7}Q<-wTAh38N_QMfPS@B0!!B&>Ad7R2Qo)Q5t+qy9SH?Qjku6OK4-L~gr3wALvZXtP$+ytpeOC0pY;Ym%TPK@(q66JUXmXf)2~7^#^Y`v7PlyIP z^lR2`9q+Sh7zn=>elz?((S)LSJgK&$5J!C_>#XTQec7sVqM2pTR(Hm5f8bEitD@H_ zLqoLRR2~fLSW~tb{A4=eOZ1F3VA%bOk!A;soz_pc?M7PM|38UnpDf)A*3**vqoaG7 zkzS%IC&bI`aGoaxU|(F3irfdV>ZT%hZ+qm9-@^qZB6qSmh=Iu6jYbXln~K}LcHCZQ zMSdhv;&_SMlJ#JtBj@-0k?!Qgt$HC(EQAxOWgWDl) zzZM$Far-%+IO6t)%kWqyu^f?z+uamr(1%XV|77Vnol>az-$e(V|ABgt`QPm#nG-)z zOVgd4|LsURVar=PV zLA!FHk*r;Bk!erN3eEG-uC@G0XxGCOYkzt8_U3NkC!K1Ez4`l~L)n|HUme8Wyv8uW z-pr?p&f1$-w%O`IP$c$ds4P%9?9F5Ga$9{)S1W7@d$SQ0IUIYl@u3uZbHWchV{iU< zVq7EcuT>i1M-1)u=CU^(8c{ao5E@~9>BK!A+zuM?zgto@Vy)%Sh;vyRu%3`LgLs}` zA;lT&%_02H?ZQnaefUGgq4eRE{Rh#9=TL0);ZCaPtUf&bZn8e~muSYJ5BJB*ZGAXF z%G>?VGpNVm=)*H?%)+^}`=2g7I-?IC@I;8V5D|Kcq(OJY(5?>`z3$M5-ZvjYAGYjs z;vNBR2YvWpa;iQo|InciKRyS2_!EB;`p`geiavyP6NkJlp{Jy%rxUu7OI%8AGr2Z= z4UZ9M>WP`f(+klI9u2(7Imj(cIdYPwmYUzJ^k_ zOo!B?3We5zO$btcO02Voq`0D9&kT5n)r|48M$1aX--++6OSoc&YL&6@EYs4G4-l!t z-Xc$?B)$eY=1!+{dDb-${-%XTg~2UOy977OV+RV|A;^DI3^Go zOpwDC(vRD!Yk0C!KMO>F?)#-=17w0$WQM*zc1kzmcjU-qpw^!k`!P?5CSvwq7s{N0 zg$xyhzse>%iHT*qAfv_YTiGg;G$O1=-%&C94{bGmt~^z22Z{Lbz`nn^?-5u!+T$I8^{ zpF_SZk$f4ssAfq)UEvaM-5A1FroXO0Q$>N))N-5~IYn+QHX|303WQ%}5-7>ATSZOB?w!!ntB&Efp0Ku|Y-R&)}DSvYnDV7PS;s<7L zCPv?Y^oraMeRGU&uIQ<3daRhovl2GuPT!m+;bH+$MBfF0&@SZ7#Qs$?obR{xGQl+? z`8>7IV)B$;AhZ$GYw6b+%)4X0hRZ=?pLZbqa+Pn$+kxKi20~vI`DWjSCUKj*Re;-O z*`_Hzv-i7_FDrY~H+!_wvrU0eb8{eC-ONh0xn@s}8ESHczYTquZHB(8nKGl~jh6qw zSTH(+T0erPwyN-J)&%&e3jdeM6nFpSstW%k5WW#scKRA#lQlwyp>H+|CTv@4p3;?c zMK81L72oVK?gYXl9Hd5*8eikla%x=f3V#-QpBlfc@r8Z{TP1BRPxEDlK009T+fnjH z`+Uq-;6BP%5Il;Fd2ap%3krM%l}8oHEgog9EGUwD#d5D)?p4dZa=BM6_iE(cWVu%( z_eg7hJd*~y>z0_LA%22MU^q09QGAz#T!Fdf!<>>&9Ci0BH=uG_tFIvcG>Dwl>N_(3 zEatsMX4$889|T>ERpf&j$fX%U*IMZh-;meBFC+2rc5~m`rt38`^nPw_&vuFv7Wh_n zndfEF$xexYio1Z@A&+@GxM=aTk!$uf+X>w^`!@!k3G8Q zVDquXlO$3&@k*iJ$@RG3y)L}8ug4w75>Z9uTy@Lpfq#=}dTkuY4wJsvN7BMxb+c#k zm!yEaE+FE|^-TU2HvOwes?%$5li5>-oo`=*d;SN~6^B}b`yEhHZ>e>`&qWyhHhe0= zU}uLk()y}NZrXGC_pal|!RGS!B;h^>ZiiUvchE?lZC&@CBbIu%H?h>Er#WJ&Qi}C# zD{X#<2eBo)Q|r&ynLeA>cz)-2;V7Nz$b4(yxd&05fj6=8nlZO?%`a4JeKO=b8(WY4 zS3+~tTx-Yw*qF8QQnj0tYfnWj ze!?EYM2LM7#g2G|^G-UyzMrEO#WSq$_v(8Pr8wmZp83w4-w93>v7FddwYPKmoxrOJ ztx)-$m)N+MuqPW|fgbk69|yAS$wL68*b`R@$SeVAwIoigWD09g1`JDJV`3 zYY_>>v9|pG*pruAq`T6nj@Xk=N)Dnr1ABs+(VqNZg0d%X0@GQ0;(H~bIm({QCo|p& zdoocH=ocCTHL$Fp%%AZeF(KUB?)&V zxE<8uY-l8_h4GF(1WGDwO7TTpSdyV`I(XJ>v^1S(ogUA`pMxuKXVjPh^>i7 zeeyVd;#rzfxQg%nDvR&^I=DP?KvD8g`@O8ad7@$Vc458mYbUp8AJb1F_ohPDe*1U5 z;5M=$zRD(tz*?TxaB-2Pi9Zh!KfL?FLB{(xJn)ryZRjjeGmiHkF$&1d?F6Q?26zRRREW4WXVozu^>XBZq0lyLOI6-qINHait# z#*+@ksJZ+Qis4JbtpK-!V)TGUvSNJvnnN+JWL?49!k>gEzI^kZ{lvVM&CC|N&Nq?GrS@+AFu1C2Q>{dj#|ihdMH z!t;>&@s%Vt(T_imQu=YaEN3TXp;xYQ=tud;L+Hnz_nf#Vf!jep4qTS1A1`lo=*K_~ z?6Ow#C!rtrQ|!=>YU}rPoIIT~k3&dc9L{sXTv`q4?rbh;wA>BJ-5b^2>0FYKmb)|L z?kIKlRxTMDa(AlSy-?kq%q2^%a#zkd8RZCd6c@u;5|LD}Y(w0k&WGG#l|E0iS;^^U z{ex;`o2aL4Q|yD$YoEtO8`j?>S+1Viur5~1to?>5l|8zZr8tqi$z!weCel9kNM0__ zcv!_OBUq2|r=(HenEy(WECi?Jdcfnzd{l{_)t~+rk@s)g6i3CX+o;dAqt?C!2l<+V{z1RD zt{<_q{nVH4Cl{OY?S6V#Er0fVMD#g&v?;&nrw0MBra>}E-p428J(G^MzUEK7zjnNo zBr8E{iP;ZA*)*K}RWA5XJMbS!gTM8er213)i;cuBOurLd)N+XaN`=SaemR3EKVoRj zA8vhY3z+1YoU~ELnrF^y3Z&G!Q93F*t;YH*4?Xa#<1RK*_OeE)?rXA|H(=Ay<1Kv0 zMONMR4*SeX3l6lEG+OgnpNtp8rx_HZkYwBz_eB)!%$A_`_s{fn^k}Aur9aRxJ1~H=Q*QY|9BTooGUw~q5muS5pOU1Gf8yy!Z29>6~l;T z#T(v@D*S#`#oNVL*65TPS!8{b^e#<5QLcX}sop1Dr=LD($i=}yY_6^2+^a#}82h&S zJvyCgq62eIP!twI!HkAxDp8SBHY20e>AHntlaQhcAB*Imh(dW9B;PuRR)wbf^NqS3 zRz+iO^^jw9;0oC;z$R$`**dtrt-1(adYchRb4N}*SL%%9${8rpfyW&q&!NkZVoy2J zJ5pGP^!tJ4>;2f*>;(Lb`(N_JPoh_<5zrs=1Tm*&8dh>Q`vDV$TriM_ zPXnbztH5;m!zjI7es6O5a2V^sp)91a)*uV3&r@AEE48j7GBAs~)*1YiG0Cmo&x_f8 zj;yI+kyTb*!;ZbRk%3z{l0=TtDbTp`%pZ@gMhAX;oDy|!d4h=mPyaeW|Jt=vX;4>Z zTZLiTJMbQ%7ww0@4Qug}il6+*z+1RGszrVSGG7yWjmK+LGZTLV-_-ag3I07AKWmgQ z^!Fbqh88)nc-{}65gFJW95%jJIl*6aDR5pR)n19{CmZjRtSJw4JFO{48Hh23O=clV zUSdU;%PK#ogkXBN`sTc*$_G9iLdIXJlAIT~7IjC>yRMfWL3@vnji7f|OG!BAPkc4y zJi_0Z{Kr!`*?~2mW~s-bqFonqn{`q0FKd0P%CiDx>u))+w!d%HIqU;|f`v;?uX)#; z^{sg4x~(N!W0jS?TPK7EW%*V$PH1w6I2xidTpP+_lX{4CB6rO1Ta_)(spm`xXT`b! z1)W(i(Sv#>$crZg3X$%bO$&z5f_91YXE@b$(VHgZA7_klzS73ve^i^$D)!{73|n^H1s0vNZ@~9O8LIO2S{3q&u< zHrH5LvUpmu7uPX^!X$rXhF|fm3S=SNTYA@4_*V62G5RTU%}2;*yE&^(%ZGO5gJ|6Z zBgkrG?==&`LlM)un~-$?LKVFmE0E)a!E(w}zf-vrtAck&`m5!Qe{w>_szKjQaG^*QS+O%*`zC~^ zeJe`S9V*$1%K8da6xBLAMn0_Hj+yzOxF%GDJuv?_emM!cWVc2dwO$fl(z>*5OCHukKUE!>qaz;xqdUIRoTTk6^9>J))I52LE ze_It>bYvTcsO9_CtM?$wus)VSHupTMf6D_U7e>1ntJxvTnB3|Mvt-7p_Lb_GF{6b^ zr%}H5MOR%9{$}|a0{jkJ`!+4fuj^j2l_w5bTpEINug~C0=KWdF!`}HC>fO=|9!}tR zL}p8z#xh2BXOEYSU~Sg@aDY*h%VsXsj-(gOeQ(K$E3!obsmz2aHVoHcai38?cs$9C z35Gg5zw8}MtW67?Zzbu}Mi*n5#}xh5v%YNOX6+dzFO_hFM5UA$gx?N*c&GU$TM8hb zM|8X56ea61*%`b=+-0?hSq3gRm9e7y1Z- zAE|ZEysv~{dBfiNU2%Axt$`QQbg`L-BgSN-RXsCLp1_ zbAQa`1Y$aq&56g0OJieOIqs#113H-StO@uYf04%zMaAX`I@+ba;iejC{|QA_GFT&l zDnXLkMOs$rFRmM>0zj*c{*XqOnoqUIq?_t^KtV;E<`R?h%M?i&!cQnss*=ge6t54c zJ3Owk!;CIefGWQ9&5<_+Rfa!PPb{}Q32%tyZO+Q$Q8rY#a+9y&Aug!JA8Pjc=G-UT zOGs+nU~|O&s~~6n&pBJM&LK?_nv^>11;Iz0%~5QI+N$2x;A=Qpaa09+Fno;su&0Z% z+faH*bc>yJTiBUqJ&1tdvY}D&DHJCA=Inx(_AXu^YKVT)xeXM^_&Y27X?*-Op^vRv zA3u@)U5^QCQzKLL?-v*w>ESPcsy#m7Y6^zGsbK!Kff$)Yo!?bgg!06u%Y)>{lzbxM zcv|YHcvk*~nzQPzSdE!5T7J(T5dabV4(q3q%568C2;wv*2TNiE^@~*>#Cj$dcd@&3 z)Dm_*iWpUMH3O4^@=k{!vabm$Bc{#lgt_fzRt_t?O#dbZv9@xl%q-pMoA*05$>0Iv z^X7Zh?pEKNzYD{&)`@>`>`Gk?=Stsn@2cTex27`u^KEAM=grbH6V31?Rxn(FPG7!X zp0O332q>K(3v4RgT+drFeTNGN)}sP z6*EoNwa{$X>TBpD`W_vOsjlQnCFL^6a?3jn-jovQy}PpqwAFcKHdz2Nn`4iaZJX@K z6H~Oyw=z3!e&k*tZ?kQFKC~*-mIdPbmulAteGGX}W{Sh=|Nax*fK*`gd#`Kp+qB;`}u#S>2D-dMiE3Pxwnq@V9rj1BmIw7m&@6h-m zEet~`y@rhnOgbFUU^^`9pM{WYT|dV98H6hyR+SuHW58IZ9l_YjjIjpM_HO`eFOBI-&r9>r(6h?6f>gg;zd4uPON{JAUm!#vODKX@P#cw536yrxAt zWP<<1reX`>h+XB1IAYhRA{KMw`gQd3p88s{G}H_$ZY)}Gh5pvHdli1mzC}B+HXdyS z;YvpMiwS&43Gb{iQi7XX_}T{dHS@I(?sNEiVG;6m@xsL#yL2tqk;%4h$6Efjf}n95 zOtOXdus7UdY_0z83-Qeu@RKkfF%cL)478ggXxAotf=`@(+WQ`+#(PoTZwy7%>X|=c|3?4$xGRYM zFplRbg+?a_^v(jl(k1#+^5Hpec=lrW^*@9S?I!XWgvx+SQMw46D9IIsCIvy%Q@itJ z7>?t}FnIx&&h7dHyhD5LeQ8_^+%<4ZjSgGle%BiB&;30RtMBXZmwUd~yt`oR?h4QN+8xP+k+ZLbCp>B`LN0@G zHX!WH-dKh^SeV4%Eoo5n z7FMmCbsa)GAS{FbGUUqlgqsIuk9YXnQM-u-14Px0pbdnYCPERQs~7T7^atCGE(-uD zz$r47AycdkusfcqFCoMfV4Z7j5@y3nwy~3K#B@R}?1k~W4MxEh^c+8U;dcYl(cCSI z90*ApDSe2|rJ`Ojd;+EoVDuP1RPZ9Lit+oTtf*3dm&1ty-N5zu+ZnN&(S0M$J_hUj z2r*HTc||Rc3heF2=~w>`##yP{Q+2-%8eUtny`=&7^;{RZ(%ma<;93v~qEQY|T>W`l_wk-2!o zQ`2^Mf`b-0Jnvbko;4mORf{qGGxd#dI>SSbK8dHb;Zi4}6y!pdD;=-*!E6xlMpJJT z?UmkuZG}EyF1STx`gpxPzI*0xS}?ST zJDkn=7i%fzo`$4NO;fAiD4>A97R;8_eBVu$GY}SM+$#Cb;#4^@?VgI+iMh3e3zy{E zMsvQ3%>7V*Ox3+XM6;;ZKf$ksY&=!!-*Ch+o-Kp3(vr0MLBHm4*Aip~{j2Y(7)R?{ zNL7?T?5NL}{X;?v;I==kJp3^H$f3G*c-`({0 zXU*?7ANC#VTbjH7pfpoPNeD&+_!_4h=O=&QiOKi`SrTdjRjs(C53&N6*=Xukp5)^` z8~k81Cj-CY3X!+5ODD-sq|}#Y-JHevF-+xPRyU})6NBM61j!J83h||qa)c++fs7oo zXd0N92nXCSq7aIoLWc{RSwHR@5jIfGW6fM|J1ju4IUDWID8q?m@PqMEQ?DQVTO)Zd zGAM_jWx<=ycV=)%aKBU8>x6tA174zu~*cGfIR(6(s+@|JZvl>|CbaZ^w9~|od~L!VF(O{9qxKxhl+5G zr)FQ=sxEn0q%|U|ltVWfxybAI2+=u`|3N%xWgo^NKn>P@qtXR;KS=)+-v|h}F7vIIO?!uKzX^1OT&*OE$dMuUMZpY8hCA;1uOl9GnF0Bl*8#Wz>8Y&B22!)_6n2Rr- znk^|F$G>5m2%cYCi1V~a>0W}-(EXsFy9Z}x`%YtAr6K4KqSnkv z)Bkvs$D^d;*Z`V8$|Ml zy{d&jZO_^+A3itUmy6<7|HSN{T*hMt&VF@cC9J;ZAs!Lc-zLR+0Yfjs&_Cmqp+H0# zkbfQ00Q(TtBxrk>3utlp9``_R2J^&v{W9_@Ar>!@SxUi;si>f}R!{DsuLHm8bO4tQ^^BST%Z@XjBWGElQ|{>5LkyidWD| zR&cYdU><&e1GHE!>(D~mu&MSyH6`2omRoG9ZTc3=5*6_h?aUJIiah_{^Xb)E72|b# zf&-zhzl@ELYa8z-8brk9ccHDQC255Z;tDa^0pLLO6a3f}G?HQvGasj4`_b45_nT7YHweBbW5M@KjKTW2r&fF)U#l#WGs|9>txRD>Lh)Q{+P_H z_`-bb6eM5ZMT`&2%&kzZ5GKe+Zc_P6B5p8&Q8??{^JSM$OLo__@SnbCU6*ycYsNQ$ zn$uApJMn1hGa7HqYk^+I`DJ5F30^EvMRak00O@Bm%$_jaiYFflmvG;pbzT47WB?gS26=}(tBi_xSi zefj-~($mKu*A1$`4ambN`_v8c;=&~Pm4cb|HnRvhW~NiVDtkJN)Zi>}aRh zN0CAK!M(};7R*obvwwzYfI#}Ys5GIl!~I6 zIa+8Ka^T6Sg?MpBdH8xr9rMakw9toO8j;fWg5=*M1F6}R;&wpCyb_E6YZdfn!1|9R z+S1je5S*o7fC>-x_=8Fj4DgUEtb=@{6m%IrQwkaqP3d96kjASfgSF1*lKm7{ieY=u7cjWqXH~Ha zEQU&XslRBYEW8;a)+bWLlJ%p8Om}}+Kxv>$l%{y3Rc#TS!IfcgG4DMEaqJD?3#XU0 z%p9E82Uq)&G=aK4#;fApK>+eJpXvwGH8#n32!Bi7a_lb6L}o7%!po#T;{0jB0Z2|l zPA}0_j`nKYkYB;Sfg$V5`tvcn*eV%7FaY|hSf1i-25z&_MF3iu2F?|$A_<#vMJ(A z%DET=F%-Od`AJcY9fL2J7<}S*s-J$H=#c+vF|@wRDI8j(@xEEtnUr5U>M448$61xiWsYr^<7ffs zaD+e`QA8<{BnW~F%m$H74$Sr@)t3rN^4|eFxJZTI0EkhEwmJLnRh0ls?B)luqO$P5 z#C=7>CV-OW?-!g6p4bP#^ojMxjZ+T4v%XYJqu7~fhQkTPyfcV+yusNZw^qT~+^5u) z4ueuKA@+qi7W|d`bmRzZ?y%CUlOl;pgo6c!rg>NtEIe8w-9F064pxm-b*lEP7ajJIw$ol*)IAUX(M|{#UyH&pegbUmo6p zwYPs=X$7MHOaSkC08FQ@lj zJ<6dhx0>bP=ZafVKuGgp^M_ljA_$HWxdT&W^K)vVV1Y=HvxSs|y%0`?VVGPVHb6zy zL%r3d6|S_;TxmEG7@3=f%b2tU&kBOgAxr&g=oN!Eh!q9G~5I`O5_Khh|z^SkU+?5u+;?#U`3TApwEIO z8-_jK8g|TGN$G?GrIw_j|*eK}Cr(3^O)78y%hAxTA+C z1KBz{9Ua{vu#nJEi1dy5t~qDLd>sMa2QxX)y6C8wu4}LtDXJ%-a}z%`P5;YXqL(+~ z9yYb}^L6}`Rie+E20GbO~0ZxKPW37E{af=8o6$aLTRaJ(?T9S1s=;X$zF6u9(h~ zcS>q`@8zzvvGYzH8*17 z^q(d`(U81FmSU${SW3ZT0X4%F2obZxo23I$c$fYl%SFy#0jKsP{jW&qm*J1Vl1;vz zzikn`R1iyTqC4)26v_?Y9S^PASyDH)vz?*L^24G37cKN>h)%Bh@+9o@8w$QP#!$0^ zBgWqr5!Ti)j=NG?+PLYbaRYl>$v>mr(YtbQAa6xtyxL9Oz>QQqGO>n>!D&Lp-{;it zKh*Ds>X#$I@4EWktA5i^Gv8;cU#I%z0?PN?S@Cx?ehEo{zp(a`5ZxuB(~9@ts(e3- z`SXAd^}AU8E>XX)so$0Acdh!}q<$$;vplW1`J1VJbJQb-e+Po`Cey!z{7k3ZoWr3 zr}}Q@%U18*>U|D=*-oMQW&TOHtA^ikApxE$@dQ$7z~gv4@*iK1HlL#}InRU#P>w7C-4biTRsf4+Ctx?wf1Fm;4iD8s9pWy@z`ilQv+%u{wt!YKfqnS? z8y?1-RVDg+shk2IyaW9ePw}+S56prMc?lO;x4USU7J3sE z1P1n&ApmK0NchBtFY3y757?n4B~2UP4nqRqLcJmhE;)LiJ24$tU!|BII2I{ML(S+O zx{2bnS%#_s`P~#9SP?E~t1nB>cHkel-1JXSLAWd(=06kDbG*@s>Ci*?(#b>8^Qmfc zb2nOIbOdmihM%+U;NBE1*bOM5!B~mD1np4kB{D;OTB3zG?4qv)-_o!r#TBMJ^PcPx zG?-Olp5bITuRJ~y{4Rzc{6~-jmZ4OALKS(;dy=5=MG%Ix1lS@~sey;i= zCLO*62&(v!CB9G(19o?VeCNPBi#7F^tVyd%L5JzgGXDdzFWX8g?8Tw06KF5wcv2RU z=yn(V;rmg4HAI-@o7e`B1Slj2Fo-KR1GAffLfR0d1Pb}9Xb;C%qTWaOJpx?PHW5Sc zFE@gH2KQxX3l`u@pb#}Os$*c5<65nXqGVuJ@)WJ=I`P!(7OiTmcuJX|Rb3*UQYULw zgT+&Gl;x&4FssFlTGjdDDeY#hDo;GMoS{{nDV|!PmMrm<-S==cnp z>X&$mzSBZqfGAwmt#cP)pN#3?Z;fRbVfFz%$O0DRzH2<%a;zTVlw3V1a06;=pS!#4 z5=WYUI1Pa}L(>uSgRoK|nS$esN%c2A2;|)-o|*yhYCOG*xrB+90yNG>(s&b-3gv;M zf|ap+alHtce+duvPj_p}A+h0zrN*(lY!ur25sy%2e@GW;#7_MhM&W7W;M|7`M$SQW zN?)r$QEz{an!0^cuu=*tr>9?`o{Bk#K2hQIBkmZ}LLC7BL*k?&K0)mCWl5NYEBHr$ z1ole2^^bE?=sTfy%Ld%oF2MMf)#rF3zzI$#G4+0efwv2gv~>8i#Me$vUTA9>xivZj zQWxTpk}xu3J>8DoZbbFeF5byiKS!FVogWnQ8BJh=HBc62IUppvE+rGLGP~(n31Dz2 z!c#lg@p8Sbx&pUT8n{}x;T`fnqZCj2jMez#Ku?77pK~22#z<_`=UkJh(Np$o-ss!; zq~pknd`ucDd#nD25?F>^S{_`A-Vm=N%hqzPMuS`p#gv?WP$hSq` z5g;t$MeHl;FCoz+$TJiQV6kj54b1*c0x@tZa7W=DLaW@JR_D8b^ib*2oK;JJ zFv>m%Wn0Be_~9#0w2C8u6xVSa6?((5*fpNW{ru?8+vU69oms3In$F(@GRT8q$6x7* zyd|oMh-wgtSln_0_RJ2%(m0h_mphuW8ZW@%bg}`o{+6gY@RRkP?JxiYcww0<8WE@uM+j9cm;K*~&chDeg!c{6nqcCQ zpzN7hW{K#6sEE;zJyZr1)o39edQ@iy_K)K5yPSXkwdriq>dBD%vX|f1z#~l`>}A-Ee2NUmq9y(C#>ApXjONK zr{p57YJqrahV^xpcuK*Fe6x5;MLwF*2WBBqLGr_z0SD2Rfx>bv^cvPM z62k{h6v0SxInhG*VQ6TWr^H;05DQ5uR|&Vc z;3%CDV<_admqPBR&!RYmTnM~3e1s{1=NvrWf@kA7P8AsV6Dyd1zLe^0+`08Fdp`rT z53BJihv@fqeYY?bHfK!?I5Md|Z~$@>oe1<@=d)k+##(;0W*mCF=rpUxui~qPK1})- zFe5nW^R>I^{uS8YPkXdBI&B3g=Cl&+FLfnp-{TP{3zy?7!Nu7mGR?_|-i|yCr)mp_ z;DhYLhd7u*{cvGm#=!n_=WQ@tc%koBu=P0%wrz<0!f}SRKd{_}-%Wln|2)~D28kzg z2=(X1P?$x&7Ys+SkgI#iA|E#@G9#hLi}(sG%e%nSIboffphrq}{o) zDltkNnjWeuNtoR65nv23R3G9y!U%8}JhEII>fhK-yrW{DVRqE5pzhG9$jXEwzZ3sv zk+)QlALO9KTR}82TPv&VMgFgc1njlMBA|~OARk(wMMa^$S8bsHsycNi=LtIHODwB@ z3NT2gSKvK6zg(p~Dm_pbOPfP=zNlFZ)r50pm0kD})4y9_|2SWE>FqXcM9 z;+h|tc_My<8~@%Dxh$Iq`S;`KWwWa?J>je5=_oVcemR->UJh`R;%MpZfwmC?(DTMiX(qT*AnTx(~Nh&H& z^R?BMCZ((|E||F%=UZ5MR!^_@)chp6?{yq9yZ=3e@QP-4;Hthm61vabCN^ax=O$ni z{nP)in;;NjEhaak*gRnW{GuRWDYA3%xB)T#anutI3W=y_I}Q}F)2W0Y{TxUOQQ~t) zYi)u{NM^v|c;QoRU|2wP+kKV#Y(Gc+MNv5XqR18vQcOUNtbjWpNYvY7PJ30{gI4lS zqMRKYf+dQ3pV1U%&(sIbK;;oxxu^$Sz$YQSiu)Dq@~VPSIJFA7*K`AZakPL#$gsFT z(03s~E8(l6Uwzk@f-L%5iFaD26adj>Apk-i8uEY>n-{T>XwyAT6-ZVPzVPv!QKnyiH>KR@B zEJgYLaf9vFPX%3bYuRN4ww7^wE|?a2BNy`eP57c<@0tZOeqV1_VBpP2`&)RTS7S*y z6KV+Gsa|b)54|gK8cDlYd%N|Gduoy}nf+O?PT_jK17uCAW`I7Yu>A0O0^?8)B=x;U8k}+w}i7_;B^jf4z}c#r`pJ73NW?sjSNb@KSz> zP6JffkWcc$c``1$EEKZKw+Mp3LRh=ghDD2e$Y^&z=`B&l>)3>IcvpQ{XC=yHHG7Qf$u~=`QZ7 z41ev-+oXkV!y@a_mbcH14p|Z0SEMbxfvaw`@BVGvR@zY8cH>3+q5SB8#zMRt=&EktKCpj~7V3o+GqAtR z-!r_1x*As2#Z{fsI_2-hc{4kbxe1FW2iIop$r|Whg-o_bPwwnUGQLJ>5ALF@2%qhV z{LLmu<|w_Xk|R@Z72}|V^h^?)O^&?NE=T52Ns4`3IykwIBU=bLGHV8`z^NF8n2{A& z&82B1<;bi%)w9#+i+Ya-kU3KoAmdI7kY66N02%nU1;|C}*=f9_9UmaS-J$^b5(Q2i zBNJ_abosynq_cW<8eNYQkUyD#RGbtb-@?||9GZ6jvH(d}&raj7ryL(fHs7o;@&O8* zI7TkD0WwkSH6)FURnJbN4eQ1E!nDpVcyl{a9x2Y8iFJJCI}YfvBylHU;fJz9e;V6v zOX&DAgO*3j(=Z2;w9xPPfsM1L2woZ?9f?38_IMldfRYd=pYJWpN(uR|C>vkrGYwd7 z9~Yf|ag##E+bn;=6Q=wTYgDeaO_(w936p|)k7vRRH38{;Qh>boR|}9E;OJz|+-udd zlTp@=3y@V)6h@v#ffL8b`8GhNerW-6qk484yKpdjJQyi50qJy7fV}Xqg^`>`EI>|I z&rah;0D@hnQ1L(ClI+=~RV~3o1=ed`_QYi)2eb$U+yO1L4r^_Nw)|YRy{k7r>&7Vs$j6~ z28EH&IHD)a=dQ8=;{KZjh(|p;jZVi2$OIFRK_>;s7cf3Hm%)N(EI^#<*=gJh5$2(St50j0Z@T}=>1Eg|^g^^3uv(wlLIj91v60A1Oy)?xC94}neNhxcKTWSmIknrGZ za>07|EqKD~herE^ajc0=+$_YrYdzBwtXbiEf?0(9^$ZzTy@(%!k3zoi?4MmbJ z-d%PB6awub?D&Se0vC<*djMuKww$r+AxnTRAapYxh9nxBf^mb zH;i&1F3`jv&G;BfUjY{rE0AC#U*KA5i>Mbu2C+62G$>))aLds`Q;-N0VM8$i53+Bg z&r+QbqJszT6I&nMU4Bn9#t41$*N6w_&a3tE%Fok9?v$Ax#|IU8UjT3Gfj2LuLTc|| z@rSr_dms>r8VTruU1nt&3iK;_KwjF8NE8a|&_lF;^gsj7t>q{neg9&lZ?n?Pmm!^J zrBnaOV9R^-U*SAsR7<&$1Bjw8e=I*u{~8Cm)2t%nUX$;~;yfWX#(Mu%6jjf#(orlY zth(K|$akK4&ld|2vc$wVLu@G)^3Mfk|9YWI1uLPDvAjZ^{z@1x@ACcU=vM4?=6D`Cj1>r0p}+bh{`4Dfx7e`RGl=_}e{ZZ4%5g_J3eU5m zRle4NeqKMW?^^{z>_C(BymeZr3h1joEpT9r7HWry5;!nI3k@gH92n-G0)Jdyf!aj~ z`_oViCJ9gw;SjqoCTqbjfq~Ny&^)*b2PPff2SWo*;$B*OraNh1;3$79+=akm!A}sg z7w-?SiGf3H?_tui)A$Lm(N|tkHU{K@TZV~hco{-P|9_CP^J>eT zdNU4_$;`DXiu_AVpv2xMVYv0o4-x$e8kTM;}yzgWXpwGJGa8$S-o<@ zGd4TP|F%KlJRaZF9gcbPa4k0D=89@l-Y;&WEv!P4y6tGjgiAl(Vjf5C-On^ zEiQ%A5V95fd@02v{hZ+Xuv}mrvs)ba8t(uyFRZhq-TaG4xdL~j<-w)|qv?uV);fCe zA($)AoKX>3E>9^Cb0g}?RH|_t2W*h16hB>|MwKVt-f*FHQlYftLbmvsWj*1+X%*3) z8XbOcJfUSfB`@$n;fF&BEz=bqsUc<^pb~TQE3@C|P8IJ47iOB2Yl;l4{8$3CrH*2c zzm;0iU=r#s`UDQ;_=4DiMXu=Op9S`(XbV5a3sWSD;8+z=H=ETtSTqZmp^>wmLk$pl z-xB2YL|&1{0p;kkJI6hLpRl7=bo~2h)#FcrH3qhfpUsFKWBMVYD2s(F(r^Vj{d5y% zb2(W6o5IzCpd`elc^^2(E5sblW$WS9aR6Z56?HW_kMNuA4{Nf0+O^h?x@=7Pet(3vn#6-$?qg(s4gwxF6+frD+%cg8*u z_RPQ?7tyR-0+0S&CuHi?j9?40YVe(Z7&{;uwFUEGCMt>Nh07%>t1ibYV=nQ*(I*&H z_wp70ka*XT1Hx}=iIIdx_~s&5m0CPeTzrDK;HqgY)Sl#Wv{RjPRnws~(du!lDin{% zq)|Az(UExsmyrJ)00vEFk*VXF_MLv$`Y*8%HDD;!%olv&29hm2h82xTB?e zf^}7Jv7K2Tqnr8C< z%T)6Zuvdr8n*_S8FU!c5m`;5LvJnP4POoz^oPY@edOdBBrIbaAfZw%Vog;}ttgcm~ zuuV4B0vJWw{x4$iSp$8!!@3}`kq|fx{xR7w86qP1Xdy;<_C)T4UKadYtSDOOPIfD} za<3;W-p6Ju`rm?ZX(lE5CVC21U zS3^|sZ;Q1TLQMGIlmTj?<{0PI%6>p7V^6quMdTUD|EF-pgLkR)DN$o;;M`rz{Z&MB z7`8Cdm4rB=jomM_)8-9ev-4jjeNw(*XUXla9PXIn8U7X3%g9V2It4!6an!RNZoSz3B=)6e8-(_rj5#yth?3HSGd$C{n+I-&6A=vY-VAY-2`X=4{kg-%iS=E3>!R z1n>Yf9eGmH2z)tg>y;X;)t3kw@lCMN2drQOeLw*R`fy45z^Ks+gt9^F>@ISo{()ly zm@c%2>4L9yPDOZ5YiGi)H`9+mqB2+j@7dM&-iHAUqD6E3WPDlN7yv#z4o>jnGW~z5 zh@9)qi+Q4hA!n@io$8MEIh~eMJuhWjA0TK8@Z`^njlpFor|ZoX_+EmFh>f_Mh9 zjH-J&3RHx<)8nURFD{cgkc=x*zVk#op^kBBp73y3%Yp+8Xm?#^o961 zu()}g$WUHe<_xn8K|+-hfkP6gT^fQ2S1qyFTgC@2EweedS}i3Cx0u8ZqyF?9_$Clf zYwvAnu=ewnxDEu)>k#VTzwV8^Ek|=02eU*?_`V2p;Dt?^oPaxrt9idj%=>(E-n&iP zS`dhrq899_N?400JP5&UQ@~#^D^!9xFCcXVdj z3Sl7DtiRr$bRC^uvO<_M;l){Qs@6!#}zy_;<34#|8iBW59pd zd^y~3Y9!zxr@Q9J^Ce$mOKvg|)5Ws;?)&9!C=G8$EFOI)FW}zNM;%MwJJhq2Vjt9O zVj6`P+bFK-`FuEhZ+ib1_%5))m-nCrpHn?2z-RpVB;afRKf(9FEDL}4KVZRkk9tmk z&vP>H`G)>4_}e|xg71ZZ1>cM6IRU=s?>-6qeKF*Jfp3%zzM{Dnd>5(b1o&Fo;j{5` zh$l3EbS*_}kxg3YVIg812o&DnzttO^J z0OfE*qE$(09$uZ$T)D&PF!zkjkhy&~Bd7019;8f!00|kZoww*ezR`hxH$&r0Jc$zU zu<{iB*XKgh2(41MyKJ~44YtfsK|{&x4xjIZ%_&Vo5sB34j@}BK+yPk|aMd-$n$gr4 z?%P#2Kr%xZjz$X^g-`rDUVbvs{lC!LR$)*q`Q5A2EP8uiJtxrH!;wbw0nz&_RWybs zrI>RNQc;Qw%Lhv+!QgG1?NF|i1KsdAZzRTeA{{-E3&@$Xgdj8EJpt()s=a9*Cp^xT z1R$94!D<_DCxE|P1=-217tc&bztnos{7nmgXQ}4|{9R!O@p#8KH0XaB-{v;>{$g7% z9&Bp8cqeQ_;qk)vWBLCA-=t|4{)Rtc;cv8hPQc%(cK8~{lRj1&uAd1ZVc0)Ozk49k zfnP%G8kY@~t8WN`oeOn1?a>2TF<5j#sbPuIbDdWR=G6SDn9`aX1B?iYNQ zvJ5VMQVL5zpm+t;ZND=C7v!hLvQWZ1YrQ=DnpQ8ih!{^? zzks;5Km@eoNjUY`Oq_&qG3Hg^^6((o=u0iB?g4j@U-a)wLB|oE0DZy}pk#kveAYs* za=~FZkO+$gSL5WVH#AE;r110?iXFYv`FL<|+nLj$>A!yk zCWfi$SGB}7^N24Sy*Ly4GohN%7HmY_lIIS&SjgjQs@<82M>K6II}n>A6Tss&4PVq&TLqnN8W0{WB$=>`h{LknrC{l2 z!6LF6jF@tSs*p8aRa(5N>1I{iSyFaOgsL>w5rY!RjnMNBvc{{T7FA-%X;$@=ttw`f zgVA(VP@k%*rp=JmY%WoqyUJD#v&Akx0yxk*n{}Kg>v+tp19m>~UNM{PRK*>J-I6%u zycoMl9;f7Xgz}OqlaASWVwp_64AC;6PV0!{6mLgf0YukZxDH^If(l5;gPp1K#FoF2 zQRqKmc2E&MXdHsxpJ0O!aFkKMYAvJ`5Xzj)=&dV|T!SS1N>82X1TBjh@(B+LqA4p8 zZV^AYC2K9T#}yn2C=<_}_Z}W_l?JBL6FghMRKk3CK$NM3rh7F`#V{xC7IPx9luB23 z-ly)GLr_-k(tMYh9_bE&ay}r-JDAOT>rt4Rx^M>ajKev z2NzCzct;Oab1lk44G0q-mGL7YrVrH;kenOQA^3xe3aP*?)OXVSUisoHH-27i(*xn! zqZ8l@4ebvy;~W<84!rm?6;%jdH=-QR(kTs7sSIW|DKuZniM2#n4J~vNb@5!xR5n{r&M1eaq4F8tD8Fz-*KGB2Aq;D~7hmm_lCD26Vy^}+_ zg|bY;2vECI7>6YyGcovJGlX@3W@-m6By~qy%R4>MyvTq?pTu=9P!O@*d>SF64he0M zj_@PO8?Zn6Mr{hvk0zc2WOU*y(emQ{fNp*)Ar`Av0xF|5@>GO>st9l6$z~e7&b)A$ zyF?#3fI%LFCm((U5H@_!Nf0s5w#RxT)}MfTclcLE8N1SWj>HM=pU`XN?WzcGfvaG< zfy9NRAlBw)-~xBvPJszt0ZT(`Of1Ze594S6=w&z=N)c4RcsmO5`Fa_~MBH%e3d~LG zqE(%Sj}?(gaQB=GRqKmVIoH(5;Miitg}xWn#SeJUrsVv>Ys>|WT6x+KbutLfk&&H~ zoQ#{Fvmya13)XRgMQ5=S%U$xMKI6$Pf3&pytbbh z7u>~QoqEN`aW%ud4h$TrRqY2^V?XJRjsg*M6sAHy;T0^+w5lo&Vsscz)u45z5BewgQr!~P zyMcW$`(1$)w%#dr8gqwtfjfoW(YfG8#bB_@XCN+q>tUcaSOC}iGPR{+8UnRz-O*`| zz=2lNKEq2bmb9H=-aw4uuR)(eCNZ zheT3##2$y%yyz|wP|km^CyG!?qVMZw-sx`_cXuU|Nz*sM+Qp-WtkI-bL-y$fYRFaq z-?oV#A2KYEP1O51lg1is&`l( z?&c8{vNJNYKI=m2=HC;eL~mwDDxR7{$wQ;9_f$mtU;ytDBafA-7o1ArJFMf@IUHQb zXpA_(HWs24{fXP~rze`>KFa(j^aJKWD5u;3)DS3ySp)2F0Xq&~D&<7|NDFPmtLj#P zH93KOupyzG9@jT+)X$?u7zGfq=VTZjArNVy=S7V$?pq=Ypt@$>$TGPE3X7zYL{>Yx zufVzwhx2h$q&TYudgNIY?mUX7z?M{;HEP*?C9m~Dzl7yaBgTKbhG)_vHDY{+dWN{` z)AI4+Y4{rOBZR}OzpCdF#spBO0@G&+MrX;VP?3TEDv7inU7@}q+G{LSy|GIzdoK}; zhDJN>VYIU<6ZgdqZV5qpW_lgg=(I^Nf;hEgkuL*>l~dG$KpP&$w#dl$z(^d|WzbH1 zQlRi+s4nTD01pVPeIq^sdT~ht1g2U~_=~ueh>#&nPBUL}nvQ)W0x`{PTt?Y)fntqO zSbbn39&5$}V7TimO@`VM>N97?nY>zmxVb*!`FUQA?>2_8xs3N#Zq$vd1tIun7&l>V zM{oZOVQSK5icfRL$WLPpUZ6m8)@c{f`MVzu%1ixy6g8PA;jGNd5<&ncX>pgyv-0>E zdF(P~x*p*q1nDs@Cte^3lwJyw$8u!ZR%goK9R>;9l2KS(zrx-IO?A}q`aD>4m~#D> zIEnYKbOQK9&@5{3q(u&y!>HrxQ9+?=7i(lwVM}{Y2eJ!I)a>FSq>ucG&sZ z57r;|g9Ds{hRxZp^wZFiV6mp!?0~OA9M1737iyZ~nzQDKnzI?uoDI}hpem3j&*?ge z+h3?TJ4DUdYJPECtqv{qv(d0@69NI6x;)#|c^R>3<|mOs@FUDLq3;@ptW*~vNFr5k zN7P8cRQ$*qsnZ0IGzakEQl8;ylc197*N+OR{)LB-vVtg5nz6lrfEz5KIF`D5W`& zldw&T_UQzX1M+r*zN|N+Y3zkO)k)bcWjuE!`{?Zid1_84mgofb8$Z7h#}IyV6h{Q+ zfwG^g!L<9EA3tmt8%$WpT2PmBx!XJ*UX)2? ziDs4OCAU`jRw$3a>Ma^7(~ej{CMq~m`Sf`CBLlED1Le^wyWr0PSb!b(;<3?e31ltI zUMzr@Fu&+;GVj`rLn}(;u!NP@hrFctBj$G|<}XwEjRQ9)Orbb^Vui`K*cZ2lZrs|= zd$+JbgC+^l4yPl|VggHdYE`2cMkAQuG86uz+EIMHzbh=;r~5neq|d`B#G)DmGVG4) zEDj}4d$ZaROJx#4>-NIqy#BLbL)pwF?r7(t7pSK#UgmaeY=D)}cKvJEQ^oGAb~%ct z;%W~Fjm6ljEW$4;LNMsbc*0TVt;xnjJmG;3>~(Jk59MkLE2w&j4(LE9w+VgTb~_F= zAh3*rDB3smI=qi&CE>>y4E2;*_|4!Ur?xOt7QTe>ubL?Q$Q`2a1Nbpop)mUEhdTq- zJ+lP@{|M9Z1#}rwd|Rd7N*9Kw)!SRdTVaZdpqxxlPNri57XQsG_lX<(gIV~ZEx&}_ zT=hn9|JmBYNg{9G^cM+fJnCe;n{VGOAblM_#`p}Yo38~Aoue(x6NLwyCD7goM-@>& zR3_JDSM<2fTJ*6IfSRocw)r=sGJ@6NYkMcZq_R;OlfM5i+GIkD8G$1NlpBav$oyM@ zF5~aWW_IKC;QpT4!pHFjRwARtXdT{-D5dsj)*}2E4L{v2)L?<^MW`;8!t!y$d) zS^??P_%XIaYpgAIIf8qAxMK~Qq2OMGj(nXJScJHKlqm2CevIYu0#mfm3{hZ~Rz-tv zvj72OoM4NtCLqPPz0_OToeHMnB*gEJ6{9{nlm z>@D$;iF@E;Y2Ydalx1&*YoR^@xLdW*An|~>)!))q+v?UoX%7<3T8$s$C-^v-t-c)G z-$h#p4?iL?;|NsyJdK60QNWM!g01i?Vg#nk!lR!@rY1;!glu^jTfWIw_>tiLw%WoA zWZ@s^oZq-GySkND&)-4AfWBY@P$7uiH5_ToWQp6I$ihpk!}Sf9Vv!w0@lm{6k>}34^$LFh2%a`pUmG9)(f_7>9qrGQ`y8$ys-br`9L567s)3^=7)K29Bls~G z2gLSik^B_orxy}G{SX$VzQ>R8=fqE2L*mnB{20E(Px+UKPv_vrxFYe>x3`N=U*g9Y znE1&Bhf_ej4_vpg=TW|Ra6JP*I|p4{#3n4JGU7(jj|%)4e-TnZ ze4z`t44byc@qp`&N=Lp1~29*%)*7S2^XZKLDTMqhm%+ zKT0Vq{mF&)S@Awft6A~X`bN`F8$mx};L`(eA3#Ps5Tlrm&*B+OkrJ4{#}MS7WXq3^ zoPUGBP;dMgQ-KD1RYNgPjSCX<54l?8FT;;fV#|-J+DZwjH6^5O{1kOToMXUVgpBQi z7a~Y(wk!m71_Zrm-+xMZqmJ^%PRT{33>fXZTu!uqaH4Inp&F(BF30s{j;jdzX>W>o zMN`TT&1~xG3IX~R_%ZHGY-)sTs)9{TwtXVjQh&E2v>Q@W$#uOp~OlB1$C3zo2%f>=}Fi}zOv%hp};tt5oz zW-USzXQ>A`kUN>l*1dv@@bbGxFCSGk$sWGPlt~S)i;@4OM)^N}xiOB$B-C)bsG)Bw z!RQo@X0f6PjVkJzP^=UwY__r;#ywQg*`OYa1}y}fj(qIkmYsG4q_Qr89Y?_ZPBgiL znap8{_WfzR82ZilVHIt=BFiVXEPNSN^-6TSj1-{)&rp?jXOLbIIr!f0D1LXN;=>Y( z-;5M1EmUviXpLqnnw4=gp%K-p8VmAKV==$lx_?kb^^gE{QZ;T>Z`JsV8tvVGhE?rk zCae3WNlw%rKLo0jBEYA}!o&j!tt@2zH76+?>oF zd|r+c6fBt7+EKwGc3sbitiUfn#Y&Lx0ld*2ouT50>nDVPY@>Lu=DCIC=JQx5sVJL! zwaD+eC;~p=puEadM<$)KYsRItG_i) zX<4lE3n*CVc9o*;q%PyB`lH z#0?XLGe`3*Fxppt9MoZMU8rZf_jw|pQWQ6`m$H^f3y(10DQDfdT%f8L4|2d-C@$2X zKf-Z210Pt)FjWcZ-gjX|q`N0_i*U*BL0@~Axc}hCsn3;gtqsGZ^WVPq(7T+kJBf5* zVSX#5;WPkfY{+6uwT{IiW6T%B!EmGazBJ&Wo>4%Zi9*7v>QNL7>;tU#;(>)Rg-x<+ z(0}y;*jw=hmo&o&@Z1X8%}+vF+>A`4sGDIIir5pdCw(6)0~kw658N=MgcWdR zn)=j4j6a@pK!XqC*>Iv-J60-@J|YqsZa;9tf<*2wVK@Nf23-NF)+>U6kaNCpho)m5~Y0a+Y z;C61Y6>fjxK6@5a;0h}+3isyehz-<6TktSm>tC_$2zxU$nRf6vI-igCOgB^MTU9zm zrLR%xRF%F&rJJj?OQl<=bb(5zsdN{WZmH63RJxT)J5*XkW&%7rq4_5~t=0Fs0y_m99}~O{M>?(wQp#gi5zj>3f)tPHyW7pDUc><|B>e9V9lBUxKx`zZMH_ljeBx zwDK=))c{Ur0lU9cd})chOJT9a)kR!v)3e=jv3(L||3)fgh{l7Ir7id`4j=UM+8s7X z-{HM|kUmyvbCBLsX>*WXQfYIL9#v^`knU1xbCBk!v^hvqRN5S*D^=PYB(F-FgH){2 z<{*V|skAvrtyS6_q=Pho$Do^ov`wYkszLisrQ50W$12@krQcKOER}wV>FDGR z<{&?cv>fEW@Jq0^*Y4RoWcnw^iC4b&qw@4A$RT+81Uwvzr_aNIzCeVGdVMl7cronYO`iT$sm0U3#Cu%m+kt&fS0hggW{SWmDlbnqs^ritW6emN?U3`P!tj)8bM7COeXR_HjN z^_~JugB$8&-u&RZBFVEKI@o2!deSH?`V`60i3lS^t5jqPif5Q8wu`+^Rj*686 zCAdh3M&p8$18DY61Cn6D_2tWeIrf~>{z)6>0@GL3JVb{&k#Bb zDO6asblO(XsL`18!yyh^J&6_}zsk z01S0cCj`KHRQUafSWnT5VYw<|<|-$WaEd}EcXJ8iuk!m@?`Gf(6cf>(TDQX)3wDC- z%rJZV3IrzG!89Rt-uVKP?Q-xuQ$0J47YJ4VN&cAxlF?yiLphDuw7grJa3Va+G=>XS z(1thSi*E+rj)FQJHbE-0ZvtKowZA&#tAy$CnR*?&5Wx=N3Iva-Y6ax*UcG&AAut9a z!M3}jZLhzJ)%GD@d)^A9SIe?8@{GTG!5V7_FofA!)o-Z59foo92MBCt-ed=0Q>DMr zH;DFi$P@09%WDWv1(6RyBm^9NjDb3QIQ0GhM%F(Vjpa971p&wVCCv9o;PyjP{r9?~ zL*V4m8bx=?z~zCWX}CL(zFy&Vc6c1?C%1(WkyjwAscT$=_Wz zioO3H2&FsJM+IvPI#YV0;}Y(l{ue32TlAZc&S)&>j$WaH>EI@A+$pGu>p@d;jh!%j z1lR(&EqE3&ZN8&5q&Q@2olD;?X%amOCl#bC5yMu|RY9_%tCs4<5X5N#CV~a@dJ}(28~xonY{9VjAafKk2oXag=L>U%K9*98>fO z2d1cXK2>Sj`@*`@8z`FO9}E*@oJQ~%ik@VJCDqP?l~Mnja9clnW>43fjuLGtj-m#* zs9rYhW8v;j6A}1m;L2_WVVvGZI6>HB%vEO=tPHGrJg~pb%q`l|_0TN;RaBu2534U} z#_z8O_UFu8?Trq2|9YsMqrLutADR0GS|-HLzM=#CgGGj^_%Rs7HgH?BoBUyv%qtfk zy5h%JhY!`RX2qkl5Em%KF%SL7U&K`!3p-!rzT#Ywdjx)rCsl43Ij&=_TeQ%3{JmAH z>Lqjk>=n7U;K%T*+}CNL%b5$#SuJF)dYP++xws&!zP%iv{Ud1(?RJ-1dH6AI$0z3Y`lc5{+n*_Od<{ER zKtromV>ENfA$=o2W946IdK(?^^i+}Oar{V#|4qw1+ps#W6&Vh~bIfRmN>Jv-9^%zA z_%RUXkgu{T#j8yG7{72LMhEn~P`v7nALASOs)48S(O&!UW7Nx6XAc#xy5PrnQ@-jX z!R|n?pOCN8<*Vj=b+>%=>ZPLK3;2o6MRSkI^n*;_jPyZ?p56GtWw6l!BeB0h+r#k_ z8;11rPLX~RKe2&GS3!Ei_W*uky^((WB9VR=Ke02AzF@dWpNF5=DM()_>GX2^fTN@! z@D`n@&R?s}JEAbx1><4h_KNTyC4oOK^)<&|uOBfsH|nj;Y?DN``ts0^SbaTOd3}Xe z4mK}Vc^J0ZJ+aMWcIAm(^hYb|3m7mVu0e^r2TFg;5}sh<>@^-YyF_rjtV8exQl8j8 zdSWvUu@FNdN!9Q1mf9Cmd@TbJV_hsbMd9aYai;W%mUb!g2*}^Ul z$=-Ovf9SV;DthDd)9)wpm~??hKv^CHC%C|`JRl)Y^e(Sr0Y-|THXD#zF-)n=?k^$V zAQ7)ZZNmjV9f-$m-qPXHT=exr1Dk~R2=U2G@NE9?3c{&PiCIm7XvHVHKma=6Q2{9Z z-=hO==m`oB^J^U$eYIv@6G!qMz1&lc+JSLg#zHd zV+Ftr{l`a5{m)30l=7e3<3HQbqr9 zF3Td!V2hIKS9vFC-9m9QslIrjnE54(USwKoe3>6Ud@?{W0`eg&w(x4D4{&rgf*wys z(BsMQ?f3&}8f3sfuD#`+xtK??p%T&RM*XvYf>Pr)CaHLflU7E?`SMwOh&SW^D7KDM za!Eq=FUdWn+i?ZLDtd5#SZ1O?wP~*y4J|ZH)ZEzj7@`H;kQEk5u615kikjl_-yotxS}WFuO315CI!KXuJu=~ zY~HH2{hSA(8{sP*{;#{qLpYdZ{UHaSm4f%`ggKVLwQ}rSt0Iz;>#DxcRXvdWtDoXu z=L*hC{)PCqWpMzpBRyZt^Sh`AGcg zz9PvM68M3$@di1^WChN_(-EqBKQ_p?Q8lSL+Yk`}vI7TjE6*38IWP%`X`GmW zS;@n+DsgLfa3wa$DY@JPe1E0l3qK2$FYd@d^ynfS)WhA3#d(qOLOdWZtTi^hrIy+E zgwD72=&>5k`d!W5HyUe*)i&E6tATT?n;6>Eex_QOl0c3(+7o6^tHDj-ly5vspblK` z((YTWRoyST1)oAN*p;v+hoPZ~7Fe7tB0}H<54nCi9*tS}!!AeA<%H=8W0hn;Xtcqf zNsDblKz!e32h_YKfdF@q0KX%K92`ObEC7X|B~XbCwHblxAhob)KmBxt^5ImnB6h%0 zQGU~#3gump8`9X(QU2<03gyCR-{Nge_QZzr`nb-S*O$1Xogk;xqB{tT({zK{f^87& z<$Ug^8m+3qD}z@-hQ9&Y{jCJ?h3=8$qqmd(_!vE{Y92C)5KS}KtGKd8$T*EQ)!*$> zUAhTb6F7!NMe$>MGKjO~p!_HYg$x3rrp@zwgL-RRB^W0d_;mA@%4{(0Z}q9{NhE1^ z*=X#kZ{T1pSCI&$-S29wqGZh0h&_hgmzX5HPDoCYWv|OMQQr3b7cRV}$s%C+NniFh z7iDpiaJF%kET-?yX6K-N5sUOyEM%h$-+5@m-%Hj%HlhCW4y%7G>PKO3v~QOl>F8@i z3{llxITXNcBfcT7IhG@SrKDbGdHDAVhV8_42jZIJJ1}}plfX2k_2`d#q6O3+qc6vr zJ?5+-X#pE^IKSn!BP!?yZn-hSXfy7AUmp6!H~r`kyt6|=FyuHOFxw*}id5bKo}^}! zxByhS*)dot;|?KDcw^&f{G=l1GFmLtoa{C575iXmp<2uXK@{)efz=^Q*`D(7uX6kz zc}>menJ5TZqv^hB3kJt0*uS=`{)x~$N0`+HRXhTA16Nf;*r36jWbzMRu0Z8FAV8H- zk(v&%GudoSD7TN$nn_W1qg2HWUvw&Lis6-P`_BStz^fgsWC@mUnwV0i!Zv{ibeA0F z>t6)|d^a6y{+rXBd_aNINrFQ@0AmHfl!h(C9sZR)Mff7be3DI}gR>`}lb zW0Mw-GG$3T*$Vz?3Ghpa=NAl!D1?0)*18^C>nb7_kyG6BODkoEUSHND`+O<*%*hji zPY=$X9_Y`+9*`)?dgQyq-X4g!r<;2XGjvRGLBe+91m&Tt0RpJpcM|fDgm=Kl0{`*& zWznp@ohTHI#I7isb&h%l^o{p#p?nGV(d0LCsj&8&uWXa>ChmxvSShfXhyHyfqNbSf zu=53e2i%niFE_>}O2xi%+qq5Plkq&b3ybg9v=Ft@fx?Me)doDkL=_iN{S!~xaM#V8UP=AJ0F5Zb4t+-z{@s5~A zJDn$Dif=G#n=M2~TsH&#g4`THNzs}*}2dsG|5IBT5`lY7BQHpZoG zWA*!h%#3xvQD4d=fggm73i$ss-<>DkVFlc%GX$B)N1g?6n%?Lri}`gwtNu{SePhY z^>{;%je?cTWz%Pf%NEeW8_b|BzYGFkfpqP_;gWwd9>J}CMI~B@>RxGR7gDvMaMP;A zo}TdUa_#D*OT1ra6OG~%5Xw>BdZau&>o3ACHC5(RSV7RfK0Rxnodh>wIt zA1)bh2%B@@=v8@ubrqJXQj<(926_{$7cn7y*W2b-eD{EuJ_xQ?DpVrFqPbYBKEPUa z0j=w|Y~@W`k22(Y!jHsv2> zyB|z!dlzI2k?#OEde{4%*l}Rvo5FV{FZxIwJ827k0S#4W;`R=){+Cowb>QIY8f+!& z1N-6R@F_my#Y|r-zSgRiBduzIy+FckV2ntNi0>czT1B2sRF3eQ@9Ci)Za#~fR5{RE0%!|NSdEIn1WkfhbPiAOb8Ljxs2xpz6^KSqB$9!!_;uN(Qhk&#cFQ1PKX2EGq;JDw7rF?IM&{; z%$T%^E0o#8K5oW3HRrtZM>&c7wn-H4q&S{H&|Bn3U#VS8P|T^$K7E#02oR`}ouz^i zsvkr{5UNH-62>G13&1sA871ZHb25e~N{2=94wLUbu56y(zS|5DK&xwEA zk=F+djI}7!XIhDqrU_5xXNs^=25 zirjNHSb>oDB)@7>pJ=iyOS*pdKN9kz=o1rGHtG{SkqZ$okK2UvBynYl4q$x~`b2^c zkmvA9s`y#Ru5RR1N0UcQ*erH>hJtNs0#*~{(FEWudDJ}rpv#%kC%!$z(kCuc&kC~u zxY7BCfc8Y;y?L|5<;laljShSY-f4p@cyCqDM}qghT)7S;@c%-H5D7;juy;kcG9fWC zwk{7B!MxmWsCQIBaDGJ)&vZ6SAolw51BEw3g!8xXMyKM2rt@iN(~CaIFoii=pU3VB zBe!d?*q>dnGS&e$E8)6=l@&#Y{9}wcs1MKKLj`O2!edNk1Bjh#2@s;rL%!2tmV+CM zaC=9c@(SIGM{LM<#+p;165i(q*`X3GM7uof*1(~~{+vq*_%#$ElQG$4{ChL@eOjy% zOd_W-LsY?RZ>2#rI0I-Fk;S>)267Rnjhq`QC#PO{H&g<+^bWWXEx!!D>#A-}H@O$V z2`i$LfRe7bw93~W;P=ecZ`ma9A?~E|Uk2d`>Z3%KuC`p-f{EZXO8>V}(2P8#IRaZZ z`Xak_W|_cVvW2}#ixvJJZW@13oEWoF6ri97zEg^)`f)LJ9Y+%OCZbbcqbIJwKsW+@ z%B4ttWQ_5&CiwZ)FyY4d@=nGkV~kg-11Pm(jr(48jjP-dx`qL&lmjFK%u=z`M=+Jt z{4+Q}Pz>{E3ZqExTs&dC%P>@+2R`KU6=(sA7qwy~T+^_EP0Xmo3bx*&eyEc3{T+*4cE9D{N=?x;zgNRH&EoeV6d=F%BygsL{Qw|7jNhLnde(O-eVqiq z2VaMknAjSx%Sq(l2#|hE|NK9`lVF^PfBtPKbGU#05Afs0>e!Tj{t!e?py-K3C-oxr z3_RQY^Roy${~a&>$`s%yh`$RZ{_gD51pe+hQ{nIM`%4dBuRr)!BJSkY>!oz>7ULJ~ z`*n%6UVo*Y6_<`?X|SQ<+RgPkMLnDA_2x5<2=C$a)?UGjaQ#Qxe+|aW zN86RaM^#<@3>hFm-~}WYBtWVG6ZWu4AYcX(cmoqe#a%!|P?SA0fFck`5QaEvYwKRM z*0#2`T9*QfVnQHcQ^6IX3ZlXrMr2c#faLq1bKi2`ELpUlzn^4g-h21md$xPFdk&q_ zC;OAkPJ`fX!vq?(A3wB5K<$^r_k|@qU_G7fHAz1*zQ4VrPDzse#rX%PJ$2PnJ@$o| z-DJsiP-i{Wd+<r3zB^|>{W-d%#;=bQ8<$%{Xw>h#0*DVh^d zMP7IIF{LC08`bJ2&Yd}EGLVSRRD3uva+iAgGmoP(Uv4+>h}*vrtpQQ79r=BC^+C@Y z81Xmu_5>0axzTZ;0Ii6VQSJMhKB({O4h%=1>bW&V)y?N^aR*#AWXTkh+YLd1MFoz} z(J$6re73o={6*eVxTDUK{PDi5QOXLk|6N7*_4Oz#ip9r%SNZP8Fa3x6eE2iK<(q{+ z13kVw@#l(3zT5Bz`4u&?XK5C{I?N4Gf@2$p2ax3vBr09_QFAb70%>Ae97p;-9 zt-Jqb=xw4y#hA{+X*``m{0VK)_FfW6@0P#8oq5_7n4}bcbIkNSP=R!3dwrw5YuUNu zN?hE$ffR5gUGDqObPy~92sl`Q+F~#)t48238d1UoSa22SQeWfC4Waz8-U#tO;xX@7 z$>cKq7Fg+K)v+DV!qyV8P3ou83h(p4CE~Bv{t8gJ%WGgE@5WaPz}nC4ZL5p5KP2hP zvG&(=eL}U!JFM5*UtPt+;>aEuF67;HfW44+f5>Z*s&BA!Fq!)D>x-WXS<*m$9U=Jj zF*=1|3OW7t$5RY`t*1Oo)9272dG_=t5%O$RqdMi;bu>5nPqH7Deg6bgj8ugktu-jG zff`n{a+j{;rWXE{)YAezvkQ!q2MD6z%)#=H@H6~<*C{Ku;M3}S2dW)#2b7!{-W@KAQwE~kaFT``?9)VCo>n}tIKUuNwMp2TN374b}OcYvE{ zV;*7x4=2$zvJBkad1~BP!oQM!hIWqv%-~cQ(cD1GlMb!ZgAO(LCsz$TDAt89qNP<{ z`Z#P&>9^58bClL4=|!|`JP)hfo1Uim{!DcX?}YnqHku7iLL8(i)nfPf52MEgRTx^V z2711dMU0NyErlKauJOK`xKTh8Wlb*orIiiGs5~ErKdQ|H_DHQ9sB!^=8ZV;OHQJq! zW8&o$6WGA(K_%x?+AGVb7AU_OFZI1Z?IGQ$M(@u2k}}Xn2l^vwTBH5#94E4={*N)q zq|t%4LAU<~#LD;5*$9T-86IT;w;w?@X=QmHwheBQJA^(gbih8y!Y7r^0#JTDxyOQ( z7~%=c6qSR}*JwXh0YhX$oHq4i#vmWC@RCEAdIxg@5x@a8tJ4wH7HjvWwxTlnh{6s8v<+1kzEYU=tT95F)$r#2P$K zN3)^ne%hZ@H)u=vyj%awu}`@Xq2LE)#dacH^delgiFn2ofJjq=zfi_Mp<~b_*xO7? zgieY@AzVq$!hK5xI#FfHtM_M+;O!vfF?Rh;f!UxNJ)mf~t*8x4dl9OArWC}_hQF9- zlG)LXUSo9J0T}t1AY&eR8G)Bl9)~}eb%f7rOvev=UgI`=5a%@%JEV0TT3NmvcZeNw z=}v~Wa3~@!0NTVgUQATT2e0M9bz&$2q_80gdUy!|BJlo9gC6wbHTy*X;V=k-$z~aD za~1szidcY8L^vb}Y;~dx-5DOf&%`u$f5_9sc@BELOapSJS5MP1X}7V_V|B&_uq6HtKs%_p1%KL$BWp1=eD-(zc8=E z`j18WAD?|+%;J~WJNaTNi)>Sgw0HI<*)$|;{~d=I7AW$4`LU9Z@oLuL+ET=&EbX5%QSN=wnto z2Z0sy6C7wYn8vY9Uk7(!CYEmpK^BAHS}Y}_AQL_0Lj)$iZ!v=kA%ZJuNi*oaU@5Lf zfmZnr30l517$TWIQ)?POnul=DybyT=B_jwo78;nH`l=9ZfJj=&OFg*{dv0ZJk9<*541EU6}%;Ee%D`% zz~~^$FUUF}G&nT!N#R4Y2*eeiLA{zyM1#<=p4tW(plrAZo2RnYd3DyQzsJFp%2j?} znHOk#$`$t!E*3hJwQc8~-bhzm>)0UO32eEr>fE@~uCfD8S6p@8DvG<|=0?ieoVi&a zovxzWmEUg+wEZYI?gU+lrz_(3_lyBtZ_y_VgHdwhsxe42(m|W!{%f7M|LUwVW27>) zyN%mP7aG%ruz_;pJ}=vkALt4JpVcE>^}A>#MJyl?qjC^=_Q zx-1QAh&xH$OcPEjHArKYBr> zvHy~M1-;z8h3SQ=b1G~5j|O}zb%Lo1^smW{`v3r51bRulPXJiZi@@^RI?{In(Ya*@ zfvnGvo6l5pZ6h4L1y--m+G?P?Jdn6GZWo~&bkqNO@tzI(5XbOr+1D81_$m)5MnOTP z+GaEc6w`LJAO&+4aoeOx5W$T>kHXli8UwPaeT)_~MnbJ)G^=ZjL>dFFh9c*Y1L%H8 zS6f6GgL#G)bO&tS`?HlRZmY>q%4+zth_Qet5~g0cq8G`40Hr65G(r!*xKOm%{J34HW! z6N8V4$G}I~l?~>j%FVI)Xd7LtjgQ(VfRA3>B={&8Y8-`sZnT&X@^&10vxUi96oH!u z&6fD58{P-7{V(|^3FG}L{%K8k{FVIEhQ|1n{BseF@hkbKEsYVCe+=mqm49rqAeqJ> z)`=8SAQ>eA0F(~F6F^0)};G76~LVVoD#(@{pK%l2u`M7nIp=_g&nLMUVZG3!D z1Rtl!eB2&K%f713M@n|n)wj}?2u9|npv<=SN_mxf)jB9_>fE7S7erJ)Gvpht(?e7A`9PUD4SV z%F4^|3sNwYHRxWH`~ZdjrX=EyT{XyyaTE;;b1Hj#j`8hN^#<1i|Cg%z~gt?T$0>{h@@=rgQUc_^NcUq+7rRS0x zT5?F!!%1|!7_fp5>Y#S;!I~POj}!M~k1!6+G5mnXu5cLfLmV9=%ZA(L9MopsgZ3EP zbr2KAxqlm&<}M^^M?hG{cJVtpgl`4J>VU9(%%!uyc3V(kum>h$uYn|3Oj(hLL8*$- zvQ5N;vOm?Nh7^+;=u^a8Wor0*y*^iQ*eLSMvW;={16AbyBi;cW{OyQL2NX*%FbIA=!a;I-CgTv8UKacuB1(b`n$EX-tuvfZ!D5>u^>TXP62y#|41S z1JaM`^~_MSk18eKgIcwIm`m^geR}KX3#flZQ^SLJdOSUS06x>-3ZH3(>i@0bHl+dJ zF+KGbA#9)a?33a97x^dZ+n@D$8U?)2p!iz{JQS8skbtD{I`RoVJ%2&UpHclM+4E=a zrzj(UhQQ$MP*=-;qxuW6Sq{;f5oi$NB`4o{LL3z*c>8kStXY$1PQ63*x5ci!h}?ZZ z2{PH>D=H|RpHh%{!CL^Y)fH+fhB1b}G;;WVFf3_!?`=E~`}wGk`@d2NS?^5D~FZND)7M0^~bC6HY=DM1}FDam(t zL1}MKX2=~FmEuOyLVGpPA1%qzzi1u7ev?oIe3_w}(KoPzR=HMSHd_B*Jn&2V|6=kw zeNpl~(zk#`Nq>OEFCCQ#=bYD5e8%C;1j6`ic>%m2aCg8AbeEFzLf4-byGv12>lt7) z#toO#4Iy{rRcryr3UTTak5dHA!YPuT5k)}mwDt)gz(>A`YMzHgLP>v8#L~yEqa83b zGulJX$q(HlJv3fCG$`6bcgqhA6c1JAB{Uk(uN%J(aub?pQ&;K8B$~?^e1+ZXy~AIg zwO8HnzD@{A=Mr2XskB8seNZhw93ODD2{?=VA7)nN7Jb+U27PKOV@!u8h)$eg>JqOb@hK*V}i^(mj{LC7P_>0 z8YSKOr=o^fvi3*1C-c_ygit?*1)M#@k6TcmC=JnzUyh1y@WKQ2mChuoUoc!%X+D%D z5V`i89{Bnhh{2)%2@`0+MW<~1f%8cx)lyS%G^>rXcVaLhIJ}*N(D2?nXDUez5*ol! zLK^XAvs)^(0eHFL4?|!A>F{B_%&Ej2xrirLkOoqk3uT6qL-ZeO_M7~?{U_Uear%nK zqtkz)^Z2+l>gtS+)Fox!tI-u2W+vM9oT^DGDf7A9SekGQx;XaH*j*a6llxC^60X=& z4E2931wGQ-#Um5o+ZD6arkv(^u)n&V{n?jb^T7$4Tx1AeV0ndQ1<(B$v7QL=ZDApb z_#Ta^8shr_qHq@9-l;R^%$V#oF_FWVKzeQpNm~C`8Xvf#TSM~(u6p1v=d11l+H@P z0V9M*LmidQMF0jwF&ZWnZ^Fic!`MS^Lt%~Q@TcHEd=x;`v&@iUeA=QB!JkX9aieQFDBVOL%WU4_qwK+5 zF=w4q+tD*5KYNka>53GL;s1OQPd=itz!K3HRJtC z$qvAu<^ZyZpLzQolQE0SXH1@{>ljUijxntd^o&7>#j%cYWnF5)NOOD~l_q6{Lt>O! z=D`(DJPsp3b%C){A06ZDzm3UyFSF?wf^!VyK&S>gVJ+HCGKB`aql%>=tnioUUx!uk zQZ&|sEKy1*sS!M9*LI??_H1(|N=da2Hg{l25~LCHGqm=vw8JPIC((frYcW*4PSSuB zWnx-zCJf`}k#eB=K~Lcmi$YJIy=sDJsy;>rt6>l@(AinQToY?vQO0|~8ZTKN4<%5b z)|ukuM;)vZJgr?yxQl4bQO53OjeReTO=N$|1bxLQj5!7y!jhz-r3pQ;RREr&DKUij zD&PV;)vnuqfb0aFuR8L)^AenkG5(@ng0UK#^Y5?EKiJ}^ojy!^f|NaJ=Vd%1<_a~V zn=FJ31?*b9+El$*^gRb-nJ}e@U-90n*{8 zL5P`dHr4_Qp@u+D0^6pbYVIr_lqnPiVto{X0kRbf83e;24Tb}b2>+R=Pm-<1vhJ7P zvzp(7QK9Dd6dDsJ9pD$l(NkzNoRD#6SGtrxRJk2hrcGkLR{&6AElZbbW4+0X18EqO zr3TIlozU9hT7kohpLjdFRUELG1Jnh_9EreRewVAB4R?dxD*KYGsJ_|1^nqw!sk7gxD;u0z=qsypi>>@hWL` zY(jcdP5H}^+<_||MU>aPPrgTqmSD!A!J6Y8w#C=r~Lmjv|VVza-81W_}4L+vv$N zCvdqS9?3Jv>S4{|D#%<$!*NQfg1C!HfKSV#I*m~Sc$f)r5Rfbx@=nsK#Aun(=2#$) zwgziNW>XyNb-geUryV(wq(vD%_&za%GG?w9Nm_zpY8(96-y{Is#DnYEMi(dqbet~7 zPXIej0Dp~*qU$<%Q%V>jX3(q!#>G^K_=iV zT(%MLC}-Hd8I|Pr{6$(i4z_xpz!AK zh;}l@7815|C?(%eD8>3UBlr>dsFM%DIrIFV;j#{WYuo=Mdspm!d8M;bN@u02RU>ia zf`*!y;DOD?wrdRnKu+j-uA-&Q9Nt9n8{{>Vy?iJ*sjgz20xo$E%g$?Ytet|Ipp%z{y571VE#pZ;VG(lK%n3sDV-vfGd&d?^n}uUW&Q zM1=D*!RbqZmMZvDmcpi(M#Pck$^6E9wb;Cb$0imCu8@YE#KU4Rb_vkFl}%UUCn3EU zzJJ=cMwu?4SOXq>-U3G}eL&FfpfrXm9-o+D&}f|i5e9k;`pl}3?;erHo)5&uuE<=2y&f{Xk$z$YF zLoOh>JzCas8*5B2LM4mI$OJl(EKam$p!0_a(;2@&MYiXU$9~H{pCt(L%)Kae$LaGT zCEeP)wTr(tVHOO1Wqvl{hx2~I#0v-C)dW79lR{!LBfgi3DHsl7>HusSXy`*yt#!xM z+8kt22HgEeYe12N&Ve}Ll7ce@z=Ip_E4zQPR+IDrb42fS!z3NX9wm_I67W{!c!G_9 zrf5E&f!28K*)Ib>h2&4t?fK{T!Jc3AWdyuo&x?Gduo#6Gp#m?9Qa7=;*$623G#cngHa792xjr+@Q>#o0 zK5Z;ODcNGlBx6JQMSDRMI4w6{~lzXH;{nQh=G5Kc1(CjSN~5o%Bx&GD8AB-7(%1fa|2-wVkPychvT;nY?P@f;_h#gb_cf=4i+3j? zpXgHh)bF|)IyjuzB?BN(hafl7J1mq(S8lqUl2UL)0GcDY)Y_`cDyS|S<{7;kNL#pk$z8Y5;)5{XtJy`kGC@{@H`duY3ymBpJ$$U8{Se2+R@fb38!jOqC6v zp31u#=S%_ab5NVlVrs6{O3_*L@_o43R`esX)IT{IyNFb!9JY?Rx$ylhP!uT#M_j9tf*XxRaW^zx5InD9 zT4(76^rj26I_jBXtbuY5cny!@gL!{@V;NNPkE#LLdaQ&ksW>{TWL8n z_tI9y%ekXP8gxghI*a&gpWxLPufTsO=*C}kYoW5^DlprgurdlJ8BrJ(wSo>B2dTP0 zUHHH#O`3!sc8f**cagEphc8bBSKU znCP62oT(PrqU7#1#_RM#sg1 z4WntuZo52?_n-RiuR?bql{t!38;y17@mS7Xpp+a?=8@mq2^ybK7Jg&y1{s z+xm!2G&tr{+bt|V=tx*t?-)oD7SdUTSgq>&0i&l$AyFNFaGmXDJI<$d+O5(r2Y6MFyI6Ind!z zovK8SZ3)#6$c>89R4MpC)TI|8c@TNf9C*OHH|#`CIUfTKB(K*$X9N$Srk9xYUVI|S zhZ>+esn8cozS?KE_;>p3-e!n2bap?yXU%Ttd)Dl7^v@YVw>i6^G&^O3fa#mXXET(Q zJ?LT}c^o4^&#cyG4Rd_q!Rnge!{+lpBUoTQ{}0B=_mt)wNbb=w5+`_mb`Z~(na{sV z&jUIOl@+g3+@T)One^5@AJJ!bfktWY?D|TxJG0N4-B0@Gj9>t90x`Q~_+-NVjpDQDS~rI-29nRD zM1}oAxKe_7=IUJX^S`GWLo54;=YNcj`>N0IywiN%A)X)QC_ZzQQqmhv>*6zWm6B}! zFk4yiHTm%cLV@@aLj3hKK7)1>E@JZZuvaM=f!(tB3|jsD%X+3(2EO@W9n6o@hz$nw z_IE5I_`J*l^QZdfj9^zxM9lOOF;l@J|0+IE$4l z;BETD^R9wkHOUbgEmks4p2>5?XWJ<&uM{(B8hs{@epC&0=CpPzvS)VRVN1j?^FO7V?S^!cwOi1T#sPP&|MY|zI#Xfe%&tEQRA%Nl}Zdz0lm`tY2$zJ6DhX( zPc+3JUb9x=Rm_=FKl+Gz&S(+S8g_ipv zVFcBhrBR-sTU%MTeg!>;Zry}w1(9T5lU0_#N|3}VCXgT^H#ORI?<0P*-`_mWeo;kq z;O6O;wQ0)-v+|c}^<~|?n%I!@=aE&2+&yQ)5|L|#v?YSnKMcscER?piI_g22oi+BwzzlPR#6#{=iWjW!T z>Uop8tvmLP6DAu1pEP|A4LX1F^aBy_S;fiFwc_tOgUad)pAx+07r^Ht-Vg`0iw2)v zTN?Ctu2&j6Ym{nrru-G)~Yj2bk*y(JOz+rk;kwc_s&I1kp~ z`IX^S4W8eS$oXZ|J-?r-r1?equSJ4<3b%L`+2{wQA5$Q2 z0oF`$gy1hMd3tqS%~o6o-qMbXqTmOULl}>G|h1roUw`+PMkPTJ$N-Z;9$w zF?~oBr=!R*r9N>YImP%WEXXl4kyaHWGRbMVOfD#r$N*hX)Kp~`td0bQN3fx0xr)HoduAi=YdAo*o2%FltX!v3S8Q$q(+<;o- zeC~}x?d!L~+yjF}FlLk?kKS(%39(^g|HZmeeyg2a5&wKQ_Im3VZ@<@kt5Wj+D9_uN zukl*)T#vWcgJew(sa2l;Ymo^-L!R4`6*}6fgYy5^N5D^`x{nshucK@t@v2PwnH4%4qo05gN9V)RZKDo+k2G+4*fEvaxE6U# zW$QZ<1cOhb3vP7&D_S}T?#;0YUYu!nLA9(sE8&}a4NNK}v&ospn)KkoLYFqqfkLTH z<15AGE%bZ`>q)gaxEw%rcT4kf6!Q4%ud9 z?D&sKLtd&6sUPeUX*DFNT5l#vRlfoAr2%*86T#dBuhG6xhm0-8p%;aFg-3m36iw~p z1qM{SQ}~(U$_!KMgvX3laMh+5D~K{)u{B;)NpbQmrsLrDwGs5J*WOi(=oj`=Kk%7DV(91_heR-5+KRDk6 zsb+*-${=3HZOLTkAlF?C!v6(pqrDU9;#rz`sp;l$-1)s4} z6reIl6v|QtxI8oMN;Yuor7W2oVZAO2VEdV`^DZI!ghbI_HQ0PrU0e~3`J%jPi`Q70 zH!A54l1Mh#;y=;wRi{63e4+5QH1zzS9>(ANJRT1}KlnUIhy77Dds^4u>&km&TT$e_ zX2^$6^wQC9V!meSXg5ps0yY_Yp;B8ur)HR*0>gf`^uDkhTXvtsewQl0>r19!1mWIJ zo9s=SJ#AW{u{RY?^RK!s|&O7eoqAe;exSd`m9Yxb0 zyHkFQ`oin!$~Y4X--KR=8^`u|IaEg=y9y^_E8ULDg3QxONfDlqrdcTJOADjYKEDfd zrTJ0PmgW4gpF-9r_JMW3_fGR(Zt3zdE;TqOdx!6@C3vzR&aI>@rtO2^e4c8f-dUYh12hwI(r(9b;D;k z4Nkd)UKtdHX|A7^OwvzFrs7Z)^#nm8VjfPAP-PwjXS4x35LlyeM70eekFh7q2~9@6 z_Pyr&y;RyLy1k$2<11P$LlHQG#l^Y<(Kv`;_<;-ft!>2fxsg5l*`%$V7h&7Sh z3cyo}|HYIOAKZq&VK=nq8+PkA{1kb^NWS5ee#1o&4Phf>@eRXq0W=h(BQ8;IxKqEO zB=Uy7Ji=4@4V+wQ${m9ckIl3gVLR@0m$p*ho-t$g6yZA`pU?zs;k{$<;K?&)5L>K6 z_vED*OST9OrEfr%aNsaeDjT29;owPY8-MOwcJ$^&f$EQk<=bDcXet{m(OX!24 zI_aO&@VSxxISHQ+{z<$-eLH8$U6bbxOB)6}Ck$IRl3sS0KpZjGGc&Ape~de@ZVa>u z`3LkedcjNjXL`Yd_>9Elh*4gbMhTds-0^Q~6jlFBqx9g<42eF&)@9*-^d5~EbD}w> zcc_@vvF+A)pXi@yymkE9$;{a&ZP>cLGy_KyJxW}mz4(e?Gj$4xJJ7PADdqRH1wC)W zw;T8yQ+LGq{4xKG&Y%8slrQgf)wjaZqxX;$;R;Lh^a@K$M1`f&MHJSq8P^B>hSbao zZvp2;*RP=aP;1mwy`Vb`5jyoXg07%ot?svZ@n2#Y!9_3I)UjsZnMa1Wro$OrX<*&HzgUAAb^9i85`&J8WP_@Lp}*VkA=i7c z-1+SOwSdBYKx5v6tykTnmR`#~d#dunKKtTIlspynul_?jGA{FutUKsq40-4-6BN*n zZ9`%el*WKf_!=gpVE3^3i+tw`YBm%xvM#ZIp!YG9nwm*I)s4cvYW8lWWErlYebFFo z2ED2@4(*E;A{+e%R}pTz(;XNKb^8nNMAV}~f1p!&;~WXzk$jpj`wQRqp^@4E`7!T6 zJmAplx#BS@aE)4U)KLfz;{JB-kPlz(D5{?1QSy!>DMO$m%wHtz>&SjL zM%IJXZ~K*Lm^~uaH`?+P?ftgXR4LQg>bIT3k^Q0P|4yL3U(b9H{e~FA`kAfo?clY? zTVuuo!_I5f8t1CU8va-L zb;ccHcU<(S*!(5^;xzGK#8etfkMGAFtm?3CQ|RS10qD3*=S`n==eicS8hkzKAZ2%0 z>k*D5tcM4gUg!;Vk9_OH<^$eY)*ELRdUcaEVcyiqGuI{JWuXy~PhV|4-G`r^jwk5} zQg9j@Z=TKe@4A+>D0%4AD z5UT5WRPBof={?5t!O|CO_>=cn(>%7!(I@w0tPau9b?o9uLq#!sm%Vge z6z!$IHI7kHZkTie82j}Le6rcZ{WQMx&J!W9^6z{1< z1=EQ9mUGWXdw*CyPOY9!_ig5em2Y@DNdqLwL)JJsRrQ5H7p`Td=DE(57L7#AcZ_|$ z>|eO^pO$~2yZw4p`l8)Kl%tMbjEhs8``wXsS3OSrGY5FvjG8mDN z2sOq~=e~Wp{_0$c^@iB$T(O{w;4RPD@bhnn!AU|%3jc2Nr$C=apJP-=L|st=JQW%Y zFHC#EC`@a*wJm481RWz7b?ZbE*{}dP(TCmHRJ6b($9f_81xA!@zF`7@azG>jU`*kQ z3C0wV7-Pii%y>ayNg9QI#{VNm=qJj6tE2&))__LvY6(NJnE}NNRC*rtlEZr~EuUj| zI8)686=S}c((r#_)j;=I6?(xXX;Ws;VxJWc+sJ#PG^~|Y7-iNU-D-hhtUfH9&huxZ z?Cx~-hd}E{m`Yb;;4aHZ{XP5h_z#pFzh;g96WRHj9pzdFf#lTK@Bl4#i;UQ#N>7=ii0f-0t`g+S^qL)NmGM zirN$nnnx{uxLt(n9h?e@qn|G?8g#vn4pvha30LtBK$`CzgE)%$qay_5Z!rrWHJZ1$ zXi%PS;p%a)K5?dwT$M%DI7fde1VB;s0^dYDiei-Uuq&{6-IJnrzb8pWPihZb>QFSd zcw2FOs-i*pN{OHCrhQuHgBSP^4k|Yy>4Th_dLX*83GEKTUz5GXw=J}bniuOo__wK< z8`a|KM)R<~JYP$6t6u19s=pp@QcAeF@t~2)3btbcGOYbXtyn%s@# zH^$WV5)7?FchMWBSX0w`dH)V+&O9|VaLL|G$KTM81fK`!pEH8%Q6}Imj2%bSGVv!a z_$vM}poZ?+tmis@fXfI4F!pJ;Ey13MdI$c`)p!uIA4DBKf4Skyg2>7rtWWv^FnvD?1Qq9 ziD;cY2)!Cw=D;=7GB>yj3(|H!j_}tMydNr=CC|_n0QHm=^ks$ks)4zwlu$%-b?c() zdETW()z>L2ifR3v$#y#g?_YP0_}kMb*uemDCo^2=Gg69>su$5E7vS4xiKR%J~)45bDNA>o?Ot5gF$sFA%R z$blc2Gj4w?7u7C>3@!I|DavLUDt<2h5HhqJjGjG)1gr6*1L8~@jABvDaSNH_D!7#2 zEPSr@1ZvxBbz%zfQzmwzoj_IAj%c>}+7^{)U=%+MRNsEp_?8_&`Ny8oDJl;wgi=K- z^FS(M<`qf7BTS>4RsTjc^RSv-tt|fnzjy*YdKdV6K?_z&w$dHNHRz1{4c1(=I1UGT zsX$86{q5s#S5|x=K05DKR#b?Oji-p}8@Qp#9GsUHzc!txtaw3uOuz__i;vB`%8CcY z$L9ET89t(?Mtk50q5gpd{#gi<*ECm_55*)_6IvL;&@m(R&-e{BR6PEi^n%h2 zBzH-zg2ih#7Z>c7ceRdB5)K~!Ahjx&MUaV4dJCR%Q^B}EszOL|Rpluujf8Y~^C?nC z@)VrOyF*EH`)4Q_1^B0rTIx)v-v@;{@lyR-f&Y7SMetw`$_^HGaQjC>OX-EyD*oNV z^=-B(&@ZVgj(GPIq0XfO@NfoyjHwie)6rA_OqX36uTd>p7_X;#3Wck|NDD4hrO zkekq;4Un?@KVasfA$iJ*f6|9Vj``pXd~*BGLv3p0@n2CuVF!v~<|}J@xr%}^!XpyGkN(SZ=7u>*9 ze@J^jP3N1J@dNFxM83$5pe76WrDzaV@CZK8rcBy5t>7#we(?(UNHx`5s%-^(3-lEb zbbi4Ko_@ky!Tl}LXc-wnY;zV&v(KU1l;~FrI3q?g8Znyh@DYMyU+r_d(wN)(ge18% zL@gl~skqCl_nC78bfF@&$bgnZRa*f?%3&rwdpv+hOFbFOnMG%(DkUERC`D%rm6Ff+gU@%7C(!fqmvEjt z(4`Ch1gR4VEE|{tB%W&^o_`4Gq_GT_Ku!hO-+7S+_Nt`+hRNY~#^~fxiYFwk$L(K9 z55ZZwgv9m<*uIBtP-r+ z0xiZ{v_}?Di%T3(ga%CKHH95s?k}bzoqw%QJaM8vtLe5`)k55eC%Q@p=B~bvXO;*} zQJUG%D|u!{aFJLM^X~yxlun|T1|s$goF@x|pFsrHdG9yf0)CTiGqu4FG%x}*z$M7Q zV(o|#8#5UUXlDZ%RN#O9jtq|R;KxAnOZw+NdaOM7pftni_>G)j+g~-m`HvBq8Ysn_ zp8caWzi0H%#{Aq-<`?GAuGO)2FQzI2uu91a;zQ!_w`a|sx^T+WIUE`z=NIS6H;d-l zw$ez$!oIaSR^!dLMo;1`EM=$%$H0>-T)+HpRR6YcN5YtnmfrW2O0eX54)e&rEz;*G z3!2jB$gkZ*@@psl0UKOB(-d;8k;DDkP}21@g_l>`<{wVO-QHbFnX~t7sV0l#^46MJWEOm`5`5LG&-JL z&^A3|bguIOi_kxxPips6zcBV5rLFEzjwJxUsu97cj; zV!EO;UTT0VI+Sk#Bi9-`mMgl4;fj7z=Um-GZ@HpTDBtwkvnv|D>87EZB7Mtqr8igV zqsi{*fsv04lO7>spGg5ni6UImbl$~#bA8VN9?COd;LQy?2bjj*ZMelMlW#?a*2-k=97C0{N-;FdG+fu9PJee^41P234CKWxzT0pCPK+KcTrP{@-E85Hu8>_hP4`LM%kns z=CI!T`I*RI9*s-EyhKRQarGVd@43cwz3KY6;nI`GHMi&liG=mN*6PQ&y~u{I==z`J z%cv2Cc-t#6iH6rBf<{j&{WL!#PqJv5wen43qKVl3K&(>5$|n-LK{Jk$b*rH)(R z5bLKXFEvc7`!v6~`CCez#EiyUz2;k^1L51HV%fp zpgt>!99m%ia-HKG0IUqQ5RDmG&E^U)BKzcjhyD5HySz9R%kL2^Kp8Y*-+`aR%vbu{ zqJiMci+%+?{E#i^0Vx(zwai-m4Jd&$aP{@l9P2G>3DU~2$`^NSL2EP+lv;93h@YmIBzQ^hrOzxIxl zG;d};n9ohgQVQJ_sY;&&C=7J3x5y?VB2viY)k!YqW0f}~%+0w(pWK*r> zXvSKvxP)H;UB4UI2%-RZyuMSdwP?boe}n;%dzM52;#i_M>SsbgbV=L3SbhvU|MfwH zep}r}SmCgF2}3#!+v+y9rdb9<3uDkPnZ(BVc50tf?`}w$n23Q%VU@|}+q=_Mxf>F- zKBIyNdc7jCBiJgf?7qSnkO~K3Fz$Lr2&UeBk+lZUS6A||5#~$v{_Yo~3#g5y+-F-m z$;{y11-9RWepx%e2>CBu2$PbE79}+I6#{EXMfWB&_2E#A3)FWnBJ$ND@1uq9IyL)@ zw>S6T`f|G5K55z`i0~y1PVDRJi~dQ-W+{i^LH)SS`VJNZ?!=~N?q)=%N--t8gQ4)0OyC zL`7541C`o^*|*9lgRSjv0Lu%#FbC@!G%VPGyz)Km)Xe9V$HAq>xe80E3w3kET9EP1 zw3;tybuMW2gh8ux^wXQ3^^qsgIO|TFZUB7_ADr08*WON`$0>v)Tz>YQ!Y1S-viM~} z?)`qTg`BZb+k{+?`8Iam5jN6VG=J1rdbjF82M;9P8TL^W>i#0jSfjVEUb198yrglS%n*7_63cu}cc65Mt8!$j8C@|N zf^_pz7e!P?=BwI}BwLJ+^&NrPa$1CmSsPld26v2KWR`~ERjU`QuMUH?OOof75Q_qW z&-$1kK%kUW8{r+62F&2~=^DrYP4IhOaL|3e%uusmDW)Qr`KA&;0ao&5Px<)%Wl<%VN zuhMrUM^U~N=~I+2k%X_>l@Czdw*o7K?9^H>#vT|La2VMSh!|BYq4?-NZ7=SjOhd|t z!$(RK8Pv*vhMd2J1c;OZ%0Jsi=YaiG?NeFP6n>&61*NkRLTG-q*}dxsvQyld-z&@K z5VK|f*R2fyFP()d{u-)9dCg0X4ec;7RmnfD`oHjG235y#Pxjfuj4^?>z17S;YUT+{ z0O>7mzvlLT;kw3kgEkr?L3AbsTi^q|4yTioLQXnT>B&AvwH=atNWwT5e3|Go^S?^T z3-pRW|4dw-pHYB}|F+bc(f^aj{~2}I+uDm{gt#3W z`A3?G^)77;9_Ht0V##Ve5>i$FQGIH?a4{5*gb$2V;5h0!)x_azHUd2bU8|aeoCSVR zO)2sL(DrdqoY_IkO!y(((cv`G(~SSdX?u{$WPA(9r`!LtT2=M~CCX(Uqm;Yl4glHX z-ws5(PUXijwDTF-`AD*bKbgR-R&72?kE}b0fAQZ^q}VOEOm&<9)CQ{A8&RwaX?DY* zp6x$|Jl>1ny_gW9jL=|nA)Oi-huC6|YUMMC@-`716l5u=rTvi(Qmwt+9d6YXr@Szu zyy-WN3FPE>{3o;*@vFxH9z@y#2*uk0Pk0=sJ&qa`x&Uoy{*Se#xCvNNi{UnJhkE&> zH{j=tnZyQr3j9+srT39GF%y2<3vS0}1%6+`h)QRFqA#=}lK^>CE6ij5BK~(#{*R#b z=9Iojf*^#1WHf`_r2%TZUa(o_$10BNXKz=PkvlyB=fwrovTCdMZu*x=@d5r}V~YZcN@kWvS%_TAM-V*U+ zV;%|q7=aQBO_bL0q4A#5`JkXBN$%nc?G_}`>{i87nobCs?}cN9xdnk~xc2Qa8v8a( zj-GWF??9&JWgb7uf}k--aV1E3pFS}UCMFp@kd^zig~P2mS@Y4sf?O`u|Doo@bLR3O z%iR7lX_z2#k_FRQ&;R=MJc4xWy4G`lM&x>4az(C(NX}2E>U6qxgRTphuF-3O>6(k= zg0@F)A<1p#+ZLb2`BD%`!HRFamx2)ccV>xwKwD0b42+>vF5eemkE#l$Kr3g48Vl?= z)zsm0R1gORe~abV^MgMGw~DUX%9`G}r#3stw>As&nh$2OALMbI zB0nJ`r=u-(S4hncDa-#2$%ZK?C8GXo^o{Pgn)wCoa+i({v>n1*91J4bkw7(Ce%4lP z0gX~RD=E}P-%cTM3j(u1rq~e=lXUz+b?}CzC1O<`2UN#3Kk~K#dD)dEBkvUn0cQu^ zD%}2w(Dw2=k}!u17Wp*#T4|g3?yOFqmi|urJDELIWh~tF{eTYM@P4ovsvo_B_TQ1b zBcN0Q=afa=5>WDL!DSvt^%!c1TkDo^R9iPq-w2L)DRGVDJ~s5j+P}Nd%0i~hPw`;4 z97pIyR(JfZ*m_aPsT4P%ctbl>lcun#HssC=H3j}@x}@)gwc928Y3<2j7CY>~Ibb5m zW@z8(sElhALQ7c{8(c0m=8el;l~w6-#K|WN4Sps_6;~fCyv^PI$pczhIt$6JHi1OgIwW*GBGPfX z&P8cS@W$lijmZJ>I&)KncK)=y`^)=3)Wi>X^3ddTDFD$r{q>ivlKT*Lc_U+9P;3;GYzlOZ)i@p}Wmy+L=wX?E!6f zhbBgc90JbnSzA5X`>DMnT5^u6^kg4Yl~Ltx$0jIG1GTnLLon7pqZm5AO?c+G|U+s3B z$y?n#tIRxqkT*E73Dh_`R+U}uJ5JsxPxeM1G({Ah*`;Ql#W!m+F0Zij8*jFD5rY^t zE7P0YyO8I70Q|2kr-VsQcC|+tUL9ST_V~|wGQWm0jjAMt-Q9t3{gcag1#8;qfW7u=b8Ypqd zY&`&G+gNj|+%z9fc(P9ww!jbGcI5vJT|^(d!!AoAC8c}l3a|w$Ljb|P{H!v!f9p6< z2FjsmI$6Q0ms!~CJ6ToHFF9we2I2BfR{g`7fb*e&cv@SjR*#?28E zTc_JK8_81dN3#Jpf<@y6e}a^ctAVj#{jZPFc8XCh)=i-iKw71*(Tx>11{L60tIn3h zle`}Zx0JCn_9d$eZExFoadZ^bjP?UWWi_;EzNJrPi;6W8L8NKdPlmbM$?ZP^3yq%f z?I;K=ae&m4a{uE9rDy|j9j5|vi@w9W>1W!1ra@^stk!JwwWU#go%zAb^W%=>uj&=* zs~=%YOluy;JN4I)%i0Ev!*lvVY`UZqLe60e_ajbZXGpTUC*Di<%X}K#j-Slk*wP0D zNwB0+2)eD^rB|rM2eIf%6y=4~Y5`utt}K8`YVaNpY6$-ZTdpOW-2UCzZix_nI-wK7 zP$GgsjIRO|tEF|{>2L>faGZvTqDN=igQAETSEVx*JEJLPSi2GPMNZy!&@UUv19MMR zGA*bqSdSAqWbRUyQ;LdlDHpG03F6oZbitbV0^55lWTZwTeAWq0%onszg}Mao<8%t0 z%iilt5A|W%Kdn>!wOTV{tvw0p#JD=q6Vtwf^O^vMB6eWC`Vj3v z|2eMnDAoq!|BSNc;!_)WT?=_#pR2o$s+k|ogEw>^7O;=rlBVBbEpH3k;qW!=(LU)2 z?aaUX7IIE#HyESq_!jj~-xpgegRvE3h?G>?^tQn6@?`Fxw?M}m%rPgat)6TRGE#FF z|9q@)3jV#g5cW%6&p2~WJ_7Lca|b4X7R8o4bYj?+Jd3vE0tf6Cs+de#NH@$BVxd=@ zWkC@{{(P*4oh4%i+UOPVA*n?ZgF-@O!){?)5h^G!uUlo=yXN-+6`&B5V^6NK2F@ky z0o%0PP6U&3E~!C>VE3RZOYvEU+P+L}w(}ODh4B8tE*=&{6J7M^NfIZ8t%dT(dNLD2 zmKwmZ#^UctKx@}dFjh(ya4*6zRtiGHI-x7<(dMNxC3MoY576_33R>vh1LOs=d}cMB zj0a3ytL^{}@dFlE2Fj|Gv!o3EUe`M;ed$BCH_i+F1?-zgscmVNT!-xhnr)JcrU%TxVTH2| zyR>&nNV25NY3FSh8myMKz^P^kRH5jo+3)-M8&&4sCS4Hwh)N367E;(Nv5#PvQ2m;( zRUk30sJziC91DaM3eV@5BsDp=%?d8=M8dDK46d+R(sMapKm=u9?(NtSj1R|Eb93#v63*z7K9G%v-wWC-CNnU3< zaM09U3QN{-D!_?V<8^zoPePW$3i?c4@sYO^-NmAkcDYT^%E+sx^-XCW2X0Fuv+1Pr zc=k}hG`HS`9p3#I|YCxu|xOfd`_ z!}+=!pk?PP8#cmcY8o~&xnRDM{B`>UhA8pfusS0Bai&i5<-ES^jDxo9ar~shbRZSH zdNC|~Og7}ngq;&I?pE^4VH!njDL56|Bi-`mVZR_dwq~PuJ(ip2|3T}BrO?LzvJuvT zFQ8hx^CF@^L=4E&XTEq-Xa!h3^nip7fsbnoXe0kzS>piNKudE$OLMc9hIEo$nzE+z zsR|}^!5MpW&bUSYm9$OT;B<@JlUX(|7uy5m(lH$G#e59LZKG0vq8w_2wgN~8kF?1u z!!6zx%A;kWlbm0jITZB zSfSn`{CS2z#{L zHlzXOb#laorn5b=D`d#m?62luN)`sGjr5pgK{V&5U_pdnh>nHQgKgsknPub)fj!tHSY z+BK$vmzokEqmS3l0>;cM!^nr7O)`z0A?$L6v#C2P{s*)ydavWZEb(clBi9}U;il;t z5zkzY8JRlWI5?DAyL8LP1p(&q?__JGY~E$Y&!9CBP&st3a!>Xa(9MKO%e054en6mD8^>uRAHVn;ovz z`3TJVTIR+bajlw3ADf2~5oJpNXq^S6QJ)auRK0dDl9=^0P z59NBGrsS@=0_LIa;Vk@4&HO;w@KJCZ`EW`{vBskM7bKXVX96PlH+L}{)Y9P$f3g@vW=%;PV=G59q$Y;6aSAPWo&{tb(NF9dX>#=p71$S;b2 zUxXovSk3si(;okR75L=%H}z3e18x6K@$XEM$%ub{&H?OCNm@2Th6fM}e7=p?^iyDz z;3_=f$^NMDY6QUX7&$xx&Zp?Z0OEE8z{T@=0K5w661D*NRe`o|OA&BIM8FFIZI|mI zaOdCgx^;Nn6L_7r63?44a5(Vt;3E&@yrc)gr{ijUg5Xt7b`}ebGu)|2U?w~w{{5AV zQ9C}_rG`K@MZodjl_Us>Lq1cM_XD&GAa&qhCXg=x&A0;#oT|Tny1GHP4mzu(s6kKh zPz+>2HVGVvRu~`9o_E3U0h@n~xN3D{*Sn1g#L9>u1Z!(|_U8E)LFE5sG(>*4RPupQ zIfTt>DdHOd)W2|Voc5;zGASxaNCBXyMST2#c5^G*0*_en@xKC@S|0t%ISG!hDPWSI zW^VJs6YT5(9rghgr_ccWRVXPyMa>Suv!b=Z6F^1*YEy{wX6Kx6WW#cSyrAnR@OoT# z`w^H%mn>K@1^(Vt`or<5+dn(ORpoqzrU|aL!@fo%+BbOUx~PG3C$XdmoFj1R&fE!B zbZ2i7f%C-2J@D|rPQ0D|B5;1QC(!m`ckxCP(QpRnodpO#X7BM{=_(y@9>MhUL-HOv z??Y?=2^YI%?IDk*SMBt+FTD#`C_4|o!ucUH+MU53Rj zUwicY&O|71Rn9l*Aw!A^>*|merf-7Y_saBc%ooZh#nUgb$J1?tS&?<86j^tM2CC*l z-Px6ec`y)RhkSb;g!&g=#+lJ|#-*hf1)pp|@@JoRHDG7L(}bRG4wT>~p~90o91&li z8Y8~`|FXW6hOO_d=3;$wQ9R9DU#;Zz80(?~5p&{%r#NRiA>?_VA{@&b^`4fr; zqD~3yv;789$O?fapW*+hJO2I-2oO7*Qt~H!u*b%%jaCFIYl**8wLMk=yV;aM2zw}y zhp~MI`m;zzpb|vCL90q2*b6a@SacpmB&)UK_%*tRpem2~9gs1-1X3*iCLPn_0f6mj`x(g%_#;zv<>07%=` zl+|R8(t9!w;J_I|^GHh+GL8zck*gOPVM$%+sNAEW_VIfV*SD27KtxYq;Rm}K(TcSMEwc>>OwHDF)VPVmG znLftVCw_kblX1g$YQ^uv+2VL%7h8->ir?=|vrUhEPHEFg~#eh4BXg zzsw@YQ^DMs+*OAbHKY$$bqT0yjaJmSIgywC96Xm`qZ8WQ_%&+8&Eg_6=w@RAmcmXE-rT#Ag=#) zfxq12-->X)T7I?>ez8=Aa=ZOu=U?8{;K`SgWhtSF+*+Gqow0d^`2Ht=Z`Am{fh@%L z;o~>r`_S#X+v58$-SUx0DdPKYgJtsl``NWS6v#q+A1QGh-_PW&8}a=#itl$oZq7f! zr%wQP>qL0}hj=NxuORpGpLxPHkn99fGS8`wP!tDfmGc=aK$mXe9J~nT8t**fAL7T_ z;`{oFe_?#T6WNC32J3_PKB--Xqk;&lH5LagirmUk9q&enUz#n&`z5JS87=Uy&$#x$ zKST)`0vz~nyg@u71^%00N}7u(*rK0t_IUpYJ>Ku6GeY)wzdi#I??*%$A^%=#xi(B$ zK~ZM4{7@t9I-~%GdYB0SPTzXOf?=DB1c0vM?iI$}m*eipbN~c{!qNepzVLK_cO7y% zz^fPs4kxF#KIs5~p^puPl<%P6nZVH1^jV?La9v-4;EG*Y2)>A)2vL@Nr<9R;M_deP1^Y6t4IYb~8K9#dS~9u28j=}s6b6i77ovtRzutkGW^q`= zbC^vX$pKGb7=vjL|BfD6*haYlBB}%pB26q%ccsz-AGUG>7UIpE8=wu7Miy^ie4F_J z5Us*H&Cwu)QlM!NEJcFA8D%+Xc7!}BegdxvX9-x04GpPqI`oppwsZlAk0ZWJ(gY^h z6@g~RAG9d~oHH;c&>sdR+`oslbr+hEpkeb^jx(IrWMaY!k7r@C3(@T$E35H_P~B@#Cg zM2!8e&iMZW7>|g39>@Qa;aBf~BE4&vY~Wj`6o4DRM;Ei6n9N;sos`XvPz$mEa!6A& zezBUMZ1fea5jNKXf zznLas&$o|muRkO`Dezr)KEP9_c%hN`0J_xqMfm{9mBy{r zonbpderazr-yR+&$_IE?&j*k7K0s@1j%#6TFVjBzkvXKcbbt<5!2s$7f2%oF z{=oVZIkTvcIGqcqPd)%?qBPl|Miv0&JBrKzGS3#wwdVr>W|gGW9Xm-%UEZ_2XM|=T zf&y^JDFIz#qy((x2ZiZSTUNk%wuB*-&8&b4dTidz3XtRjksc+`OvmW;$OmBdAzh}f ze1PCLIK6+Y!q0~gp3=nv%B|jiNEI+_GI*_t==KR_2H8+l6&%MZZ*VapG2mtO!+)|DeLK3a~z8}R16fgAy+ z_Lt+$;zs&&-l)oZnW?8ei^aM)BT?}m!$(sd%9-S$BT`6vd7%D!sThNNL zx^VzEFeBX&>O%c`+(_w0&W2Xho7^Kf*OP}5@f@G+fvPCTCiEbV%xOB95IgGe{yo}c zygz@n4}Am z74;wJE9yVw5NRIO_R>Rvc^ zjamL9Y{*N*klpRG%o9U))Q22^A+@CM;r3_}Y8GmQzD52DL6um-OBnG~UV56t*NOm& zd^kjx3%3JT0Bj#EvnMVSp=hCIc#J=ODPZ0Tm+0n^xLGi@kf;9>dU0wshhx*rNi4=r zFE?BC@|;dDP1W)n9&(-$@y zIKA=mm^dAZON3J&Zf2a;51-BT{ojY;|LKiq#MS_Meis{~S%<i z{T=-b(BGV62mLniF0i?mD#2Oe_DA{}NPZs}BW!+04+WBE^Oo3n9=u=zLKtaIr96rWCQ!Z)$;ITyJ8 zMI5>=z1}$evA2YPN3sl@J}}sh(^KGG;It`9%1Jm)qpyMFvwa0lTMuEJJ~3Dta;Q0E zzpx?yEQail(s0s{1@twL{8xR*4R}a<@<1d`2jD^kPUAKjI9+pDOq@QAON7&p%NeH) z!{>~;_%rZzY<#{3T-)(k5B~iA(t6`Eqn8BuO}!0VzCFl}%WlLkfyP5n^i2Z%c={Sh z?g@Mmf97X1E_V!)hMa2-d1u&=pM!HTWOkoNxmNL)_Gg$P{s zFEem?_%|_e`5`V5E}P=!U&Nnv;M1wSyDv6Aj|10seAaUZO~JJ5sTGayAtB&cPXnh1 zap+s#?ye_(2{gX5mkj|$^fi!t6YxejoqGl2^o*?H{?Q!r(Xb)o#gM=6X&dri^fi#& zL?5yfhSbh}6^YY7V6+IF-nPNOX}h$TI6c={;ItoZ22Sh8pNaPUlhmT7u{Tle%h*Wm z0RpunwH{153UjU}LW{de2<_a%Kxi@!xyuM$K}-{9{8$eg^k1c~f#g*{8X@#~dMJ>5 zxvV+w=xz+TvA=!DzGBDjE#M{01z#qRud5k+UDNQTB{OLn ztc^JKb#VnaE~TN3*h5IID9x~3U1>jXvzY0q84 z*8!YEq2}a@VnFRBUsQ^=92e>Kw{g3LQ}1R8g|T*m1Y^evE_1gsI5Gx{)2U)6PI9jDir zW2#|eu7gOxm~Irxv*=_BeG4SNbGaDv6Fj56`gtTy$KXOFPLtOfINhF73r=6bMZ)R9 zH3m-WkIy@5=g&WX79F46L6-(T$65UOSOkBzWwJY=w05RzO)$?BN|H0ZZtfg@nGKWw zO*b(4(f_gcHtkm@OpO_6;5hU+|&Kt@7{UX{d z3Ag!Ztu~JW1JLGt1j^Iee2!B7#FM>vo2}8Ny#Ld>kX%4|;5w^w)W1|n8ap)t$$cF; zB)g)xwmKDl+N|~2C_JO(k3Xp&o>PF6Dm-y@mP&7*uXlawVR{XE+)S8G>lrcs<||Z~ z*7S*l=`^esntw!r)6GAn{E0IGHG*j=bka!1E0VLaI+tCpw)tAEHoNdPUq|#ctp>pU0n`p{J0K8Q;CEA9k{7NlnFzrjDyx%p-DzJf(gyDChweQ zjg{|Ds0rZzak4=CkN{43x^6Z{_PuvQ(4;HaCDf?;R!8zycOo#H2G3KJ@+Xc~ zTAj#Rm2cQy7os~!VT;2r&O?)ooQJ;r7Kf-P-`;_}$Ml3Dif6_{ljWg!Nf4cl;vAws z7(Aopv~BgnGXOZN@MIDZhi5%2G!mvywQoL5H+PGG>BJuD?B4-xuzvP8W9iU zHv4BN@R)3|m`ZQ}*p0c$rOk?n> zE=;$*slxQ}_(ov*0A3PI|AOM`{)G&J75_MGMbI(03#a69#it8mL_ZX{h(3XzmRPl> zerLW$Sb2Uid8_%?NGH9UjKcfdy(f21-o7o`U|6vB1dNx<51~ee=sp)3Jm7cUFAWsU zQ$nQQZS&&Dbg)v+A><~nJDjpkwVK3~APi`Z&zgh39p@+k*eJ@L%SN{2*TeV%?Eh4}f|$l45lx85wup6!SmuHbH~38aBe=~r#RhRL|gQ5j>N3#f;Vn=Ep+wgV>#?3vhtCn@^7s=imKA-Sl*rKZxQcVS+?9 zLuKj=#oLU^42_=!bR0b3vxq4|h%z=uE5Y2AIg${xfzObq{uxTw&(M-~4b2dmhHn^~ zpWownzrOjgsPmH?Hs<5;>s~v6`T0~e3b-`$GiYWb^YfgBLl-wci`q70e&%kz$oVPV zkNNo*YSqObiU%EmKUiP$tR@y3Q62_b4lt8f7%hRhFv*I9@ib$O?I5iJeHg;cu`~wQ ztdJvR*p~nW!>a(XNWPT+g#&q~@heAVmZ6!;pkg0}aWs66AHmNXUJp)$o94r50Z~IY zoQE464v3`|Rq;ZbhK9pYmJLSU)WBdG#M#r|U@$#tFiqgA*8kx|qBU?dv;P^*>3{M? z_kR%e{~lE1_Ua0`w$w(aBtoYom0Y*w^r#)}dl1c18H}wncOlz1Pn=!TSs|vpOF=Cn3wQFRP@t)1OUIRXo=QvhXGc)Dqf|{S@lp zACR;Ra@*DfZ=&E74&!PH287~5Q74pUPMYv^t2PS@PoXdmSa??S&pb;ZIw{~4#it@a zS^>qu(?svV8u84ow9}fu!bD+O=76>ng?xmVz6bxOxdy}|wGk=&pSe2;fA&DDGCz6= z{DA&Mr(32RZB$)j9&NuvLsJ$&dV%eT3wNL8od#Ur@`SV_yS2O z*SrsFyKWm4x}>h>ustZ)TmAUdAbV5LsTu5T&Qv}5R!~Z1Z(nLSg+M8FFls@A7{wyW z)WN7#G4*4VsTM|k(>O+5V6QcdQtxYE(2ds6BR_V4f=YV`m39*<#S$uIE{XeAcr zSt|>Sh;1e+Jxi#RiUy+5JnHGb*bGeSN|*!_?@WW?zr~-234dN8{5kn9@aHSl4&ajF z&vg$pfd8{8~GB^OP|FQW7f z+w^=buWJO{^BV?t|9Zjwim`rh)8$-F?|FcGf8*c|F>as(_tkoSkf5W^`LQ6pOtjGP z1Df~DMRCLr5+e9PLIeDu4yd1HpiU)*fc61t-6!i~2(=)68A1AD_(8+))fmE_Wq|MI zHIV{E6YDt)-+i4LUd|T{->T4sdZox;;MkeN?~=Y0Q76qeqL5q>LU2gdoME6=w`YP!lydzAc=(ULc zSw*24SLcvBo!I$_{cth{I^o{|uR{ozikDS|+auI;o(Y63r+Ary?2e zkg|=!icD+bL_C@BqLZT}JBCU^(U5J9*dio*;yKAq)wT$-022nfs+0~+<5=ikOq=Yy zaDgcZ7yQ1~elwMWqaLW22`Omd;-Ss}9RYg4dW1oRb^OFd9KO9@YzBPq!D#-UfN$QP zE)jhD!08yzvxcFP70xUD6LE`#Bc!M z*zf{w70lDEUy6ak)^BoC>$j(}el2|crmE{Vnbxl*ynZd=^_v{AetYuuYYEn~ek~YH z!3!#U(K27Z$+Rj#FWLIF@b%kMUBA85^?RkdexYctwSLpp^~;o--FsyTeie^(2>5Fdz~)>*%6@mt?G9Z@D|5gX{Y78 zSGF=#4bMdy#~+|ot6Sg+1ODtiWqASupg$ml6f}lB+?alx8LF7|^t{)JTh%pQFFk)u zZ4hpGwdncYFg@Rf-qc#}Q!k#LcdyF)1C20D(jV6|7`QxPI;x_{97j*$C+JChk1&ZR zjPdlX%3Q`;RH%GEjmq!VQTe~D0+!%XR@VL!-u{n8=zGIn0!O`dNc~-BII8^iH!7Fc z%WnLtJQV*5y?;Xf}bqH$7}JEDHqL8h<@OxL!}>< zU|sr=s-qtYi&5zZV=;_=FcuT0AFM@2KPPob#IWLW`~z^IZ4Df~=_mkC9p{XIE(rI0E1upIjiwz8 zQsFC2v1MOIJHsk7;Yq1@X;Y~1IQI>8UA3>n{a-kqH~#K z3~*e!_2(dqnh|kzf@llOg3;n3_38x8u{#7?%$w!+y^3eIlR}VZ61L|c5G*{qb8v=j zwYZZE%Hxv8-y7erI7l97+dA^z5g>zgeA8{5pY&_fwrya68b_kF`_rxI`Zp>4 zc^B1Le;keU=jHPN14Hcw=O;>O?*X;F6UQ((an`hxq;MaF9JQFPLvu3i5t%>~L8#rplLA<}9vwY7HwuD>~ zb}9MhDtjE0*}N4=?5aKG2K2r1NLB^cx_J3LoD{o?4w6AW?&e*QuY4lB;Og{el-3`p zLgmA+YaQ5qxLF<8$g0%afv;P!xsdIg(t$zY4q(2YI{QP+_e-pEb>>?-yC4+WeabWk_V8z<%D`qI zDMF!6-X;w`aI;u`$Ts<$Vb3X(RGw0u5!(3t;5lsz*QSdI^7gsd<&+Dd;r5vxd z;w?w|qY;s=EP@{_s1eZcobKM5`{s=I*0d5H--Zs_3oBC*y5=1kglIfl;gF86q#iqk zHxa)u&~NfK>W*|gW$S{P8-@vnId?9o`O{-YgYftps8Lv+S|YFs2+*A{!iq|%ygU#! zc_Zs(Ab!fW2@7ftVy`PazE~}epn5CHM1R}EquE?JCQ2iW@6dLbKEI%5{%@Z}X+P4! zif#JI^3SA>PT4+z=3*lz`*qep?8u4IjmDMKK;YN-gTVIwwu{1T$Gk&epr#Qt+n+cm zTt{H=3ErKu15<}8cWPBI49q-rEb5(TrM7eOR`1uB4F?_|!sEbHRybk&M5z<>kdwFf zC=QOnt6oa)Vn?G-Q7rtQuwtuz5Pgay3IlnrvYOjYy12`A%5z zfgZj1IMeyE)}n`jgEH- zFL2)p;zaOl%z8`5yMz>@O)es-nL9PcO# z<}6?0Rr+qb{B2vHZNN9yf#n+85vz6bM-fY$@-sU|QCHULtEzQe9oZ5`uhtTp@Z!)C zeU3F+hIrY4j0xq^-P6M2GJRKB`P%g<9T(YNnc5z%kVVwKD7q8+JEc+I za5P*7OL%^BGJTch;K~zRo(L&Cly8X`0No5mH9F{O@El_WwOOk;li&6GafDG0K`ZMQ zjri7EH<}SIRytdehUq=arY@~4at6nWz8)m?MgNWV=0Z^h2(lc51Z5t3nP($vruVj8gnSWF=A5${dP^P40KBQ#6MwxCU z^A08RH-0bDH%O^#$9r7*?^7~1^9%%L!j5YGUs@SzVUXy%Ay9y9707@C7N4d3AZ#0|%wk%V zxN>s8^q~3Bt`|UJt3?SM|4@I*Py38#Q2G98XD63YIqz;Sc z)@R!by7fu?$9oRG9}7TF4Tkv;i{M}17KAf>O)7!Mw}+(6;c-w<#od51@hyZn)2x%# zc(UUHNK+nrG*sDp%$zxWW~Chri>_H$`#ZMOv|vVSLs6N#6+S%;k63R0j0f=`7bF=7 zdC3_Qo;$w=6aiI^ zhQ@u4FII#+dvOG+9e*mDvIo!@f#&H)X;mb01GpE% zoP(=U>2Bu{)f7?t%yyUYoS1?j+-tFt_MXLA&c`pHHEGHu(HCnCBEsP;)?SY7aE>r+ zKdvdy$6a?@)IF?nFN|-v#k;{M4Yw2zw|Wx9D$~;swx$mgPWkW{{0Mma_kGpy4}fgK z=A`y~RJ#0=jIP0N7NVB$7O@;RBu=VS)vq~QC{$(ldV zoV-qbqZ|I%w6G?%X(_<8;Np0`wQp!zyi>!|G7pbzTAuy})3O>E8AcUte#YW%t{uva z#=aXxTp^t+`W?76e5>%-0_u!$yL!b`7+pl%uct?sLzq99(hp$hA}11b5xu&dZshPxb2 zhZpO9r~lDZd2om=O-H=YqdHqjj$AtuzI5Mh=lLigAsvIM2?8`8FYW}8VgO|)hC&X zqSW-r1B?d@1{r?wexa``iQAWd4RGhCm(fhtL+R`daX#$HCt6MeT+nHu?9f}}s=KaKD zRk2I{460hvKfU>|#`qODA)IS6rT|9ti_0+lsuAqup=yLV3akY@@eTx?6yhQA`A4KO zJ^hGuBt`ts!~aS6Uw}Ceyljf9v)*x+2$4YFG%+hJv_jBko zNqJX-Tu@)j_v0#oWAX?!KY`^}Q9#ms(KdI|td6*Sr-gha-jmB15Z5e!*}sJ$EA0rC zDG+U|3h^1Gn1Pz%#bV^8D3*4_f#X)QG~DbUqo6n;9>TAGZmJWy_Eh;Hi~)ow*9nVy zaaIbgC;7u?=`xL3Y|+SNEHT$k*P@760=XDhR@!N?YPd*)b9(1lMT2`tTA9X@fZr}F zYR8si>A*=eb}ePteX$E@DM_&lu_6$)cDTqsI&&KlLVC=f)g9l@lXKW7r{vKm^HFXR zE}X+)gV896OqVqeU(Z*+o^Nnpm9|~`I^(|sw&9M|t@vC%T_7z=WAmMZ$651d?iYRD zLe!+s70kK}pPM0n4U++^`x*2(z?HpEJAzLXsGle>xclk{NPU>0jBf^wPZ>}FYj);t zk_(_xJSKb5G~I8AyIqgTvsofUiI6;*B~H6L0!1S!YhX0>Cz9C8hx)ZJ$ougJ{F|52Vb;%Nck%121PN zFAL~p0bUj;^p1<5Ouwr51I59`8Y?csbjOVI6oi$RZZyN9gl*=0qvJ&BM*N4zm~TW9 zu1iWn8vnDCd>G+qi*%z!%C`7MSbd|d(v4Or8^^8l5%+!~>{lQeP~2|0R}=|jASwss z>)9jZvZHc;_IOP0gkKDS2s?0o6rUHG4-k5!`Mmgm^uEzpN23s0C7b3W7imoXs9dDM zdI-Ts=ONAK$u~S7>3pQ~@t&q=64H~9o`m!yq=B}hXCTd|&NsXO=>nt+@V-FBcHfhQ zm{C#k(T`JljDEBk!&)$Vpmd~bVAQL~WqGkiHggMav=~p1z~LLXg#1rB5{dXn@1yZP zn!SIr&ihhR>3Ce}Rg&Sw4?xKHQzzOL(1vZxr?uMyE4#-bn^}sA2p=CWVGEU6dTpe0XZy~8m0i3aK#@yk8-z=!1S z)Qa~kyc>xwd(U>7)t(<=w#5A?u&h7gxiWaI2oGUzMI3JS#n^Vqhdw6bUih2=U)i<3 z-EqYw2nX#1=tT6(rx8`ZGPyxB3{LLEy8m@J)WuP6{HEt2u!d)l z;IZJG0nBfnjc*Vi!1qCUX@j`t8g+xXD4L$w2GPSF4HK*E7TO%q%r6;>iX0!Tz|7^f|U7EU-caTA4*J z(aKof%3ic$=dFz4)kZ1>@-ZvHFnln7PTn5vw+G>o&EG&g$Y$OY_S>eLc~c#cjrr?D zZ3~yZXiRDZl$v_a=7)Uc_=Q0l<$x7JlCNX&cK1UNrVG@6YF8hveEl@!V}g?9x$0NyMk~*!529z!qOeND_52ik zh%QyqJ`Na@F*bPGIICThK9Wa2Nqs#Fvy+c8)g+P`h zDDZ)ftabQ^ku|bjNg}#N_T!*xF!kW1jV`_m`Ejufkv1Nj9y5s@9xP$x*|c1dw2%Pv z++H@ZnpI8-n#PQnm6=YG=O6r`0?e>faV1fAGPfJl;0ZsD_i6^g5~P5jDxIJY)-X_HLx zNzGu6=!S&`td1Yod9(2o_@3KSd;IuPKUv_8EgiMYlFoT(}yVWjdnO_;nZDNST5r*Tm&<~Z4+2n>G$%5#X|q! zfhl|j(q)VKow`fQM4tp~GElhg_|^CU5bWqma#HhM(7J*Zk&9K9 zOtSzQ^N}p$^qjAoH`Bhpa#rar>*IC3mc#kx?6WYY4;?cI%0a5J{#L8=>k{qDoj|nkXk)9rps7;21CuGRGfcC&6 zU!r%==Ws=nyo0LwGya5<@=V|?I6uNHn%2-nNTxz+z@M>z-Y$fiDEJyl!{~H>_O)Yj zjM8~@EiCvb-K;JD2Y$aXVh8~rPjkKNxUr=%X-A66gyP?$7Z^G|JB&Vie+fHDD<)fm z%+mXej??R++?V;LM6Y=lIgs1e0Rf?r$+Vpkipb~z65AKIP`CRLbghan;P2M+qAI)tulJkKUG_bAKk$upPn%}Ys$~y`MvF@ z*GJQ_X2v>f(Aa!C#oWxO308-KaHGz6{s`-}{Vn#*8gjkyXUyBiGW+n% z0Q1MGlHO`sydx{NbO8p-kEc& zSZ5yMojJCZb!I=$yhG_s(bF8Q0+)fi>XrywKQYK->!*8F1oEMr%U13l#*Xhk5{+k= zp;)9o%C^IO6|QV*hyU?e>D%UY%Szug50ns&)!uT%c`En(Ta;>`lCF{W9GT_BzeJzmo}6UA#>m&N7@Yvm{U{){8s|z zaFN-pqtqmJ{pAH3JG$xaS>#{-Eq3i=$ROtOJ|u9 zzXtWpmuY1}k3y;;mhX-hh1EkvV--J&P516TE~ep-mF15%ipFyAKv&O?l-FXbvtrr? z%vTiDc~PDv-e~%YyAxV!DH_*0dv0^#&gODC-PLM?n5N#%N?;6(0t2fJ&+CxK z;5iyoqkD-*f@fb2M&>_EUh@R6C+c0dBtTm33m>mD~Xs2z9XFzbQ%YQ#2#_XerF)!16 zIi(Nf&nrls9bhmVp#=ZB(kV?hqmH{LK#iN>ao4i<8{A0@ctR)krMzq*!Se|2<%)Jx zWl>Amed1Iw;vk3iqiqTz=7$XjcH!@^DuA#an==*o-PcZqk_yBylyK?m4$qew0&DXD z!FN)Qv?T{e-O>k6>5~WnD4#ifo_3gxo^0lH2gZVZUX07{qOH|l+z*x`oekw$6v+l^ zJZzO97a4`3DiB!Gsu!=rgQK#gAy7##e>^-2Oz_t9=dzB+`{n)|ZMqCXek z$iW5{8wwoOm)EqQ_59e~=m;)TD?f`pkx(>-y2W;}r~i#UsU3V6`x$Z~19|PYp1z=T zuxFhPicNL!G2X$0vf4p^4W7as9EA?fis)bkhK+BRpC$8~qJOaz31v4^2Vo(DK4Koe z#!j6cp|ph23{s#kE^B@j_T^LqZ<0tT1)vT9_i`jTN2->$(<|HO4q-7YeBdGn5k^!* zr#$)7awgM2mg+_`Vwcw;BNz|p8G~);ucIo4cz}i^5ZLoQU1`yH*GyKxr4y!_M?05bSk<Ood#A6^(WZ;Cy z1s4yI&=6aI3D)Fb4~+;ouzabL@Djm!?FT|}8=wHLJSPwXJ^Il3M<3uR)UjC>+@wYr zD;*2vvUN2C1%h_1F`U<=9l_FY55m$*a#D@{v|1`jn3mk<*pkqILI?KTHXjyT=RvbS5EaNbEhNXtoPIx*n92R|ou=;pt z3@9PM;YhFY{8d<~V|n~*+Y z0p^nskm1S(q3G{;T{tw#b4bBP1gOnL{IiqpFM@(9A8b2B8Nf%(()v(v4IvcbC~$;w z0nt-ERt-p?)~qW+(c3iXKrhJutQ1fJw)L|B@MFj@Y2cjK??Qm)77UC*# zZk>znqQdkjcNYu*gTTQhc=S;ejYjl!;NOF(k^Yj?Nxo;7iDlZRvO) ziexNFD5i+g=ZgNt*o0%UL64@h>(I;P<Vv0aiwa zNllpMHW9|z8HJ%x7c+?JSk(0sY{%nyal{**M5a$bbvz6nZt;MOfu`?Lh(uJ{P68sK z1t&Y8{d%&~hAJlnD8}BR_t70l3t)E9NP-{$p&SV0gVR{xR(i0#ez`*4ac(<`Yh?$B zHmn@aJ*2b*X%3F^4;VxNT)`WUVQ_OM6SqW5>aC}2l<&~cMIrMzFLV;r!6%a*7r#*Ip3Ia2a?~C=6ou`VglHqnUh~0Z5f2ja+2GMn54i~k#rWJtidWw!V?527-5`u+CuJZTzER$K|^+fFX|y= z@I7?icfIuRdFdK#56+AJhaiB$0N}*T0~C=2bjoeblQz*;w*`u}lT-j(0K7+wb7F&b z(s+%b)(45kZNcuCZ!DLT9kAE+)oY*_P5(Vc6Ast&TxjPWFqkaX5N{I!FWkuN7AgNo#!h+aI}{PUnky&q_b9<9US z&HpStItX{`Ch5^y6uOl3XeNbq{t4;P!moazM?W4tie6TW9(}v?;_1=!nT^t;-D6aG z^jkCz+y(Vh=ut5;h#tLki6SzqMK_aWnA<)d9Vx^F~2%FR*fQOoex6nb>(pPU}`Ly?~$ zJ!*MRQ}pPscl;02qpI7RL681|LYI;r-PG-;rAKe?;Pj|Tazv&-T(UTZP)Dozum9xd#x5d`WP7(OOI}ZbweZcs7zGp(d_Wo6nb<&GDtpp0Y!d>^l0`S zP0^!-y#HZ(blok@phxXd=u*<7wMjoMJ-X@RU-oN1-hOQyOdR1+%}=AYGf$X55rj1Fz4Dd%QGM>j=hy55MTh?97;veexC;LJ@2XLRO*lQbNhP0$X` z5PLu^F9e!agL| zF^+y`{WJp2B+Bij?b=9j?bAz8-H@NuX7kX3Y!2Z9XH~XGdDS#s1 ze2k2Xr8hU;(kQ(t8>G^k+2OCL`X6L4{SS&Y(hGC#e1vtFS$JJXwxZnoAZ-K^3{H^WJ~8LCP*nhg3gmv63AWlInIvlRoOFOGio zdDuvZ)128{#+e?LaoUF^bSh0Y>kY^`Qy15wJGUd_V(HFjH-YZ7{OWTpB);OTrdkSR zU!zi<^Kk0na+N}Pg2*7sa|Mck@BAg~c2H;cWWh^?b|9z-L^VJg!t6X4 z?88Si6PI-{V^#R-TdZW&?}lBM-*gz>0Aw9KiK@(?Do*&ChmHDS`bAch5O&QV4(k5Y-M_ai#%%24wSW~S%MX9fqZuerAhEuHw zkA_jwP}5aANxE>RD>hxKJpaS(_gZ59Bldg8F`3x!O|V+v@5c6fFc_}8-#d(mVSQ=8 zm**J+J4q`I1d~m6k~i8pHMHpLBrV2Tc9K`2kTwI#=$*#HG&OnZa;a+{iA~<>IKmJK z!2=K{2wn(TX$T&S&=?p9+uzx99pee~dAag_+n1C4S_u*#R>TY z#_aH3aW~sq@FIi{GG=Bo$TvHw^8YPji_)$b3+Bq>kr6=zXt8;)I6jAoGOfybj0NvS z#Aqy+`z-Led$KYVBFoM0WDf5ixV)%3v}R2YX6XAm8R+P$=*%W>bE0 zGzdv=?u~)o^b2MN;on`sm&u;LGr%K1G1ynVyGQZ8w<{)zU-jdJCRKjs*Xo!Up~;mO zB7+FcyC|ZGIAdKft4((K;+?kb@E0Q+TOO<;6{y65RrC)|T++vpJ~zp2UeXW0ojqUR z%5At!r)7k1G^LH(D{`bS9O;9FqT8rI`dp)@RgQm@F))fJqgXO3FoY*tuw;usKc0+c z$>>0Lo;0zfDL|KhpsAKD*)l+wj${l=#sp5FKS-Kc(j3^!ldV{?Re+9h@wPQfwhpZ0 z$u=z6CP1!0cpJ--v4OwwWLuVO8=&yjc-xL8+p)OMND3Z=wHYM@=ixbyJ;w!S;5nW> z#|J0ixjlPsAI!sZ2lm_{=)!XXdrk=2@tnw>6N3Zr+>t$Z3?}2b6MOCy?26|k_M8;N zO(>(fIQ_#rBd@bd$lQ>V@&$9>b9$>g&F|=~F}quPYvSDPyfv*of^^bp+cpnDuJN|x zBi+C+o;X(>8de%@cKUAu$m1P=xz}J!Lm*-o{Pj|HxZ!PC6E*)sN8ztRsh&y&n5a0m zPQ~Cx#^2y?zTogyOb~PUyFea3Nu(jPxbT#Wz%Xfa%~&ek8)+9(U>Gf=++ocZQlQ8a zQr@r@qNb3t%({sEzGr*08j432pC$tj@}#vyB`6;3z{Q0cg^Ml!WW5m1N@RB|d}LI>B-s@2H{Kas!S zq1U)%5eI+4<(Fyxf=?s7D#;8N;V(D`)j|35-r}N#MXss*e*S`$e>zW42+Ka;PE7Afe+VBj`4f2uS1eIGcqcmeef$M`Q3oNw zqL28@5AQGdvc#x8JoprU!NthdI@k^80hLDP1!jhW zLk06dhrkFA!Q<{L6rU{I!^%Ab+Xg?T^8?jC&}a;9r7we)!PADqKmzSR)1ZPU#~nMl z#-s)ln15ibmAeOiC={Ou-5~ce#KOD5{x9QF1U)1FS_;HRj%Dzg(7W7_zYE;Un7p3l z^xl9lrHFaB&+ViDjX0YC*1FrGN{6t#>-0sF_av`l7Z$H~cY_;8_`2#v&Z-#nz_8Sa zW;`n=F3L*VM?FaoGQGM`M9~?T6Us7rP`lMR)0a-dokexJ6N-C7)CqP|`p4d3sM_lo zl7vXw#{e>=8o0;?PC(*W1UVh&mc$I;w>TAkvXDT`=%FgFSF(M0MF@`Ca4}nNL{wz= z+`>l;M$Zuka|Xm&44eUD)$&e%R`f7m=92U3r#-k*k$qO6;9mHAtkq$w^1On3zOtA% zAnNP90Taj@@M(M%Xixzp04FjA7its6!ZJa4On_4$J6$0l6a1*-sX|dA236ZL5ONMY z19=?(TsE(wKLKkRc3|sj%=1@($Gbl9E3pLq7yU01664?~s3>t$F@|pmi8P za1D?OC`ID9h@kxn0I9P{?oPmz&h%-PBm_tad9HSSYjY82f0uOMFum^>NqNS9f zAzZZ29E{WO47bZrO~jX5TxL&Q@8Q0KC~l!;)Ki;E=3iMjILhtfgT#8n+#ed0>)PNJ1+}Tm#W_Gfd(jc0csd>e)9^>W z9PMhpgoxBd9RJe1R?D?;s&YiyCnKx|Xu!3wI*mv#mKD%8 z)mV>jA+Go(I;Hs*>YV%l8lZ0$&PR_B`rrXx$nMU-oE{8*OO1MRLi8z%CXUk^P$y3m zc`%3E*Qu%*MxWY;*LPS?Lu|Nx(N0fSCbWm&^YhfAokH;`Ov*+2BhvmFeu!9@U_IEF z9!n)6)QBG<721SCb!IB;hp5g#3}&D$(f{yxGqISbN>yk+x>5hbn`w&;|HJKlvC_P% z{~@1Pq4){Vk8qp0fnp?afXb+1eW$4PI3Wg_I6h@gh;eX2M1P~@d9M;fY|(^zk?vF? zGHOB45m$=L4^Q8tOy+@j!JUcl^|NoNt6p66{q>8o?)+4q-RSx0dYqrGuYG>%F*J03 z8g@V=BBKJd0};ceMux4Po; z5$IR@$?1zgAxH z3;p8s>&?rXLBC2-=u*(Hr@Q|g=+_@!h%z)uz9IwIDBDLZfXxMW7HuExb+?Zbf7w5V zqbaX_s22Tt3mMI(UjtGbrC%=#D*d`W{27IQjYI~~uZ1Y`Go)XAu4;;YRd@e|esTJB ztXnha*CrIY6!dF5uCn~;^2W!!<6H_mOe!2TJO278ER_WL8(JB}7 z6#7+)45D9aQRHVxzoztRihkL;{6fDt{p#Pj8T6|)3SA2N)jsj(K)>ew_80nfY3SFm zNh)Dc^BO86jCUXHeH&3rgElg!a-6S-T5gyPsBO>B-pN8oOk9}xe{?h5mdo0fr8ZoG%s|Rr)kI{27HlU4;yyPxqq8k4>MtcWR10 z#m4_apL7-v7ldZer_WL7($c5ifa6b1pYHv&LZ6!9%=rs_qM*$GrTxR*wdm7{yDox0 zxnaG~2z}ar-mKa`pw-CzA2Qhf4@G`#`t)e~rs&hu*k9RV z{Hf{F+dhRpHR=2r8E{aMp0t32=P5q??jJlp{7)c1byMxLdci&`J1A=QSz(`09gW%< zVWZVHY@?-kgf?WSb=z$!0a4^ACo-BXM{Q05oodV#bnsb~Qk}R}{g5I_?M4Pssw5Oq zZR8{DvkD-zk(UfEkF11|DeU95e!<9e23|Mp5qizTwAAjf;%=gTH35ioF!{`fTf~=s z?iQhWgtBQ3yG7(H&Jbk43%3Yz30*_g{fRHm2Zl12(CpvfsgY}x`oWtI=4pycXb+Ym zm(Z&#>8?4wOK3i`)|OArY|16{3RskrsXbY>HrpE%@o!+y>clXTU>59#mvGo@z9Y6@ zT_-N8ZO^LNHFE|?H}32s3qV}S!=nMYV^K3cY=5qg48-kOEdWbB`%m&8W#NI~E{gC# zZ2y^D-~JN@fi9!WJx0S3g6<$_kh$t*Ejb0XG~_c%g-+vM9&Mh&KBKq+22QiONr=Z# zI_WL6Vdt&-4@gxJ{-dNe=-P+}>9-i3qTat;`+`tB7rV}IqqzYO--On7AqNV{T9L>^+qTI&gJmWFu8>Kb|db&8gIg3~jx_UW(SM=T;Yd)fTLyr5&*! zn~zoL&q&1RWcw4`o3tJIQ1}N<8mak;-Pws2vgrU_5AV-7h#%SRhlTq$m{!>ii-QKe zNuPlwJW!%hZ_;0X%V|}roOQE07)Gmd&CO^2q_(*e>hULS zNlxRcKdG&8e^R*J*6&a1unqQ@fuVs(RDy~b9Jaa9LQx(|;}euN3q>MJgD6otRwznm zX|lpcI!-7`W@!^oCkRDJEZvf)lY}BOOOqcB%6Aot&eGFLGUrFyA{5CijmzjMZ54_> zXK6C+M><(3+Q8Cen2U5@xOuR2EKkFyTK(>R6e?pYz>uj+HpZqx=a%@#Ap!;6|r^?xcVl>qW;uacwb zOmc1kXOgLM&nFv?n{Wb+YE1GQmLewE3gZKl1ik-)g-qa{jjO16bO`=t`d&ry?s~fA z<=xshN9|UrzcJoD`##7F#J6|4Z&f33B;iU<_1VHM3M;{-MJ?cF##|c_a*k&5nkgYY zxx);5x)QDPt`qfyuFtRFY1o_oJOu*-oyXuw+=xXKru8vBg>l^C7!MjV4)Og+mLY9p zD*0a}liRtqaHzpO16QLteVBUD=#$|ScqCf{9_LB;z#|zQAXb99@PS9t6qwAD@PS9NWq`cv@fJStNX9Vl zdL-ckkEEG-*CPoZcqCgf?|LNR1CL~D=3S2@eBhC6!yI*xgbzHDvCO+3N%+7c*_L_N zBMBdPB-=6XdL#vw6qt8Cl5s2<$Gq#2jAzMs=3S3udzNg^yz7zdz>*!9cRi8`ESbQ( z>yd<4JU)~doQG$4#pAhSa0Z^?6_4jm!3lVVS3I7Rf_ZrE%$_?3U3l)op1TC?c)pB1 zUltsI=dSFzYcLtl-Pm)tU{^eMXV2Y(aLdZGxcp)dF99-@ElA&|PLnf>qt3#gEB&R{2^AmD~tp>%YpaL?VP?F;wLPv7S0F8Z^9xrWS= zcEPyHs9X(~GfT{Hyr)~SD}cEhy?gE!R!8BEU3+X{Nfe>(bwGUur&|(E!%>$r(e6(8 z9@7nFCsgO4SO2ljtJ-0m3()ByMY;7ED>>n>R~Lep*Fzgdx%d^s+{)t_v3e+ z-_h|q><2l&+eyuT4}SL&@78~2sNH%Vw7lWHYW@69s>Sc5didQi+!v-v6mZ3^pWh9h z1sD#ZKYuod0ZIHa3iXNKb&+fHJI6T2@o)p_9mMt!-H13|D(>3m9B+C<950`7ygLVj zJzgxsn_i1msSNKHkEC}bncE5=m{V++RV0_&3LutWO(~Mf zZ3Pg@X&1iA%u*1^+f#}pa$5lea=Pkr70Kha0*K?M@vw@daa%!OF1)WIS=?3tQT$7K zN0PX$0D|~tN|79HD*(?XjoT`c!fgdZgdz$fvWnzzTY+6D`U|B<61Np(3Pp=4MY6c9 zKop7|qZCQwwgQ)X-YSyCZ3VgRnX5<=w-t!R5C;>r7e4;EUUr=gpr=GF^EnO7wU0E@O;ruoLdIuZrarL%}7YX7-1Z zc@3V7a}a`{K5llE#?8{of?ezKGkj;<{Agk}MDFVFwrwhJqZ@DQ77NE-tKij%P<7aO`QoTri_7qk3C(fLza*m{hjZvV6`I%v< zj-P=rGJaMO?%c)kGav8Ozo)3ZTDYLGUe(Xfq`LfU@ZGh@VEz1Tz%)?6{`BYh7GW|7 zes=yYP6ZRb(ebmfqW5rmmQ)!TKpfkw)5FY0PfC`syb>`Bgw-2)XcbW5*j}_p69>B} zCIeWfAwbS)BJEIi$jL-$eSNJie}?B%VtI%c0!8RH2+kypXrc;K#*IoU*P%8b`|Jbi z91blcmWRzm1NYq%X#uyT{nQaoT9^zFLxYA`A|SCCX|TAQq$erxr*`(ebJXFB1z7;`Q+e`yqX9% z=&Dnap{LwTXnEfTmw!MkV#4G*N^{JGdzQGQQ-#$QcY0xUoF}!^Wz8?F?&mfYR`>Bh zuAOSVCx{>tQS&+$R;PO6OEaza#9D?F@K^T+Az$vN6E;A77vjmw*W>0yQ6gG_i)pC` zsieBau7zTc&|S$V<=bFO57R+rZk)f3dK;m4=Y^&-Q^|}m5V|Q zD|oLC-o{ZS^mT1?*sK7ui?jiEbt9;TJC4F@w82%zF_kfWL~oTb49OTkvdUQ65+TOu z#&RRG?}8=+nZk0!z^pU^myan85ttF8qoWGuva;Q#*u0XMiY3$Wr)c}i2^jA?9{drq z%8{dDDU-h`!rA9|#kNalup&wCWch*On{7qIwc?u@7;RJIn^{mGl@%&df|-3LXYqyS z@;{-)H>-IU)eK@)Irw5IM>;OsQAii=EFMX1JwabhU-rbY@B}nEb!C5Xfk0Iy$LC%M zZ7v;2_)Ex(E0WI={$5jR4r4DJzZfeJx1~Z%sieSh^AZS$g;LR2xY1HrUEqmEiKy^w zMyz+lJHurXITXza%ZP5)2L2Lq68(1h>V$&Jv_k&vLGe#N;`^F(>_-pJKh8u!PS zpQZ3OMQECUTj&4K0#Q0oW)cEi*orNLSs3YBjP4E8%m7W#kx|CgMmiP%XJhEP4$d) zlx7l5er3>4$6oSNs(6v4zarbfhM}!cwY4+t# z|7hbx@UJnrZX&7V)=)_tPzf{#-LaM9a`l-AY^9uKSxPdkxWMBK8W6m1pa*38ndD5l zfa9RFort%h@lPC)q$Ad>%W9)jGZ%u3eJ-qyH5PAlXF0I{!a%fcQ4p1wl6c~k>7;N( zyd1x=^AbQI~qHTlsV*|c4OjteOO5ITP?UfiEpiNHiI%AG)Ke{UvQ{W;7 z1Xl`f!2sk$fAnBh#kRryD`+Rta3u}KLOaBy*$;_+sGbl$Dt!JZEO%gjI+lzHK^Nhz z#QZogKPR9Znz@e}3J&EeBca$p6kCA-|E6@>1wn#opuR3RdJ+ zg1oW9WjiNAE9L|mv5DkoW1@We`dacrz9#`1k4ZWPBDbFaf#H#AbA;JXx*{To@=`QG z+vVWr5j;Vs|3Eww0&U~+0aNGyHeQ_w)Z2UmJ2ab4?`4bplvUpC0t2-#o~jv$HBD6+w#ewu7he2#dEsU3=e z1PiS63{^ImbVer|d_Z?`0S~^}!SLW>;a^KW4W$q%#M8-sN7*EC>_H9fsD0@is*HU#T` zpTaPHR9KI^nI@{yHT}wIf-u3_e}YAo)_NiN!u3eA(h~QYWhnuW|Ai!W$d)y zTU)l*RJh3z904S``YMuE7gUq{jr~G(wCD23V%b4UWJXp{h|CyKf|KUIvS`LkA}lps zzOI$>Wf&$y^zz(IvC@xIPkf0NDroZFW93OI5m%EcZ;4SZ`j+fnx(QGI5$RIXS13o- z#xap@U?r z@V=p?%RkE)>`J1fvSAp`1xb1l6>Q;@zRtuhAi*gebJ@OeCyB<8-2Q|a8?bdE?P$t8 zZRNE%j-bsm;=b;qTLBQ36+xbB8srA*xVJ zdTLUZELcbQtP_E-N)p#%P1z@fLL6qavQ8riD0b5K_SRO`Eo||ac9*l2wFf`)^^?^) zf%U9H#wN->^?zzMHPxDL$~) z?d_8Ph!W~fp8sOCf_7-i1V%k5$&?Aw)?P#+GU$)H)x@e8q6k${rR|C~x;v6aVNr>| z^$YEoeqp2MScXC@&gzH-*CAyG(^cBQGqQqLvX(XC!}A>)5#bplSTW%@WhFvIWcNWY zf0psq|3xc<;;o1E5eUvr!um;h6JF`G5Wd=rW&_IA3A%ps5e0A&{DI5=5LOkXft{2F z$uOHGl>y8~mRZZtn6@MpouSi*Gx&aoR%12cz%dVM;^p^})`0Y9U@MbQ2g_Q2ik(MW z{Q_br1@trn`29Ln_b1K+1tzt@4Eb`>5;tNa>oQTRirT=!w%|5o@y>i0?##vY;y1h( zr^l+j_`~GJdO`a~Oh$xq)4T1I+$7!kCrD39`9H3~&u%qD?9pW!QPJq$Uv-LQ?uN`O|TY<6EK%&@c>Zd^aZ`b|a$u$X|J ziUE>TH3C@&$GL0=SZ@UHYcxerpr@QkJAxqYh_$YL0cwUkrmwk`>uV-uO0uv#)>yRh zQ7CM-kiteq2vXMwTwRk#>Kd?eXxf8uT4OA}yQ;5oct3^0<}~y*S1ZU(c&0T++L}tj z3dATs#(K>4HFW<8Xblz?F8&!r>2U1w#rJeeL+_?O4LpQWRm_1C8u?jwW3- zu%RdrM?X3A%v*%!?En->tWVGo?iO3Lp!Jdq9i7+*a+TA#1$rY`ULQwb;vC6Cs-rwb z?=wkWl^mfuDzX-0{GLvAPax!NW1v79au5onmU_=It*IGkin#u(l^WNN;2*?l`2J$& z8|<2-2v$*sx5N+f>e*)83Qi7+sctiF!#3mArnecXo}@|xMMF2Lf`Gc)7{zuQmG&rl z+v11ValDA$GrC)9TCzgjaePs>6T3ps1GFXJ+TcVVUhW)XgOq9AQP zn)urD2iVsh9bRfWvz&h^jelu3lGujS_pwvh@v?o$TJ|j$VVjE>)E#)Ly$6Z=Z}uR4 z^?Q&f_eJhOhR!8E48I#?4+1vD_8`B-4TtI;M5H~49eAniLE>;BmfVX}L|8uQ^3EGL zzW|LyF}4T6brBF}ls(AnZ6fy|m!S)M;jukPERq@)V-HdWnCbT*g!8&R$XB0(LHzn( zU=Z)(Xpp9s#Ql8`!s*Sxe|Odd{%r>sbGr?NQRjB5v+NFDC$LnhkdaB*({)X?0Lfxa zJ*8{vG2WEGn~I}4lhvlS(+1!ajz92`)64LtCt9OU;m$7FL^yTr4CU=qp%_YUV5QMc z;C@y#V+CdG#o;1VU&X7p)>RMfXCo@%)g@LM9}CczDve--8rUZR|l%mF+<+@=Vqq?7vV#6XGN2(W`(Bs5vkfF*H7|d*J;d-jhPp#SXm1 zUNdMpZePk5$t!%7twNGC4uvSoH3(#I6h4n0@(nQYzO$qKeTO&~tfxYyqv%90M>)F?f~$0RNbFw zc5-PqUH<1?jY+%0V^6YHxqZ7(RLD~3n>>36^$FMYykVtGQs#kR>|)2|hg{Mg@UD^m z*dbuZxh`Bnks{~Vj)Ja5=i;kuHRoMP^acTd}BNCxxjX7wUOG4z`4%QXo>`cZ5xVBg|BG z$e*!$3#ZZ{V8*rRIBk`n4KmHYnS(HiKxn~0v76DIa{~N;EI|;&i&+6@oMPii%pSoZ zm@FR#7ir9*rZx2=Y*9ly2sZKZvg-+gktQ|xUf84t&tyZxtyxG~gRnyKj*ztjCN)Bl zgqFyxCIKaIfbSGCj|Tfd9t7crh!-tw+N#!-zQfC}h2`5>U4OzeWM`9uV^{ab_`VZV zI@Jj~q;$xa{xPt(#`&0J40aHD6yg(jA4~W1(A_l5-iF)@=>QQYpG^Eh$AV8X8=JNK zcqO`5GOCHNFHQF(a(@at;Saa6`3k;FvIsK?MIB<6U$=4aSG>(XN zWnuHc*O&lB(gh?8`(nuPuee%euMbapXlQb$o`_wuHHybl(#z_JH9=~~x zbc%IsZkD1d!8lHCl}@Ot>fo8Z4NSygZ9@@&V&!)sN9vZ~6Kvj@$qj)=M>;??4*Uaj zAbuRD8hbd^u(j8y#?`wR)mVXIDE$sAjpKsAa-tgX{|=)~ob0}iqsd17HATk#QTu^hjd}qP$@Tfpj7b zd4yQdJ8+8(JL`U8&*7X%NG87$Yj9OicRR%l4hxOt*hULWNsN*ER zI;HN8(ij+IU?)`rWecu+gKVwnTJoI!IYuYjsDapYl%QsjMa2vwhpaF})d=GTUM&Vz zm5Lb#T!CqW$Lk5JXF;Jt4P&31hpk?e{w+AS%XZW~gjt7RPXfb(Vqz_-M+qg>{mh0YT0MVntjHH9=q0O ztgyb4W}Jchr0F!GcDyg0eFkm!kC1&vZ*3Z!zK)`QBqpexgo`k-)n~>TvYP$9TsdR=}VrY*C3i~a#ip*e`A`SxX>_r*)&&%;B3Ui-776>Y%*m+hFx z1Y@UQj4K6la`Y-(>lA5~k>5FDYYnYVU8{_F!@yt;e%6pxMmID;9OdQ}3fa){6WH+T z_y;k4x*vKF5SoQEfDPv-PU%7>NJ*?HZ6KU2KMR}_lVF0HQZ5QN!r0_fG369&XCLh% zmS4cTEG*q)xX~E%C)#A8I6y?Tc&G5>zv$temz;~uu?flV~ zLA8`bJicpifao6{Exv!Am!B{8Trc{E&~DZs&+T*}UJ!LKpy4h;~_EkpsB_ zef?4%4>H6b|- z77`E(BEI_|eHZY0`CoP6wcv2m{GaG$GU-3QFXwOmQ9Dd)anv6DN(Ape^0!8L|Fj)g zYnPJue>jlXW>dU>McCG&EiM~tg!iuoMgqpF_}wV)KlCzqe(;G z#g1VWih=jP$4cW`JkI+QVO61sjB#>7e;ULtdC^j{LAQRJgAcXj!N!a%F3y}L7X2k% zks|Y*`fHpx|1 zuRt-teH|-3N`-s3?K-#@vWvEM$_azWOhX!v0s= zFEQ-DVD~FFwdO1SLl7r{b#_wrx*cyXG;zCLt#LJHD85dfc*wm z+Nr|6=T;r;i~68bSo42)Q-eLp{Sok=1YRwDs4*RE0`o~aC83!y0XhKtK@4sz+L^bi z0{>wRZtUncllV(bZ@s9hzx4(;-_gK)iBI6A=zkA!Qi#Xt3~oAXRg~VOz$rCNMLELJ zySXa*W>&3^In1=(&oWBQGeNE+J`klXv7H~WB{l(tvBd7D zI;)}0=k_{*cUgsu(UkpgL{lN&)bDjoE#gge=1p~>IBS-5i^1Vu?156$d0%#eomdM+5%!E^uyF(tL|7^d1DQu*MUKK=gSH__ioJ$~ z>@{4zzE<+;fO1x~*}$%odv)Z|LbGT#8#r<3AQ`b2&q=9rB9H~`gHnYjOjtJDX5%|d zt!A@v1Swj6Xph@$uv2I>N~iCloLuX_`zi~9_#<2iQH>9B8{R-2=4L7iNWriDzup1Sb zy@r$9Yvk2yu0iOa>2E}`)?oUZ+@|z5r%8Xq>@^4xNss00KnfgDYC{T~N?^fyc-Js{ z4YTH7lN3z<|Csw0_^68O|12c1K;SMyBm(N9izWz~C`ck8S=hi`*+3Lfd}F~^MMc;J ztPcX&2+OjHR%`XA6>Hm{^----idHe<74U)J6QNZ^lzY7*_$UMg^8bEk?rZZR(#QYD zN3(lpXXehCIdkUBIo~;BnQIJTt`XP;R^ftFOok&!&DYhMPur+%5i+Qg5g~h@1`umF z)qS~I{JNN5gK@+LcA8DIP8X?_t1=yy#r;+@4kn8dzc`pEfDsM$ni;UytWp!-&iJCN z_^X*y%JM%auR0}ce8vECcGwn5>MfAW48W+GE`>>2@AeIBNYi6y!Xz=rwX~u^ zFmCHJv6%4l8hi?9k)~hD^`&P4EKF5v8^Si6SG?3t+AO~L9Tto<{S*hdp`QY)@jSk` z76ut=Pb>hInwr-@P5r+Q*eC~0T-3@JWz|1mX{-XU(Om*IIt#ThXDfb8hfuI&8erq1 zwWjX+S4>FYKTv|Y>$Os^e25iH3v_P?*!c7NSlnaGDAlr@>BvYX$fNRlgjeodBh^@S zQC84=-C+5;epW3|W1D*IIe4wmV^@<5EK23l+W;f0gll7sn% zjpA>R84A#2EK>&$D$D3kngxa}Wb%uys_Lw&-rw(3_4*o7)p%Le1eST$s;ZU~yqMma z)Ub2-%hjljjjF;ASlUyrdgjY|I>~ynMQ+riBN{KV4*T&w6hFl*{ufz%tgHA)S^Q08 zL+-akZWdp}CY(~kHa3mj_(kuAI;@4=s8}j>*!9&Yorc|5&J^sPuRspBw=7Mcb=%Ld z05yT%@L~KK;Wv&!(>dvWE7(8h$9t(&{Lc0)sw>m*8@J;$w}aoHOS5VGM!K_;_>C5w zoy;JeosIAtTm9r}iQo7G8fW1*<`4SG_>F5>Je8xKDi!Y{?dzfV)&gdlUV6NnD(|-F zTuzl-?d6_qkHBt_$R@BGlY!lMr6G1BF0dP{!bWXyQf6xB0NsXJ*T4o#=tcwot2Q}b zKsT;h0?u4~wq)${s6GJy`@J(k{wSC)>r7+=XPzZ;!`rH#h^*S;m69_BDSM7XVX#&E z-`H&BTJOYpc(}Wv;UO3_oN3$_f)%kTqcFQpF8Nt_B%S)mv zIF{n``P0f6ws!5X2Pk|8uNvAncCnf&_23RuCC;c=%1XqLY)6QnnIo83JG3;~E?9A> zAXbj7ZBz(v(yqi$vGZG*OA}uOSAu9DPuChareBs3-!P|BI62D44T3)g6;@Iky-iu3 zVayG#L=|G0fNIwRK=?HX+wl*2QE^yX?BSB=va-bX2p;mvgX4qs7pPFl;H6(3@%)pU z0-sLQxtc2TEQu8BO8jv)ZF$%DJIcbP`~f;Lri*7^s2uPAht8kvj)r>@Q2@~R`tx(q zVyAEF%X5Q8Yh!+^xe<&rX^sviz*S9v2-Iu%INI2&f;;5zV$}OV*aa(x2GB!9H0eF@ zY`qeLi*j2ciQO2jSa0J@HSrd|9b@F-e7(s4*wJjmIWUVcpt?JZ!Jszef|Hx!f=(>k zRi6oO;1W6hOqga>7VU+8k5}K?SI0qF_tx&jkkd#NB6}eW!-#b~)~775-WLjb{7M`X z5HnDYpAyI6%X+&rz+F}F-qh?7kH zZCU`@`iBU1Y1XLv~<%xi;?y(Ux47hLyIy zBfc>3Fyf7LWIKHbvPvW_MgrzGYJZ?$$C?Rh2h3k2*UVf9;;}dj$X@UZKMHydOb-)| zZLER~j6f6%jRNf4u#qgD%IWTxlDI&7c~Hx1CdHy-CgNENvFK^@yOCK-eb^C0%I>MB zd{9#hxp^?dSq@ z_XYSLUHbchb=aiVXv2ZL^Q=l`zE2ACS9vxE6Js$~G4N^QTq58HY0-iY^#QwG2XKMO zZeHz;W6%V!+h@NLyx^>lt-0IeV7TY=9gJL9DccAp~EjH^#95H(v8JaIXjQH_+`;qE%S?j zQrKq2|F!w$g0AWOQtp)uQ-T@aEW`X`kjXHN7df}Msh&02r(YVwkY8$cv`J-NkY594 z!6a@4vurvM%rXSX2Af%ah!-k*X|e_C8EkAKw%tZ8Lg|ZD0fxu?yQtw!g9$d3^-rp%kR5I$u3NBR zP7sg-!BW6)c@QjLRtZM=TQA8ddD>MtW)W^y8J{)BR>W^2yh%G#K}#s`1j=a#P)@-W zT<0~tGuHNfSoC8jr50{NfX>vCY4}@NH&rRyR9RQ5L^jV`bw9kI!Ni3)lZ7=QO)3;2 zv|QyHfqA`L#EaCl<1xj934)iyY>+@3V&4UL|lG77GI;JZ?|HiU9cHsz_pk z*|KqH*}k@!u|7v?7tZ!_T3@l+wccPp!-kF33Dt)aZwWLLHx8M7^EhYFtK}Rhf3Oyh zNI=&>oNv?~hTIiUFDT`+;*L^2BJapbdHRSIp){s;ho07mJ%{+>gerMkavPK&V5+ko zoQbDJkI47}Vh?gdXWYcHa&=|(w#vE*%7RDe=}2|H`VxeqoRT?D^{lVo4t)ZvMlA@h zuXjrU^avI>c<<~rgDR-+=NZ}ubeUsW7i$OSjB<~M6*sYd98nwyQIJr5`fK1WzRu6r ziN!Us6=!FHLIu%gBBE=u)4rNarD_Z^!su}KNPJe-ov7S%4ok9WiD0%q2M=zFFg2`o zuz7;A+yrqkRPHHYrA-jjss+&`Dp&s!I{{+IKor~(JJ?EGV4!JHjFT>0BP;rb9rdXQ zPOjnO{e7p?H09@f9;u&={tc(*0)RFeicf*~MOmI#f?H>lxP-=DCsZK4M7*qt9t0^F zS|K9jVsr=HRGRy~5AZhpusocF@yg!g7E_l)BgpjG8)`}9S!LQ@0P z>BMTj!ZVx-+lvZ&+f2yMXezM*C4`XZ{bcGnNn|JGu4+r4(btUx7X$>;GY+9^-# z2$uBfp9?Y@Gr>5BO?|!iv57%L3p2Faop($Sbq`hU!3h(y?>#yXbD%>n9?mBi=z+hd5%$Xq*oWJ za8vRFb!BL0*|jT`b?xQ?wFusUJ17o{ReC+V!EX9!=KOV)@~Ad9yv)P1ezx_6QE$ zgUKQ3%a$B^BNE(sXvB{ zrO;ycNRwXF$4ZYiZnEDOe3j*xdPz7r9D6(%0!RC!xza?_%LqBPLh(M~1%`2E&S^ZE zWm{&VyoD<_GPqhU>m;`#*H$ZE*=eVRS?GvAOnu449LX|*6dcpZ;F-GL0oT^X>_G1 zh;@P(nA;8_Aed;pV`*_d?SUkf{15&b+BAPPGoOVFe$HLK-A^hH&c?Z8l&60071|4? zN@J1IB!8<22m=nwx0xA2(#6aj!OY}ipE1}R{3CJkOYB}$sZ_nrZU#neTXZZi5iTZ- zX3@Hf0RJ>i+J9KflS+KFgzgUZMLs;Z+ln@pf z07Y^36gSDJ4FpBBJ!e6lah}z3Vf~U_yc1n~rt951qXE~Hgs5;&$qww)E`_^|-azBv zYYt|lyMMFUznx__p$FN`g}X)1LOQ@LFcHFG@4nCsj~CISu&VkxcyW>nc1N4S%U6dH zF;$Gq9x*Q1__<_IM@tr(qgbx2G;qbF>v&X%3p;J$qjM|KF)+Ugp?Rq_M$tkFiSaHP z&r73GcsLL!W4m#tb^m0Oy|&U&%w7}nb!Y5Z^hM>`P3RVcmB%{}#=I;!xM+R!4!AY5 z+uS}2?gq%;QU0hR1?h2m2IL^lze>Lc`il1LuV9}>7oejy?F*gn@#20Aq@*r;7TMA| zMp;>%>W|Z9!z}@=RJFB5tRP*~58n_+RK7ZPy!|dp*eo>A!08vUP9P2od**ak&omhQ zZh{}_Y^oZLHt9k95l=<GCQrJSPJwijs24jqOc ztrXA5H)NUVZMqg}2u(s>d;J7fFbZ@~DVEJrf3y&{Vh(n5Xohv;?jY$1iEoQut{;b5 z9Dait$y%Oq`L5-3)97G%13EX@2l?KJl1^w$_zh4Q|AIocpd^!XQIn6U!A^u97P)EW=xF zjBMhzGg;p1Y9-DcRI)%1<3m^|$S_dHVHJWKPg%JQo;*Z4M|^(Ei-%zYUWy8Q-uQCI ziMLh=r?S+*yX>}A(P*#ZrV_A-9C|b**3B44|Cl*maFFeeLOU==zP%hEa8LSpMvtfO z=tN_*=?{gx0(Jp~P~j?*IimgSarPy#eXWlkhx?gN)~i9fd%R=%HKso;j+O5L{A$16 zoAenz@`v+&I2j}(xCY`DtAJ8P@0vD)DzJQlBpFTtX9ghhlg zf>Q)@#~#+$amJ{$_}^BaM$ZUV-T@wozkwrJ2C$n}H*&zOOtEbSTywHU4t{)ro5oCZ zG4^LxYppA0;h)nvS+2D^kr_LOi1 zd~4RsuH4m}|8CX(!#~-7cPByx{8#;V!*J`h_T>NAT<6s~q1m((oP3+$0%ts$^~b<= za|Hk0|BfeF|A+i{%YStEW&SjWU#nHNdNET1!1Q4D}go@B!@6j^9H0Qs&4`J7# z?A!icx8>g2C&C&AtG>(OTgGVXbol-^{CB=gFw1R#5tt&%t9|^vWR`t%ERoR)erbjO zZr1rG!~B2u-z}yPmj1hofA0A226d5)@)P`bJy9Ht@?$+p!hw*dJ)ZNE{C6|HLrcH_ zjr@1Txbg1a>c7itgK_@lgXTEHf4BczIn2szYnW}5NOSfDF5=o_|Dyj+=>MR%8UNj6 z`tM*H!KC>J8hREfXv)>ISqml~Xp-K$Y{0cN?Lmx^zL&cwU)HV=bSK1lk3e^No8O^FmEik}=66_7 zQJ#EqnSMStGLD~2{-P`wx5LFRM|GAiq+i5`Ci)W1!8t_Bk9QMt*?v6qUU&VnX3F8c z8CnqKg!K+_Hjp6Pc-!&C?E6gp1eA7~C){|j!^-BpFEUD1O@A8?ATeX4L+;KI2XH(Q zJC>%JjqDj3BB5KaM7t@|S{6Z#-&#cc>_*ldr(#Y&zpdY?-2Wo?40i6Gv7!L-}YvD6r7czRij6w`FNUipImMB zVQ>8j{O+Fij!hhwU$IU)`2N^Te>4YqL2`u94hcnRHme{s9_q(rmadz8?> zhgVKWG!A7W_ny~s?@iIfH5uif-)l*6!$4mNy|fSo|0pZj5!C7fUcP zX?TatD7N0T?b4I7-Z<5ckLY&)b%pVwhw(F~iY3zjhvYJsbvfDr<|LRKL!9`mzbRW% zy2mfTnZUf|dLMjkg1kPGyuL2-`r72-M+4WmS+s0((XtJVJJvvlxd@R4od({&2L2N4 zfB#edz6ChU|KITUDO^N}xr!Z~zwd2GX1n}R`1|fb`6KxI`Qzo(b71{e$AyP-36xwO0BEC2P>|>O-U% z>+MJ4kJHfs1DoLwVcr(paUH#cSL07w4}hhE1?xmECC)I+`UrXroqvw~3ENB94@A6@ zJaHqnxMe2&u*+oX^4R%LfQ1-wlONk9O$YQJ-ZshcAC5*GV;Tio?>`)d(l8x#!O3jy zH_NqUZQcGu+|8AQ7u$77?FNWOI11=LgrDMXcuGHq7exd)71t`o8DJT%s9H298?hUV zUTN+T@aJmWM}d47BA>F7@Bz*Sjw%nvmGk1RaPikloK_PN7aEnp#pmP-CTfR{$)E#J#^ zm;)C7*XcO#fI4>>H`7~FzNoEnHp6@R_%vdX)0k|hF$Thord1X_F1Vy33`b2k zv42rKuoMq?OLr5gJ|Qp%fY$83p@oq^=Y^p_7d$CA@fPiXht5px5+V2qyo^5+0@*94 zq5`eY0=yrgNf5SV9hSMSLLPuDvPii2kh>Fu+-0OhTbGd`5@V$(b9HKRI> z{y8xir0a0_wgRsdH&CzECRI8#k~#oQMC6q3oRZ*PpGlKNf*`6C7j<9qlqVBrl2R*BETOoUi)#a15+KFYLW ztCv~x|8sNxpV46cLz|NGzq_3O6TvTQc%Brb>HSc7gQ)D54A?F*bU+4i3X_V+EocXI zCD_TSVf_q`D#VgXv81w5D#TL413?lU6-?67F%&ypklvPryDTVAIpIXs=&$SQwN8Ev>@{~<^gch=b+{I4NyBF~QKwu~ zt#oa#){geE$?4gFCH@hZJ@hRa?Q`|cn{O@}-8Jo*{fpS@x!US-iqEvZbCZ%=<-P?0vNTTRb*<65TY-4=gWwHI6beX{n;rhosb^gz!{r+0Ms zv}b#KPHy^r_V|pysU><$o=)ZPNE^2U~aSG6fE{yte7+4S!} zl^)mrcivYjBv4rb7Xq#m8{qexr8^Oq5p>}|hd%pEU=x^@peZ=OkI#omgqD&5)6um~ zTd)PR!KDtj=kZg*P-O9I3Dn>-b~9%P@hq_bm!k^kTJow8RLbo#UQ^A~l=+Egs*_kd zd$XEU&hC$?56j4*+LG__(89GLhhe^ST=#f#H1jtkzu)0h-@}ad~ z7QkL}`G=&WgzLW_&TO2p2wpJ0d}46CHWq#?XlezF=kylp5m;PxMM2@2XAK;5_F$|1 zwebMA%Y%!G(b)R~RGkHG5Dl-!cLrk;WbqisH@rs?edT9|D}>!&D-AH@r> zF0|3Sv#65PiWrXw)00tgJ6g}%&IiD{gb)2lS&y5ioEZr~HT}DY&WPA9^VV?cx(+tba{a9F2QBq6n>lRDpP+f( zn*+__b|BQXT{97#u|Kx?+|i#Z=x56D1`f2>Y8O`=6gOsAFE>s#z<%q*UQFvP+Qx}* z{Y)G(P@J6qz>&WT?O*FLp4xJ)rl2Or)F!^A34f%d$)8_yiej%_REkUTHVM7|VA>XD z2{KR}%#TY6go(DD{eyo@6O#&Q)gncvEx~scX-n<25bk$ILWL_q1Q(vn1d0HdqoyGb zSd4`!GepJstP{`60{g{hJg`rEVy}fyOi+d+_$D}h;&@KhXsEO==aSqYsbKsC`L++d&QAPrBZoZTy=yCTk7!<>E5IwI}9>`SUrz-SW zAh0L~6Fvdp!+D(GB=AQpY~1D;w3ig_X4)X*S_@Ck4YPHAAPU=9{{T;U$N*r4I87_x zO-37N0ik!ToA@`3d?XfTuYxwBk3x$XS6O1Xf;I8PDWMRMurG3lR4n z6TI`#-Y!HGgZuf~Dpfh~=jss@qns{5XJIRDp4YM7Y7sr!Cb}~T9By1=cAjK~|dVZ0lJZ2^qix8@p!miir#=SnvF$NHDu{LE zY$TS_lso`mLPg62Yb#YJ;)x3r*f=|&BDPo+P;p41xg`G(f&!}^1C1A65f!1@RPHbM zZ?0OrR;{h(S5+Cg1-#n^zf%C!2m+xG9}<+E1gk>FSL4%|t1MqE zL}TLhiXAwC|7#?&I5Y6OF2+~R!T4Jp)45uSw*?2`RGRL=XG?F5qO&bMP=xyQVVOTy zFeKzw>iqhOSGrRSc$5W$$-Pj@suqaJuuNzQI%EBbc0ttfz&(U|!l?MnyxeIHj`bzJ zRyTi*l}h#Ok0b^Ll=vndF#t!#>0hyXI(f5SW!S@FYPyUP_*;A-3D4lu>UT8>_z?Kp ztHftR?uf~B6TXm*{c14|fW`^v;zZKNh;*V2cnq&+Hj@{dGdXM@YF6SI_{DAo&tc_A z?ik1O(bkJCC$aU61C8Y6ldvH*aN8NVN#r-vJ0jhZdO=(2;nZe*tk{?=^i*4(|6Al; z4}HM_o;|Fqidi)S{^u|@LtB+|kTO>YK z^Vji~`|^FOFwOo)aL+W{qX>W8f=Bp-ZOZxhjiJ|X$JGaTO&`^R9Rvbfn*FUT&+c(f zwhzw3%2jameGvN^^CX54gNwx+F%&cdDbcTkn{=!o8*tPdx2?qj`ZcH@?PJDjj2oxo z3VuQw7QdmyN8@LUi^kYo)RkN`()hWvCjJNbsh7?TRYQJK;@p9_*&^DFJk{N4i#(r3 z{wjiUP}MMdcS|=gd`=n3RU8)u3o7+M#2l&mf?7US&eUQdCw1|R%k4Jr=Gfddl|PGq zMf4AR*HcWO;5bVP4zY6R!|(uB-5&}J%%G?e5@_r``bMo+Ma4)})NvjX@yLu8Y^VAntCQc;T(U5!d1p?m0dO)IIt`IMWq?BUTX2jN_-#r z8u9hj1b*QuMBQnw`|;PO{b3^jNbUsjha_F9$wFsBaVS1*4h9 zf$kUp*r{^cpj4fPjA^+V9W)n2%q`$~1N5L!Acmj|OK=61z8g!2!=6i|DnBk4@m4lj zwEmapW3GNN+GNg0(G_7lH|&aboQ&;V@;!h|Bv0zE_Ns^Fvm<^Hw`O9;1lemHH8p!8 zS*-G&&Hhx~Tx#EHx7xQUU0yHvhSM+T#cYD8-f*>GvDmTt9c%)a?tiD6OgBxm$*r?J zl0!y=&L-Fp_l62}O&Go~Dbj|qJ1NX{#zr|YL<%_vNsVxnAG^?l{aFN1axWK!DL^WEa+?{K+hpuC_1{?K z&9+9MalKAJ%Pmk8W!r>2Xs1;5g*b7y4>km|ZCH~;6BdcmDClaTs};DR6FXfaOOTPa z;njOs%_w&XC5KF&UVa~Uist8c`2^OY`HX_1R4%JIz{h;~x55P%!P^ve=o zW5sNT4c0N(_9N^8tci7PW*(!T$&SYAfG1^sUoMoXQ4pj!RvLU2PZ^AemSOY~{9%?1 zCjNmXh7qXm`W`=8Gx@)wpXKTgp;hkro4|96^EbG!9YzIuZ8Vcugb_uV`AXGzQtIM3 z_=oKgb@rQLXl1`CRfoy)n>8KBaq9^V6Z^^}_2^n9{t!BXI}I9FXsy_+ReXvp_sgv; zuGUdPdxcv5IWu5mPIVsl>sB7lQWkG!TIE_SABI|dXx2GuYBXH=A1z6iA50b|rXNfo z)C%v{EysN=FobNH@dX!M@hbBTi5k9cvj(p+uxb!Kq8Xdi;vZ)pYg{N6B7|pw1|VKl z{Nt<<)SVJPAd0meA_V#@3}^Wp38FdNrbKxZJBKf zGo$YrkRYCvT3>PCj@jLlohobUi)&_dBAXZC$N)U?xT&Sw6FV0l(>*bDpPYCe?vGyy zEJgFQD;_^sk7TMT=&5M|Z)^x2Nfq)#G{+_ymk3o+8_1ljC%S^AE09I=%hF3k_NR^I z{GpmZw3k1KdSw3XOy0ZnAT~?8aaS&u(FyL*^)OD-oE6It2~R)mdM@Lnw*Q|vF!(M1 z?B*Yhf5rpWK%3#V8xGb3?#EMKS#KL)56l~AAaQ9Y!-Lm2&ggC&WB80NMz+z>@EYxm zOrwo~(!3iN9i++*y1?q7*p*hF#HLx@Av;Zwkxw!N=b2VknA1Md#-EG!P^;ED;CIrsvgp6q0^>f?`Q6WjZItIN!imGL`PiY) z{RJ%nj8rW0Uqf!xb zc5M^>oND|i0-6d@FQBgI^2@{(Cc>n+3wI@HufXJ}CUKfCHQ*tHPc+RGSy#Wy!i+X+ z*}8=~MNLXvww}iyu?X-FzLmfReF=-Fa!y+-5lto9=B;$!lzQc*Y>h*tya;&$yRx_( zLW%z#Pc+5SfdKbS9^5x5D%>|XyU91vvJsYz=LZb{u+5i(d+dLQm;X@Lor@ zhB?rz+33T`x>mgR&EBU$1(jdrAxJMTp-&uk z{375szp`9m1YhjNfCNmeQY&|0RajLIYgR-lz1h3+Sdyodek<-W`$UPq0QnS7-Q+P9PZqR;n7NYzRQ99Q5qzCVO z>%3HEK5L5e{371uSLVmb_{H02c0)z|)%>lh=XJD5SwPSp;=hF}w{H)p%C{pTvRbnT zf%R)WiNlp&z^(ejWTkQ;+5#iU*Z2shZie;ybJ&LVXxBVUA%ZOxC%SnlI_3(7pBE@~ zr594%KcSUf?9C|i915;06456}%1JC%ss_AOwu7m3SPYQPnyr?hpG{qM=&4)9z{gxkh|0k9exfsE6E+Y!T1uP+|u< zA2yl&A4EJ~fT!9=bFNvUEbp`sVhCtWr>>@RXbB6egSCp$9fZ0SGgw7JtI@FZfP5)AFS8DzlgJl3#8Y)>n&F+c!=}z z6YaXeO|Bmzp30jM@CarEWGQZ8piaDm-2uT_flsFiLdYjiAi8@lhaUGLfj4~&k2`xaiWoh2`m}z(=JJnbg%hKEU4`spjiyjlw>ibt9%PYS2<<}dTb$-Fxdn@pMCP#ZbcrWFkm#ol)Kt* ztqQ~F0lOj4h21SF;8Mkg&-H1yI0Z)A`P=Kaqx&O?LqH(!Jw+mrIReYxXgC7!!L>L5 zFQ7CA;5KYoIKd0FKJPjRWJIO(smYmX2;@Ox%3JI8sp6?M1MtUR9eDuAcpL!NxXoy` z*ijBZAE&|=2EfGvdmm_t1ypVt=nhGEoN0oY+Qh9GyH;YwykG)nAzXeZmL)z4Z`OnG zR78>&K`d_yE1??Ul~~J}gDW`lG1Kd?%aJgS5xAc6gJ>vRym!{{Nb15&#KgDti_+wI z2a|1ri4g}w3GA>}9So;N0MPwTII(KRXLy;ySCl5+;M?%hQkd;<=4`I7EU_8&&F%z; zGFB8;T^RNpFnUF>5zDWG51O0XM^~wy523vP9=vWQ&PudTmDgANaL4Se#qFXW@HB*# z;0q>wSb&RH&1hHafu+wuvAWjtd0+9~re^U+6`au){%Ei02w{df{*RwZ1 zLgJ6!4Nwe8{Lypk!YU&l~Ilxw#7FoiOs>SF1 zfi>dukpRX8>CXh-#HUf<-aiA6L})fKN!#(Gz$9gg^;Tk%o<(8^YY8Dq#d6f5ZxE7% z2Z1$ONk|eN=)8#jnUEwrupQCg5t4+5YCb$jND>~{qUa(*lJLN0$YP;f#QNC zolq_}p+)k{pmYASH_pVJ!1b~Ob{Z3ZG?PZE7%eKau~4>~ep{H6i{y#!oifGQ8bleZ z4hxVAlmvfo!RlBeP}0dy%MF4X_|p_9iR>L4DK`k5&u(=Di+>Sl1d%(Hs@doa9IbxP zcv#y72p5+8GZz7+WWX4weegLf0>N<&QA!F^Oq9}#m$raXn)Q?v0Pe;%LMh#Hy4+Y? zkD6?hQkp!n@JJ=4iFL#yA>J*og>sHm(8%#$!6RKpJkm2#_ks+OLdwD;y%P8yof?7A z+ABWO@JI)OL2F0UDwdVV+{y`t-^5Ac|&2QbRlN4nh}p$#VDuKUZfLN_9T>LyR!-Ls#HZB&}i$ z1PJg$KhwiLR;6QWZQ_xd021(?zlK19uRmaY9JCvS!~bioKk77Ypb_X843kj$zG?&{ zYX2i8*LmJBchVkoz3fXhaeAcfIS44qoqQhoES&fR01z0yyMz*Xye?hzh!GSo+oL@f z7OxPASQ+>pcwECCSgD1(wLn;DvVQ#oUx!wfCI;i4AX=i`jG)@`apigg5!mw zlb9pSWjH|yA8G=9R3y+xPhvny7D-5S;u{#Ve2f4gM~}D)FBIf05QiaeOhEp>IGws0yuoT{!V2V@{i~xv(jK->%{nfjtE1=p*nI zoI_Q9!B8eVf@rp(d!|=110{YfDO5(E@436f^iU=j#%TlLGv zs&4`ZMDh_k{Rg$?hc?(A!k-e{SM7`McOL|5~!&f=}Jo{J>jM_0!m5Spum zCE-xzB6LM8U&qbHuH`|>e{3LxKuBfILnbAznA1k`IPazs%dvGg6&GOK!-C`^t&2qLHe44! zc-veTl{iczfWu>h|Fz}|$rZ7RY5G@alkCk!F0VbcLz)ULu^>^T!GpQ*WvY zuw4-0r1#+i!A&82Nw(8@wVbTng&+XqN8PX{VseTFtjQ%%;!8xmQmfN{i3id8J=%y7 zvi0$^*l@11iBB3WwFACOUup#sNKHN>wRC7O%H8WRtYjU@?R{(s%$=OcUQ`cd<9UsroWIzCXTC_TLy#5sCs++NEM7(z-f(O#L*7Z*KhQ3D~O4W@l?A99z>_9J% z&NZ7?E{Ia@-cRN*Ni%wy>rGi=KaBNat-?}z_cr7yOB`l>W=JQ5Za0@4*UKG!n6aIx z5Qkh8cS6q~nneX^Ow)&AENBaX+1EGBWp zHCAE_ue}ma7K^p;;Y%o!z+_|BwVkVaviMc-2WCiJG*cj&AQWH1BE)}liA%5n^qNZv zed$e34k)1l&Gci5U@M@R-r>98-1%s@$!Im= zL)8u}xcZDbbFEg>r~EQ=%8T8a1A!VMAW-hPc`{kff7kgVNhx7{mB;@=e8vqqe13(P{0IC#fL0VTk^W+Es zD7GOT{lv|!s~zq=w*HijZgPn-hhR?aNiHzd`F3_U>4I<~pVB&Pr<0Kw-9uy;90Za1tQ3lP*wrdT{2-Y*1G;C~b#q@`0H#3jb+44mR1X{{Ceo3?V zs4ttqN5P}u;G@biBtQyh4`BucK&o&Xyqo2wcXP6K!R;n&ha2HoUjToWfJRU3OnjsL z%o7`qZ=1xo2(eKY8&^<{S0F{pVPOkjwUNn7nSA&*kt~Yiuq%?QnY>FTi@I>^70KI~ zya~xJe3XAG`qgyUn)s-*#M#Y;@Te{HD~lo+`I{>T>qf&kfjb2#xys7iJ$vU$?t%E7Pp5d)4l`)iPOj-Sc+WJtLE4*F9l( z-2+H=cOBi-HMv~8YPFY2o3qzypxVMay_tT^Htat5u`%9h+FIFb@CysP)0+>`axC#q z9qBm|KBlY~@E+{kpMrN{@l?)`rSup@10~w0f1$ewpe1<8n)09il?}AEn z5%5m$sVUlfpq|26c(@ElP))qk87{mN*Q-eKcL6_yt?)a?dIVvQr~Z))8bV!L8Mh>VmCMt@tV(HK|(NDN7dskwe)^R9%Or#eeXMOpkH1HE7%Ep<;+Vn`3n<2%OV;SIB7Cco5YPqAfbx_YO?FmzRsnM?c&;X;-OABo$=FvlxPTw zdYpB}IVxc+QsK%&y_NYje5%>q25oy9o^4nbHqFctAgNUMdu0M(Qam+6lMe_ix9gE zk<}-hy78dc+o3eLTcD`E)Y=b(=hX96xN=Qq(1d{zOqFYcsbH){Kr`sY5=;ds&wg#h zKmn%8#de=3COJp)v^&rSo%<{h{Wxfx?gCR)u&IhK^J!qBp7sIH^wbjIq@G#|Ov}@L zrWG*ld8Sn}t%PaiOxwh??M$1@wCPOS3oO)A&)YdB20^TXn z0PiH9IVJ*im5z6MVTRp~7T`86ywg0VK+||9e;WtywB`>DN8m_!ryU+K0Lfol15o&< z{|w&grCV&mn+2RTfp?nUY%vG#^pggl(5bM60dV1+GOPkkvVcmZpIS!ZhK&A5?bpu zjzM-c700eba-$b7gGPzzKn?R1iF+ZYiFp6>@1a`oj7UV_q<(Bt;t|mRh?MW1U={GB z;)M)fvKOEHN7akl-64F>b|xUxQhwrDeB!x6JP-S@9*s=pJox}we3?kq#ym|iGt$&b z8wVPup~|_a^d0s*+>Io=Y|4JDLWl({z$0Rd3S?zzRsEelVNgMqilPCqu^DX&t4)-| zQY5nV&*PK-lzg*sNLwP4kQRbh0fKWn6C$Yzfy-!UnXINB2~>!bM+9L&`X55TUAjEh zBbgh_E#hYxeTg`ubxcS97Ct0KjnlP>sN8ycbUt50?$XYc$xHDa zw)j1`g^^z!7o`qy4N5pv=k?YRMHSR$(k z*^s+f;#Z?t>}p8`RusqS~ZR~*^NTL8M9G;l*yt| z(aA;;iW%1k2>~%uIW&+Fz1FxBiRkKBKiRX-S=Gc|vU?Ugr&q+h(kAf;6@tp{*FMfS z$0E8>p94a0zbdc)>YO*I0;@C{10|!hNxPoc4oMv^0VVoM1*qG(w zcQm3DueS~qffuNDr}zio{OJEaES}2Qxb0H5z|r>|-i8Dz3FGA?y$I~p=v?ds~(B=t1Wt~9C(TvYGC z`J|?)W{(N&hzmml?Wh3v8dt7y?_so$AgZ*`DRPpz^dp?d;6}6r|7Xjv$XIKtQ6(4T z72;DO10zr(p2TwmzfT*xz0id`;0mMrm;bCHdY93Y2 zO$B*G-7C!eFjdgj?>9~akB1ZO9S`-AaOE1{^$r5B$2-hNDl0Sl01G!;0}gKUCN~aF z6r}K}K#O3PKyPIB;r?Hi*P-EHDuWAb*4=l5k>+{scHbf_Nxcbh&aU z%iGWg?qzE7=Ux%&h_@W*i}6Ps$Oae}UtwZLOmBcV=$zJZrEGnqEyyPF0P9*w80Lc0 zsHjw+PBmEq5?71!Jn;>4x`{wqIOxPfJ;m?N0J7`daPo9yu101$CJ~JtQ0LXkUE-WW zYGnPQF<31o;ueEr7nb3dYUM7Tw-133@1hBT_U2HrzZZ94<0@AlhIxtWxYL{T_w(ir z90LMkXAUYmccCwox)nEj39x-?R6UUPv%HlD0LMHq_g!q9J^J6!BAn&IX*Y2)eE}X( zYxcZP>Hm-37NN+81_T`^Q%%nBl_ha33dcsj)INo2ugtTjEO9P9(Y%>Fooz(_TfC)r zquU`-!wZ_xr}0ca;yt;t-m$(#I6BwG4sxLH1P%<*kF-di(vT4Q0&Yke+5s);cPExJFj6#a#<;qkqXI4Wq74|-b%qg_xql?$s2-!VqG zxh=%`lI^KDFn47=3M-+F$iD$+(4ZKsMpvG#rtTC>*ag9Z$nEh_m_?!D*JIn9z6&ip z25g9ah-H-QTL%pfPE9Xw@2WtR;OG77W?UzN6aBOPfQE@Ii`XM5}xV^x=uXsa*j`_DW~Oh}^AL~W2^=f8I;FY$n%vo<9iLE=0d zFOPk69`|f=KLU+r*0)rVo)KaSI>PW@u>(wi7j`(+>=FF4RhvQ7y(!a}tAd|+7N3y4 zlcD4EWreAneG80Mmv{Pr;t;C5Hu{ac`Ou?aud1lUGZbbdjj_6+C z|4VU_v#{Fe8BUdY7NLu=x+nHnr<{vcV-sg?;6&q^-K>dAJGpf$2Q6ajHdIZCvp3kk zG2SeTqd|uOEfX8JrFiDXO)OWS9a%>9CuNoWR}O8pclr_RpssT*lp;MDSs4 zWox`i)hp-`G8iL)wGp=JY7gB%?3gl7EjM`V8)fA)qHpBEcM*&kQDLF#mn9BxkB0y; zm-~;)t^J4G&n-dAv>jJa|B>@U`{$g)_0H_Uu8p%N22Ukp)pDA- zCL`Znu04U`a<>F8Aa_gmF+t7-PwXM%cUldWHmyIJf?yA~NYieKCwjIlKGiPXUlt$l zDjqF0{F0v7sdxwIcwN%*p7nz0$!xlyqbCX)-AVS+-X_`6&BjBNOcr%LKppp{XB=$r z?1ZFDap`OGzM2D-2*N~chiq%s^GI~M2J?P85>yD541PAWX8ENxYUe1oHET3F0i!6a zSu+-8J-^#4tXT>w5Z0^*kziW0%<{iOdA?&iMhfPzKMW9T0BhDdVa@8!S3`_#!q4F; zht-;0ZM6G(p%QL{54UBz)?)FchUhbLP>K(juC&aF#KLW*fConc{e@KFc{}WCEc+G= z7Kp>3-Euo+rET9jhmCaXTiplE_>D^3<)efead9RCyct;;Cxp9xfeddkVA_=KRVhn%cy%D}Zo z9#FjSt|QU=!~QlY*UR7OYB*8 zt^GpSO&7xM*Z5t0VMa(j@~1Fs1uuf=o1@*AB|67t)S{p$fzX2oGKA6XuPH$)t*~h! za0JZ~*nj|9j%Wzl1Hc|gkmL_OA-EoG(Dvd)o^8h(PxOLi;TnYpM+QJVQU0+rhW%Q0$QFO!$zm1#z;d*_4T)Uf+>7`0x7ZJBfVAJVAxd6{F>+S-%z zFl!33A@@{~dkKtMFG!=-7jST)MpCI zmJrXP-{;IgzYC;549hUjqQrVqTvzOC4=IP8rMB)^5Gxz;1yj7*GNvHUWys@bhiU$a zpKRY+x{Gy6`_{n4q!i+l+EMH5TUW7oD(8ngr0(a}mj1G3-S1zvZ+-HGW8bPwHf%6= zEG^mN9!F`k_dL73d++h*t3X|!THY2A<~{TCG#%Tv$uY`y8xwKg=k89Vap=+ zDK%*Kt9A8y6?9y4=cUAVAx}7YIjm6t+wvA+{Z{-eEeALvj_)e=X2Mo=E*^9qjV?>_ zxFVF*vedx4aAYkq1V)^h1M$thgU?6;Yw0v1!)qNC>O??=Is{P>X8gTU!W1)qW(nXNp9dlXdFHjmnBMxSK%2!cpk+E=*8Xz+c6j^VlYYd$Eo2x zS~*}DYARD?fPc&yaK6xD0&CFG&3C}~fxLSF+VD~`6 zqxTj$BkIp zLovN$<9EJO=4RfDKcRbl;;&!)Ef9Z8#NTr9ce4099e?BZR-h*Fh0{@dS!#WG-uhB) zec5Dv*=~K=i!VSDm7sgPO4V&#%n`h)A6SJbt_Ja%_}X*!;%_DclZZe~U!9lAo>x{} z6YFS=rEzK~e=X7DCTBV`W(kH5X28m|^_7P_bH9a<5d4gMR38&Ca($=7f50$c?$WFW zqls!8O+t`7OOY-3GOcAawIMn)w$PG~RUd6_S(d47pAisv^u!Oz8vqGg4KUd+Bm?#1 zIb6QyMcPQ=fhpb?gVKDFV9`)Qk=C@ll6`AEQC~PY$D0<98b^#_PunN#Y2xi7ALbF> zFKu~2CG1 zVQBMljzWJzbQjq0a0lX_yAZ|paam$uAXxGF^TCQkzUVRd>yKrYfeH#Mm_CZI0cqOQ zCe*65{jrMa)~vm)gmW<^?FqKMZ2<1q;r!z;z}~j+V`^Boz3uJ!Nd1@WZNF!Qshqo_ zQs+b!~0|lgmv58o%vB+Mk#{x2I8>GuSrpQJI=!41M)gHPeLgH;#1#kE~QO)Rxtnw{?mv32(ADR0{1on4r zurZ&{M!-Z4*kOGS_}}##zcxGGPatp0<2~=IE$AIUdecW+p7}8c+|TWJf#^khU!Kak z_GhTOvRW>K5Q2sDT5)hQ6Hq33b#kfOp6@AfH{r=?KK$Q=*I=4%kL2$Sr^foxnm%DA z@+OXX_}xABt>`WxhQo-=FZv88Md9gix{Ur3l7%kYYu-79{ZI)aJIp+#Eb)PypUJa0 zIYxCr511RKk{O05Rfcm52)o*u8WTEfoqmB{LG^4v+Xt3SBcR2Y9v{AyLvq!rV<e*U z@(CE-i_5_E+gWvL*gud#^WH|IW%O-q_68O^2Fv_*ocUQVAPaK7$eh`5Eg1jHraSMS z(eV8V$;uoSFK=KZHrpRf><5{8|{g4GY zPh-wFT5LS#?n3?P%NzIKgGdwo_a~eZa_4^YP5rhe@?UG^zq4`vF-_zjY~>%@IDfAu z^0&A0pU^0O+WM(FJPu)4g1rIAm<_R!l{1lj(LR!z4Vkt;y2{5DtP|hh$GjQl6}V3j zfkwzwnAAr5g#;d5pyZD(!T;s>e=`1`uH-MMz=Xla68W)IempNfs^tgg7qV=ZAA99T z2BabqY4pFQc0mC?+KgPcfVVL~4vfZ|u}MJ~0<|{lslUTe!sJxek5kcdA?vf2AQhX6 z<2I8P;8`Q7zIV)mpoPd5>qMR?k_JlzT@WyYB^L2p0T^NHCf1TO@;bSNDA05oM5o+{ zZo0f4qOl*|LJ7U<&Qy+Wy9P$oWILnd zOjMA)C7dV&F}G{*@7G7YT1r&X4q_H5wOKp1*>p{D=vt3d&~-i=Cg}QU1RW;{nt}K? zT(1hW+;oDjNA)D=n@dO#^b+8J^4F_1bs%Vqi=cIqpr@`TL0u$4nIDCPrS*2*Bm@sHjwvk>^!+6EicL@gb(;h&atOK^sbI`ljvDV(AZgNBQzYyD0~Cs{6)!~T~9JvcLspt^S?LDSD~6+!te5;R0qViWW{>NW`qIt2X+sUYaYqaT)~DN1bjnYM9Ut43(SB`p#3kf_8a=yZpmiyVTwOM)IDI0baEO)Xb z=*o;ku0xPd67*5c(Gm1G%cXM8LC?w& z+J0jiL4SsxNrGM))2cZ%17XyfpF?p`iA~V;sM{Q&*KK2V);MamsR6l1NznFcLD2Q+ zSxJzRPS9THnIuR%uT=y+KCvZ&UKEws1U-qmO@eN92)bLS+ygFR!;WGOohS+VHF{PO zbS^H{a*6FTOoDo}j-X9AXx97)?Fgp{gVRLpc60e~=+xP zF3PGxyJ#)sQ3+TJZxZBX)#5jpf+t_Z+;sb8{a&OTfA`;zg2N1rj5RXmhPdjo2@~)| zESAbC!H7uezkuyDGG&T44BP;1z@tz-hjwLYtH_^S-iZA3lDB_qnoJX-k}hKtOsUQ4 zg1W`fCI-~klIDBS8q$0TPX{Ekej#Ye`VPN==A9SXG;bCu$3OM5MRTg}omVzCf45Bf zG?q@~lw!an=?3kmQ*N-V-_!6CQobhCD$4H|*NAdhzb#|&J)#nO;0K~^ld0do+$O81 zBx{OIRs*|R%k=b@^u#a%lAd1a^t^&C5b61TWUJ_Tc5F-Zye2BK>4~Cllb)1A&n03v zc>EJDS;O>`=$Xc1shr=VUnM!JRWE@s#BeD+r z0~0pGlgHxoc$IBx(1G4g@vn7Je6}n;N94xK^b1ASVb?O@KC`%aRN`e<@#kdmB3Zmx zSDn4BnKk!%4_#g0rTaQs3fdlHb@xVne=1XeWt=Qsd z%Yyjf3;=j!+C-);Wm+#gtq;={Gfi9;D$4H0u0Wf^wC~Wrvg}Jto659L?6fMTl{4)P zJMAi_4Q1M2?X+P`%VXLTcG_`F>&~=$?6iNbLRtpX;8QT)yP0WU;c8rQbAoKkvrOB< zG^`9}z68_OFm1SHV%pUpP_n9`C zY1{0ydzltt8e`7Md}T~4V%m##T0YYPOe3N|=F4K5k7+n2VWxcwZBjcp93J3b$V}Bt zFqm+?Ot^;$TbVFPCfvk?4NMp<6Uvydf(d8Kgx*Z}UncaG2|q%`(|*N-?lNI36RMcd zmI=wsz`hFlJ^>!(gPL4Xf+uZcU!azf=hAK1Gn}|1LmdKGLretE^&(7?k)`!P4iV_3 z?p#D+gbXNO-996DQSidx1m01-AJ^;xe5LgRh5)dPy)&<5FvQBb9y5=@MYw_B!gjp7 z31>!Qry2lNdBp&!zFfTU+id~F>+nz zDU=9+0bCZmB6uajLhRQ%AN(=hLGJjY(WFDb2g3t>5k1hqJe%?mfh_3g1=*?R{2&_+ zY1<2(fNwf+^MBUwj2FOd{2Ke8Jves7q54HxdCTMiyhAD-9qVm@b!yGwwjwyi2eVjy6UX(l|Hs~& zfK^qk|Kl9sFetjA#IPK&upoz^96&`miMfv+%F;}8Xi~DYoX!y|Q}BSYJ)W|;+pTW* zHr(c0w?Z3Kjwm>kY37tEs44q&axOp-_B*&`~IN^ZU2x8P`0`-k9_?53isD7U5_C}csrl^^& z4M(O#swufqrrB(BoYm9=GZn9?ZKF(oeMGG(J`$OtsitGy(WkPE2zb;$Nw(X=3@^l# zl<2S>LSV?TZT$6pNm=0|>Av4&sVZQCjl-n&aI5Pxl50p8aJtEfC$~9#JY;|wa3KnY z$EhCHi z5AFwBmrUd-qpV<=LZR%kjA&(d0Dfa-8N>`im*UMT=w5_0au-~9q>y3>u6N?qPd8St zUyvUb%~s=a;dt3Fe>0CXZN?s+<$6;gKOOB|ipx%vW(I-U>k0`AlhTY|@b0-p&D1}} zpXtYL994g&&K=ZDr;(r6w5n02J=j=PntLDld8VfuWqKM80ZOL(J0epCMxXqUl1Y_4 zv+pJlk$u|X$P9hf4TBiM9jOd9f4w{z(+ViPThua{-zMrKn^O7DXopuG-K6qYM`-1m zR-OzS2$g?s)iO1%`~wVOKCV9LY9!Ro%T@H=?&Qz(M59cvc2+aZy8@ZmNO*uUsRU^E zF56zy3u0;)f7T(!tb3Yd?cEi$P;~ZW(%O>|iadS5zc3|@#118yVQrXk)a4U=b}&y} znh)OEk8v+`Y50&ZH`mY~$$XBzrJu(ic@Xw%z1wjw7R@p4^kW432r%DmzCpe;A7?>XU7kW7P?E{%On}xE&S&yyBCsQkBuSmW62RviCh| zfg)U*({H7*LawE74khWs7bySWx>l4bC?%epr{d`eF0tvaP*Hbm*f9Qi5+}cp)l==u z85V)7e|06$n>*(_vr%x#m!Mxkqg z%1^_Pmgp0MngXQH{Jlo{?7o51=ftW%LZ2W_ehy@{jy@aTVe<19zO*=fY*;Eb(5EN5 z7ASqn(_5m?>FWcg&$vBC`V^rkjjwG*e~3PWB-cM{Y^|iv+l)R-!FW!eURa$q(5EfB z7ASqz4Q`1(J5mCsPygLU`aF-KM4t~o`y=!@^-q;PuZ(IPeLkb2?$~TFp3^4^-|+_e z_>u#s&)){MM4yjQQ-I^E<1Qn8=A$Ul=ZR1M2z@HvQt9*f$kx&4O)Bb+y$Oux^!Wt~ zp$7VFy)JP2EFRbreV#&10n(>xr;$G6P?YHN@F#zWK5we@nQUz(eW<8A_G&Pm)8}g} ztQzR^UZ23}b5~kR^qGU20;JFG?~L^6kD^4MoB#bs==0GVDt*$$*3rj7MPdJd@ti*I zW1-eSA6M_d=`%F7CHmZongXOx(GDYhI-)4ir_aZKh(52Y^yxC9mGq&auz!FUr_Ty3 zs2k`rqgUYc={BGx`lO(y0O|Amb|ZbNdUE=-|LBj<=e2*R^r^!)L2K;iX;jo5TMEQD zeP&{T-awyG=vtujS3|#+=o5pQ0;JFUZ;kZXeJ!WYi4Xq>eOCTmrOyF`tY{5=Zl|K| z*th!o>0`4sqEAnBEl~QD_ic$jr;`Gv&$w+y`V^rkjjwGV{1N)pysFY?&9K(dXAKp_ z`FAj$%TKRSjp)-BT?>>x>uzX?K06WvrceKGjP!XPMTtHizTX^u#?S#YZDshKbl}8R z1;g3m)`&PEW<(FIr>%&OEx*u`Sm0?$d)J{Zbu6=Fn`BwHS)IzMVb7+8vuWA9sDQwYr`5`VEhe^;{5%g2j}ng=o{m&x2=J{ zKd@JozgzLzO8$=jtIFTHp{?U@7b*(<55_3^AKMB>{g3Vk%HM|TTHn--wuGk=LY@>{$7X*l)qQD;ru;+73c45=o{m2BocJv_k1M1s{HlgwUzuW{EN!p zE<;+!-z+K$`v;8S{9Q4;5r1c(`+@SeTc4Krn}V7GO`ka&3o3up2e*#DbYhJi7h zzwcuu)G&Ts-2>cWE`wS}pX1Ll z`Wypdiu~W$h(0so1E)_nI2V8d7g--pK}`YD=lKmr`c!pOB|@}X;fWOQ zxEgEyi7)}M`O$Ch$!hFJBOa(tIwMkG8HKI|N}q;= zmgp0MngXQH{Iy2^8FNt#QG|!raNQIq_Jk`H#aD3F zbX$WR_#jajCi7q$>@;N(e4xrk#Ix;IgrM=r=|aIKyupb}bk=pvxm0vNmR#zLhyRSp z^3^G%_%5}%6OK~>+HxLIUyI>dCQ6SXnnx%ca)!lQ-Mt3m@;UfwJ-CK&nE^Ma*U1~l z>R!dYohs$KpQ*$BG_@48FbDtdfCojj-1ADX!i9n98pZsY2ChLN@@wkE;vq>t>-?E0 zI+ekn>D4&UNh$36UU3YY%sj(Nx`Q{ksG}-0!DL4e)GyiQ`egLnXQqw*GR4{L3Sfbq zyL7hhCq!o6QYS8kPz26EMYKrs<+ThKOM=r zte>9=9a^S;*UR+uw^Wry*hg}Alms~DQM@7Y+c^dgtWU3}fm$v~C**zQ4Gla~L#;8> zb!>KHnZB<;jLoVt+~WlQW5vI0d!y{pY;&At-+0Jh=X;GZ4H~01TznXr$jLxnN|`hl zmz)%^jQd)#K9Xv*Fh_?%89<{8>H5tWP(|I=j-J^?75~@+MiQ!9N=0ju!Ht z1%0@~)IC&4$3o991&Aq*It1fdXY(h0kn@e)jwbTDP(AY?O;xJ*kM;4ts+{Y6)}QIpMwzavQZv;cKiC^@ zAIC?hTx}QwNxjhv!{}UvvOMb=W7cs^vcAvbY{se1I+IKM9%7ikPRhM5ArCQfjK<4d z2rcc4_g$g9R=kYY7+;jHjSum0eW8eVNfQUI55U>Ao{4VYfhG1PyrZ^T*Fs)jf;$UQu$8bp}veo#J#&}36!8m=ZJ5^ZrZ~2-Lt%-OCX#ELNKYAXZCjsDgDtjaXKtEi$UCq|tD2?= za0rv>mN+dGn6UI7_;rqS%_M)d<3j!zyb-6D3u+%*3bQrra-xSJ%$DxV*zK&6_9La4 zI5Xz%(x3XKV75G|wV2g78D_U$;m52R@+{sr5pMZ2K+Z;pd4;8Js1@AxvbP4O1%&*? z^aiW*$%y3uoYiAS``bWXRD9nl|@+jnSkiolDt z?HZ$rFq1h~A$BOHtz#;h&N!8SBi*5g8lm|dtE4@wJs|Gxa)LOZ@NdgCtwro3&cCNX zSdQ2LT3&8}e|z9ht?_R&y@7wHqZ%WIdkvfN@7>E(#PD&^n15ffN;v<3SU(+Nr>|}; zV%1BSV6Fx!Ibu_2U9|ZphC(i)%GvLpWmP zASFkvpm)oNT}P;>Bd)uG*ihCd<1z4NI93ze5@KzPh?V4Nhz;%0T8g*pwHC1>iy2~LK}wF;`Ds!msB6j?`}E4zBDQ4_L+mk-k|WmrcMv;^LoFI& zN9he5+aDefV$WXE5@K($N;qQ5tcFiHWmb!PTtoAl?yW_0>q3U+vmh)-b0DoHLohEk zt9kK-jqA~rS#3YPVOIM!tTCF+&T1dTsAx7btF2>|sIyuIbxq;luko!#ESMwqB?!wA zy9cY=EseO#fr`ezD0&0`u4sZ-v$NXw(JEri%xcHXL>*Nya~{(WyQ0;IrBP{j>|v0S zBUVVO!7ZqgQ8@XfA(l>WK4VW*u(SyH3EQ-x??8+7q>&q%pId=3B4Y3F4%u}mO|9?_xcWg3bgmY|n zkCqYpH%<*|h`m8?Kx}15K!{n}x5TlDtP&Nm&N{?a;@ns35IeYlA$A8y$q}o=ig`;M zJA#vw8e+TX4T!A@4hXT??OH-?39Cd!Yz%cxQ68&0w-&Kjj@TlQk|UPzJBW2KAQq+| zcF+_MVlPCsgxEW*5*4xKIT~UIaj36#9J5hr#D4%OIbx%(YMEmraV%Ej*kF1C$IO8t zwie!17q>&U2N88RV#=(BCBVzgz{%a^uR1iVan`YQXiny6t_5K^np0^TqJ>#)5Dp4! zvs!O@!>rbo^-!-Po1NA6v{BJ)W>)hy;NlO$r5zMHS{uWPFjdzMPOV~>Kc95EO6 zL0TGdGjZrz_Rido~a86F&h@0FFxX?uu4?KW>MD^#GYZx6RqJ`3Pc}u1V(0Nq-#WxL&0>go zKv<60{j}!Vf-0GT&;T0$Ces@PvwIW7n$?j%z(f4vBkq@TL>*Ny)2VC9i0j^J#2OxE zh++0s5PO1_Tw6fwWypz!*c0>y#6;Go-_?<(77@GDh?t$arXVI_v7&Vx>(3DrRKz}` zMb;J&`wmf%G{iR08xWgS(^wRnkt|8F6D+CF+P9OI=g=SBRyH z)*;rBBX$c2%MtsHmRwulAJ+GD{KE{w`1h}>#)vh`zv(6wv1Y82M_DDDf7(_TT>VB1 zv`dSv#tq|jyM^+D&|~s6`nj8aCeqJ1`ni>UZ1gjNer}|nboxo9pBw0>5B((3PXhgP zqaU(gmJP6g=AE-@Z5UO|{getC-MZb6%Ik26BTgm4B3U@q6 z`<4ZKXLJ3Vw6m%0XCnSny>9dJnO`UyZt&*rQ8u{ea2Kg!-1u74&GHrbN!f&970vre z;mR@YCv^*C5u2oskWDc4*;y*ihvL4I$Yj@c`vrv6f$5wryP2k$1Hl*xo zUlt%8QN1zzi?{X+nm0y-p?W(IP82}{;m4>?-y<8zBZI)*7WW|mVyR*@GTCFSuC*B; zlDuLsHsV8&4>t_rhQkJXXOKD0>b{BjbG1>pLObI3A}2YV4WtfWXZ-2;b+s4o$6 zJJiH{0Q*+>k*2d^3@_zU&!128{sgoB-0r^~?Fb772zgzMZjfu-Is1*A&&7s#GqNac z5tGh~p7SB>_Qv(|yNa&RGV*IaLL2@rsvZ}qQ6;_|qV%obn*b2*6KCB+Lkc<2W4$+= zJzVaCBwx7V6i03)#JI`c>Qi<8sB7eiD372pU3A}D{cfXo0o~6?H*4uPu20Wziw>Tm z4hBysk+EQ)4WM$1`>5pW-oxP=xqk=DB57ze*Vc||6P5=RW&(!xgyXMu2 z{#cNv#OvvUN7iz0%Ad$vhQB2XgJzBZ5N$-#A9s2i%5np>0q=5Zd=-UEQz_;em` zgZQ)Dd=N=!0*pv6!J{Y*n&`dvBoKA8cX=)L=zwE|e1NV$cbi{jnaqEqKkoF`@JHT^ z&iK~xmYyVlMQLf|YkHoGxUCFYRx0xbqyDdPq;aS>f<192(EWSLKywX|51t_593&sZ zUtD4)N*Kv|`9PV%xu)rJa{JfjYpk!v(>yi3mloeki6FZNf`G$YW5sr8JY4M6uaV8Vb&Ui~iL>*Dc}z0K51xPCkyBvZNuT zzs?-5)87F}M+aekMGm62r-YXHhZJdsOu@ zyb#mZ&Cvu)k$KW@V|Z{zP9N8I{*lGQ{cZh_f@pO`adynnI||)Y4lE?2TGE))b=4a9 zk!s*avRLq)kbexMwy;Zd*%VpFTa87lxYJ&AT|tZqf6C984UBtbnYh&x7mkBF9S|#W zDA)t{VS7R+Ob3pBK8r$n9NH~WLq?YDpc*0i6jKUeBPkDNN8F<-x)`GnJMx%KIxoMw zlEsc30zQqU9B{xoh}%x174xdPK{eE3g%?*OFmLq5Y}>eF{}BcylR#z2N$n@iB`YW)d4pjf(z&5 zU-mU=AWdtatJ1(YwE@yEtI2K=Loj?x<%QD}^{JCTcHYY>5o!<-`!!bPHO&R%!nX`d zW}+}GZRo@R`1j$sj%zYTHkV9ghZ(+|jh*Cc{Ud6mphA0I1`Kfgc zLQ!afe9iOYHjpCM37$Zp?#d%2v%H?DvLi>Olxcu_0 z)-SLk+2(@Mh2F$ulSYeGfZ4MR<%6)P4IPq_mhofbgU#)Y1mAmO=UUvNq>IuX?)k(wBUdy8>#x05cho>C(J zx`Im)i(3boHuM$^52k2!PhuT``k;?i7tVTmb#u|`V()^O5w}>RfMBJchAt%HSYQ^?AL(h{P?Ns88 zz<8Da?IH>)^9|zuVKfaDUHvg4(yE1g7igX-6g^48ZId>OJG_=Ek4bdBkji?$T@*4s zZ0K0TyfQWd-0iBqu5M^Nd=}bi_}J5}uA%ra_1CD>qpMiR+<`>)wP2|#HrYFhuBEK0 zwDtDbl>IR9lo-Or7`0;BdWVl?L(s$``mXS`^^bPMEVj9q!4)%zI&8;X#mgvzBZXAi z>Xc%=`)DTamo0iWoH7sW5GFiZ;&=hv1pz#cO5X}9u*`;`QX_>2Vema$;&m{?xl9gw z!EZw`d-{c=YyeI4ez?^S_ltz+3U9bO!v6;Q%59FE6cO|}nhZK6cp{u0lXOdjX7T#< zVFuHOI^_U?N!10xSaE=+Wb%^__aBiw1ZlM5s0#7^a&0_7tE4(GOg3crRSFChiWYnt zmsDeL)~{C1%%xPx?H?kgO7~)5ve1Dxdd5N!>i~6Ta3k5qPFU0J(ix&%MJJSMVv6CYCDso&)HNyWfKp zYtJ3~%s#H9t~jLF5#{o0$W9e4po)}#eEdNHG?`7}b=150N0oX?oRE1GC&WEZJ#YFf zMhA;_Jn<=t8E04R+v)&8lTlE#Gy7+65}_x9lHboM;mkm$%bh+mDrGE6^7SaC=BazSeR9~ zhZ(!ln2+oUF`_X1H(JSxK)mi~IcGU0K4}AT*fBCr%9ZFo)nvzKLbbdPZz-FH!?pQ2 z&uX#>1gpoOS~DDXV0eiJQ*#CkU;c5jrIee}pfE&`f1F@|!TJRrLIFM<8oU|!p&lp7 zzr2befTw8rFrMUgz>OQHiHg~qDqGPXnn?4eL23;AZ2Y|?Z55Mta%xTnKdtPz0KVp| z(gmWdpOu)3@oANnc9OHQFIYJbtULx*R?BVCeP*s=uD3e3ftB?2U@CR-?u7Ohg~yQ?EK2WAh**|)@HSi|gF!kyVW$Wj=Z zzz+VvN#21)Qc?2hKO+`yWYn~Rno9Kf&Iwlf+=D#u1-h5e2Yl%D#snY~bx7c&&uoKT zA6K=W#q9-kt*)`K0C9iILM#sL_!+9fM4h7$(T`%(@>TnSPFC;}rUN z1&SzH*ⅈ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⪼M21 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 b?(kZleFDM|J;u7!N8#3p)NEtq5>^ literal 0 HcmV?d00001 diff --git a/src/kafka/Dockerfile b/src/kafka/Dockerfile index de775cc823..00945e4560 100644 --- a/src/kafka/Dockerfile +++ b/src/kafka/Dockerfile @@ -1,4 +1,4 @@ -FROM confluentinc/cp-kafka:latest-ubi8 +FROM confluentinc/cp-kafka:latest USER root ARG version=1.21.0 diff --git a/src/otelcollector/otelcol-config.yml b/src/otelcollector/otelcol-config.yml index 2771eef11a..0f6d0c0f35 100644 --- a/src/otelcollector/otelcol-config.yml +++ b/src/otelcollector/otelcol-config.yml @@ -14,13 +14,20 @@ exporters: tls: insecure: true otlp/instana: - endpoint: "192.168.26.80:4317" + endpoint: "{env:INSTANA_AGENT_HOST}:4317" tls: insecure: true + # instana: + # # loglevel: debug + # endpoint: https://serverless-orange-saas.instana.io + # agent_key: + # tls: + # insecure_skip_verify: true instana: - # loglevel: debug - endpoint: https://serverless-orange-saas.instana.io - agent_key: + endpoint: https://instana.tec.cz.ibm.com/serverless + agent_key: vzWTqejpZuXVqwUYWeKcFy + tls: + insecure_skip_verify: true logging: prometheus: endpoint: "otelcol:9464" @@ -35,7 +42,9 @@ service: traces: receivers: [otlp] processors: [spanmetrics, batch] - exporters: [logging, otlp/jaeger, otlp/instana, instana] + # exporters: [logging, otlp/jaeger, otlp/instana, instana] + # exporters: [logging, otlp/jaeger, otlp/instana] + exporters: [logging, otlp/jaeger, instana] metrics: receivers: [otlp] processors: [batch] diff --git a/src/productcatalogservice/main.go b/src/productcatalogservice/main.go index d00ae10444..35c9d9f63c 100644 --- a/src/productcatalogservice/main.go +++ b/src/productcatalogservice/main.go @@ -86,6 +86,7 @@ func initMeterProvider() *sdkmetric.MeterProvider { } func main() { + // Instana instrumentation instana.InitSensor(instana.DefaultOptions()) tp := initTracerProvider() defer func() { diff --git a/src/quoteservice/Dockerfile b/src/quoteservice/Dockerfile index 5606f176b2..d4857b7fd7 100644 --- a/src/quoteservice/Dockerfile +++ b/src/quoteservice/Dockerfile @@ -11,7 +11,7 @@ RUN composer install \ --no-dev \ --prefer-dist -FROM php:8.2-apache +FROM php:8.1-apache ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/ RUN chmod +x /usr/local/bin/install-php-extensions \ @@ -26,6 +26,7 @@ COPY ./src/quoteservice/ /var/www ENV APACHE_DOCUMENT_ROOT /var/www/public RUN sed -ri -e 's|/var/www/html|${APACHE_DOCUMENT_ROOT}|g' /etc/apache2/sites-available/*.conf \ + && sed -i -e "s|#Require.*|Require all granted|" /etc/apache2/mods-enabled/status.conf \ && a2enmod rewrite \ && echo "ServerName quoteservice" >> /etc/apache2/apache2.conf \ && sed -i "s/80/\$\{QUOTE_SERVICE_PORT\}/g" /etc/apache2/sites-available/000-default.conf /etc/apache2/ports.conf diff --git a/src/shippingservice/.cargo/config.toml b/src/shippingservice/.cargo/config.toml new file mode 100644 index 0000000000..1f3c62c98e --- /dev/null +++ b/src/shippingservice/.cargo/config.toml @@ -0,0 +1,6 @@ +[net] +git-fetch-with-cli = true # use the `git` executable for git operations + +[source.crates-io] +registry = "git://github.com/rust-lang/crates.io-index.git" + diff --git a/src/shippingservice/Dockerfile b/src/shippingservice/Dockerfile index 914e36b42f..48f581225e 100644 --- a/src/shippingservice/Dockerfile +++ b/src/shippingservice/Dockerfile @@ -1,4 +1,4 @@ -# build context will only work from ../../docker-compose.yml +# build context will only work from ../../docker-compose.ymh FROM rust:1.61-alpine as builder RUN apk update RUN apk add --no-cache ca-certificates git protobuf-dev protoc cmake clang clang-dev make gcc g++ libc-dev linux-headers From e0416d75a96dff26fe2420c6f714f2affe2ed46d Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Fri, 13 Jan 2023 19:30:26 +0100 Subject: [PATCH 014/135] add Helm instructions and remote registry support --- .env | 3 +- Makefile | 3 + README-Instana.md | 89 +++-- src/shippingservice/Dockerfile | 2 +- values-instana-agent.yaml | 712 +++++++++++++++++++++++++++++++++ 5 files changed, 763 insertions(+), 46 deletions(-) create mode 100644 values-instana-agent.yaml diff --git a/.env b/.env index 10b1692253..f95893b8f2 100644 --- a/.env +++ b/.env @@ -1,6 +1,7 @@ # Images IMAGE_VERSION=v1.2.1 -IMAGE_NAME=ghcr.io/open-telemetry/demo +# IMAGE_NAME=ghcr.io/open-telemetry/demo +IMAGE_NAME=default-route-openshift-image-registry.apps.ocp05.tec.cz.ibm.com/otel-demo/demo # Instana # INSTANA_AGENT_HOST=instana-agent diff --git a/Makefile b/Makefile index 738103a2fc..02ec3f4b71 100644 --- a/Makefile +++ b/Makefile @@ -68,6 +68,9 @@ build-and-push-ghcr: docker compose --env-file .ghcr.env -f docker-compose.yml build docker compose --env-file .ghcr.env -f docker-compose.yml push +.PHONY: push + docker compose --env-file .env -f docker-compose.yml push + .PHONY: build-env-file build-env-file: cp .env .dockerhub.env diff --git a/README-Instana.md b/README-Instana.md index 0e103971b1..b1c2608f4d 100644 --- a/README-Instana.md +++ b/README-Instana.md @@ -1,14 +1,23 @@ -# OpenTelemetry Demo with Instana Backend +# OpenTelemetry Demo with Instana Agent and OTEL Collector This repo is a fork of the original [OpenTelemetry Demo](https://github.com/open-telemetry/opentelemetry-demo) with added integration to Instana host-agent OTLP endpoint and application infrastructure monitoring configuration. -## Build and run the demo webstore app +## Build and run the demo webstore app locally Follow the main [README](README.md). This is basically: ```sh -docker compose up +docker compose build +docker compose up -d +``` + +**Note**, if you plan to push the built images to a remote container registry, such as for deploying the demo in Kubernetes, you should modify the `IMAGE_NAME` variable in `.env` and use your own registry domain. + +To push the images to remote container registry, login to the remote registry (use `oc registry login` in case of OpenShift registry) and run: +```sh +make push ``` + ### In case you are behind an HTTP proxy ... Configure the proxy behavior for the Docker daemon systemd service according to the [guide](https://docs.docker.com/config/daemon/systemd/#httphttps-proxy). @@ -40,17 +49,14 @@ docker compose build \ --build-arg 'http_proxy=http://192.168.31.253:3128' ``` -## Build and run Instana host agent +## Run Instana agent locally -Create an environment file for `docker-compose` with your Instana endpoint connection configuration and keys. Use the template: +Create an environment file for `docker-compose` with your Instana connection configuration using the template: ```sh cd instana-agent cp instana-agent.env.template .env ``` - -Edit the OTEL Collector configuration file [`src/otelcollector/otelcol-config.yml`](src/otelcollector/otelcol-config.yml) and replace the Instana endpoint with your host IP or DNS-resolvable hostname. Use the actual host interface IP; don't use `localhost` or `127.0.0.1` as the collector must be able to reach the IP from inside a container. - -Launch the agent (inside the `instana-agent` directory): +Launch the agent (still inside the `instana-agent` directory): ```sh docker compose up -d ``` @@ -65,25 +71,31 @@ docker compose up -d The [patched](https://github.com/styblope/opentelemetry_ecto/commit/0bc71d465621e6f76d71bc8d6d336011661eb754) OpenTelemetryEcto library is available at https://github.com/styblope/opentelemetry_ecto. The rest of the solution involved changing the FeatureFlag service Elixir code dependencies and building a new custom image. ### Adding W3C context propagation to Envoy the enable cross-tracer trace continuity -**Problem:** +To demosntrate the context propagation across Instana and OTel tracing implementations, we chose to instrument the `frontendproxy` service with the Instana native tracer. The Instana sensor supports W3C propagatiopn headers, which is the default propagation header format used by OpenTelemetry. We use a custom build of the Instana envoy sensor which supports W3C context propagation (public release of the W3C enabled sensor is due soon). -## Deploy on OpenShift +## Deploy in Kubernetes +Create a new project +```sh +kubectl create namespace otel-demo +# or equivalently in OpenShift: +oc new-project otel-demo +``` -TODO: ... using the official helm chart in namespace `otel-demo` - -Make sure you have sufficient privileges to run the pods: +In OpenShift, make sure you have sufficient privileges to run the pods in the namespace (this step my be no longer need as the demo containers can now run as non-root): ```sh oc adm policy -n otel-demo add-scc-to-user anyuid -z default ``` +Deploy Instana agent via Helm or using an operator. Use the agent configuration as defined in `instana-agent/configuration-otel.yaml` + +The demo assumes that an Instana agent Kubernetes service is already created in the `instana-agent` namespace and the service name is `instana-agent`. The agent service, besides exposing the standard Instana agent API endpoint, also exposes the common OTLP endpoint for both gRPC (port 4317) and HTTP (port 4318) protocols across all nodes. Be aware that at the time of writing, the HTTP endpoint definition wasn't yet included in the public Instana agent Helm chart (and likely neither in the Operator). It is thus advised that you create the service manually using the following manifest that is tested to work well with the demo. -You should have a Kubernetes service configured for the Instana host-agent in order to receive OTLP traffic from the OTel collector. You can also use the following simplified service configuration: ```sh cat <.:4317 - tls: - insecure: true -... - -service: - pipelines: - traces: - exporters: - - otlp/jaeger - - otlp/instana -``` +Deploy the demo using the published Helm chart -Apply the changes by restarting the collector pod: +We use custom values file with additional settings for the Instana agent to act as the default OTel traces and metrics receiver, to suppress native Instana tracing so it doesn't clash with the OTel instrumentaion, and to enable Instana to perform full component infrastructure monitoring including the databases. ```sh -oc delete pod -l app.kubernetes.io/name=otelcol +helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts +helm install my-otel-demo open-telemetry/opentelemetry-demo -f values-instana-agent.yaml ``` + +In OpenShift, you'll want to create a route for the `frontendproxy` service for easy access to the demo frontpage and featureflags services rather than the `kubectl port-forward` way that the Helm chart prompts you after installation. diff --git a/src/shippingservice/Dockerfile b/src/shippingservice/Dockerfile index 48f581225e..914e36b42f 100644 --- a/src/shippingservice/Dockerfile +++ b/src/shippingservice/Dockerfile @@ -1,4 +1,4 @@ -# build context will only work from ../../docker-compose.ymh +# build context will only work from ../../docker-compose.yml FROM rust:1.61-alpine as builder RUN apk update RUN apk add --no-cache ca-certificates git protobuf-dev protoc cmake clang clang-dev make gcc g++ libc-dev linux-headers diff --git a/values-instana-agent.yaml b/values-instana-agent.yaml new file mode 100644 index 0000000000..5a5730a03f --- /dev/null +++ b/values-instana-agent.yaml @@ -0,0 +1,712 @@ +default: + # list of environment variables applied to all components + env: + - name: OTEL_SERVICE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: "metadata.labels['app.kubernetes.io/component']" + - name: OTEL_K8S_NAMESPACE + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.namespace + - name: OTEL_K8S_NODE_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: spec.nodeName + - name: OTEL_K8S_POD_NAME + valueFrom: + fieldRef: + apiVersion: v1 + fieldPath: metadata.name + - name: OTEL_RESOURCE_ATTRIBUTES + value: service.name=$(OTEL_SERVICE_NAME),k8s.namespace.name=$(OTEL_K8S_NAMESPACE),k8s.node.name=$(OTEL_K8S_NODE_NAME),k8s.pod.name=$(OTEL_K8S_POD_NAME) + # Instana defaults + - name: INSTANA_SERVICE_NAME + value: $(OTEL_SERVICE_NAME) + - name: INSTANA_AGENT_HOST + value: instana-agent.instana-agent # The instana agent service name.namespace + - name: INSTANA_AGENT_PORT + value: "42699" + + # Allows overriding and additions to .Values.default.env + envOverrides: [] + # - name: OTEL_K8S_NODE_NAME + # value: "someConstantValue" + image: + repository: image-registry.openshift-image-registry.svc:5000/otel-demo/demo + # Overrides the image tag whose default is the chart appVersion. + # The service's name will be applied to the end of this value. + tag: "" + pullPolicy: Always + pullSecrets: [] + schedulingRules: + nodeSelector: {} + affinity: {} + tolerations: [] + securityContext: {} +serviceAccount: "" + +components: + ## Demo Components are named objects (services) with several properties + # demoService: + ## Enable the component (service) + # enabled: true + # useDefault: + ## Use default environment variables + # env: true + ## Override Image repository and Tag. Tag will use appVersion as default. + ## Service's name will be applied to end of this value. + # imageOverride: {} + ## Service Type to use for this component. Default is ClusterIP. + # serviceType: ClusterIP + ## Service Port to use to expose this component. Default is nil + # servicePort: 8080 + ## Additional service ports to use to expose this component + # ports: + # - name: extraServicePort + # value: 8081 + ## Environment variables to add to the component's pod + # env: + ## Environment variables that upsert (append + merge) into the `env` specification for this component. + # envOverrides: + ## Pod Scheduling rules for nodeSelector, affinity, or tolerations. + # schedulingRules: + # nodeSelector: {} + # affinity: {} + # tolerations: [] + ## Pod Annotations to add to this component + # podAnnotations: {} + ## Resources for this component + # resources: {} + ## Container security context for setting user ID (UID), group ID (GID) and other security policies + # securityContext: + ## Ingresses rules to add for the to the component + # ingress: + ## Enable the creation of Ingress rules. Default is false + # enabled: false + ## Annotations to add to the ingress rule + # annotations: {} + ## Which Ingress class (controller) to use. Default is unspecified. + # ingressClassName: nginx + ## Hosts definitions for the Ingress rule + # hosts: + # - host: demo.example.com + ## Each host can have multiple paths/routes + # paths: + # - path: / + # pathType: Prefix + # port: 8080 + ## Optional TLS specifications for the Ingress rule + # tls: + # - secretName: demo-tls + # hosts: + # - demo.example.com + ## Additional ingresses - only created if ingress.enabled is true + ## Useful for when differently annotated ingress services are required + ## Each additional ingress needs key "name" set to something unique + # additionalIngresses: [] + # - name: extra-demo-ingress + # ingressClassName: nginx + # annotations: {} + # hosts: + # - host: demo.example.com + # paths: + # - path: / + # pathType: Prefix + # port: 8080 + # tls: + # - secretName: demo-tls + # hosts: + # - demo.example.com + # # Command to use in the container spec, in case you don't want to go with the default command from the image. + # command: [] + # # Configuration to for this service; will create a ConfigMap, Volume, and Mount it into the container being spun up/. + # configuration: {} + accountingService: + enabled: true + useDefault: + env: true + env: + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE + value: cumulative + - name: KAFKA_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-kafka:9092' + resources: + limits: + memory: 20Mi + + adService: + enabled: true + useDefault: + env: true + servicePort: 8080 + env: + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: AD_SERVICE_PORT + value: "8080" + resources: + limits: + memory: 300Mi + + cartService: + enabled: true + useDefault: + env: true + servicePort: 8080 + env: + - name: ASPNETCORE_URLS + value: http://*:8080 + - name: REDIS_ADDR + value: '{{ include "otel-demo.name" . }}-redis:6379' + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: CART_SERVICE_PORT + value: "8080" + resources: + limits: + memory: 160Mi + + checkoutService: + enabled: true + useDefault: + env: true + servicePort: 8080 + env: + - name: CART_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-cartservice:8080' + - name: CURRENCY_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-currencyservice:8080' + - name: PAYMENT_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-paymentservice:8080' + - name: PRODUCT_CATALOG_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-productcatalogservice:8080' + - name: SHIPPING_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-shippingservice:8080' + - name: EMAIL_SERVICE_ADDR + value: 'http://{{ include "otel-demo.name" . }}-emailservice:8080' + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: CHECKOUT_SERVICE_PORT + value: "8080" + - name: KAFKA_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-kafka:9092' + resources: + limits: + memory: 20Mi + + currencyService: + enabled: true + useDefault: + env: true + servicePort: 8080 + env: + - name: PORT + value: "8080" + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: CURRENCY_SERVICE_PORT + value: "8080" + resources: + limits: + memory: 20Mi + + emailService: + enabled: true + useDefault: + env: true + servicePort: 8080 + env: + - name: APP_ENV + value: production + - name: PORT + value: "8080" + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4318 + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4318/v1/traces + - name: EMAIL_SERVICE_PORT + value: "8080" + resources: + limits: + memory: 100Mi + + featureflagService: + enabled: true + useDefault: + env: true + ports: + - name: grpc + value: 50053 + - name: http + value: 8081 + env: + - name: FEATURE_FLAG_GRPC_SERVICE_PORT + value: "50053" + - name: FEATURE_FLAG_SERVICE_PORT + value: "8081" + - name: OTEL_EXPORTER_OTLP_TRACES_PROTOCOL + value: grpc + - name: DATABASE_URL + value: 'ecto://ffs:ffs@{{ include "otel-demo.name" . }}-ffspostgres:5432/ffs' + - name: FEATURE_FLAG_SERVICE_PATH_ROOT + value: "/feature" + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + resources: + limits: + memory: 175Mi + + frauddetectionService: + enabled: true + useDefault: + env: true + env: + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE + value: cumulative + - name: KAFKA_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-kafka:9092' + resources: + limits: + memory: 200Mi + + frontend: + enabled: true + useDefault: + env: true + servicePort: 8080 + env: + - name: FRONTEND_ADDR + value: :8080 + - name: AD_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-adservice:8080' + - name: CART_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-cartservice:8080' + - name: CHECKOUT_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-checkoutservice:8080' + - name: CURRENCY_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-currencyservice:8080' + - name: PRODUCT_CATALOG_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-productcatalogservice:8080' + - name: RECOMMENDATION_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-recommendationservice:8080' + - name: SHIPPING_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-shippingservice:8080' + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: FRONTEND_PORT + value: "8080" + - name: PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://localhost:4318/v1/traces # This expects users to use `kubectl port-forward ...` + - name: INSTANA_DISABLE_TRACING + value: "true" + resources: + limits: + memory: 200Mi + + frontendProxy: + enabled: true + useDefault: + env: true + servicePort: 8080 + env: + - name: FRONTEND_PORT + value: "8080" + - name: FRONTEND_HOST + value: '{{ include "otel-demo.name" . }}-frontend' + - name: FEATURE_FLAG_SERVICE_PORT + value: "8081" + - name: FEATURE_FLAG_SERVICE_HOST + value: '{{ include "otel-demo.name" . }}-featureflagservice' + - name: LOCUST_WEB_PORT + value: "8089" + - name: LOCUST_WEB_HOST + value: '{{ include "otel-demo.name" . }}-loadgenerator' + - name: GRAFANA_SERVICE_PORT + value: "80" + - name: GRAFANA_SERVICE_HOST + value: '{{ include "otel-demo.name" . }}-grafana' + - name: JAEGER_SERVICE_PORT + value: "16686" + - name: JAEGER_SERVICE_HOST + value: '{{ include "otel-demo.name" . }}-jaeger-query' + - name: OTEL_COLLECTOR_PORT + value: "4317" + - name: OTEL_COLLECTOR_HOST + value: $(INSTANA_AGENT_HOST):4317 + - name: ENVOY_PORT + value: "8080" + resources: + limits: + memory: 50Mi + securityContext: + runAsUser: 101 # envoy + runAsGroup: 101 + runAsNonRoot: true + + loadgenerator: + enabled: true + useDefault: + env: true + servicePort: 8089 + env: + - name: FRONTEND_ADDR + value: '{{ include "otel-demo.name" . }}-frontend:8080' + - name: LOCUST_WEB_PORT + value: "8089" + - name: LOCUST_USERS + value: "10" + - name: LOCUST_SPAWN_RATE + value: "1" + - name: LOCUST_HOST + value: "http://$(FRONTEND_ADDR)" + - name: LOCUST_HEADLESS + value: "false" + - name: LOCUST_AUTOSTART + value: "true" + - name: PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION + value: python + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: LOADGENERATOR_PORT + value: "8089" + - name: INSTANA_DISABLE_AUTO_INSTR + value: "true" + resources: + limits: + memory: 120Mi + + paymentService: + enabled: true + useDefault: + env: true + servicePort: 8080 + env: + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: PAYMENT_SERVICE_PORT + value: "8080" + - name: INSTANA_DISABLE_TRACING + value: "true" + resources: + limits: + memory: 70Mi + + productCatalogService: + enabled: true + useDefault: + env: true + servicePort: 8080 + env: + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: PRODUCT_CATALOG_SERVICE_PORT + value: "8080" + - name: FEATURE_FLAG_GRPC_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-featureflagservice:50053' + resources: + limits: + memory: 20Mi + + quoteService: + enabled: true + useDefault: + env: true + servicePort: 8080 + env: + - name: OTEL_PHP_AUTOLOAD_ENABLED + value: "true" + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4318/v1/traces + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4318 + - name: QUOTE_SERVICE_PORT + value: "8080" + resources: + limits: + memory: 40Mi + securityContext: + runAsUser: 33 # www-data + runAsGroup: 33 + runAsNonRoot: true + + recommendationService: + enabled: true + useDefault: + env: true + servicePort: 8080 + env: + - name: OTEL_PYTHON_LOG_CORRELATION + value: "true" + - name: PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION + value: python + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: FEATURE_FLAG_GRPC_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-featureflagservice:50053' + - name: RECOMMENDATION_SERVICE_PORT + value: "8080" + - name: PRODUCT_CATALOG_SERVICE_ADDR + value: '{{ include "otel-demo.name" . }}-productcatalogservice:8080' + - name: AUTOWRAPT_BOOTSTRAP + value: instana + - name: INSTANA_DISABLE_AUTO_INSTR + value: "true" + resources: + limits: + memory: 500Mi # This is high to enable supporting the recommendationCache feature flag use case + + shippingService: + enabled: true + useDefault: + env: true + servicePort: 8080 + env: + - name: PORT + value: "8080" + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: 'http://$(INSTANA_AGENT_HOST):4317' + - name: SHIPPING_SERVICE_PORT + value: "8080" + - name: QUOTE_SERVICE_ADDR + value: 'http://{{ include "otel-demo.name" . }}-quoteservice:8080' + resources: + limits: + memory: 20Mi + + ffsPostgres: + enabled: true + useDefault: + env: true + imageOverride: + repository: "postgres" + tag: "14" + ports: + - name: postgres + value: 5432 + env: + - name: POSTGRES_DB + value: ffs + - name: POSTGRES_PASSWORD + value: ffs + - name: POSTGRES_USER + value: ffs + resources: + limits: + memory: 200Mi + securityContext: + runAsUser: 999 # postgres + runAsGroup: 999 + runAsNonRoot: true + + kafka: + enabled: true + useDefault: + env: true + ports: + - name: plaintext + value: 9092 + - name: controller + value: 9093 + env: + - name: KAFKA_ADVERTISED_LISTENERS + value: 'PLAINTEXT://{{ include "otel-demo.name" . }}-kafka:9092' + - name: OTEL_EXPORTER_OTLP_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + resources: + limits: + memory: 600Mi + securityContext: + runAsUser: 1000 # appuser + runAsGroup: 1000 + runAsNonRoot: true + + redis: + enabled: true + useDefault: + env: true + imageOverride: + repository: "redis" + tag: "alpine" + ports: + - name: redis + value: 6379 + resources: + limits: + memory: 20Mi + securityContext: + runAsUser: 999 # redis + runAsGroup: 1000 + runAsNonRoot: true + +observability: + otelcol: + enabled: false + jaeger: + enabled: false + prometheus: + enabled: false + grafana: + enabled: false + +opentelemetry-collector: + nameOverride: otelcol + mode: deployment + resources: + limits: + memory: 125Mi + service: + type: ClusterIP + ports: + metrics: + enabled: true + prometheus: + enabled: true + containerPort: 9464 + servicePort: 9464 + protocol: TCP + podAnnotations: + prometheus.io/scrape: "true" + prometheus.io/port: "9464" + opentelemetry_community_demo: "true" + config: + receivers: + otlp: + protocols: + http: + # Since this collector needs to receive data from the web, enable cors for all origins + # `allowed_origins` can be refined for your deployment domain + cors: + allowed_origins: + - "http://*" + - "https://*" + + exporters: + ## Create an exporter to Jaeger using the standard `otlp` export format + otlp/jaeger: + endpoint: '{{ include "otel-demo.name" . }}-jaeger:4317' + tls: + insecure: true + # Create an exporter to Prometheus (metrics) + prometheus: + endpoint: '0.0.0.0:9464' + + processors: + # Make use of the spanmetrics processor to compute RED metrics from all tracing spans + spanmetrics: + metrics_exporter: prometheus + + service: + pipelines: + traces: + processors: [memory_limiter, spanmetrics, batch] + exporters: [otlp/jaeger, logging] + metrics: + exporters: [prometheus, logging] + +jaeger: + provisionDataStore: + cassandra: false + allInOne: + enabled: true + args: ["--memory.max-traces", "10000", "--query.base-path", "/jaeger/ui"] + resources: + limits: + memory: 275Mi + storage: + type: none + agent: + enabled: false + collector: + enabled: false + query: + enabled: false + +prometheus: + alertmanager: + enabled: false + configmapReload: + prometheus: + enabled: false + kube-state-metrics: + enabled: false + prometheus-node-exporter: + enabled: false + prometheus-pushgateway: + enabled: false + + server: + global: + scrape_interval: 5s + scrape_timeout: 3s + evaluation_interval: 30s + service: + servicePort: 9090 + + serverFiles: + prometheus.yml: + scrape_configs: + - job_name: 'opentelemetry-community-demo' + kubernetes_sd_configs: + - role: pod + namespaces: + own_namespace: true + relabel_configs: + - source_labels: [__meta_kubernetes_pod_annotation_opentelemetry_community_demo] + action: keep + regex: true + +grafana: + grafana.ini: + auth: + disable_login_form: true + auth.anonymous: + enabled: true + org_name: Main Org. + org_role: Admin + server: + root_url: "%(protocol)s://%(domain)s:%(http_port)s/grafana" + serve_from_sub_path: true + adminPassword: admin + datasources: + datasources.yaml: + apiVersion: 1 + datasources: + - name: Prometheus + uid: webstore-metrics + type: prometheus + url: 'http://{{ include "otel-demo.name" . }}-prometheus-server:9090' + editable: true + isDefault: true + - name: Jaeger + uid: webstore-traces + type: jaeger + url: 'http://{{ include "otel-demo.name" . }}-jaeger-query:16686/jaeger/ui' + editable: true + isDefault: false + dashboardProviders: + dashboardproviders.yaml: + apiVersion: 1 + providers: + - name: 'default' + orgId: 1 + folder: '' + type: file + disableDeletion: false + editable: true + options: + path: /var/lib/grafana/dashboards/default + dashboardsConfigMaps: + default: '{{ include "otel-demo.name" . }}-grafana-dashboards' + resources: + limits: + memory: 75Mi From a449d2e799e6b8a1bdb7ec2db49dae66b92c70ef Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Sat, 14 Jan 2023 11:34:37 +0100 Subject: [PATCH 015/135] update readme --- README-Instana.md | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-) diff --git a/README-Instana.md b/README-Instana.md index b1c2608f4d..5956a6690c 100644 --- a/README-Instana.md +++ b/README-Instana.md @@ -12,7 +12,8 @@ docker compose up -d **Note**, if you plan to push the built images to a remote container registry, such as for deploying the demo in Kubernetes, you should modify the `IMAGE_NAME` variable in `.env` and use your own registry domain. -To push the images to remote container registry, login to the remote registry (use `oc registry login` in case of OpenShift registry) and run: + +To push the images to a remote container registry, login to the registry (`oc registry login` in case of OpenShift internal registry) and run: ```sh make push ``` @@ -36,13 +37,13 @@ Optionally (not needed for building and running `docker compose`), you may [conf } ``` -Create a new gradle properties file `src/adservice/gradle.properties` with your proxy settings: +Create or edit a gradle properties file for adservice (`src/adservice/gradele.properties`) and frauddetectionservice (`src/frauddetectionservice/gradle.properties`) and fill in your proxy settings: ``` systemProp.https.proxyHost=192.168.31.253 systemProp.https.proxyPort=3128 ``` -Build the Webstore app with `http_proxy` and `https_proxy` environment variables passed to `docker-compose`: +Build the app with `http_proxy` and `https_proxy` build agruments passed to `docker-compose`: ```sh docker compose build \ --build-arg 'https_proxy=http://192.168.31.253:3128' \ @@ -51,7 +52,7 @@ docker compose build \ ## Run Instana agent locally -Create an environment file for `docker-compose` with your Instana connection configuration using the template: +Create an environment file for `docker-compose` with your Instana connection configuration. Use the template: ```sh cd instana-agent cp instana-agent.env.template .env @@ -75,21 +76,25 @@ To demosntrate the context propagation across Instana and OTel tracing implement ## Deploy in Kubernetes -Create a new project +Create new namespace/project: ```sh kubectl create namespace otel-demo + # or equivalently in OpenShift: oc new-project otel-demo ``` -In OpenShift, make sure you have sufficient privileges to run the pods in the namespace (this step my be no longer need as the demo containers can now run as non-root): +In OpenShift, make sure you have sufficient privileges to run the pods in the namespace (this step my be no longer necessary as the demo containers can now run as non-root): ```sh oc adm policy -n otel-demo add-scc-to-user anyuid -z default ``` -Deploy Instana agent via Helm or using an operator. Use the agent configuration as defined in `instana-agent/configuration-otel.yaml` -The demo assumes that an Instana agent Kubernetes service is already created in the `instana-agent` namespace and the service name is `instana-agent`. The agent service, besides exposing the standard Instana agent API endpoint, also exposes the common OTLP endpoint for both gRPC (port 4317) and HTTP (port 4318) protocols across all nodes. Be aware that at the time of writing, the HTTP endpoint definition wasn't yet included in the public Instana agent Helm chart (and likely neither in the Operator). It is thus advised that you create the service manually using the following manifest that is tested to work well with the demo. +Deploy the Instana agent via Helm or using an operator: + +Use a standard installation according to Instana documentation. Apply the agent configuration as in `instana-agent/configuration-otel.yaml` + +The demo assumes that an Instana [agent Kubernetes service](https://www.ibm.com/docs/en/instana-observability/current?topic=requirements-installing-host-agent-kubernetes#instana-agent-service) `instana-agent` exists in the agent namesapce `instana-agent`. The agent service, besides exposing the standard Instana agent API endpoint, also provides the common OTLP endpoint for both gRPC (port 4317) and HTTP (port 4318) protocols across all nodes. Be aware that at the time of writing, the HTTP endpoint definition wasn't yet included in the public Instana agent Helm chart (and likely neither in the Operator). You can thus create the service manually using the following manifest that is tested to work well with the demo. ```sh cat < Date: Fri, 20 Jan 2023 15:00:18 +0100 Subject: [PATCH 016/135] auto-create gradle http_proxy properties --- .env | 4 ++-- README-Instana.md | 6 ------ src/adservice/Dockerfile | 1 + src/adservice/gradle.properties | 4 ---- src/adservice/http_proxy.sh | 19 +++++++++++++++++++ src/frauddetectionservice/Dockerfile | 1 + src/frauddetectionservice/gradle.properties | 4 ---- src/frauddetectionservice/http_proxy.sh | 19 +++++++++++++++++++ 8 files changed, 42 insertions(+), 16 deletions(-) delete mode 100644 src/adservice/gradle.properties create mode 100755 src/adservice/http_proxy.sh create mode 100755 src/frauddetectionservice/http_proxy.sh diff --git a/.env b/.env index f95893b8f2..dafdfb2983 100644 --- a/.env +++ b/.env @@ -4,7 +4,7 @@ IMAGE_VERSION=v1.2.1 IMAGE_NAME=default-route-openshift-image-registry.apps.ocp05.tec.cz.ibm.com/otel-demo/demo # Instana -# INSTANA_AGENT_HOST=instana-agent +# INSTANA_AGENT_HOST=instana-agent.instana-agent # k8s agent service INSTANA_AGENT_HOST=172.17.0.1 # docker0 interface INSTANA_AGENT_PORT=42699 @@ -14,7 +14,7 @@ ENV_PLATFORM=local # OpenTelemetry Collector # OTEL_COLLECTOR_HOST=otelcol -OTEL_COLLECTOR_HOST=${INSTANA_AGENT_HOST} # Instana agent +OTEL_COLLECTOR_HOST=${INSTANA_AGENT_HOST:-otelcol} OTEL_COLLECTOR_PORT=4317 OTEL_EXPORTER_OTLP_ENDPOINT=http://${OTEL_COLLECTOR_HOST}:${OTEL_COLLECTOR_PORT} OTEL_EXPORTER_OTLP_TRACES_ENDPOINT=${OTEL_EXPORTER_OTLP_ENDPOINT} diff --git a/README-Instana.md b/README-Instana.md index 5956a6690c..96601b9bdd 100644 --- a/README-Instana.md +++ b/README-Instana.md @@ -37,12 +37,6 @@ Optionally (not needed for building and running `docker compose`), you may [conf } ``` -Create or edit a gradle properties file for adservice (`src/adservice/gradele.properties`) and frauddetectionservice (`src/frauddetectionservice/gradle.properties`) and fill in your proxy settings: -``` -systemProp.https.proxyHost=192.168.31.253 -systemProp.https.proxyPort=3128 -``` - Build the app with `http_proxy` and `https_proxy` build agruments passed to `docker-compose`: ```sh docker compose build \ diff --git a/src/adservice/Dockerfile b/src/adservice/Dockerfile index 1076b5dbd0..c9b268b12d 100644 --- a/src/adservice/Dockerfile +++ b/src/adservice/Dockerfile @@ -18,6 +18,7 @@ WORKDIR /usr/src/app/ COPY ./src/adservice/ ./ COPY ./pb/ ./proto +RUN ./http_proxy.sh RUN ./gradlew downloadRepos RUN ./gradlew installDist -PprotoSourceDir=./proto diff --git a/src/adservice/gradle.properties b/src/adservice/gradle.properties deleted file mode 100644 index efae8da500..0000000000 --- a/src/adservice/gradle.properties +++ /dev/null @@ -1,4 +0,0 @@ -systemProp.http.proxyHost=192.168.31.253 -systemProp.http.proxyPort=3128 -systemProp.https.proxyHost=192.168.31.253 -systemProp.https.proxyPort=3128 diff --git a/src/adservice/http_proxy.sh b/src/adservice/http_proxy.sh new file mode 100755 index 0000000000..40ba4bd4cb --- /dev/null +++ b/src/adservice/http_proxy.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +if [ -n "$http_proxy" ] +then + host=$(echo $http_proxy | awk -F'[/:]' '{print $4}') + port=$(echo $http_proxy | awk -F'[/:]' '{print $5}') + + echo "systemProp.http.proxyHost=$host" >> gradle.properties + echo "systemProp.http.proxyHost=$port" >> gradle.properties +fi + +if [ -n "$https_proxy" ] +then + host=$(echo $https_proxy | awk -F'[/:]' '{print $4}') + port=$(echo $https_proxy | awk -F'[/:]' '{print $5}') + + echo "systemProp.https.proxyHost=$host" >> gradle.properties + echo "systemProp.https.proxyHost=$port" >> gradle.properties +fi diff --git a/src/frauddetectionservice/Dockerfile b/src/frauddetectionservice/Dockerfile index 73018d73f9..a9b7faecf2 100644 --- a/src/frauddetectionservice/Dockerfile +++ b/src/frauddetectionservice/Dockerfile @@ -4,6 +4,7 @@ WORKDIR /usr/src/app/ COPY ./src/frauddetectionservice/ ./ COPY ./pb/ ./src/main/proto/ +RUN ./http_proxy.sh RUN gradle shadowJar # ----------------------------------------------------------------------------- diff --git a/src/frauddetectionservice/gradle.properties b/src/frauddetectionservice/gradle.properties index 78baebb5f1..7fc6f1ff27 100644 --- a/src/frauddetectionservice/gradle.properties +++ b/src/frauddetectionservice/gradle.properties @@ -1,5 +1 @@ kotlin.code.style=official -systemProp.http.proxyHost=192.168.31.253 -systemProp.http.proxyPort=3128 -systemProp.https.proxyHost=192.168.31.253 -systemProp.https.proxyPort=3128 diff --git a/src/frauddetectionservice/http_proxy.sh b/src/frauddetectionservice/http_proxy.sh new file mode 100755 index 0000000000..40ba4bd4cb --- /dev/null +++ b/src/frauddetectionservice/http_proxy.sh @@ -0,0 +1,19 @@ +#!/bin/sh + +if [ -n "$http_proxy" ] +then + host=$(echo $http_proxy | awk -F'[/:]' '{print $4}') + port=$(echo $http_proxy | awk -F'[/:]' '{print $5}') + + echo "systemProp.http.proxyHost=$host" >> gradle.properties + echo "systemProp.http.proxyHost=$port" >> gradle.properties +fi + +if [ -n "$https_proxy" ] +then + host=$(echo $https_proxy | awk -F'[/:]' '{print $4}') + port=$(echo $https_proxy | awk -F'[/:]' '{print $5}') + + echo "systemProp.https.proxyHost=$host" >> gradle.properties + echo "systemProp.https.proxyHost=$port" >> gradle.properties +fi From a5f42b09bd2ada838b30c1d55560e7469363e6ff Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Mon, 23 Jan 2023 21:19:08 +0100 Subject: [PATCH 017/135] fix helm values --- values-instana-agent.yaml | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/values-instana-agent.yaml b/values-instana-agent.yaml index 5a5730a03f..bc9cd854f7 100644 --- a/values-instana-agent.yaml +++ b/values-instana-agent.yaml @@ -27,7 +27,10 @@ default: - name: INSTANA_SERVICE_NAME value: $(OTEL_SERVICE_NAME) - name: INSTANA_AGENT_HOST - value: instana-agent.instana-agent # The instana agent service name.namespace + # value: instana-agent.instana-agent # Instana agent service . + valueFrom: + fieldRef: + fieldPath: status.hostIP - name: INSTANA_AGENT_PORT value: "42699" @@ -36,7 +39,8 @@ default: # - name: OTEL_K8S_NODE_NAME # value: "someConstantValue" image: - repository: image-registry.openshift-image-registry.svc:5000/otel-demo/demo + # repository: image-registry.openshift-image-registry.svc:5000/otel-demo/demo + repository: joshuamlee/otel-demo-instana # Overrides the image tag whose default is the chart appVersion. # The service's name will be applied to the end of this value. tag: "" @@ -256,7 +260,7 @@ components: value: 'ecto://ffs:ffs@{{ include "otel-demo.name" . }}-ffspostgres:5432/ffs' - name: FEATURE_FLAG_SERVICE_PATH_ROOT value: "/feature" - - name: OTEL_EXPORTER_OTLP_ENDPOINT + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT value: http://$(INSTANA_AGENT_HOST):4317 resources: limits: @@ -405,8 +409,12 @@ components: env: true servicePort: 8080 env: - - name: OTEL_EXPORTER_OTLP_ENDPOINT + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_ENDPOINT value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE + value: cumulative - name: PRODUCT_CATALOG_SERVICE_PORT value: "8080" - name: FEATURE_FLAG_GRPC_SERVICE_ADDR From b94d0f89d30b3ce99bd8a60205ba1f977b7e82da Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Mon, 23 Jan 2023 21:23:01 +0100 Subject: [PATCH 018/135] fic helm values - checkoutservice --- values-instana-agent.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/values-instana-agent.yaml b/values-instana-agent.yaml index bc9cd854f7..0c128e15b1 100644 --- a/values-instana-agent.yaml +++ b/values-instana-agent.yaml @@ -194,8 +194,12 @@ components: value: '{{ include "otel-demo.name" . }}-shippingservice:8080' - name: EMAIL_SERVICE_ADDR value: 'http://{{ include "otel-demo.name" . }}-emailservice:8080' - - name: OTEL_EXPORTER_OTLP_ENDPOINT + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_ENDPOINT value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE + value: cumulative - name: CHECKOUT_SERVICE_PORT value: "8080" - name: KAFKA_SERVICE_ADDR From 9298b914ee83c1852ec42eb935c383f9b2792883 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Mon, 23 Jan 2023 21:29:17 +0100 Subject: [PATCH 019/135] fix helm values - currencyservice --- values-instana-agent.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/values-instana-agent.yaml b/values-instana-agent.yaml index 0c128e15b1..1d06164252 100644 --- a/values-instana-agent.yaml +++ b/values-instana-agent.yaml @@ -199,7 +199,7 @@ components: - name: OTEL_EXPORTER_OTLP_METRICS_ENDPOINT value: http://$(INSTANA_AGENT_HOST):4317 - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE - value: cumulative + - name: CHECKOUT_SERVICE_PORT value: "8080" - name: KAFKA_SERVICE_ADDR @@ -216,7 +216,7 @@ components: env: - name: PORT value: "8080" - - name: OTEL_EXPORTER_OTLP_ENDPOINT + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT value: http://$(INSTANA_AGENT_HOST):4317 - name: CURRENCY_SERVICE_PORT value: "8080" From 078a411740272da6a6db9728d0c58f58493e2ecb Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Mon, 23 Jan 2023 21:53:19 +0100 Subject: [PATCH 020/135] fix helm values - all other services --- values-instana-agent.yaml | 56 +++++++++++++++++++++++++++------------ 1 file changed, 39 insertions(+), 17 deletions(-) diff --git a/values-instana-agent.yaml b/values-instana-agent.yaml index 1d06164252..27e34b89e6 100644 --- a/values-instana-agent.yaml +++ b/values-instana-agent.yaml @@ -134,10 +134,14 @@ components: useDefault: env: true env: - - name: OTEL_EXPORTER_OTLP_ENDPOINT + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_ENDPOINT value: http://$(INSTANA_AGENT_HOST):4317 - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative + - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE + value: cumulative - name: KAFKA_SERVICE_ADDR value: '{{ include "otel-demo.name" . }}-kafka:9092' resources: @@ -150,8 +154,12 @@ components: env: true servicePort: 8080 env: - - name: OTEL_EXPORTER_OTLP_ENDPOINT + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_ENDPOINT value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE + value: cumulative - name: AD_SERVICE_PORT value: "8080" resources: @@ -234,8 +242,6 @@ components: value: production - name: PORT value: "8080" - - name: OTEL_EXPORTER_OTLP_ENDPOINT - value: http://$(INSTANA_AGENT_HOST):4318 - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT value: http://$(INSTANA_AGENT_HOST):4318/v1/traces - name: EMAIL_SERVICE_PORT @@ -258,14 +264,14 @@ components: value: "50053" - name: FEATURE_FLAG_SERVICE_PORT value: "8081" + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 - name: OTEL_EXPORTER_OTLP_TRACES_PROTOCOL value: grpc - name: DATABASE_URL value: 'ecto://ffs:ffs@{{ include "otel-demo.name" . }}-ffspostgres:5432/ffs' - name: FEATURE_FLAG_SERVICE_PATH_ROOT value: "/feature" - - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT - value: http://$(INSTANA_AGENT_HOST):4317 resources: limits: memory: 175Mi @@ -275,7 +281,9 @@ components: useDefault: env: true env: - - name: OTEL_EXPORTER_OTLP_ENDPOINT + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_ENDPOINT value: http://$(INSTANA_AGENT_HOST):4317 - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE value: cumulative @@ -293,6 +301,8 @@ components: env: - name: FRONTEND_ADDR value: :8080 + - name: PORT + value: "8080" - name: AD_SERVICE_ADDR value: '{{ include "otel-demo.name" . }}-adservice:8080' - name: CART_SERVICE_ADDR @@ -309,8 +319,8 @@ components: value: '{{ include "otel-demo.name" . }}-shippingservice:8080' - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(INSTANA_AGENT_HOST):4317 - - name: FRONTEND_PORT - value: "8080" + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 - name: PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT value: http://localhost:4318/v1/traces # This expects users to use `kubectl port-forward ...` - name: INSTANA_DISABLE_TRACING @@ -381,8 +391,8 @@ components: value: "true" - name: PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION value: python - - name: OTEL_EXPORTER_OTLP_ENDPOINT - value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://${OTEL_COLLECTOR_HOST}:4318/v1/traces - name: LOADGENERATOR_PORT value: "8089" - name: INSTANA_DISABLE_AUTO_INSTR @@ -397,8 +407,12 @@ components: env: true servicePort: 8080 env: - - name: OTEL_EXPORTER_OTLP_ENDPOINT + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_ENDPOINT value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE + value: cumulative - name: PAYMENT_SERVICE_PORT value: "8080" - name: INSTANA_DISABLE_TRACING @@ -437,8 +451,6 @@ components: value: "true" - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT value: http://$(INSTANA_AGENT_HOST):4318/v1/traces - - name: OTEL_EXPORTER_OTLP_ENDPOINT - value: http://$(INSTANA_AGENT_HOST):4318 - name: QUOTE_SERVICE_PORT value: "8080" resources: @@ -459,8 +471,16 @@ components: value: "true" - name: PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION value: python + - name: OTEL_PYTHON_LOG_CORRELATION + value: "true" + - name: OTEL_TRACES_EXPORTER + value: otlp + - name: OTEL_METRICS_EXPORTER + value: otlp - name: OTEL_EXPORTER_OTLP_ENDPOINT value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE + value: cumulative - name: FEATURE_FLAG_GRPC_SERVICE_ADDR value: '{{ include "otel-demo.name" . }}-featureflagservice:50053' - name: RECOMMENDATION_SERVICE_PORT @@ -483,8 +503,6 @@ components: env: - name: PORT value: "8080" - - name: OTEL_EXPORTER_OTLP_ENDPOINT - value: http://$(INSTANA_AGENT_HOST):4317 - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT value: 'http://$(INSTANA_AGENT_HOST):4317' - name: SHIPPING_SERVICE_PORT @@ -532,8 +550,12 @@ components: env: - name: KAFKA_ADVERTISED_LISTENERS value: 'PLAINTEXT://{{ include "otel-demo.name" . }}-kafka:9092' - - name: OTEL_EXPORTER_OTLP_ENDPOINT + - name: OTEL_EXPORTER_OTLP_TRACES_ENDPOINT + value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_ENDPOINT value: http://$(INSTANA_AGENT_HOST):4317 + - name: OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE + value: cumulative resources: limits: memory: 600Mi From faeb8a7c3dc03c38fe402646dcafb2c201371966 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Tue, 24 Jan 2023 12:05:24 +0100 Subject: [PATCH 021/135] rename agent config file --- instana-agent/{configuration-otel.yaml => configuration.yaml} | 1 + 1 file changed, 1 insertion(+) rename instana-agent/{configuration-otel.yaml => configuration.yaml} (94%) diff --git a/instana-agent/configuration-otel.yaml b/instana-agent/configuration.yaml similarity index 94% rename from instana-agent/configuration-otel.yaml rename to instana-agent/configuration.yaml index 9cfeb87aae..ba477ca593 100644 --- a/instana-agent/configuration-otel.yaml +++ b/instana-agent/configuration.yaml @@ -8,6 +8,7 @@ com.instana.plugin.opentelemetry: com.instana.ignore: arguments: - '-javaagent:/opt/otel/opentelemetry-javaagent-all.jar' + # - '-javaagent:/app/opentelemetry-javaagent.jar' com.instana.tracing: extra-http-headers: From cf32aa82859ef4575979f2e02601dafd594f1164 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Tue, 24 Jan 2023 15:53:30 +0100 Subject: [PATCH 022/135] update instana agent configs --- instana-agent/configuration.yaml | 4 +++- instana-agent/docker-compose.yml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/instana-agent/configuration.yaml b/instana-agent/configuration.yaml index ba477ca593..69029449fe 100644 --- a/instana-agent/configuration.yaml +++ b/instana-agent/configuration.yaml @@ -7,8 +7,9 @@ com.instana.plugin.opentelemetry: com.instana.ignore: arguments: - - '-javaagent:/opt/otel/opentelemetry-javaagent-all.jar' + # - '-javaagent:/opt/otel/opentelemetry-javaagent-all.jar' # - '-javaagent:/app/opentelemetry-javaagent.jar' + # - '-javaagent:/tmp/opentelemetry-javaagent.jar' com.instana.tracing: extra-http-headers: @@ -27,6 +28,7 @@ com.instana.plugin.postgresql: com.instana.plugin.javatrace: instrumentation: enabled: false + trace-jvms-with-problematic-agents: true com.instana.plugin.python: autotrace: diff --git a/instana-agent/docker-compose.yml b/instana-agent/docker-compose.yml index 4000153362..6ec644a27b 100644 --- a/instana-agent/docker-compose.yml +++ b/instana-agent/docker-compose.yml @@ -17,7 +17,7 @@ services: - /dev:/dev - /sys:/sys - /var/log:/var/log - - ./configuration-otel.yaml:/opt/instana/agent/etc/instana/configuration-otel.yaml + - ./configuration.yaml:/opt/instana/agent/etc/instana/configuration.yaml #- ./com.instana.agent.main.sender.File.cfg:/opt/instana/agent/etc/instana/com.instana.agent.main.sender.File.cfg environment: - INSTANA_AGENT_ENDPOINT=${INSTANA_AGENT_ENDPOINT:?No agent endpoint provided} From 44219b4c1378898872b5802a70d78fe1a5346861 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Tue, 24 Jan 2023 18:36:25 +0100 Subject: [PATCH 023/135] use own dockerhub repo --- .env | 3 ++- push-images.sh | 17 +++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100755 push-images.sh diff --git a/.env b/.env index dafdfb2983..013b1d4516 100644 --- a/.env +++ b/.env @@ -1,7 +1,8 @@ # Images IMAGE_VERSION=v1.2.1 # IMAGE_NAME=ghcr.io/open-telemetry/demo -IMAGE_NAME=default-route-openshift-image-registry.apps.ocp05.tec.cz.ibm.com/otel-demo/demo +# IMAGE_NAME=default-route-openshift-image-registry.apps.ocp05.tec.cz.ibm.com/otel-demo/demo +IMAGE_NAME=styblope/otel-demo # Instana # INSTANA_AGENT_HOST=instana-agent.instana-agent # k8s agent service diff --git a/push-images.sh b/push-images.sh new file mode 100755 index 0000000000..6ce2ac8153 --- /dev/null +++ b/push-images.sh @@ -0,0 +1,17 @@ +docker push styblope/otel-demo:v1.2.1-accountingservice +docker push styblope/otel-demo:v1.2.1-frontend +docker push styblope/otel-demo:v1.2.1-adservice +docker push styblope/otel-demo:v1.2.1-quoteservice +docker push styblope/otel-demo:v1.2.1-checkoutservice +docker push styblope/otel-demo:v1.2.1-productcatalogservice +docker push styblope/otel-demo:v1.2.1-loadgenerator +docker push styblope/otel-demo:v1.2.1-cartservice +docker push styblope/otel-demo:v1.2.1-paymentservice +docker push styblope/otel-demo:v1.2.1-recommendationservice +docker push styblope/otel-demo:v1.2.1-shippingservice +docker push styblope/otel-demo:v1.2.1-kafka +docker push styblope/otel-demo:v1.2.1-currencyservice +docker push styblope/otel-demo:v1.2.1-featureflagservice +docker push styblope/otel-demo:v1.2.1-frauddetectionservice +docker push styblope/otel-demo:v1.2.1-emailservice +docker push styblope/otel-demo:v1.2.1-frontendproxy From 7a424ae30e27f5f171fc2807e604d54f49130d64 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Tue, 24 Jan 2023 18:54:28 +0100 Subject: [PATCH 024/135] use own dockerhub repo in helm values file --- values-instana-agent.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/values-instana-agent.yaml b/values-instana-agent.yaml index 27e34b89e6..03113a9162 100644 --- a/values-instana-agent.yaml +++ b/values-instana-agent.yaml @@ -40,7 +40,7 @@ default: # value: "someConstantValue" image: # repository: image-registry.openshift-image-registry.svc:5000/otel-demo/demo - repository: joshuamlee/otel-demo-instana + repository: styblope/otel-demo # Overrides the image tag whose default is the chart appVersion. # The service's name will be applied to the end of this value. tag: "" From 42e4bcab9c4ab096c310812858c14130464e2d2c Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Fri, 27 Jan 2023 11:35:05 +0100 Subject: [PATCH 025/135] fix http proxy gradle config --- src/adservice/Dockerfile | 2 ++ src/adservice/http_proxy.sh | 4 ++-- src/frauddetectionservice/http_proxy.sh | 4 ++-- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/adservice/Dockerfile b/src/adservice/Dockerfile index 6927483dc7..728868c9e5 100644 --- a/src/adservice/Dockerfile +++ b/src/adservice/Dockerfile @@ -19,7 +19,9 @@ WORKDIR /usr/src/app/ COPY ./src/adservice/gradlew* ./src/adservice/settings.gradle* ./src/adservice/build.gradle . COPY ./src/adservice/gradle ./gradle +COPY ./src/adservice/http_proxy.sh . RUN ./http_proxy.sh + RUN ./gradlew RUN ./gradlew downloadRepos diff --git a/src/adservice/http_proxy.sh b/src/adservice/http_proxy.sh index 40ba4bd4cb..ced417c510 100755 --- a/src/adservice/http_proxy.sh +++ b/src/adservice/http_proxy.sh @@ -6,7 +6,7 @@ then port=$(echo $http_proxy | awk -F'[/:]' '{print $5}') echo "systemProp.http.proxyHost=$host" >> gradle.properties - echo "systemProp.http.proxyHost=$port" >> gradle.properties + echo "systemProp.http.proxyPort=$port" >> gradle.properties fi if [ -n "$https_proxy" ] @@ -15,5 +15,5 @@ then port=$(echo $https_proxy | awk -F'[/:]' '{print $5}') echo "systemProp.https.proxyHost=$host" >> gradle.properties - echo "systemProp.https.proxyHost=$port" >> gradle.properties + echo "systemProp.https.proxyPort=$port" >> gradle.properties fi diff --git a/src/frauddetectionservice/http_proxy.sh b/src/frauddetectionservice/http_proxy.sh index 40ba4bd4cb..ced417c510 100755 --- a/src/frauddetectionservice/http_proxy.sh +++ b/src/frauddetectionservice/http_proxy.sh @@ -6,7 +6,7 @@ then port=$(echo $http_proxy | awk -F'[/:]' '{print $5}') echo "systemProp.http.proxyHost=$host" >> gradle.properties - echo "systemProp.http.proxyHost=$port" >> gradle.properties + echo "systemProp.http.proxyPort=$port" >> gradle.properties fi if [ -n "$https_proxy" ] @@ -15,5 +15,5 @@ then port=$(echo $https_proxy | awk -F'[/:]' '{print $5}') echo "systemProp.https.proxyHost=$host" >> gradle.properties - echo "systemProp.https.proxyHost=$port" >> gradle.properties + echo "systemProp.https.proxyPort=$port" >> gradle.properties fi From 37f0b53bf8cc5dd6832a6e00ff8b2dfdbf9fac40 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Fri, 27 Jan 2023 12:33:58 +0100 Subject: [PATCH 026/135] update instana readme --- README-Instana.md | 68 ++++++++++++++++++++++++++--------------------- 1 file changed, 38 insertions(+), 30 deletions(-) diff --git a/README-Instana.md b/README-Instana.md index 96601b9bdd..82713ab09e 100644 --- a/README-Instana.md +++ b/README-Instana.md @@ -1,26 +1,29 @@ # OpenTelemetry Demo with Instana Agent and OTEL Collector -This repo is a fork of the original [OpenTelemetry Demo](https://github.com/open-telemetry/opentelemetry-demo) with added integration to Instana host-agent OTLP endpoint and application infrastructure monitoring configuration. +This repo is a fork of the original [OpenTelemetry Demo](https://github.com/open-telemetry/opentelemetry-demo) with integration to Instana backend. The main changes are: -## Build and run the demo webstore app locally +- demo-specific Instana agent configuration and agent docker-compose deployment file - both available in `instana-agent` folder +- custom services instrumentation for Instana APM monitoring (Instana-native tracing is disabled) +- use Instana agent instead of OTel Collector to receive the OTLP data (traces/metrics) +- provide custom helm config file `./values-instana-agent.yaml` to deploy in Kubernetes (excludes Instana agent deployment) + +## Build the demo locally +(Skip this step if you want to use the pre-built demo images from dockerhub.) Follow the main [README](README.md). This is basically: ```sh docker compose build -docker compose up -d ``` **Note**, if you plan to push the built images to a remote container registry, such as for deploying the demo in Kubernetes, you should modify the `IMAGE_NAME` variable in `.env` and use your own registry domain. - To push the images to a remote container registry, login to the registry (`oc registry login` in case of OpenShift internal registry) and run: ```sh make push ``` - -### In case you are behind an HTTP proxy ... -Configure the proxy behavior for the Docker daemon systemd service according to the [guide](https://docs.docker.com/config/daemon/systemd/#httphttps-proxy). +#### NOTE: If you are behind an HTTP proxy ... +configure the proxy behavior for the Docker daemon systemd service according to the [guide](https://docs.docker.com/config/daemon/systemd/#httphttps-proxy). Optionally (not needed for building and running `docker compose`), you may [configure your Docker client](https://docs.docker.com/network/proxy/) by adding the following snippet to `~/.docker/config.json` ```json @@ -44,33 +47,28 @@ docker compose build \ --build-arg 'http_proxy=http://192.168.31.253:3128' ``` -## Run Instana agent locally +## Deploy the demo and Instana agent locally +You can either use your custom built images from the previous step, or use the pre-build images from dockerhub. The image repository is defined in `.env` file. -Create an environment file for `docker-compose` with your Instana connection configuration. Use the template: +Launch the demo +```sh +docker compose up -d +``` + +Create a new environment file for `docker-compose` with your Instana backend connection settings. Use the template: ```sh cd instana-agent cp instana-agent.env.template .env ``` -Launch the agent (still inside the `instana-agent` directory): + +Launch the agent (while still inside the `instana-agent` directory): ```sh docker compose up -d ``` -## Customizations - -### Link calls from FeatureFlag to Postgres database -**Problem:** FeatureFlag service calls to downstream PostgreSQL database aren't linked. -**Reason:** The reason for the missing downstream database link is that the current v1.0 release of Erlang/Elix [OpentelemetryEcto instrumentation library](https://github.com/open-telemetry/opentelemetry-erlang-contrib/tree/main/instrumentation/opentelemetry_ecto) doesn't yet add the OTel peer attributes `net.peer.host` and `net.peer.port`. These standardized attributes are used by Instana to correlate downstream services. -**Solution:** Although the instrumentation library provides other attributes with the downstream link details, it isn't possible to use plain OTel attributes for creating custom service mapping via [manual service configuration](https://www.ibm.com/docs/en/instana-observability/current?topic=applications-services#link-calls-to-an-existing-database-or-messaging-service-that-is-created-from-a-monitored-infrastructure-entity). Therefore, in order to inject the required attributes into the generated spans it was necessary to modify the OpentelemetryEcto library source and use the custom-built library in place of the default distribution package. - -The [patched](https://github.com/styblope/opentelemetry_ecto/commit/0bc71d465621e6f76d71bc8d6d336011661eb754) OpenTelemetryEcto library is available at https://github.com/styblope/opentelemetry_ecto. The rest of the solution involved changing the FeatureFlag service Elixir code dependencies and building a new custom image. - -### Adding W3C context propagation to Envoy the enable cross-tracer trace continuity -To demosntrate the context propagation across Instana and OTel tracing implementations, we chose to instrument the `frontendproxy` service with the Instana native tracer. The Instana sensor supports W3C propagatiopn headers, which is the default propagation header format used by OpenTelemetry. We use a custom build of the Instana envoy sensor which supports W3C context propagation (public release of the W3C enabled sensor is due soon). - ## Deploy in Kubernetes -Create new namespace/project: +Create a namespace/project: ```sh kubectl create namespace otel-demo @@ -83,12 +81,9 @@ In OpenShift, make sure you have sufficient privileges to run the pods in the na oc adm policy -n otel-demo add-scc-to-user anyuid -z default ``` -Deploy the Instana agent via Helm or using an operator: - -Use a standard installation according to Instana documentation. Apply the agent configuration as in `instana-agent/configuration-otel.yaml` - +Deploy the Instana agent via Helm or using an operator: use a standard installation according to Instana documentation. Next, apply the demo-specific agent configuration as in `instana-agent/configuration-otel.yaml` -The demo assumes that an Instana [agent Kubernetes service](https://www.ibm.com/docs/en/instana-observability/current?topic=requirements-installing-host-agent-kubernetes#instana-agent-service) `instana-agent` exists in the agent namesapce `instana-agent`. The agent service, besides exposing the standard Instana agent API endpoint, also provides the common OTLP endpoint for both gRPC (port 4317) and HTTP (port 4318) protocols across all nodes. Be aware that at the time of writing, the HTTP endpoint definition wasn't yet included in the public Instana agent Helm chart (and likely neither in the Operator). You can thus create the service manually using the following manifest that is tested to work well with the demo. +The demo assumes that an Instana [agent Kubernetes service](https://www.ibm.com/docs/en/instana-observability/current?topic=requirements-installing-host-agent-kubernetes#instana-agent-service) `instana-agent` is present in `instana-agent` namespace. The agent service, besides exposing the standard Instana agent API endpoint, also provides the common OTLP endpoint for both gRPC (port 4317) and HTTP (port 4318) protocols across all nodes. Be aware that at time of writing, the HTTP endpoint definition wasn't yet included in the public Instana agent Helm chart (and likely neither in the Operator). You can better create the service manually using the following manifest that is tested to work well with the demo. ```sh cat < Date: Fri, 27 Jan 2023 12:44:27 +0100 Subject: [PATCH 027/135] update readme title --- README-Instana.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-Instana.md b/README-Instana.md index 82713ab09e..effa7b1e6b 100644 --- a/README-Instana.md +++ b/README-Instana.md @@ -1,4 +1,4 @@ -# OpenTelemetry Demo with Instana Agent and OTEL Collector +# OpenTelemetry Demo with Instana This repo is a fork of the original [OpenTelemetry Demo](https://github.com/open-telemetry/opentelemetry-demo) with integration to Instana backend. The main changes are: From ac7987322b664d6dcdc32bb678b56c1563095113 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Fri, 27 Jan 2023 12:55:05 +0100 Subject: [PATCH 028/135] update readme + typos --- README-Instana.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README-Instana.md b/README-Instana.md index effa7b1e6b..bf61c90cd7 100644 --- a/README-Instana.md +++ b/README-Instana.md @@ -1,6 +1,6 @@ # OpenTelemetry Demo with Instana -This repo is a fork of the original [OpenTelemetry Demo](https://github.com/open-telemetry/opentelemetry-demo) with integration to Instana backend. The main changes are: +This repo is a fork of the original [OpenTelemetry Demo](https://github.com/open-telemetry/opentelemetry-demo) with added integration to the Instana backend. The main changes are: - demo-specific Instana agent configuration and agent docker-compose deployment file - both available in `instana-agent` folder - custom services instrumentation for Instana APM monitoring (Instana-native tracing is disabled) From 2c1d1542994e0e06d9b51d67c8ed04fca4e75a72 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Fri, 27 Jan 2023 14:21:35 +0100 Subject: [PATCH 029/135] update readme and typos --- README-Instana.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README-Instana.md b/README-Instana.md index bf61c90cd7..34902dc794 100644 --- a/README-Instana.md +++ b/README-Instana.md @@ -1,8 +1,8 @@ # OpenTelemetry Demo with Instana -This repo is a fork of the original [OpenTelemetry Demo](https://github.com/open-telemetry/opentelemetry-demo) with added integration to the Instana backend. The main changes are: +This repo is a fork of the original [OpenTelemetry Demo](https://github.com/open-telemetry/opentelemetry-demo) with added integration to an Instana backend. The additions and changes include: -- demo-specific Instana agent configuration and agent docker-compose deployment file - both available in `instana-agent` folder +- demo-specific Instana agent configuration and agent docker-compose deployment file (available in `instana-agent` folder) - custom services instrumentation for Instana APM monitoring (Instana-native tracing is disabled) - use Instana agent instead of OTel Collector to receive the OTLP data (traces/metrics) - provide custom helm config file `./values-instana-agent.yaml` to deploy in Kubernetes (excludes Instana agent deployment) @@ -40,7 +40,7 @@ Optionally (not needed for building and running `docker compose`), you may [conf } ``` -Build the app with `http_proxy` and `https_proxy` build agruments passed to `docker-compose`: +Build the app with `http_proxy` and `https_proxy` build arguments passed to `docker-compose`: ```sh docker compose build \ --build-arg 'https_proxy=http://192.168.31.253:3128' \ @@ -76,7 +76,7 @@ kubectl create namespace otel-demo oc new-project otel-demo ``` -In OpenShift, make sure you have sufficient privileges to run the pods in the namespace (this step my be no longer necessary as the demo containers can now run as non-root): +In OpenShift, also make sure you have sufficient privileges to run the pods in the namespace (this step my be no longer necessary as the demo containers can now run as non-root): ```sh oc adm policy -n otel-demo add-scc-to-user anyuid -z default ``` @@ -117,7 +117,7 @@ EOF Deploy the demo using the published Helm chart: -We use custom values file with additional settings for the Instana agent to act as the default OTel traces and metrics receiver, to suppress native Instana tracing so it doesn't clash with the OTel instrumentaion, and to enable Instana infrastructure monitoring including the databases. +We use custom values file with additional settings for the Instana agent to act as the default OTel traces and metrics receiver, to suppress native Instana tracing so it doesn't clash with the OTel instrumentation, and to enable Instana infrastructure monitoring including the databases. ```sh helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts helm install my-otel-demo open-telemetry/opentelemetry-demo -f values-instana-agent.yaml @@ -135,5 +135,5 @@ In OpenShift, you can create a route for the `frontendproxy` service for easy ac The [patched](https://github.com/styblope/opentelemetry_ecto/commit/0bc71d465621e6f76d71bc8d6d336011661eb754) OpenTelemetryEcto library is available at https://github.com/styblope/opentelemetry_ecto. The rest of the solution involved changing the FeatureFlag service Elixir code dependencies and building a new custom image. ### Adding W3C context propagation to Envoy the enable cross-tracer trace continuity -To demosntrate the context propagation across Instana and OTel tracing implementations, we chose to instrument the `frontendproxy` service with the Instana native tracer. The Instana sensor supports W3C propagatiopn headers, which is the default propagation header format used by OpenTelemetry. We use a custom build of the Instana envoy sensor which supports W3C context propagation (public release of the W3C enabled sensor is due soon). +To demonstrate the context propagation across Instana and OTel tracing implementations, we chose to instrument the `frontendproxy` service with the Instana native tracer. The Instana sensor supports W3C propagation headers, which is the default propagation header format used by OpenTelemetry. We use a custom build of the Instana envoy sensor which supports W3C context propagation (public release of the W3C enabled sensor is due soon). From c6eca55e5c8ada63d90078f34b4e9b66e96579e5 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Tue, 31 Jan 2023 11:43:53 +0100 Subject: [PATCH 030/135] update readme --- README-Instana.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README-Instana.md b/README-Instana.md index 34902dc794..d9aec9a53f 100644 --- a/README-Instana.md +++ b/README-Instana.md @@ -1,9 +1,9 @@ # OpenTelemetry Demo with Instana -This repo is a fork of the original [OpenTelemetry Demo](https://github.com/open-telemetry/opentelemetry-demo) with added integration to an Instana backend. The additions and changes include: +This repo is a fork of the original [OpenTelemetry Demo](https://github.com/open-telemetry/opentelemetry-demo) with integration to an Instana backend. The additions and modifications include: -- demo-specific Instana agent configuration and agent docker-compose deployment file (available in `instana-agent` folder) -- custom services instrumentation for Instana APM monitoring (Instana-native tracing is disabled) +- demo-specific Instana agent configuration and docker-compose file (available in `instana-agent` folder) +- custom Instana (auto)instrumentation for Instana APM monitoring (Instana-native tracing disabled) - use Instana agent instead of OTel Collector to receive the OTLP data (traces/metrics) - provide custom helm config file `./values-instana-agent.yaml` to deploy in Kubernetes (excludes Instana agent deployment) @@ -17,7 +17,7 @@ docker compose build **Note**, if you plan to push the built images to a remote container registry, such as for deploying the demo in Kubernetes, you should modify the `IMAGE_NAME` variable in `.env` and use your own registry domain. -To push the images to a remote container registry, login to the registry (`oc registry login` in case of OpenShift internal registry) and run: +To push the images to a remote container registry, login to the registry first (`docker login` or `oc registry login` when pushing to OpenShift's internal registry) and run: ```sh make push ``` @@ -40,7 +40,7 @@ Optionally (not needed for building and running `docker compose`), you may [conf } ``` -Build the app with `http_proxy` and `https_proxy` build arguments passed to `docker-compose`: +Build the demo with `http_proxy` and `https_proxy` build arguments passed to `docker-compose`: ```sh docker compose build \ --build-arg 'https_proxy=http://192.168.31.253:3128' \ @@ -85,7 +85,7 @@ Deploy the Instana agent via Helm or using an operator: use a standard installat The demo assumes that an Instana [agent Kubernetes service](https://www.ibm.com/docs/en/instana-observability/current?topic=requirements-installing-host-agent-kubernetes#instana-agent-service) `instana-agent` is present in `instana-agent` namespace. The agent service, besides exposing the standard Instana agent API endpoint, also provides the common OTLP endpoint for both gRPC (port 4317) and HTTP (port 4318) protocols across all nodes. Be aware that at time of writing, the HTTP endpoint definition wasn't yet included in the public Instana agent Helm chart (and likely neither in the Operator). You can better create the service manually using the following manifest that is tested to work well with the demo. ```sh -cat < Date: Tue, 31 Jan 2023 11:48:32 +0100 Subject: [PATCH 031/135] remove helper script --- push-images.sh | 17 ----------------- 1 file changed, 17 deletions(-) delete mode 100755 push-images.sh diff --git a/push-images.sh b/push-images.sh deleted file mode 100755 index 6ce2ac8153..0000000000 --- a/push-images.sh +++ /dev/null @@ -1,17 +0,0 @@ -docker push styblope/otel-demo:v1.2.1-accountingservice -docker push styblope/otel-demo:v1.2.1-frontend -docker push styblope/otel-demo:v1.2.1-adservice -docker push styblope/otel-demo:v1.2.1-quoteservice -docker push styblope/otel-demo:v1.2.1-checkoutservice -docker push styblope/otel-demo:v1.2.1-productcatalogservice -docker push styblope/otel-demo:v1.2.1-loadgenerator -docker push styblope/otel-demo:v1.2.1-cartservice -docker push styblope/otel-demo:v1.2.1-paymentservice -docker push styblope/otel-demo:v1.2.1-recommendationservice -docker push styblope/otel-demo:v1.2.1-shippingservice -docker push styblope/otel-demo:v1.2.1-kafka -docker push styblope/otel-demo:v1.2.1-currencyservice -docker push styblope/otel-demo:v1.2.1-featureflagservice -docker push styblope/otel-demo:v1.2.1-frauddetectionservice -docker push styblope/otel-demo:v1.2.1-emailservice -docker push styblope/otel-demo:v1.2.1-frontendproxy From d8a5dd5c11a57e22ff6c9dfadb8882120c926a8b Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Tue, 31 Jan 2023 15:43:55 +0100 Subject: [PATCH 032/135] dummy test workflow --- .github/workflows/test-cache.yml | 122 +++++++++++++++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 .github/workflows/test-cache.yml diff --git a/.github/workflows/test-cache.yml b/.github/workflows/test-cache.yml new file mode 100644 index 0000000000..857ba6c8ab --- /dev/null +++ b/.github/workflows/test-cache.yml @@ -0,0 +1,122 @@ +name: "Test build with cache" + +on: workflow_dispatch + +jobs: + build_and_push_images: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + env: + # RELEASE_VERSION: "${{ github.event.release.tag_name }}" + RELEASE_VERSION: "1.3" + DOCKERHUB_REPO: "styblope/otel-demo" + # GHCR_REPO: "styblope/otel-demo" + + strategy: + matrix: + file_tag: + - file: ./src/adservice/Dockerfile + tag_suffix: adservice + context: ./ + - file: ./src/cartservice/src/Dockerfile + tag_suffix: cartservice + context: ./ + - file: ./src/checkoutservice/Dockerfile + tag_suffix: checkoutservice + context: ./ + - file: ./src/currencyservice/Dockerfile + tag_suffix: currencyservice + context: ./src/currencyservice + - file: ./src/emailservice/Dockerfile + tag_suffix: emailservice + context: ./src/emailservice + - file: ./src/featureflagservice/Dockerfile + tag_suffix: featureflagservice + context: ./ + - file: ./src/frontend/Dockerfile + tag_suffix: frontend + context: ./ + - file: ./src/frontendproxy/Dockerfile + tag_suffix: frontendproxy + context: ./ + - file: ./src/loadgenerator/Dockerfile + tag_suffix: loadgenerator + context: ./ + - file: ./src/paymentservice/Dockerfile + tag_suffix: paymentservice + context: ./ + - file: ./src/productcatalogservice/Dockerfile + tag_suffix: productcatalogservice + context: ./ + - file: ./src/quoteservice/Dockerfile + tag_suffix: quoteservice + context: ./ + - file: ./src/shippingservice/Dockerfile + tag_suffix: shippingservice + context: ./ + - file: ./src/recommendationservice/Dockerfile + tag_suffix: recommendationservice + context: ./ + - file: ./src/kafka/Dockerfile + tag_suffix: kafka + context: ./ + - file: ./src/accountingservice/Dockerfile + tag_suffix: accountingservice + context: ./ + - file: ./src/frauddetectionservice/Dockerfile + tag_suffix: frauddetectionservice + context: ./ + - file: ./src/frontend/Dockerfile.cypress + tag_suffix: frontend-tests + context: ./ + - file: ./test/Dockerfile + tag_suffix: integrationTests + context: ./ + + steps: + - uses: actions/checkout@v3 + with: + fetch-depth: 0 + + # - name: Log in to the Container registry + # uses: docker/login-action@v2 + # with: + # registry: ghcr.io + # username: ${{ github.repository_owner }} + # password: ${{ secrets.GITHUB_TOKEN }} + # if: github.event_name != 'pull_request' + + - name: Log in to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + if: github.event_name != 'pull_request' + + - name: Set up QEMU + uses: docker/setup-qemu-action@v2 + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v2 + with: + config-inline: | + [worker.oci] + max-parallelism = 2 + + - name: Matrix Build and push demo images + uses: docker/build-push-action@v3.3.0 + with: + context: ${{ matrix.file_tag.context }} + file: ${{ matrix.file_tag.file }} + platforms: linux/amd64 + push: ${{ github.event_name != 'pull_request' }} + # tags: | + # ${{ env.DOCKERHUB_REPO }}:${{ env.RELEASE_VERSION || 'pr' }}-${{matrix.file_tag.tag_suffix }} + # ${{ env.GHCR_REPO }}:${{ env.RELEASE_VERSION || 'pr' }}-${{ matrix.file_tag.tag_suffix }} + tags: | + ${{ env.DOCKERHUB_REPO }}:${{ env.RELEASE_VERSION || 'pr' }}-${{matrix.file_tag.tag_suffix }} + cache-from: type=gha + cache-to: type=gha From 95688b44f53a737960c442019a86bd216d2f5426 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Tue, 31 Jan 2023 18:16:06 +0100 Subject: [PATCH 033/135] rename and update custom gha workflow --- .../workflows/{test-cache.yml => custom-manual-release.yml} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename .github/workflows/{test-cache.yml => custom-manual-release.yml} (98%) diff --git a/.github/workflows/test-cache.yml b/.github/workflows/custom-manual-release.yml similarity index 98% rename from .github/workflows/test-cache.yml rename to .github/workflows/custom-manual-release.yml index 857ba6c8ab..3b2bede8a9 100644 --- a/.github/workflows/test-cache.yml +++ b/.github/workflows/custom-manual-release.yml @@ -1,4 +1,4 @@ -name: "Test build with cache" +name: "Custom manual release" on: workflow_dispatch @@ -11,7 +11,7 @@ jobs: env: # RELEASE_VERSION: "${{ github.event.release.tag_name }}" - RELEASE_VERSION: "1.3" + RELEASE_VERSION: "1.3.0" DOCKERHUB_REPO: "styblope/otel-demo" # GHCR_REPO: "styblope/otel-demo" From cef13a076fb04928e195d90992527a0651683723 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Tue, 31 Jan 2023 18:54:29 +0100 Subject: [PATCH 034/135] fix release tag name --- .github/workflows/custom-manual-release.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/custom-manual-release.yml b/.github/workflows/custom-manual-release.yml index 3b2bede8a9..e3ef02fc60 100644 --- a/.github/workflows/custom-manual-release.yml +++ b/.github/workflows/custom-manual-release.yml @@ -11,7 +11,7 @@ jobs: env: # RELEASE_VERSION: "${{ github.event.release.tag_name }}" - RELEASE_VERSION: "1.3.0" + RELEASE_VERSION: "v1.3.0" DOCKERHUB_REPO: "styblope/otel-demo" # GHCR_REPO: "styblope/otel-demo" From 1b1c69c20aefd8d0e52fd78f8323070734b7bb01 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Tue, 14 Feb 2023 12:37:43 +0100 Subject: [PATCH 035/135] structure instana docs --- .github/README.md | 1 + README-Instana.md | 139 ------------------------------------- instana/README.md | 42 +++++++++++ instana/buid-deploy.md | 127 +++++++++++++++++++++++++++++++++ instana/customizations.md | 11 +++ instana/troubleshooting.md | 22 ++++++ 6 files changed, 203 insertions(+), 139 deletions(-) create mode 120000 .github/README.md delete mode 100644 README-Instana.md create mode 100644 instana/README.md create mode 100644 instana/buid-deploy.md create mode 100644 instana/customizations.md create mode 100644 instana/troubleshooting.md diff --git a/.github/README.md b/.github/README.md new file mode 120000 index 0000000000..acc32c2972 --- /dev/null +++ b/.github/README.md @@ -0,0 +1 @@ +../instana/README.md \ No newline at end of file diff --git a/README-Instana.md b/README-Instana.md deleted file mode 100644 index d9aec9a53f..0000000000 --- a/README-Instana.md +++ /dev/null @@ -1,139 +0,0 @@ -# OpenTelemetry Demo with Instana - -This repo is a fork of the original [OpenTelemetry Demo](https://github.com/open-telemetry/opentelemetry-demo) with integration to an Instana backend. The additions and modifications include: - -- demo-specific Instana agent configuration and docker-compose file (available in `instana-agent` folder) -- custom Instana (auto)instrumentation for Instana APM monitoring (Instana-native tracing disabled) -- use Instana agent instead of OTel Collector to receive the OTLP data (traces/metrics) -- provide custom helm config file `./values-instana-agent.yaml` to deploy in Kubernetes (excludes Instana agent deployment) - -## Build the demo locally -(Skip this step if you want to use the pre-built demo images from dockerhub.) - -Follow the main [README](README.md). This is basically: -```sh -docker compose build -``` - -**Note**, if you plan to push the built images to a remote container registry, such as for deploying the demo in Kubernetes, you should modify the `IMAGE_NAME` variable in `.env` and use your own registry domain. - -To push the images to a remote container registry, login to the registry first (`docker login` or `oc registry login` when pushing to OpenShift's internal registry) and run: -```sh -make push -``` - -#### NOTE: If you are behind an HTTP proxy ... -configure the proxy behavior for the Docker daemon systemd service according to the [guide](https://docs.docker.com/config/daemon/systemd/#httphttps-proxy). - -Optionally (not needed for building and running `docker compose`), you may [configure your Docker client](https://docs.docker.com/network/proxy/) by adding the following snippet to `~/.docker/config.json` -```json -{ - "proxies": - { - "default": - { - "httpProxy": "http://192.168.31.253:3128", - "httpsProxy": "http://192.168.31.253:3128", - "noProxy": "192.168.0.0/16,.tec.cz.ibm.com,127.0.0.0/8" - } - } -} -``` - -Build the demo with `http_proxy` and `https_proxy` build arguments passed to `docker-compose`: -```sh -docker compose build \ - --build-arg 'https_proxy=http://192.168.31.253:3128' \ - --build-arg 'http_proxy=http://192.168.31.253:3128' -``` - -## Deploy the demo and Instana agent locally -You can either use your custom built images from the previous step, or use the pre-build images from dockerhub. The image repository is defined in `.env` file. - -Launch the demo -```sh -docker compose up -d -``` - -Create a new environment file for `docker-compose` with your Instana backend connection settings. Use the template: -```sh -cd instana-agent -cp instana-agent.env.template .env -``` - -Launch the agent (while still inside the `instana-agent` directory): -```sh -docker compose up -d -``` - -## Deploy in Kubernetes - -Create a namespace/project: -```sh -kubectl create namespace otel-demo - -# or equivalently in OpenShift: -oc new-project otel-demo -``` - -In OpenShift, also make sure you have sufficient privileges to run the pods in the namespace (this step my be no longer necessary as the demo containers can now run as non-root): -```sh -oc adm policy -n otel-demo add-scc-to-user anyuid -z default -``` - -Deploy the Instana agent via Helm or using an operator: use a standard installation according to Instana documentation. Next, apply the demo-specific agent configuration as in `instana-agent/configuration-otel.yaml` - -The demo assumes that an Instana [agent Kubernetes service](https://www.ibm.com/docs/en/instana-observability/current?topic=requirements-installing-host-agent-kubernetes#instana-agent-service) `instana-agent` is present in `instana-agent` namespace. The agent service, besides exposing the standard Instana agent API endpoint, also provides the common OTLP endpoint for both gRPC (port 4317) and HTTP (port 4318) protocols across all nodes. Be aware that at time of writing, the HTTP endpoint definition wasn't yet included in the public Instana agent Helm chart (and likely neither in the Operator). You can better create the service manually using the following manifest that is tested to work well with the demo. -```sh -cat < + @instana OpenTelemetry Demo with Instana + +This repository contains a custom fork of the OpenTelemetry Astronomy Shop, a microservice-based demo application, integrated with an Instana backend. The demo shows the native Instana OpenTelemetry data collection, correlation of OTel tracing and the underlying monitored infrastructure, or an example of trace continuity between Instana tracing and OpenTelemetry. + +To learn more about the demo application please refer to the [upstream README](https://github.com/open-telemetry/opentelemetry-demo/blob/main/README.md) and the [demo documentation](https://opentelemetry.io/docs/demo/) available at the OpenTelemetry project site. + +--- + +**TODO**: + +- build (Compose) +- deploy with Compose +- deploy with Helm (on K8S and OpenShift) +- various options: + * Collector + * Direct to agent + * via Collector's Instana exporter and SaaS endpoint + * ... +- special features + * Envoy Instana-native instrumentation to who cross-tracer support and context propagation + * ... + +Q: Should we put everything in this README? Or put things in separate files/folders? Or we might use the GitHub WIKI instead and just provide links to the sections from here? + +--- + +## Demo + +Additions and modifications to the upstream demo version include: + +- provision and configure demo services for Instana APM monitoring (Instana-native tracing is disabled) +- OTel-enabled Instana agent configuration and docker-compose file (available in the [instana-agent](../instana-agent) folder) +- custom Helm [configuration file](values-instana-agent.yaml) to deploy in Kubernetes (excluding Instana agent deployment) +- provide pre-built custom demo container images +- example Instana-native tracing service instrumentation (to show cross-protocol trace continuity) and OTel contrib library patch for proper downstream service correlation. + +## Reporting issues + +If you found a bug, have a suggestion or a question regarding the Instana-specific functionality, please open an issue [here](https://github.com/instana/opentelemetry-demo/issues). Problems related to the core demo application should generally be reported via the [upstream OTel Demo project](https://github.com/open-telemetry/opentelemetry-demo/issues). Please read the [troubleshooting tips](troubleshooting.md) before you and issue. + +## Contributing +Contributions are welcome - feel free to submit a pull request. You may find useful the upstream [CONTRIBUTING](https://github.com/instana/opentelemetry-demo/blob/main/CONTRIBUTING.md) guidance to get seom general guidance on how to setup a development environment or how to submit a GitHub PR. diff --git a/instana/buid-deploy.md b/instana/buid-deploy.md new file mode 100644 index 0000000000..25feba2066 --- /dev/null +++ b/instana/buid-deploy.md @@ -0,0 +1,127 @@ +# How to build and deploy the Instana demo + +## Run the demo in Docker + +Refer to the main demo [documentation](https://opentelemetry.io/docs/demo/docker-deployment/). This is basically: +```sh +git clone https://github.com/instana/opentelemetry-demo.git +cd opentelemetry-demo +docker compose build up --no-build -d +``` + +> **Note** +> The `--no-build` flag is used to fetch released docker images instead of building from source. Removing the `--no-build` command line option will rebuild all images from source. The image repository is defined in [`.env`](../.env) file. See below for details on building the images. + +> **Tip** +> You can run the demo in the foreground by omitting the `-d` parameter (`docker compose up`) to get the container logs dumped out to the terminal so you can check for any errors. + +#### Deploy Instana agent +Create a new docker-compose environment file with your Instana backend connection settings. Use the template: +```sh +cd instana-agent +cp instana-agent.env.template .env +``` + +Run the agent (inside `instana-agent` directory): +```sh +docker compose up -d +``` + +## Deploy in Kubernetes + +Create a namespace/project: +```sh +kubectl create namespace otel-demo + +# or equivalently in OpenShift: +oc new-project otel-demo +``` + +In OpenShift, also make sure you have sufficient privileges to run the pods in the namespace (this step my be no longer necessary as the demo containers can now run as non-root): +```sh +oc adm policy -n otel-demo add-scc-to-user anyuid -z default +``` + +Deploy the Instana agent via Helm or using an operator: use a standard installation according to Instana documentation. Next, apply the demo-specific agent configuration as in `instana-agent/configuration-otel.yaml` + +The demo assumes that an Instana [agent Kubernetes service](https://www.ibm.com/docs/en/instana-observability/current?topic=requirements-installing-host-agent-kubernetes#instana-agent-service) `instana-agent` is present in `instana-agent` namespace. The agent service, besides exposing the standard Instana agent API endpoint, also provides the common OTLP endpoint for both gRPC (port 4317) and HTTP (port 4318) protocols across all nodes. Be aware that at time of writing, the HTTP endpoint definition wasn't yet included in the public Instana agent Helm chart (and likely neither in the Operator). You can better create the service manually using the following manifest that is tested to work well with the demo. +```yaml +cat < +``` + +Next, check the pod status: +```sh +kubectl describe +``` + +If the above commands aren't helpful to explain the pod/container crashes try to increase the container memory allocation limits, as this is one of the most common isues in some environments +```sh +kubectl edit deployment +``` + +## No OpenTelemetry traces are received via the agent + +- Make sure the agent configuration includes correct settings to enable OpenTelemetry for both gRPC and HTTP enpoints. The reference configuration is [instana-agent/configuration.yaml](../instana-agent/configuration.yaml) +- Double check the Kubernetes service for Instana agent and the OTLP endpoint environment variables in `.env` or in the Helm values file. From 98142325b37cbd30de615855861ec1b5553dcf9b Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Tue, 14 Feb 2023 13:00:29 +0100 Subject: [PATCH 036/135] more instana docs --- instana/README.md | 35 ++++++------------- instana/TODO | 2 ++ instana/{buid-deploy.md => deploy-build.md} | 4 +-- .../values-instana-agent.yaml | 0 4 files changed, 15 insertions(+), 26 deletions(-) create mode 100644 instana/TODO rename instana/{buid-deploy.md => deploy-build.md} (99%) rename values-instana-agent.yaml => instana/values-instana-agent.yaml (100%) diff --git a/instana/README.md b/instana/README.md index 1ae5eed5fa..e8ebf4c229 100644 --- a/instana/README.md +++ b/instana/README.md @@ -2,41 +2,28 @@ This repository contains a custom fork of the OpenTelemetry Astronomy Shop, a microservice-based demo application, integrated with an Instana backend. The demo shows the native Instana OpenTelemetry data collection, correlation of OTel tracing and the underlying monitored infrastructure, or an example of trace continuity between Instana tracing and OpenTelemetry. -To learn more about the demo application please refer to the [upstream README](https://github.com/open-telemetry/opentelemetry-demo/blob/main/README.md) and the [demo documentation](https://opentelemetry.io/docs/demo/) available at the OpenTelemetry project site. +To learn more about the demo application please refer to the [upstream README](../README.md) and the [demo documentation](https://opentelemetry.io/docs/demo/) available at the OpenTelemetry project site. ---- - -**TODO**: - -- build (Compose) -- deploy with Compose -- deploy with Helm (on K8S and OpenShift) -- various options: - * Collector - * Direct to agent - * via Collector's Instana exporter and SaaS endpoint - * ... -- special features - * Envoy Instana-native instrumentation to who cross-tracer support and context propagation - * ... - -Q: Should we put everything in this README? Or put things in separate files/folders? Or we might use the GitHub WIKI instead and just provide links to the sections from here? - ---- - -## Demo +### Demo customizations Additions and modifications to the upstream demo version include: - provision and configure demo services for Instana APM monitoring (Instana-native tracing is disabled) - OTel-enabled Instana agent configuration and docker-compose file (available in the [instana-agent](../instana-agent) folder) -- custom Helm [configuration file](values-instana-agent.yaml) to deploy in Kubernetes (excluding Instana agent deployment) +- custom Helm [configuration file](../instana/values-instana-agent.yaml) to deploy in Kubernetes (excluding Instana agent deployment) - provide pre-built custom demo container images - example Instana-native tracing service instrumentation (to show cross-protocol trace continuity) and OTel contrib library patch for proper downstream service correlation. +## Running the demo + +Instructions on how to run the demo are provided [here](../instana/deploy-build.md). + ## Reporting issues -If you found a bug, have a suggestion or a question regarding the Instana-specific functionality, please open an issue [here](https://github.com/instana/opentelemetry-demo/issues). Problems related to the core demo application should generally be reported via the [upstream OTel Demo project](https://github.com/open-telemetry/opentelemetry-demo/issues). Please read the [troubleshooting tips](troubleshooting.md) before you and issue. +If you found a bug, have a suggestion or a question regarding the Instana-specific functionality, please open an issue [here](https://github.com/instana/opentelemetry-demo/issues). Problems related to the core demo application should generally be reported via the [upstream OTel Demo project](https://github.com/open-telemetry/opentelemetry-demo/issues). Please read the [troubleshooting tips](../instana/troubleshooting.md) before you and issue. ## Contributing Contributions are welcome - feel free to submit a pull request. You may find useful the upstream [CONTRIBUTING](https://github.com/instana/opentelemetry-demo/blob/main/CONTRIBUTING.md) guidance to get seom general guidance on how to setup a development environment or how to submit a GitHub PR. + +## References +- [OpenTelemetry Demo with Instana community blog post](https://community.ibm.com/community/user/instana/blogs/petr-styblo/2022/12/21/opentelementry-demo?CommunityKey=58f324a3-3104-41be-9510-5b7c413cc48f) diff --git a/instana/TODO b/instana/TODO new file mode 100644 index 0000000000..28f355255c --- /dev/null +++ b/instana/TODO @@ -0,0 +1,2 @@ +- Describe multiple deployment scenarios using OTel Collector and provide respective Helm configuration files. +- Expand the Troubleshooting guide diff --git a/instana/buid-deploy.md b/instana/deploy-build.md similarity index 99% rename from instana/buid-deploy.md rename to instana/deploy-build.md index 25feba2066..079cd64163 100644 --- a/instana/buid-deploy.md +++ b/instana/deploy-build.md @@ -9,10 +9,10 @@ cd opentelemetry-demo docker compose build up --no-build -d ``` -> **Note** +> **Note:** > The `--no-build` flag is used to fetch released docker images instead of building from source. Removing the `--no-build` command line option will rebuild all images from source. The image repository is defined in [`.env`](../.env) file. See below for details on building the images. -> **Tip** +> **Tip:** > You can run the demo in the foreground by omitting the `-d` parameter (`docker compose up`) to get the container logs dumped out to the terminal so you can check for any errors. #### Deploy Instana agent diff --git a/values-instana-agent.yaml b/instana/values-instana-agent.yaml similarity index 100% rename from values-instana-agent.yaml rename to instana/values-instana-agent.yaml From f8c0afe02d3357c4070e8e28eee5b324d97e549c Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Wed, 22 Feb 2023 18:46:13 +0100 Subject: [PATCH 037/135] refactor envoy build --- src/frontendproxy/Dockerfile | 22 +++++++++--------- src/frontendproxy/envoy.tmpl.yaml | 2 +- ..._sensor.so => libcxx-libinstana_sensor.so} | Bin 3 files changed, 12 insertions(+), 12 deletions(-) rename src/frontendproxy/{glibc-libcxx-libinstana_sensor.so => libcxx-libinstana_sensor.so} (100%) diff --git a/src/frontendproxy/Dockerfile b/src/frontendproxy/Dockerfile index 616f0eb372..0a17b128c2 100644 --- a/src/frontendproxy/Dockerfile +++ b/src/frontendproxy/Dockerfile @@ -5,19 +5,19 @@ USER envoy WORKDIR /home/envoy COPY ./src/frontendproxy/envoy.tmpl.yaml envoy.tmpl.yaml -# Instana -# download latest libinstana_sensor from artifactory -# Instana agent configuration -ENV ARTI_PATH='https://artifact-public.instana.io/artifactory/shared/com/instana/libinstana_sensor/' \ - INSTANA_AGENT_KEY=vzWTqejpZuXVqwUYWeKcFy \ - INSTANA_DOWNLOAD_KEY=qUMhYJxjSv6uZh2SyqTEnw +# Instana tracing +# ENV ARTI_PATH='https://artifact-public.instana.io/artifactory/shared/com/instana/libinstana_sensor/' \ +# INSTANA_AGENT_KEY=vzWTqejpZuXVqwUYWeKcFy \ +# INSTANA_DOWNLOAD_KEY=qUMhYJxjSv6uZh2SyqTEnw -RUN access_key=$([ ! -z "${INSTANA_DOWNLOAD_KEY}" ] && echo "${INSTANA_DOWNLOAD_KEY}" || echo "${INSTANA_AGENT_KEY}") \ - && wget --user _ --password ${access_key} --output-document=./list.html ${ARTI_PATH} \ - && sensor_version=$(grep -o "href=\"[0-9]\+\.[0-9]\+\.[0-9]\+/\"" ./list.html | tail -n1 | cut -d'"' -f2) \ - && echo "Using sensor version ${sensor_version}" \ - && wget --user _ --password ${access_key} --output-document=/home/envoy/libcxx-libinstana_sensor.so ${ARTI_PATH}${sensor_version}linux-amd64-libcxx-libinstana_sensor.so +# RUN access_key=$([ ! -z "${INSTANA_DOWNLOAD_KEY}" ] && echo "${INSTANA_DOWNLOAD_KEY}" || echo "${INSTANA_AGENT_KEY}") \ +# && wget --user _ --password ${access_key} --output-document=./list.html ${ARTI_PATH} \ +# && sensor_version=$(grep -o "href=\"[0-9]\+\.[0-9]\+\.[0-9]\+/\"" ./list.html | tail -n1 | cut -d'"' -f2) \ +# && echo "Using sensor version ${sensor_version}" \ +# && wget --user _ --password ${access_key} --output-document=/home/envoy/libcxx-libinstana_sensor.so ${ARTI_PATH}${sensor_version}linux-amd64-libcxx-libinstana_sensor.so COPY ./src/frontendproxy/glibc-libcxx-libinstana_sensor.so /home/envoy/libcxx-libinstana_sensor.so +# use custom instana tracer until W3C propagation support is released (in v1.8.0) +COPY ./src/frontendproxy/libcxx-libinstana_sensor.so /home/envoy/ ENTRYPOINT ["/bin/sh", "-c", "envsubst < envoy.tmpl.yaml > envoy.yaml && envoy -c envoy.yaml;"] diff --git a/src/frontendproxy/envoy.tmpl.yaml b/src/frontendproxy/envoy.tmpl.yaml index bccf848648..91199da3c3 100644 --- a/src/frontendproxy/envoy.tmpl.yaml +++ b/src/frontendproxy/envoy.tmpl.yaml @@ -30,7 +30,7 @@ static_resources: "@type": type.googleapis.com/envoy.config.trace.v3.DynamicOtConfig library: /home/envoy/libcxx-libinstana_sensor.so config: - service: envoy-front-proxy + service: frontend-proxy route_config: name: local_route diff --git a/src/frontendproxy/glibc-libcxx-libinstana_sensor.so b/src/frontendproxy/libcxx-libinstana_sensor.so similarity index 100% rename from src/frontendproxy/glibc-libcxx-libinstana_sensor.so rename to src/frontendproxy/libcxx-libinstana_sensor.so From 0e9f501c274963ff9fbc72241047d5a1c8ff969a Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Fri, 24 Feb 2023 14:44:48 +0100 Subject: [PATCH 038/135] readme polish --- instana/README.md | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/instana/README.md b/instana/README.md index e8ebf4c229..39b85efce2 100644 --- a/instana/README.md +++ b/instana/README.md @@ -1,18 +1,20 @@ # OTel logo + @instana OpenTelemetry Demo with Instana -This repository contains a custom fork of the OpenTelemetry Astronomy Shop, a microservice-based demo application, integrated with an Instana backend. The demo shows the native Instana OpenTelemetry data collection, correlation of OTel tracing and the underlying monitored infrastructure, or an example of trace continuity between Instana tracing and OpenTelemetry. +This repository contains a custom fork of the OpenTelemetry Astronomy Shop, a microservice-based demo application, integrated with an Instana backend. The demo shows the native Instana OpenTelemetry data collection, correlation of OpenTelemetry tracing and the underlying monitored infrastructure, or an example of trace continuity between Instana tracing and OpenTelemetry. To learn more about the demo application please refer to the [upstream README](../README.md) and the [demo documentation](https://opentelemetry.io/docs/demo/) available at the OpenTelemetry project site. ### Demo customizations -Additions and modifications to the upstream demo version include: +Changes to the upstream demo include: -- provision and configure demo services for Instana APM monitoring (Instana-native tracing is disabled) -- OTel-enabled Instana agent configuration and docker-compose file (available in the [instana-agent](../instana-agent) folder) -- custom Helm [configuration file](../instana/values-instana-agent.yaml) to deploy in Kubernetes (excluding Instana agent deployment) -- provide pre-built custom demo container images -- example Instana-native tracing service instrumentation (to show cross-protocol trace continuity) and OTel contrib library patch for proper downstream service correlation. +- instrumented demo services for Instana infrastructure monitoring (Instana tracing disabled) +- include ready-to-use agent configuration and docker-compose deployment files (in [instana-agent](../instana-agent) folder) +- provide custom Helm [configuration file](../instana/values-instana-agent.yaml) to deploy the demo in Kubernetes (excluding Instana agent deployment) +- ship pre-built custom demo container images +- replaced OpenTelemetry tracer with Instana tracer on the Envoy Frontend-Proxy service to demonstrate Instana cross-protocol trace continuity support and W3C context propagation +- provisioned Frontend service with EUM JavaScript including code modifications to enable correlation between browser requests and the application backend. +- [amended OpenTelemetry Ecto library](../instana/customizations.md) to support span attributes for correct downstream linking with Postgres database ## Running the demo @@ -23,7 +25,7 @@ Instructions on how to run the demo are provided [here](../instana/deploy-build. If you found a bug, have a suggestion or a question regarding the Instana-specific functionality, please open an issue [here](https://github.com/instana/opentelemetry-demo/issues). Problems related to the core demo application should generally be reported via the [upstream OTel Demo project](https://github.com/open-telemetry/opentelemetry-demo/issues). Please read the [troubleshooting tips](../instana/troubleshooting.md) before you and issue. ## Contributing -Contributions are welcome - feel free to submit a pull request. You may find useful the upstream [CONTRIBUTING](https://github.com/instana/opentelemetry-demo/blob/main/CONTRIBUTING.md) guidance to get seom general guidance on how to setup a development environment or how to submit a GitHub PR. +Contributions are welcome - feel free to submit a pull request. You may find useful the upstream [CONTRIBUTING](https://github.com/instana/opentelemetry-demo/blob/main/CONTRIBUTING.md) for general general guidance on setting up a development environment or submitting GitHub PRs. ## References - [OpenTelemetry Demo with Instana community blog post](https://community.ibm.com/community/user/instana/blogs/petr-styblo/2022/12/21/opentelementry-demo?CommunityKey=58f324a3-3104-41be-9510-5b7c413cc48f) From ccc39d454b70ec32379f46247b4224806c0b0b54 Mon Sep 17 00:00:00 2001 From: Petr Styblo Date: Fri, 24 Feb 2023 14:46:07 +0100 Subject: [PATCH 039/135] add EUM javascript and enable backend correlation --- src/frontend/pages/_app.tsx | 4 ++++ src/frontend/pages/_document.tsx | 15 ++++++++++++++- 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/frontend/pages/_app.tsx b/src/frontend/pages/_app.tsx index eb18a8c715..516740d3ba 100755 --- a/src/frontend/pages/_app.tsx +++ b/src/frontend/pages/_app.tsx @@ -41,6 +41,10 @@ function MyApp({ Component, pageProps }: AppProps) { MyApp.getInitialProps = async (appContext: AppContext) => { const appProps = await App.getInitialProps(appContext); + + // set Instana EUM server-timing response header + const traceId = appContext.ctx.req?.headers['x-instana-t'] || '' + appContext.ctx.res?.setHeader('Server-Timing', `intid;desc=${traceId}`) return { ...appProps }; }; diff --git a/src/frontend/pages/_document.tsx b/src/frontend/pages/_document.tsx index 6f26e476dd..e5cc157b9e 100644 --- a/src/frontend/pages/_document.tsx +++ b/src/frontend/pages/_document.tsx @@ -1,5 +1,6 @@ import Document, { DocumentContext, Html, Head, Main, NextScript } from 'next/document'; import { ServerStyleSheet } from 'styled-components'; +import Script from 'next/script' const { ENV_PLATFORM, WEB_OTEL_SERVICE_NAME, PUBLIC_OTEL_EXPORTER_OTLP_TRACES_ENDPOINT } = process.env; @@ -11,7 +12,7 @@ window.ENV = { }; `; -export default class MyDocument extends Document<{ envString: string }> { +export default class MyDocument extends Document<{ envString: string, traceId: string }> { static async getInitialProps(ctx: DocumentContext) { const sheet = new ServerStyleSheet(); const originalRenderPage = ctx.renderPage; @@ -23,10 +24,12 @@ export default class MyDocument extends Document<{ envString: string }> { }); const initialProps = await Document.getInitialProps(ctx); + const traceId = ctx.req?.headers['x-instana-t'] || '' return { ...initialProps, styles: [initialProps.styles, sheet.getStyleElement()], envString, + traceId, }; } finally { sheet.seal(); @@ -44,6 +47,16 @@ export default class MyDocument extends Document<{ envString: string }> { rel="stylesheet" /> OTel demo + + - -