From 6e9d667632f3e27316f7f92cad0ca376a8eb4a12 Mon Sep 17 00:00:00 2001 From: Cody Peterson <54814569+lostmygithubaccount@users.noreply.github.com> Date: Fri, 23 Aug 2024 21:16:16 -0400 Subject: [PATCH] refactor: simplify, move frameworks, etc. (#63) --- .github/workflows/docs.yaml | 49 ++ .github/workflows/etl.yaml | 44 ++ .gitignore | 19 +- .streamlit/config.toml | 16 - config.toml | 38 -- dag/__init__.py | 26 - dag/assets/__init__.py | 46 -- dag/assets/extract/backends.py | 20 - dag/assets/extract/docs.py | 15 - dag/assets/extract/github.py | 72 --- dag/assets/extract/pypi.py | 17 - dag/assets/extract/zulip.py | 24 - dag/assets/load/__init__.py | 0 dag/assets/load/backends.py | 14 - dag/assets/load/docs.py | 14 - dag/assets/load/github.py | 42 -- dag/assets/load/pypi.py | 14 - dag/assets/load/zulip.py | 22 - dag/assets/transform/__init__.py | 0 dag/assets/transform/backends.py | 14 - dag/assets/transform/docs.py | 15 - dag/assets/transform/github.py | 114 ---- dag/assets/transform/pypi.py | 56 -- dag/assets/transform/zulip.py | 48 -- dag/constants.py | 4 - dag/deploy.py | 51 -- dag/functions.py | 37 -- dag/jobs.py | 13 - dag/postprocess.py | 62 -- dag/resources/__init__.py | 6 - dag/resources/table_io_managers.py | 92 --- dashboard.py | 604 ++++++++++++++++++ dev-requirements.txt | 9 + docs_hack.py | 42 -- eda.py | 50 -- eda.qmd | 32 + justfile | 109 ++-- metrics.py | 438 ------------- pages/0_github.py | 390 ----------- pages/1_pypi.py | 236 ------- pages/2_zulip.py | 101 --- pages/3_docs.py | 147 ----- pages/4_about.py | 67 -- pyproject.toml | 44 +- readme.md | 12 +- requirements.txt | 23 +- .../ibis_analytics}/__init__.py | 0 src/ibis_analytics/catalog.py | 62 ++ src/ibis_analytics/cli.py | 189 ++++++ src/ibis_analytics/config.py | 26 + src/ibis_analytics/etl/__init__.py | 106 +++ src/ibis_analytics/etl/extract.py | 157 +++++ src/ibis_analytics/etl/load.py | 11 + src/ibis_analytics/etl/transform.py | 223 +++++++ .../ibis_analytics/ingest/__init__.py | 251 +++----- .../ibis_analytics/ingest}/graphql_queries.py | 0 src/ibis_analytics/metrics.py | 49 ++ website/.gitignore | 1 + website/_quarto.yml | 31 + website/img/layers.png | Bin 0 -> 217101 bytes website/img/ui-to-engine.png | Bin 0 -> 288028 bytes website/index.qmd | 48 ++ 62 files changed, 1849 insertions(+), 2613 deletions(-) create mode 100644 .github/workflows/docs.yaml create mode 100644 .github/workflows/etl.yaml delete mode 100644 .streamlit/config.toml delete mode 100644 config.toml delete mode 100644 dag/__init__.py delete mode 100644 dag/assets/__init__.py delete mode 100644 dag/assets/extract/backends.py delete mode 100644 dag/assets/extract/docs.py delete mode 100644 dag/assets/extract/github.py delete mode 100644 dag/assets/extract/pypi.py delete mode 100644 dag/assets/extract/zulip.py delete mode 100644 dag/assets/load/__init__.py delete mode 100644 dag/assets/load/backends.py delete mode 100644 dag/assets/load/docs.py delete mode 100644 dag/assets/load/github.py delete mode 100644 dag/assets/load/pypi.py delete mode 100644 dag/assets/load/zulip.py delete mode 100644 dag/assets/transform/__init__.py delete mode 100644 dag/assets/transform/backends.py delete mode 100644 dag/assets/transform/docs.py delete mode 100644 dag/assets/transform/github.py delete mode 100644 dag/assets/transform/pypi.py delete mode 100644 dag/assets/transform/zulip.py delete mode 100644 dag/constants.py delete mode 100644 dag/deploy.py delete mode 100644 dag/functions.py delete mode 100644 dag/jobs.py delete mode 100644 dag/postprocess.py delete mode 100644 dag/resources/__init__.py delete mode 100644 dag/resources/table_io_managers.py create mode 100644 dashboard.py create mode 100644 dev-requirements.txt delete mode 100644 docs_hack.py delete mode 100644 eda.py create mode 100644 eda.qmd delete mode 100644 metrics.py delete mode 100644 pages/0_github.py delete mode 100644 pages/1_pypi.py delete mode 100644 pages/2_zulip.py delete mode 100644 pages/3_docs.py delete mode 100644 pages/4_about.py rename {dag/assets/extract => src/ibis_analytics}/__init__.py (100%) create mode 100644 src/ibis_analytics/catalog.py create mode 100644 src/ibis_analytics/cli.py create mode 100644 src/ibis_analytics/config.py create mode 100644 src/ibis_analytics/etl/__init__.py create mode 100644 src/ibis_analytics/etl/extract.py create mode 100644 src/ibis_analytics/etl/load.py create mode 100644 src/ibis_analytics/etl/transform.py rename dag/ingest.py => src/ibis_analytics/ingest/__init__.py (66%) rename {dag => src/ibis_analytics/ingest}/graphql_queries.py (100%) create mode 100644 src/ibis_analytics/metrics.py create mode 100644 website/.gitignore create mode 100644 website/_quarto.yml create mode 100644 website/img/layers.png create mode 100644 website/img/ui-to-engine.png create mode 100644 website/index.qmd diff --git a/.github/workflows/docs.yaml b/.github/workflows/docs.yaml new file mode 100644 index 0000000..7fecd28 --- /dev/null +++ b/.github/workflows/docs.yaml @@ -0,0 +1,49 @@ +name: docs + +permissions: + contents: write + +on: + workflow_dispatch: + push: + branches: + - main + paths: + - 'justfile' + - 'website/**' + - 'dev-requirements.txt' + - '.github/workflows/docs.yaml' + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: true + fetch-depth: 0 + + - uses: extractions/setup-just@v1 + + - uses: actions/setup-python@v4 + with: + python-version: 3.12 + + - uses: quarto-dev/quarto-actions/setup@v2 + + - name: install requirements + run: | + pip install uv + just setup + + - name: build site + run: | + . .venv/bin/activate + just docs-build + + - name: deploy + uses: peaceiris/actions-gh-pages@v3 + if: github.ref == 'refs/heads/main' + with: + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: website/_output diff --git a/.github/workflows/etl.yaml b/.github/workflows/etl.yaml new file mode 100644 index 0000000..2bbfc5a --- /dev/null +++ b/.github/workflows/etl.yaml @@ -0,0 +1,44 @@ +name: etl + +on: + workflow_dispatch: + schedule: + - cron: "0 9 * * *" + +jobs: + + ingest-etl: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + with: + submodules: true + fetch-depth: 0 + + - uses: google-github-actions/auth@v1 + with: + credentials_json: ${{ secrets.GCLOUD_JSON }} + + - uses: extractions/setup-just@v1 + + - uses: actions/setup-python@v4 + with: + python-version: 3.12 + + - uses: quarto-dev/quarto-actions/setup@v2 + + - name: install requirements + run: | + pip install uv + just setup + + - name: ingest and etl + run: | + . .venv/bin/activate + ia ingest + ia etl + env: + BQ_PROJECT_ID: voltrondata-demo + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + ZULIP_KEY: ${{ secrets.ZULIP_KEY }} + GOAT_TOKEN: ${{ secrets.GOAT_TOKEN }} diff --git a/.gitignore b/.gitignore index 693eddb..441a6cf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,14 @@ -.env .venv -venv -data -target -.streamlit/secrets.toml -*.ddb* +.env +datalake + +.quarto +pres.html +pres.ipynb +pres_files + +_output + +dist + +tmp* diff --git a/.streamlit/config.toml b/.streamlit/config.toml deleted file mode 100644 index adc7490..0000000 --- a/.streamlit/config.toml +++ /dev/null @@ -1,16 +0,0 @@ -[theme] - -primaryColor="#c61b6e" -backgroundColor="#330066" -secondaryBackgroundColor="#440077" -textColor="#ffffff" -font="sans serif" - -#[theme] -# -#primaryColor="#d33682" -#backgroundColor="#002b36" -#secondaryBackgroundColor="#586e75" -#textColor="#fafafa" -#font="sans serif" - diff --git a/config.toml b/config.toml deleted file mode 100644 index a07a66d..0000000 --- a/config.toml +++ /dev/null @@ -1,38 +0,0 @@ -[app] -#database = "data/app.ddb" -database = "md:ibis_analytics" - -[eda] -database = "md:ibis_analytics" -#database = "data/data.ddb" - -[ingest.pypi] -packages = [ - "ibis-framework", - "ibis-examples", - "ibis-substrait", - "ibisml", - "ibis-birdbrain", -] -[ingest.github] -repos = [ - "ibis-project/ibis", - "ibis-project/ibis-examples", - "ibis-project/ibis-substrait", - "ibis-project/ibisml", - "ibis-project/ibis-birdbrain", -] -endpoints = [ - "repo", - "stargazers", - "subscribers", - "commits", - "releases", - "forks", - "issues", - "contributors", -] -[ingest.zulip] -url = "https://ibis-project.zulipchat.com" -[ingest.docs] -url = "https://ibis.goatcounter.com" diff --git a/dag/__init__.py b/dag/__init__.py deleted file mode 100644 index eaa9925..0000000 --- a/dag/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -# imports -import ibis - -import logging as log - -from dagster import Definitions - -from dag.jobs import jobs -from dag.assets import assets -from dag.resources import resources -from dag import functions as f - -# configure logging -log.basicConfig( - level=log.INFO, -) - -# config -backend = "duckdb" -ibis.set_backend(backend) - -defs = Definitions( - assets=assets, - resources=resources, - jobs=jobs, -) diff --git a/dag/assets/__init__.py b/dag/assets/__init__.py deleted file mode 100644 index 6bd870f..0000000 --- a/dag/assets/__init__.py +++ /dev/null @@ -1,46 +0,0 @@ -# imports -from dagster import load_assets_from_modules - -from dag.assets.extract import docs as extract_docs -from dag.assets.extract import pypi as extract_pypi -from dag.assets.extract import zulip as extract_zulip -from dag.assets.extract import github as extract_github -from dag.assets.extract import backends as extract_backends - -from dag.assets.transform import docs as transform_docs -from dag.assets.transform import pypi as transform_pypi -from dag.assets.transform import zulip as transform_zulip -from dag.assets.transform import github as transform_github -from dag.assets.transform import backends as transform_backends - -from dag.assets.load import docs as load_docs -from dag.assets.load import pypi as load_pypi -from dag.assets.load import zulip as load_zulip -from dag.assets.load import github as load_github -from dag.assets.load import backends as load_backends - -from dag.constants import EXTRACT, TRANSFORM, LOAD - -# load assets -extract_modules = [ - # extract_docs, - extract_pypi, - extract_zulip, - extract_github, - extract_backends, -] -extract_assets = load_assets_from_modules(extract_modules, group_name=EXTRACT) - -transform_modules = [ - # transform_docs, - transform_pypi, - transform_zulip, - transform_github, - transform_backends, -] -transform_assets = load_assets_from_modules(transform_modules, group_name=TRANSFORM) - -load_modules = [load_pypi, load_zulip, load_github, load_backends] # load_docs -load_assets = load_assets_from_modules(load_modules, group_name=LOAD) - -assets = [*extract_assets, *transform_assets, *load_assets] diff --git a/dag/assets/extract/backends.py b/dag/assets/extract/backends.py deleted file mode 100644 index d4745c4..0000000 --- a/dag/assets/extract/backends.py +++ /dev/null @@ -1,20 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def extract_backends(): - """ - Extract the backend data. - """ - backends = ibis.util.backend_entry_points() - backend_data = { - "backends": [[b.name for b in backends]], - "num_backends": len(backends), - "ingested_at": f.now(), - } - return ibis.memtable(backend_data) diff --git a/dag/assets/extract/docs.py b/dag/assets/extract/docs.py deleted file mode 100644 index f525a10..0000000 --- a/dag/assets/extract/docs.py +++ /dev/null @@ -1,15 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def extract_docs(): - """ - Extract the ingested docs data. - """ - docs = f.clean_data(ibis.read_csv("data/ingest/docs/goatcounter.csv.gz")) - return docs diff --git a/dag/assets/extract/github.py b/dag/assets/extract/github.py deleted file mode 100644 index f825031..0000000 --- a/dag/assets/extract/github.py +++ /dev/null @@ -1,72 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def extract_stars(): - """ - Extract the ingested GitHub stars data. - """ - stars = f.clean_data( - ibis.read_json("data/ingest/github/ibis-project/ibis/stargazers.*.json") - ) - return stars - - -@dagster.asset -def extract_issues(): - """ - Extract the ingested GitHub issues data. - """ - issues = f.clean_data( - ibis.read_json("data/ingest/github/ibis-project/ibis/issues.*.json") - ) - return issues - - -@dagster.asset -def extract_pulls(): - """ - Extract the ingested GitHub pull requests data. - """ - pulls = f.clean_data( - ibis.read_json("data/ingest/github/ibis-project/ibis/pullRequests.*.json") - ) - return pulls - - -@dagster.asset -def extract_forks(): - """ - Extract the ingested GitHub forks data. - """ - forks = f.clean_data( - ibis.read_json("data/ingest/github/ibis-project/ibis/forks.*.json") - ) - return forks - - -@dagster.asset -def extract_watchers(): - """ - Extract the ingested GitHub watchers data. - """ - watchers = f.clean_data( - ibis.read_json("data/ingest/github/ibis-project/ibis/watchers.*.json") - ) - return watchers - - -@dagster.asset -def extract_commits(): - """ - Extract the ingested GitHub git commits data. - """ - commits = f.clean_data( - ibis.read_json("data/ingest/github/ibis-project/ibis/commits.*.json") - ) - return commits diff --git a/dag/assets/extract/pypi.py b/dag/assets/extract/pypi.py deleted file mode 100644 index 006b000..0000000 --- a/dag/assets/extract/pypi.py +++ /dev/null @@ -1,17 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def extract_downloads(): - """ - Extract the ingested PyPI downloads data. - """ - downloads = f.clean_data( - ibis.read_parquet("data/ingest/pypi/ibis-framework/*.parquet") - ) - return downloads diff --git a/dag/assets/extract/zulip.py b/dag/assets/extract/zulip.py deleted file mode 100644 index 0861fd0..0000000 --- a/dag/assets/extract/zulip.py +++ /dev/null @@ -1,24 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def extract_zulip_members(): - """ - Extract the ingested Zulip members data. - """ - members = f.clean_data(ibis.read_json("data/ingest/zulip/members.json")) - return members - - -@dagster.asset -def extract_zulip_messages(): - """ - Extract the ingested Zulip messages data. - """ - messages = f.clean_data(ibis.read_json("data/ingest/zulip/messages.json")) - return messages diff --git a/dag/assets/load/__init__.py b/dag/assets/load/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/dag/assets/load/backends.py b/dag/assets/load/backends.py deleted file mode 100644 index bc781af..0000000 --- a/dag/assets/load/backends.py +++ /dev/null @@ -1,14 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def load_backends(transform_backends): - """ - Finalize the backend data. - """ - return transform_backends diff --git a/dag/assets/load/docs.py b/dag/assets/load/docs.py deleted file mode 100644 index ee1b190..0000000 --- a/dag/assets/load/docs.py +++ /dev/null @@ -1,14 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def load_docs(transform_docs): - """ - Finalize the docs data. - """ - return transform_docs diff --git a/dag/assets/load/github.py b/dag/assets/load/github.py deleted file mode 100644 index c62709a..0000000 --- a/dag/assets/load/github.py +++ /dev/null @@ -1,42 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def load_stars(transform_stars): - """Finalize the GitHub stars data.""" - return transform_stars - - -@dagster.asset -def load_issues(transform_issues): - """Finalize the GitHub issues data.""" - return transform_issues - - -@dagster.asset -def load_pulls(transform_pulls): - """Finalize the GitHub pull requests data.""" - return transform_pulls - - -@dagster.asset -def load_forks(transform_forks): - """Finalize the GitHub forks data.""" - return transform_forks - - -@dagster.asset -def load_watchers(transform_watchers): - """Finalize the GitHub watchers data.""" - return transform_watchers - - -@dagster.asset -def load_commits(transform_commits): - """Finalize the GitHub git commits data.""" - return transform_commits diff --git a/dag/assets/load/pypi.py b/dag/assets/load/pypi.py deleted file mode 100644 index a1dcd0a..0000000 --- a/dag/assets/load/pypi.py +++ /dev/null @@ -1,14 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def load_downloads(transform_downloads): - """ - Finalize the PyPI downloads data. - """ - return transform_downloads diff --git a/dag/assets/load/zulip.py b/dag/assets/load/zulip.py deleted file mode 100644 index e376912..0000000 --- a/dag/assets/load/zulip.py +++ /dev/null @@ -1,22 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def load_zulip_members(transform_zulip_members): - """ - Finalize the Zulip members data. - """ - return transform_zulip_members - - -@dagster.asset -def load_zulip_messages(transform_zulip_messages): - """ - Finalize the Zulip messages data. - """ - return transform_zulip_messages diff --git a/dag/assets/transform/__init__.py b/dag/assets/transform/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/dag/assets/transform/backends.py b/dag/assets/transform/backends.py deleted file mode 100644 index 1ada6c4..0000000 --- a/dag/assets/transform/backends.py +++ /dev/null @@ -1,14 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def transform_backends(extract_backends): - """ - Transform the backend data. - """ - return extract_backends diff --git a/dag/assets/transform/docs.py b/dag/assets/transform/docs.py deleted file mode 100644 index 8b4231b..0000000 --- a/dag/assets/transform/docs.py +++ /dev/null @@ -1,15 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def transform_docs(extract_docs): - """ - Transform the docs data. - """ - docs = extract_docs.rename({"path": "2_path", "timestamp": "date"}) - return docs diff --git a/dag/assets/transform/github.py b/dag/assets/transform/github.py deleted file mode 100644 index ab81021..0000000 --- a/dag/assets/transform/github.py +++ /dev/null @@ -1,114 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def transform_stars(extract_stars): - """Transform the GitHub stars data.""" - stars = f.clean_data(extract_stars.unpack("node")) - stars = stars.order_by(ibis._.starred_at.desc()) - stars = stars.mutate(ibis._.company.fillna("Unknown").name("company")) - stars = stars.mutate(total_stars=ibis._.count().over(rows=(0, None))) - return stars - - -@dagster.asset -def transform_issues(extract_issues): - """Transform the GitHub issues data.""" - issues = f.clean_data(extract_issues.unpack("node").unpack("author")) - issues = issues.order_by(ibis._.created_at.desc()) - issues = issues.mutate((ibis._.closed_at != None).name("is_closed")) - issues = issues.mutate(ibis._.count().over(rows=(0, None)).name("total_issues")) - issue_state = ibis.case().when(issues.is_closed, "closed").else_("open").end() - issues = issues.mutate(issue_state.name("state")) - - # add first issues by login - issues = ( - issues.mutate( - is_first_issue=( - ibis.row_number().over( - ibis.window(group_by="login", order_by=issues["created_at"]) - ) - == 0 - ) - ) - .relocate("is_first_issue", "login", "created_at") - .order_by(issues["created_at"].desc()) - ) - return issues - - -@dagster.asset -def transform_pulls(extract_pulls): - """Transform the GitHub pull requests data.""" - pulls = f.clean_data(extract_pulls.unpack("node").unpack("author")) - pulls = pulls.order_by(ibis._.created_at.desc()) - pulls = pulls.mutate((ibis._.merged_at != None).name("is_merged")) - pulls = pulls.mutate((ibis._.closed_at != None).name("is_closed")) - pulls = pulls.mutate(total_pulls=ibis._.count().over(rows=(0, None))) - # to remove bots - # pulls = pulls.filter( - # ~( - # (ibis._.login == "ibis-squawk-bot") - # | (ibis._.login == "pre-commit-ci") - # | (ibis._.login == "renovate") - # ) - # ) - pull_state = ( - ibis.case() - .when(pulls.is_merged, "merged") - .when(pulls.is_closed, "closed") - .else_("open") - .end() - ) - pulls = pulls.mutate(pull_state.name("state")) - pulls = pulls.mutate( - merged_at=ibis._.merged_at.cast("timestamp") - ) # TODO: temporary fix - - # add first pull by login - pulls = ( - pulls.mutate( - is_first_pull=( - ibis.row_number().over( - ibis.window(group_by="login", order_by=pulls["created_at"]) - ) - == 0 - ) - ) - .relocate("is_first_pull", "login", "created_at") - .order_by(pulls["created_at"].desc()) - ) - return pulls - - -@dagster.asset -def transform_forks(extract_forks): - """Transform the GitHub forks data.""" - forks = f.clean_data(extract_forks.unpack("node").unpack("owner")) - forks = forks.order_by(ibis._.created_at.desc()) - forks = forks.mutate(total_forks=ibis._.count().over(rows=(0, None))) - return forks - - -@dagster.asset -def transform_watchers(extract_watchers): - """Transform the GitHub watchers data.""" - watchers = f.clean_data(extract_watchers.unpack("node")) - watchers = watchers.order_by(ibis._.updated_at.desc()) - watchers = watchers.mutate(total_watchers=ibis._.count().over(rows=(0, None))) - watchers = watchers.order_by(ibis._.updated_at.desc()) - return watchers - - -@dagster.asset -def transform_commits(extract_commits): - """Transform the GitHub git commits data.""" - commits = f.clean_data(extract_commits.unpack("node").unpack("author")) - commits = commits.order_by(ibis._.committed_date.desc()) - commits = commits.mutate(total_commits=ibis._.count().over(rows=(0, None))) - return commits diff --git a/dag/assets/transform/pypi.py b/dag/assets/transform/pypi.py deleted file mode 100644 index 3f6c45c..0000000 --- a/dag/assets/transform/pypi.py +++ /dev/null @@ -1,56 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def transform_downloads(extract_downloads): - """ - Transform the PyPI downloads data. - """ - downloads = f.clean_data( - extract_downloads.drop("project").unpack("file").unpack("details") - ) - downloads = downloads.mutate( - major_minor_patch=f.clean_version(downloads["version"], patch=True), - major_minor=f.clean_version(downloads["version"], patch=False).cast("float"), - ) - downloads = downloads.rename( - { - "version_raw": "version", - "version": "major_minor_patch", - } - ) - downloads = ( - downloads.group_by( - [ - ibis._.timestamp.truncate("D").name("timestamp"), - ibis._.country_code, - ibis._.version, - ibis._.python, - ibis._.system["name"].name("system"), - ] - ) - .agg( - ibis._.count().name("downloads"), - ) - .order_by(ibis._.timestamp.desc()) - .mutate( - ibis._.downloads.sum() - .over( - rows=(0, None), - group_by=["country_code", "version", "python", "system"], - order_by=ibis._.timestamp.desc(), - ) - .name("total_downloads") - ) - .order_by(ibis._.timestamp.desc()) - ) - downloads = downloads.mutate(ibis._["python"].fillna("").name("python_full")) - downloads = downloads.mutate( - f.clean_version(downloads["python_full"], patch=False).name("python") - ) - return downloads diff --git a/dag/assets/transform/zulip.py b/dag/assets/transform/zulip.py deleted file mode 100644 index 58819f6..0000000 --- a/dag/assets/transform/zulip.py +++ /dev/null @@ -1,48 +0,0 @@ -# imports -import ibis -import dagster - -from dag import functions as f - - -# assets -@dagster.asset -def transform_zulip_members(extract_zulip_members): - """ - Transform the Zulip members data. - """ - members = extract_zulip_members.mutate( - date_joined=ibis._.date_joined.cast("timestamp") - ) - members = members.filter(ibis._.is_bot == False) - members = members.order_by(ibis._.date_joined.desc()) - members = members.relocate("full_name", "date_joined", "timezone") - members = members.mutate(total_members=ibis._.count().over(rows=(0, None))) - return members - - -@dagster.asset -def transform_zulip_messages(extract_zulip_messages): - """ - Transform the Zulip messages data. - """ - messages = extract_zulip_messages.mutate( - timestamp=ibis._.timestamp.cast("timestamp"), - last_edit_timestamp=ibis._.last_edit_timestamp.cast("timestamp"), - ) - # TODO: either automatically filter out bot messages or do something better here - messages = messages.filter( - ibis._.stream_id != 405931 - ) # filter out the github-issues stream for now - messages = messages.order_by( - ibis._.timestamp.desc(), - ) - messages = messages.relocate( - "sender_full_name", - "display_recipient", - "subject", - "timestamp", - "last_edit_timestamp", - ) - messages = messages.mutate(total_messages=ibis._.count().over(rows=(0, None))) - return messages diff --git a/dag/constants.py b/dag/constants.py deleted file mode 100644 index a42ce31..0000000 --- a/dag/constants.py +++ /dev/null @@ -1,4 +0,0 @@ -# constants -EXTRACT = "extract" -TRANSFORM = "transform" -LOAD = "load" diff --git a/dag/deploy.py b/dag/deploy.py deleted file mode 100644 index d99a464..0000000 --- a/dag/deploy.py +++ /dev/null @@ -1,51 +0,0 @@ -# imports -import os -import toml -import ibis -import fnmatch - -import logging as log - -from datetime import datetime, timedelta, date - -import dag.functions as f - - -def main(): - deploy() - - -def deploy() -> None: - """ - Deploy the data. - """ - # constants - path = "data/system/duckdb" - - # configure logging - log.basicConfig( - level=log.INFO, - ) - - # load config - config = toml.load("config.toml")["app"] - log.info(f"Deploying to {config['database']}...") - - # connect to the database - target = ibis.duckdb.connect(f"{config['database']}") - - for root, dirs, files in os.walk(path): - for file in files: - if fnmatch.fnmatch(file, "load_*.ddb"): - full_path = os.path.join(root, file) - con = ibis.duckdb.connect(full_path) - tablename = file.replace(".ddb", "") - table = con.table(tablename) - tablename = tablename.replace("load_", "") - - log.info(f"\tDeploying {tablename} to {config['database']}...") - target.create_table(tablename, table.to_pyarrow(), overwrite=True) - - -if __name__ == "__main__": - main() diff --git a/dag/functions.py b/dag/functions.py deleted file mode 100644 index 7f802cf..0000000 --- a/dag/functions.py +++ /dev/null @@ -1,37 +0,0 @@ -# imports -import re -import ibis -import datetime - -import ibis.selectors as s - - -# udfs -@ibis.udf.scalar.python -def clean_version(version: str, patch: bool = True) -> str: - pattern = r"(\d+\.\d+\.\d+)" if patch else r"(\d+\.\d+)" - match = re.search(pattern, version) - if match: - return match.group(1) - else: - return version - - -# functions -def now(): - return datetime.datetime.now() - - -def today(): - return now().date() - - -def clean_data(t): - t = t.rename("snake_case") - # t = t.mutate(s.across(s.of_type("timestamp"), lambda x: x.cast("timestamp('')"))) - return t - - -def add_ingested_at(t, ingested_at=now()): - t = t.mutate(ingested_at=ingested_at).relocate("ingested_at") - return t diff --git a/dag/jobs.py b/dag/jobs.py deleted file mode 100644 index d4581a3..0000000 --- a/dag/jobs.py +++ /dev/null @@ -1,13 +0,0 @@ -from dagster import define_asset_job, AssetSelection - -from dag.constants import EXTRACT, TRANSFORM, LOAD - -all_job = define_asset_job("all_assets") -extract_job = define_asset_job( - "extract_assets", selection=AssetSelection.groups(EXTRACT) -) -transform_job = define_asset_job( - "transform_assets", selection=AssetSelection.groups(TRANSFORM) -) -load_job = define_asset_job("load_assets", selection=AssetSelection.groups(LOAD)) -jobs = [all_job, extract_job, transform_job, load_job] diff --git a/dag/postprocess.py b/dag/postprocess.py deleted file mode 100644 index 4345216..0000000 --- a/dag/postprocess.py +++ /dev/null @@ -1,62 +0,0 @@ -# imports -import os -import ibis -import shutil -import fnmatch - -import logging as log - -from datetime import datetime, timedelta, date - -## local imports -import functions as f - - -def main(): - postprocess() - - -def postprocess() -> None: - """ - Postprocess the data. - """ - # configure logger - log.basicConfig( - level=log.INFO, - ) - - # backup loaded data as Delta Lake tables and a DuckDB database - source_path = "data/system/duckdb" - target_path = "data/data.ddb" - app_path = "data/app.ddb" - - os.makedirs(source_path, exist_ok=True) - - target = ibis.duckdb.connect(target_path) - - ingested_at = f.now() - - for root, dirs, files in os.walk(source_path): - for file in files: - if fnmatch.fnmatch(file, "load_*.ddb"): - full_path = os.path.join(root, file) - con = ibis.duckdb.connect(full_path) - tablename = file.replace(".ddb", "") - table = con.table(tablename) - tablename = tablename.replace("load_", "") - - log.info(f"Backing up {tablename} to {target_path}...") - target.create_table(tablename, table.to_pyarrow(), overwrite=True) - - # TODO: disabling for now, causing issues, not used anywhere - # log.info(f"Backing up {tablename} to data/backup/{tablename}.delta...") - # table.mutate(ingested_at=ingested_at).to_delta( - # f"data/backup/{tablename}.delta", mode="overwrite" - # ) - - log.info(f"Copying {target_path} to {app_path}...") - shutil.copy(target_path, app_path) - - -if __name__ == "__main__": - main() diff --git a/dag/resources/__init__.py b/dag/resources/__init__.py deleted file mode 100644 index 477ab27..0000000 --- a/dag/resources/__init__.py +++ /dev/null @@ -1,6 +0,0 @@ -# imports -from dag.resources import table_io_managers - -# load resources -# resources = {"io_manager": table_io_managers.DeltaIOManager()} -resources = {"io_manager": table_io_managers.DuckDBIOManager()} diff --git a/dag/resources/table_io_managers.py b/dag/resources/table_io_managers.py deleted file mode 100644 index 8b9f552..0000000 --- a/dag/resources/table_io_managers.py +++ /dev/null @@ -1,92 +0,0 @@ -import os -import ibis - -from dagster import ConfigurableIOManager - - -class ParquetIOManager(ConfigurableIOManager): - """ - Manage tables as parquet files. - """ - - extension: str = "parquet" - base_path: str = os.path.join("data", "system", "parquet") - - def handle_output(self, context, obj): - dirname, filename = self._get_paths(context) - os.makedirs(dirname, exist_ok=True) - output_path = os.path.join(dirname, filename) - obj.to_parquet(output_path) - - def load_input(self, context): - dirname, filename = self._get_paths(context) - input_path = os.path.join(dirname, filename) - return ibis.read_parquet(input_path) - - def _get_paths(self, context): - # group_name = context.step_context.job_def.asset_layer.assets_def_for_asset( - # context.asset_key - # ).group_names_by_key[context.asset_key] - dirname = os.path.join(self.base_path, *context.asset_key.path[:-1]) - filename = f"{context.asset_key.path[-1]}.{self.extension}" - return dirname, filename - - -class DeltaIOManager(ConfigurableIOManager): - """ - Manage tables as delta tables. - """ - - extension: str = "delta" - base_path: str = os.path.join("data", "system", "delta") - delta_write_mode: str = "overwrite" - - def handle_output(self, context, obj): - dirname, filename = self._get_paths(context) - os.makedirs(dirname, exist_ok=True) - output_path = os.path.join(dirname, filename) - obj.to_delta(output_path, mode=self.delta_write_mode) - - def load_input(self, context): - dirname, filename = self._get_paths(context) - input_path = os.path.join(dirname, filename) - return ibis.read_delta(input_path) - - def _get_paths(self, context): - # group_name = context.step_context.job_def.asset_layer.assets_def_for_asset( - # context.asset_key - # ).group_names_by_key[context.asset_key] - dirname = os.path.join(self.base_path, *context.asset_key.path) - filename = f"{context.asset_key.path[-1]}.{self.extension}" - return dirname, filename - - -class DuckDBIOManager(ConfigurableIOManager): - """ - Manage tables as duckdb files. - """ - - extension: str = "ddb" - base_path: str = os.path.join("data", "system", "duckdb") - - def handle_output(self, context, obj): - dirname, filename = self._get_paths(context) - os.makedirs(dirname, exist_ok=True) - output_path = os.path.join(dirname, filename) - con = ibis.duckdb.connect(output_path) - con.create_table(context.asset_key.path[-1], obj.to_pyarrow(), overwrite=True) - - def load_input(self, context): - dirname, filename = self._get_paths(context) - input_path = os.path.join(dirname, filename) - con = ibis.duckdb.connect(input_path) - return con.table(context.asset_key.path[-1]) - - def _get_paths(self, context): - # group_name = context.step_context.job_def.asset_layer.assets_def_for_asset( - # context.asset_key - # ).group_names_by_key[context.asset_key] - # group_name = context.assets_def.group_names_by_key[context.asset_key] - dirname = os.path.join(self.base_path, *context.asset_key.path) - filename = f"{context.asset_key.path[-1]}.{self.extension}" - return dirname, filename diff --git a/dashboard.py b/dashboard.py new file mode 100644 index 0000000..8b79f5b --- /dev/null +++ b/dashboard.py @@ -0,0 +1,604 @@ +import ibis +import plotly.express as px + +from shiny import reactive, render +from shinyswatch import theme +from shinywidgets import render_plotly +from shiny.express import input, ui + +from datetime import datetime, timedelta + +from ibis_analytics.metrics import ( + pulls_t, + stars_t, + forks_t, + issues_t, + commits_t, + downloads_t, + docs_t, + zulip_members_t, + zulip_messages_t, +) +from ibis_analytics.config import GH_REPO, PYPI_PACKAGE + + +# dark themes +px.defaults.template = "plotly_dark" +ui.page_opts(theme=theme.darkly) + +# page options +ui.page_opts( + title="Ibis analytics", + fillable=False, + full_width=True, +) + +# add page title and sidebar +with ui.sidebar(open="desktop"): + ui.input_date_range( + "date_range", + "Date range", + start=(datetime.now() - timedelta(days=28)).strftime("%Y-%m-%d"), + end=datetime.now().strftime("%Y-%m-%d"), + ) + ui.input_action_button("last_7d", "Last 7 days") + ui.input_action_button("last_14d", "Last 14 days") + ui.input_action_button("last_28d", "Last 28 days") + ui.input_action_button("last_91d", "Last 91 days") + ui.input_action_button("last_182d", "Last 182 days") + ui.input_action_button("last_365d", "Last 365 days") + ui.input_action_button("last_730d", "Last 730 days") + ui.input_action_button("last_all", "All available data") + + with ui.value_box(full_screen=True): + "Total days in range" + + @render.express + def total_days(): + start_date, end_date = date_range() + days = (end_date - start_date).days + f"{days:,}" + + +with ui.nav_panel("GitHub metrics"): + f"GitHub repo: {GH_REPO}" + with ui.layout_columns(): + with ui.value_box(): + "Total stars" + + @render.express + def total_stars(): + val = stars_data().count().to_pyarrow().as_py() + f"{val:,}" + + with ui.value_box(): + "Total pulls" + + @render.express + def total_pulls(): + val = pulls_data().count().to_pyarrow().as_py() + f"{val:,}" + + with ui.value_box(): + "Total issues" + + @render.express + def total_issues(): + val = issues_data().count().to_pyarrow().as_py() + f"{val:,}" + + with ui.value_box(): + "Total forks" + + @render.express + def total_forks(): + val = forks_data().count().to_pyarrow().as_py() + f"{val:,}" + + with ui.value_box(): + "Total commits" + + @render.express + def total_commits(): + val = commits_data().count().to_pyarrow().as_py() + f"{val:,}" + + with ui.layout_columns(): + with ui.card(full_screen=True): + "Total stars" + + @render_plotly + def stars_line(): + t = stars_data().order_by("starred_at") + + c = px.line( + t, + x="starred_at", + y="total_stars", + ) + + return c + + with ui.card(full_screen=True): + "Rolling 28d stars" + + @render_plotly + def stars_roll(): + t = stars_t + + t = ( + t.mutate(starred_at=t["starred_at"].truncate("D")) + .group_by("starred_at") + .agg(stars=ibis._.count()) + ) + t = t.select( + timestamp="starred_at", + rolling_stars=ibis._["stars"] + .sum() + .over( + ibis.window(order_by="starred_at", preceding=28, following=0) + ), + ).order_by("timestamp") + + c = px.line( + t, + x="timestamp", + y="rolling_stars", + range_x=[str(x) for x in date_range()], + ) + + return c + + with ui.card(full_screen=True): + "Stars" + + with ui.card_header(class_="d-flex justify-content-between align-items-center"): + with ui.layout_columns(): + ui.input_select( + "truncate_by_stars", + "Truncate to:", + ["D", "W", "M", "Y"], + selected="D", + ) + ui.input_select( + "group_by_stars", + "Group by:", + [None, "company"], + selected=None, + ) + + @render_plotly + def stars_flex(): + truncate_by = input.truncate_by_stars() + group_by = input.group_by_stars() + + t = stars_data().order_by("starred_at") + t = t.mutate(starred_at=t["starred_at"].truncate(truncate_by)) + t = t.group_by(["starred_at", group_by] if group_by else "starred_at").agg( + stars=ibis._.count() + ) + if group_by: + t = t.mutate(company=t["company"][:16]) + t = t.order_by("starred_at", ibis.desc("stars")) + + c = px.bar( + t, + x="starred_at", + y="stars", + color="company" if group_by else None, + barmode="stack", + ) + + return c + + +with ui.nav_panel("PyPI metrics"): + f"PyPI package: {PYPI_PACKAGE}" + with ui.layout_columns(): + with ui.value_box(full_screen=True): + "Total downloads" + + @render.express + def total_downloads(): + val = downloads_data()["count"].sum().to_pyarrow().as_py() + f"{val:,}" + + with ui.value_box(full_screen=True): + "Total versions" + + @render.express + def total_versions(): + val = ( + downloads_data() + .distinct(on="version")["version"] + .to_pyarrow() + .to_pylist() + ) + f"{len(val):,}" + + with ui.card(full_screen=True): + "Downloads by version" + + @render.data_frame + def downloads_by_version(): + t = downloads_data() + + t = ( + t.mutate( + version=t["version"].split(".")[0], + ) + .filter(~ibis._["version"].startswith("v")) + .group_by("version") + .agg(downloads=ibis._["count"].sum()) + .order_by(ibis.desc("downloads")) + ) + + return render.DataGrid(t.to_polars()) + + with ui.layout_columns(): + with ui.card(full_screen=True): + "Rolling 28d downloads" + + @render_plotly + def downloads_roll(): + t = downloads_t + min_date, max_date = input.date_range() + + t = t.mutate( + timestamp=t["date"].cast("timestamp"), + ) + t = t.group_by("timestamp").agg(downloads=ibis._["count"].sum()) + t = ( + t.select( + "timestamp", + rolling_downloads=ibis._["downloads"] + .sum() + .over( + ibis.window( + order_by="timestamp", + preceding=28, + following=0, + ) + ), + ) + .filter(t["timestamp"] >= min_date, t["timestamp"] <= max_date) + .order_by("timestamp") + ) + + c = px.line( + t, + x="timestamp", + y="rolling_downloads", + ) + + return c + + with ui.card(full_screen=True): + "Rolling 28d downloads by version" + + with ui.card_header( + class_="d-flex justify-content-between align-items-center" + ): + with ui.layout_columns(): + ui.input_select( + "version_style", + "Version style", + ["major", "major.minor", "major.minor.patch"], + selected="major", + ) + + @render_plotly + def downloads_by_version_roll(): + version_style = input.version_style() + min_date, max_date = input.date_range() + + t = downloads_t + + t = t.mutate( + version=t["version"].split(".")[0] + if version_style == "major" + else t["version"].split(".")[0] + "." + t["version"].split(".")[1] + if version_style == "major.minor" + else t["version"], + timestamp=t["date"].cast("timestamp"), + ) + t = t.group_by("timestamp", "version").agg( + downloads=ibis._["count"].sum() + ) + t = t.filter(~t["version"].startswith("v")) + t = t.filter(~t["version"].contains("dev")) + t = ( + t.select( + "timestamp", + "version", + rolling_downloads=ibis._["downloads"] + .sum() + .over( + ibis.window( + order_by="timestamp", + group_by="version", + preceding=28, + following=0, + ) + ), + ) + .filter(t["timestamp"] >= min_date, t["timestamp"] <= max_date) + .order_by("timestamp") + ) + + c = px.line( + t, + x="timestamp", + y="rolling_downloads", + color="version", + category_orders={ + "version": reversed( + sorted( + t.distinct(on="version")["version"] + .to_pyarrow() + .to_pylist(), + # smartly convert string to float for sorting + # key=lambda x: int(x), + key=lambda x: tuple(map(float, x.split("."))), + ) + ) + }, + ) + + return c + + with ui.card(full_screen=True): + "Downloads" + + with ui.card_header(class_="d-flex justify-content-between align-items-center"): + with ui.layout_columns(): + ui.input_select( + "group_by_downloads", + "Group by:", + [None, "version", "country_code", "installer", "type"], + selected="version", + ) + + @render_plotly + def downloads_flex(): + group_by = input.group_by_downloads() + + t = downloads_data() + t = t.mutate(timestamp=t["date"].cast("timestamp")) + t = t.filter(~t["version"].startswith("v")) + t = t.mutate(version=t["version"].split(".")[0]) + t = t.group_by(["timestamp", group_by] if group_by else "timestamp").agg( + downloads=ibis._["count"].sum() + ) + t = t.order_by("timestamp", ibis.desc("downloads")) + + c = px.bar( + t, + x="timestamp", + y="downloads", + color=group_by if group_by else None, + barmode="stack", + category_orders={ + "version": reversed( + sorted( + t.distinct(on="version")["version"] + .to_pyarrow() + .to_pylist(), + key=lambda x: int(x), + ) + ) + } + if group_by == "version" + else None, + ) + + return c + + +with ui.nav_panel("Docs metrics"): + with ui.layout_columns(): + with ui.value_box(full_screen=True): + "Total docs" + + @render.express + def total_docs(): + val = docs_t.count().to_pyarrow().as_py() + f"{val:,}" + + with ui.card(full_screen=True): + "Docs" + + @render.data_frame + def docs_grid(): + t = docs_t + + return render.DataGrid(t.limit(10_000).to_polars()) + + +with ui.nav_panel("Zulip metrics"): + with ui.layout_columns(): + with ui.value_box(full_screen=True): + "Total messages" + + @render.express + def total_messages(): + val = zulip_messages_t.count().to_pyarrow().as_py() + f"{val:,}" + + with ui.value_box(full_screen=True): + "Total members" + + @render.express + def total_members(): + val = zulip_members_t.count().to_pyarrow().as_py() + f"{val:,}" + + +# reactive calculations and effects +@reactive.calc +def date_range(): + start_date, end_date = input.date_range() + + return start_date, end_date + + +@reactive.calc +def stars_data(stars_t=stars_t): + start_date, end_date = input.date_range() + + t = stars_t.filter( + stars_t["starred_at"] >= start_date, stars_t["starred_at"] <= end_date + ) + + return t + + +@reactive.calc +def pulls_data(pulls_t=pulls_t): + start_date, end_date = input.date_range() + + t = pulls_t.filter( + pulls_t["created_at"] >= start_date, pulls_t["created_at"] <= end_date + ) + + return t + + +@reactive.calc +def forks_data(forks_t=forks_t): + start_date, end_date = input.date_range() + + t = forks_t.filter( + forks_t["created_at"] >= start_date, forks_t["created_at"] <= end_date + ) + + return t + + +@reactive.calc +def downloads_data(downloads_t=downloads_t): + start_date, end_date = input.date_range() + + t = downloads_t.filter( + downloads_t["date"] >= start_date, downloads_t["date"] <= end_date + ) + + return t + + +@reactive.calc +def issues_data(issues_t=issues_t): + start_date, end_date = input.date_range() + + t = issues_t.filter( + issues_t["created_at"] >= start_date, issues_t["created_at"] <= end_date + ) + + return t + + +@reactive.calc +def commits_data(commits_t=commits_t): + start_date, end_date = input.date_range() + + t = commits_t.filter( + commits_t["committed_date"] >= start_date, + commits_t["committed_date"] <= end_date, + ) + + return t + + +@reactive.effect +@reactive.event(input.last_7d) +def _(): + ui.update_date_range( + "date_range", + start=(datetime.now() - timedelta(days=7)).strftime("%Y-%m-%d"), + end=datetime.now().strftime("%Y-%m-%d"), + ) + + +@reactive.effect +@reactive.event(input.last_14d) +def _(): + ui.update_date_range( + "date_range", + start=(datetime.now() - timedelta(days=14)).strftime("%Y-%m-%d"), + end=datetime.now().strftime("%Y-%m-%d"), + ) + + +@reactive.effect +@reactive.event(input.last_28d) +def _(): + ui.update_date_range( + "date_range", + start=(datetime.now() - timedelta(days=28)).strftime("%Y-%m-%d"), + end=datetime.now().strftime("%Y-%m-%d"), + ) + + +@reactive.effect +@reactive.event(input.last_91d) +def _(): + ui.update_date_range( + "date_range", + start=(datetime.now() - timedelta(days=91)).strftime("%Y-%m-%d"), + end=datetime.now().strftime("%Y-%m-%d"), + ) + + +@reactive.effect +@reactive.event(input.last_182d) +def _(): + ui.update_date_range( + "date_range", + start=(datetime.now() - timedelta(days=182)).strftime("%Y-%m-%d"), + end=datetime.now().strftime("%Y-%m-%d"), + ) + + +@reactive.effect +@reactive.event(input.last_365d) +def _(): + ui.update_date_range( + "date_range", + start=(datetime.now() - timedelta(days=365)).strftime("%Y-%m-%d"), + end=datetime.now().strftime("%Y-%m-%d"), + ) + + +@reactive.effect +@reactive.event(input.last_730d) +def _(): + ui.update_date_range( + "date_range", + start=(datetime.now() - timedelta(days=730)).strftime("%Y-%m-%d"), + end=datetime.now().strftime("%Y-%m-%d"), + ) + + +@reactive.effect +@reactive.event(input.last_all) +def _(): + # TODO: pretty hacky + min_all_tables = [ + (col, t[col].cast("timestamp").min().to_pyarrow().as_py()) + for t in [stars_t, pulls_t, forks_t, issues_t, commits_t, downloads_t] + for col in t.columns + if ( + str(t[col].type()).startswith("timestamp") + or str(t[col].type()).startswith("date") + ) + # this in particular should be cleaned up in the DAG + and "created_at" not in col + ] + min_all_tables = min([x[1] for x in min_all_tables]) - timedelta(days=1) + max_now = datetime.now() + timedelta(days=1) + + ui.update_date_range( + "date_range", + start=(min_all_tables).strftime("%Y-%m-%d"), + end=max_now.strftime("%Y-%m-%d"), + ) diff --git a/dev-requirements.txt b/dev-requirements.txt new file mode 100644 index 0000000..46f0277 --- /dev/null +++ b/dev-requirements.txt @@ -0,0 +1,9 @@ +ruff +build +twine +ipython +jupyter +nbclient +ipykernel + +-r requirements.txt diff --git a/docs_hack.py b/docs_hack.py deleted file mode 100644 index 304e61e..0000000 --- a/docs_hack.py +++ /dev/null @@ -1,42 +0,0 @@ -"""Hacky manual upload of docs data until rate limiting in CI is resolved.""" - -# imports -import ibis -import toml -import shutil - -import logging as log - -from dotenv import load_dotenv -from dag.ingest import ingest_docs -from dag.assets.extract.docs import extract_docs -from dag.assets.transform.docs import transform_docs -from dag.assets.load.docs import load_docs - -# load .env -load_dotenv() - -# configure log -log.basicConfig( - level=log.INFO, -) - -# load config -config = toml.load("config.toml")["app"] -log.info(f"Deploying to {config['database']}...") - -# connect to the database -target = ibis.duckdb.connect(f"{config['database']}") - -# ensure fresh data -shutil.rmtree("data/system/duckdb", ignore_errors=True) - -# ingest -ingest_docs() - -# ETL -docs = load_docs(transform_docs(extract_docs())) - -# deploy -log.info(f"\tDeploying docs to {config['database']}...") -target.create_table("docs", docs.to_pyarrow(), overwrite=True) diff --git a/eda.py b/eda.py deleted file mode 100644 index 623cc1e..0000000 --- a/eda.py +++ /dev/null @@ -1,50 +0,0 @@ -# imports -import re -import os -import sys -import toml -import ibis -import httpx -import requests - -import logging as log -import plotly.io as pio -import ibis.selectors as s -import plotly.express as px - -from rich import print -from dotenv import load_dotenv -from datetime import datetime, timedelta, date - -## local imports -from dag import functions as f -from dag.assets import extract, load, transform - -# configuration -## logger -log.basicConfig(level=log.INFO) - -## config.toml -config = toml.load("config.toml")["eda"] - -## load .env file -load_dotenv() - -## ibis config -ibis.options.interactive = True -ibis.options.repr.interactive.max_rows = 20 -ibis.options.repr.interactive.max_columns = None - -# variables -NOW = datetime.now() -NOW_7 = NOW - timedelta(days=7) -NOW_30 = NOW - timedelta(days=30) -NOW_90 = NOW - timedelta(days=90) -NOW_180 = NOW - timedelta(days=180) -NOW_365 = NOW - timedelta(days=365) -NOW_10 = NOW - timedelta(days=3650) - -# connect to database -database = config["database"] -log.info(f"database: {database}") -con = ibis.connect(f"duckdb://{database}") diff --git a/eda.qmd b/eda.qmd new file mode 100644 index 0000000..650c45f --- /dev/null +++ b/eda.qmd @@ -0,0 +1,32 @@ +```{python} +import ibis + +import ibis.selectors as s +import plotly.express as px + +from ibis_analytics.etl.extract import ( + zulip_members as extract_zulip_members, + zulip_messages as extract_zulip_messages, +) +from ibis_analytics.etl.transform import ( + zulip_members as transform_zulip_members, + zulip_messages as transform_zulip_messages, +) + +ibis.options.interactive = True +ibis.options.repr.interactive.max_rows = 5 +ibis.options.repr.interactive.max_columns = None + +px.defaults.template = "plotly_dark" +``` + +```{python} +t = extract_zulip_messages() +t +``` + +```{python} +t = transform_zulip_messages(t) +t.head() +``` + diff --git a/justfile b/justfile index d16797e..4183f8d 100644 --- a/justfile +++ b/justfile @@ -4,93 +4,62 @@ set dotenv-load # variables -module := "dag" +package := "ibis-analytics" # aliases alias fmt:=format -alias etl:=run -alias open:=open-dash -alias dag-open:=open-dag -alias preview:=app +alias render:=docs-build +alias preview:=docs-preview # list justfile recipes default: just --list -# format -format: - @ruff format . - -# smoke-test -smoke-test: - @ruff format --check . +# build +build: + just clean-dist + @python -m build # setup setup: - @pip install --upgrade -r requirements.txt - @pip install -e . - -# eda -eda: - @ipython -i eda.py - -# ingest -ingest: - @python {{module}}/ingest.py - -# run -run: - @dagster job execute -j all_assets -m {{module}} + @uv venv + @. .venv/bin/activate + @uv pip install --upgrade --resolution=highest -r dev-requirements.txt -# postprocess -postprocess: - @python {{module}}/postprocess.py +# install +install: + @uv pip install -r dev-requirements.txt -# deploy -deploy: - @python {{module}}/deploy.py +# uninstall +uninstall: + @pip uninstall -y {{package}} -# test -test: - @python metrics.py - @python pages/0_github.py - @python pages/1_pypi.py - @python pages/2_zulip.py - @python pages/3_docs.py - @python pages/4_about.py - -# dag -dag: - @dagster dev -m {{module}} - -# streamlit stuff -app: - @streamlit run metrics.py - -# clean -clean: - @rm -r *.ddb* || true - @rm -r data/system || true - @rm -r data/backup || true - @rm data/backup.ddb || true +# format +format: + @ruff format . -# open dag -open-dag: - @open http://localhost:3000/asset-groups +# publish-test +release-test: + just build + @twine upload --repository testpypi dist/* -u __token__ -p ${PYPI_TEST_TOKEN} -# open dash -open-dash: - @open https://ibis-analytics.streamlit.app +# publish +release: + just build + @twine upload dist/* -u __token__ -p ${PYPI_TOKEN} -# cicd -cicd: - @gh workflow run cicd.yaml +# clean dist +clean-dist: + @rm -rf dist -# docs-hack: manually upload docs data -docs-hack: - @python docs_hack.py +# docs-build +docs-build: + @quarto render website -# ssh -ssh: - @gcloud compute ssh --zone "us-central1-c" --project "voltrondata-demo" --tunnel-through-iap "ibis-analytics" +# docs-preview +docs-preview: + @quarto preview website +# open +open: + @open https://lostmygithubaccount.github.io/ibis-analytics diff --git a/metrics.py b/metrics.py deleted file mode 100644 index 1ef59c4..0000000 --- a/metrics.py +++ /dev/null @@ -1,438 +0,0 @@ -# imports -import toml -import ibis - -import streamlit as st -import plotly.express as px - -from dotenv import load_dotenv -from datetime import datetime, timedelta - -# options -## load .env -load_dotenv() - -## config.toml -config = toml.load("config.toml")["app"] - -## streamlit config -st.set_page_config(layout="wide") - -## ibis config -con = ibis.connect(f"duckdb://{config['database']}", read_only=True) - -# use precomputed data -# TODO: remove dirty hack -try: - docs = con.table("docs") -except: - docs = None -stars = con.table("stars") -forks = con.table("forks") -pulls = con.table("pulls") -issues = con.table("issues") -backends = con.table("backends") -downloads = con.table("downloads") -members = con.table("zulip_members") -messages = con.table("zulip_messages") - -# display header stuff -with open("readme.md") as f: - readme_code = f.read() - -f""" -{readme_code} See [the about page](/about) for more details on tools and services used. - - -""" - -# TODO: remove after docs are working -st.warning( - "Documentation metrics are broken as I fight with rate limiting, check back soon!", - icon="⚠️", -) - -with open("metrics.py") as f: - metrics_code = f.read() - -with st.expander("Show source code", expanded=False): - st.code(metrics_code, line_numbers=True, language="python") - -""" ---- -""" - -""" -## supported backends -""" - - -def fmt_number(value): - return f"{value:,}" - - -current_backends_total = ( - backends.filter(backends.ingested_at == backends.ingested_at.max()) - .num_backends.max() - .to_pandas() -) -current_backends = backends.backends.unnest().name("backends").as_table() - -st.metric("Total", f"{current_backends_total:,}") -st.dataframe(current_backends, use_container_width=True) - -""" -## totals (all time) -""" - -total_stars_all_time = stars.login.nunique().to_pandas() -total_forks_all_time = forks.login.nunique().to_pandas() - -total_closed_issues_all_time = issues.number.nunique( - where=issues.state == "closed" -).to_pandas() - -total_merged_pulls_all_time, total_contributors_all_time = ( - pulls.agg( - total_merged_pulls_all_time=pulls.number.nunique(where=pulls.state == "merged"), - total_contributors_all_time=pulls.login.nunique( - where=pulls.merged_at.notnull() - ), - ) - .to_pandas() - .squeeze() -) - -downloads_all_time = downloads["downloads"].sum().to_pandas() - -total_members_all_time = members.user_id.nunique().to_pandas() -total_messages_all_time = messages.id.nunique().to_pandas() - -# TODO: remove dirty hack -if docs is not None: - total_visits_all_time = docs.count().to_pandas() - total_first_visits_all_time = docs.first_visit.sum().to_pandas() -else: - total_visits_all_time = 0 - total_first_visits_all_time = 0 - -col0, col1, col2, col3, col4 = st.columns(5) -with col0: - st.metric( - label="GitHub stars", - value=fmt_number(total_stars_all_time), - help=f"{total_stars_all_time:,}", - ) - st.metric( - label="PyPI downloads", - value=fmt_number(downloads_all_time), - help=f"{downloads_all_time:,}", - ) -with col1: - st.metric( - label="GitHub contributors", - value=fmt_number(total_contributors_all_time), - help=f"{total_contributors_all_time:,}", - ) - st.metric( - label="GitHub forks", - value=fmt_number(total_forks_all_time), - help=f"{total_forks_all_time:,}", - ) -with col2: - st.metric( - label="GitHub PRs merged", - value=fmt_number(total_merged_pulls_all_time), - help=f"{total_merged_pulls_all_time:,}", - ) - st.metric( - label="GitHub issues closed", - value=fmt_number(total_closed_issues_all_time), - help=f"{total_closed_issues_all_time:,}", - ) -with col3: - st.metric( - label="Zulip members", - value=fmt_number(total_members_all_time), - help=f"{total_members_all_time:,}", - ) - st.metric( - label="Zulip messages", - value=fmt_number(total_messages_all_time), - help=f"{total_messages_all_time:,}", - ) -with col4: - st.metric( - label="Unique docs visits", - value=fmt_number(total_visits_all_time), - help="Currently broken, check back soon!", - # help=f"{total_visits_all_time:,}", - ) - st.metric( - label="Unique docs first visits", - value=fmt_number(total_first_visits_all_time), - help="Currently broken, check back soon!", - # help=f"{total_first_visits_all_time:,}", - ) - -# variables -with st.form(key="app"): - days = st.number_input( - "X days", - min_value=1, - max_value=365, - value=90, - step=30, - format="%d", - ) - update_button = st.form_submit_button(label="update") - - -START = datetime.now() - timedelta(days=days * 2) -STOP = datetime.now() - timedelta(days=days) - - -# compute metrics -total_stars, total_stars_prev = ( - stars.agg( - total_stars=stars.login.nunique(where=stars.starred_at >= STOP), - total_stars_prev=stars.login.nunique( - where=stars.starred_at.between(START, STOP) - ), - ) - .to_pandas() - .squeeze() -) - -total_forks, total_forks_prev = ( - forks.agg( - total_forks=forks.login.nunique(where=forks.created_at >= STOP), - total_forks_prev=forks.login.nunique( - where=forks.created_at.between(START, STOP) - ), - ) - .to_pandas() - .squeeze() -) - -( - total_issues, - total_issues_prev, - total_issues_closed, - total_issues_closed_prev, -) = ( - issues.agg( - total_issues=issues.login.nunique(where=issues.created_at >= STOP), - total_issues_prev=issues.login.nunique( - where=issues.created_at.between(START, STOP) - ), - total_issues_closed=issues.number.nunique(where=issues.closed_at >= STOP), - total_issues_closed_prev=issues.number.nunique( - where=issues.closed_at.between(START, STOP) - ), - ) - .to_pandas() - .squeeze() -) - -( - total_pulls, - total_pulls_prev, - total_pulls_merged, - total_pulls_merged_prev, - total_contributors, - total_contributors_prev, -) = ( - pulls.agg( - total_pulls=pulls.number.nunique(where=pulls.created_at >= STOP), - total_pulls_prev=pulls.number.nunique( - where=pulls.created_at.between(START, STOP) - ), - total_pulls_merged=pulls.number.nunique(where=pulls.merged_at >= STOP), - total_pulls_merged_prev=pulls.number.nunique( - where=pulls.merged_at.between(START, STOP) - ), - total_contributors=pulls.login.nunique(where=pulls.merged_at >= STOP), - total_contributors_prev=pulls.login.nunique( - where=pulls.merged_at.between(START, STOP) - ), - ) - .to_pandas() - .squeeze() -) - -total_downloads, total_downloads_prev = ( - downloads.agg( - total_downloads=downloads.downloads.sum(where=downloads.timestamp >= STOP), - total_downloads_prev=downloads.downloads.sum( - where=downloads.timestamp.between(START, STOP) - ), - ) - .to_pandas() - .squeeze() -) - - -new_issue_contributors, new_issue_contributors_prev = ( - issues.agg( - new_issue_contributors=issues.login.nunique( - where=(issues.created_at >= STOP) & (issues.is_first_issue == True) - ), - new_issue_contributors_prev=issues.login.nunique( - where=(issues.created_at.between(START, STOP)) - & (issues.is_first_issue == True) - ), - ) - .to_pandas() - .squeeze() -) -new_pulls_contributors, new_pulls_contributors_prev = ( - pulls.agg( - new_pulls_contributors=pulls.login.nunique( - where=(pulls.created_at >= STOP) & (pulls.is_first_pull == True) - ), - new_pulls_contributors_prev=pulls.login.nunique( - where=(pulls.created_at.between(START, STOP)) - & (pulls.is_first_pull == True) - ), - ) - .to_pandas() - .squeeze() -) - - -def delta(current, previous): - delta = current - previous - pct_change = int(round(100.0 * delta / previous, 0)) - return f"{fmt_number(delta)} ({pct_change:d}%)" - - -f""" -## totals (last {days} days) -""" -col1, col2, col3, col4, col5 = st.columns(5) -with col1: - st.metric( - label="GitHub stars", - value=fmt_number(total_stars), - delta=delta(total_stars, total_stars_prev), - help=f"{total_stars:,}", - ) - st.metric( - label="PyPI downloads", - value=fmt_number(total_downloads), - delta=delta(total_downloads, total_downloads_prev), - help=f"{total_downloads:,}", - ) -with col2: - st.metric( - label="GitHub contributors", - value=fmt_number(total_contributors), - delta=delta(total_contributors, total_contributors_prev), - help=f"{total_contributors:,}", - ) - st.metric( - label="GitHub forks created", - value=fmt_number(total_forks), - delta=delta(total_forks, total_forks_prev), - help=f"{total_forks:,}", - ) -with col3: - st.metric( - label="GitHub PRs opened", - value=fmt_number(total_pulls), - delta=delta(total_pulls, total_pulls_prev), - help=f"{total_pulls:,}", - ) - st.metric( - label="GitHub issues opened", - value=fmt_number(total_issues), - delta=delta(total_issues, total_issues_prev), - help=f"{total_issues:,}", - ) -with col4: - st.metric( - label="GitHub PRs merged", - value=fmt_number(total_pulls_merged), - delta=delta(total_pulls_merged, total_pulls_merged_prev), - help=f"{total_pulls_merged:,}", - ) - st.metric( - label="GitHub issues closed", - value=fmt_number(total_issues_closed), - delta=delta(total_issues_closed, total_issues_closed_prev), - help=f"{total_issues_closed:,}", - ) -with col5: - st.metric( - label="New issue contributors", - value=fmt_number(new_issue_contributors), - delta=delta(new_issue_contributors, new_issue_contributors_prev), - help=f"{new_issue_contributors:,}", - ) - st.metric( - label="New PR contributors", - value=fmt_number(new_pulls_contributors), - delta=delta(new_pulls_contributors, new_pulls_contributors_prev), - help=f"{new_pulls_contributors:,}", - ) - -f""" -## data (last {days} days) -""" - -""" -### downloads by system and version -""" -c0 = px.bar( - downloads.group_by([ibis._.system, ibis._.version]) - .agg(downloads=lambda t: t.downloads.sum(where=t.timestamp > STOP)) - .order_by(ibis._.version.desc()), - x="version", - y="downloads", - color="system", - title="downloads by system and version", -) -st.plotly_chart(c0, use_container_width=True) - -""" -### stars by company -""" -st.dataframe( - stars.group_by(ibis._.company) - .agg(stars=lambda t: t.count(where=t.starred_at > STOP)) - .filter(ibis._.stars > 0) - .order_by(ibis._.stars.desc()) - .to_pandas(), - use_container_width=True, -) - -""" -### issues by login -""" -c1 = px.bar( - issues.group_by([ibis._.login, ibis._.state]) - .agg(issues=lambda t: t.count(where=t.created_at > STOP)) - .filter(ibis._.issues > 0) - .order_by(ibis._.issues.desc()), - x="login", - y="issues", - color="state", - title="issues by login", -) -st.plotly_chart(c1, use_container_width=True) - -""" -### PRs by login -""" -c2 = px.bar( - pulls.group_by([ibis._.login, ibis._.state]) - .agg(pulls=lambda t: t.count(where=t.created_at > STOP)) - .filter(ibis._.pulls > 0) - .order_by(ibis._.pulls.desc()), - x="login", - y="pulls", - color="state", - title="PRs by login", -) -st.plotly_chart(c2, use_container_width=True) diff --git a/pages/0_github.py b/pages/0_github.py deleted file mode 100644 index cef80bd..0000000 --- a/pages/0_github.py +++ /dev/null @@ -1,390 +0,0 @@ -# imports -import toml -import ibis - -import streamlit as st -import plotly.io as pio -import plotly.express as px -import ibis.selectors as s - -from dotenv import load_dotenv -from datetime import datetime, timedelta - -# options -## load .env -load_dotenv() - -## config.toml -config = toml.load("config.toml")["app"] - -## streamlit config -st.set_page_config(layout="wide") - -## ibis config -con = ibis.connect(f"duckdb://{config['database']}", read_only=True) - -# use precomputed data -stars = con.table("stars") -forks = con.table("forks") -pulls = con.table("pulls") -issues = con.table("issues") -commits = con.table("commits") -watchers = con.table("watchers") - -# display metrics -""" -# GitHub metrics -""" - -f""" ---- -""" - -with open("pages/0_github.py") as f: - github_code = f.read() - -with st.expander("Show source code", expanded=False): - st.code(github_code, line_numbers=True, language="python") - -""" ---- -""" - -total_stars_all_time = stars.select("login").distinct().count().to_pandas() -total_forks_all_time = forks.select("login").distinct().count().to_pandas() -total_closed_issues_all_time = ( - issues.filter(ibis._.state == "closed") - .select("number") - .distinct() - .count() - .to_pandas() -) -total_merged_pulls_all_time = ( - pulls.filter(ibis._.state == "merged") - .select("number") - .distinct() - .count() - .to_pandas() -) -total_contributors_all_time = ( - pulls.filter(ibis._.merged_at != None) - .select("login") - .distinct() - .count() - .to_pandas() -) -total_watchers_all_time = watchers.select("login").distinct().count().to_pandas() -open_issues = ( - issues.filter(ibis._.is_closed != True) - .select("number") - .distinct() - .count() - .to_pandas() -) -open_pulls = ( - pulls.filter(ibis._.state == "open").select("number").distinct().count().to_pandas() -) - -f""" -## open items -""" -st.metric( - label="open issues", - value=f"{open_issues:,}", -) -st.metric( - label="open pull requests", - value=f"{open_pulls:,}", -) - -f""" -## totals (all time) -""" -col0, col1, col2 = st.columns(3) -with col0: - st.metric( - label="stars", - value=f"{total_stars_all_time:,}", - ) - st.metric("contributors", f"{total_contributors_all_time:,}") -with col1: - st.metric("forks", f"{total_forks_all_time:,}") - st.metric("watchers", f"{total_watchers_all_time:,}") -with col2: - st.metric("closed issues", f"{total_closed_issues_all_time:,}") - st.metric("merged pull requests", f"{total_merged_pulls_all_time:,}") - -# variables -with st.form(key="pypi"): - days = st.number_input( - "X days", - min_value=1, - max_value=3650, - value=90, - step=30, - format="%d", - ) - timescale = st.selectbox( - "timescale (plots)", - ["D", "W", "M", "Q", "Y"], - index=0, - ) - update_button = st.form_submit_button(label="update") - -# compute metrics -total_stars = ( - stars.filter(ibis._.starred_at >= datetime.now() - timedelta(days=days)) - .select("login") - .distinct() - .count() - .to_pandas() -) -total_stars_prev = ( - stars.filter(ibis._.starred_at <= datetime.now() - timedelta(days=days)) - .filter(ibis._.starred_at >= datetime.now() - timedelta(days=days * 2)) - .select("login") - .distinct() - .count() - .to_pandas() -) -total_forks = ( - forks.filter(ibis._.created_at >= datetime.now() - timedelta(days=days)) - .select("login") - .distinct() - .count() - .to_pandas() -) -total_forks_prev = ( - forks.filter(ibis._.created_at <= datetime.now() - timedelta(days=days)) - .filter(ibis._.created_at >= datetime.now() - timedelta(days=days * 2)) - .select("login") - .distinct() - .count() - .to_pandas() -) - -closed_issues = ( - issues.filter(ibis._.closed_at >= datetime.now() - timedelta(days=days)) - .select("number") - .distinct() - .count() - .to_pandas() -) -closed_issues_prev = ( - issues.filter(ibis._.closed_at <= datetime.now() - timedelta(days=days)) - .filter(ibis._.closed_at >= datetime.now() - timedelta(days=days * 2)) - .select("number") - .distinct() - .count() - .to_pandas() -) -merged_pulls = ( - pulls.filter(ibis._.merged_at >= datetime.now() - timedelta(days=days)) - .select("number") - .distinct() - .count() - .to_pandas() -) -merged_pulls_prev = ( - pulls.filter(ibis._.merged_at <= datetime.now() - timedelta(days=days)) - .filter(ibis._.merged_at >= datetime.now() - timedelta(days=days * 2)) - .select("number") - .distinct() - .count() - .to_pandas() -) -total_issues_prev = ( - issues.filter(ibis._.created_at <= datetime.now() - timedelta(days=days)) - .filter(ibis._.created_at >= datetime.now() - timedelta(days=days * 2)) - .select("number") - .distinct() - .count() - .to_pandas() -) -total_pulls = ( - pulls.filter(ibis._.created_at >= datetime.now() - timedelta(days=days)) - .select("number") - .distinct() - .count() - .to_pandas() -) -total_pulls_prev = ( - pulls.filter(ibis._.created_at <= datetime.now() - timedelta(days=days)) - .filter(ibis._.created_at >= datetime.now() - timedelta(days=days * 2)) - .select("number") - .distinct() - .count() - .to_pandas() -) -total_contributors = ( - pulls.filter(ibis._.merged_at != None) - .filter(ibis._.merged_at >= datetime.now() - timedelta(days=days)) - .select("login") - .distinct() - .count() - .to_pandas() -) -total_contributors_prev = ( - pulls.filter(ibis._.merged_at != None) - .filter(ibis._.merged_at <= datetime.now() - timedelta(days=days)) - .filter(ibis._.merged_at >= datetime.now() - timedelta(days=days * 2)) - .select("login") - .distinct() - .count() - .to_pandas() -) -total_watchers = ( - watchers.filter(ibis._.updated_at >= datetime.now() - timedelta(days=days)) - .select("login") - .distinct() - .count() - .to_pandas() -) -total_watchers_prev = ( - watchers.filter(ibis._.updated_at <= datetime.now() - timedelta(days=days)) - .filter(ibis._.updated_at >= datetime.now() - timedelta(days=days * 2)) - .select("login") - .distinct() - .count() - .to_pandas() -) - -f""" -## totals (last {days} days) -""" -col2, col3, col4 = st.columns(3) -with col2: - st.metric( - label="stars", - value=f"{total_stars:,}", - delta=f"{total_stars - total_stars_prev:,}", - ) - st.metric( - label="contributors", - value=f"{total_contributors:,}", - delta=f"{total_contributors - total_contributors_prev:,}", - ) -with col3: - st.metric( - label="forks", - value=f"{total_forks:,}", - delta=f"{total_forks - total_forks_prev:,}", - ) - st.metric( - label="watchers", - value=f"{total_watchers:,}", - delta=f"{total_watchers - total_watchers_prev:,}", - ) -with col4: - st.metric( - label="closed issues", - value=f"{closed_issues:,}", - delta=f"{closed_issues - closed_issues_prev:,}", - ) - st.metric( - label="merged pull requests", - value=f"{merged_pulls:,}", - delta=f"{merged_pulls - merged_pulls_prev:,}", - ) - -# viz -c0 = px.line( - stars.filter(ibis._.starred_at > datetime.now() - timedelta(days=days)).order_by( - ibis._.starred_at.desc() - ), - x="starred_at", - y="total_stars", - title="cumulative stars", -) -st.plotly_chart(c0, use_container_width=True) - -c1 = px.bar( - stars.filter(ibis._.starred_at > datetime.now() - timedelta(days=days)) - .mutate(ibis._.company[:20].name("company")) - .group_by( - [ibis._.starred_at.truncate(timescale).name("starred_at"), ibis._.company] - ) - .agg(ibis._.count().name("stars")) - .order_by(ibis._.stars.desc()), - x="starred_at", - y="stars", - color="company", - title="stars by company", -) -st.plotly_chart(c1, use_container_width=True) - -# cumulative stars by company -st.dataframe( - stars.filter(ibis._.starred_at > datetime.now() - timedelta(days=days)) - .group_by([ibis._.company]) - .agg(ibis._.count().name("stars")) - .order_by(ibis._.stars.desc()), - use_container_width=True, -) - -c3 = px.line( - forks.filter(ibis._.created_at > datetime.now() - timedelta(days=days)).order_by( - ibis._.created_at.desc() - ), - x="created_at", - y="total_forks", - title="cumulative forks", -) -st.plotly_chart(c3, use_container_width=True) - -c4 = px.line( - pulls.filter(ibis._.created_at > datetime.now() - timedelta(days=days)).order_by( - ibis._.created_at.desc() - ), - x="created_at", - y="total_pulls", - title="cumulative pull requests", -) -st.plotly_chart(c4, use_container_width=True) - -c5 = px.line( - issues.filter(ibis._.created_at > datetime.now() - timedelta(days=days)).order_by( - ibis._.created_at.desc() - ), - x="created_at", - y="total_issues", - title="cumulative issues", -) -st.plotly_chart(c5, use_container_width=True) - -c6 = px.line( - commits.filter( - ibis._.committed_date > datetime.now() - timedelta(days=days) - ).order_by(ibis._.committed_date.desc()), - x="committed_date", - y="total_commits", - title="cumulative commits", -) -st.plotly_chart(c6, use_container_width=True) - -# new contributors over time -c7 = px.bar( - issues.filter(ibis._.created_at > datetime.now() - timedelta(days=days)) - .filter(ibis._.is_first_issue == True) - .group_by([ibis._.created_at.truncate(timescale).name("created_at")]) - .agg( - ibis._.login.nunique().name("new_contributors"), - ), - x="created_at", - y="new_contributors", - title="new contributors (issues)", -) -st.plotly_chart(c7, use_container_width=True) - -c8 = px.bar( - pulls.filter(ibis._.created_at > datetime.now() - timedelta(days=days)) - .filter(ibis._.is_first_pull == True) - .group_by([ibis._.created_at.truncate(timescale).name("created_at")]) - .agg( - ibis._.login.nunique().name("new_contributors"), - ), - x="created_at", - y="new_contributors", - title="new contributors (pull requests)", -) -st.plotly_chart(c8, use_container_width=True) diff --git a/pages/1_pypi.py b/pages/1_pypi.py deleted file mode 100644 index 8c8f661..0000000 --- a/pages/1_pypi.py +++ /dev/null @@ -1,236 +0,0 @@ -# imports -import toml -import ibis - -import streamlit as st -import plotly.io as pio -import plotly.express as px -import ibis.selectors as s - -from dotenv import load_dotenv -from datetime import datetime, timedelta - -# options -## load .env -load_dotenv() - -## config.toml -config = toml.load("config.toml")["app"] - -## streamlit config -st.set_page_config(layout="wide") - -## ibis config -con = ibis.connect(f"duckdb://{config['database']}", read_only=True) - -# use precomputed data -downloads = con.table("downloads") - -# display metrics -""" -# PyPI metrics -""" - -f""" ---- -""" - -with open("pages/1_pypi.py") as f: - pypi_code = f.read() - -with st.expander("Show source code", expanded=False): - st.code(pypi_code, line_numbers=True, language="python") - -f""" ---- - -## totals (all time) -""" -downloads_all_time = downloads["downloads"].sum().to_pandas() -st.metric("downloads", f"{downloads_all_time:,}") - -with st.form(key="groupers"): - groupers = st.multiselect( - "groupers", - ["version", "system", "country_code", "python"], - ["version"], - ) - update_button = st.form_submit_button(label="update") - -f""" -downloads grouped by {groupers} -""" -grouped = ( - downloads.group_by(groupers) - .aggregate(ibis._.downloads.sum().name("downloads")) - .order_by(ibis._.downloads.desc()) -) - -st.dataframe(grouped, use_container_width=True) - -# variables -with st.form(key="pypi"): - days = st.number_input( - "X days", - min_value=1, - max_value=3650, - value=90, - step=30, - format="%d", - ) - timescale = st.selectbox( - "timescale (plots)", - ["D", "W", "M", "Q", "Y"], - index=0, - ) - exclude_linux = st.checkbox("exclude linux", value=False) - update_button = st.form_submit_button(label="update") - -if exclude_linux: - downloads = downloads.filter(~ibis._.system.contains("Linux")) - -f""" -## totals (last {days} days) -""" -downloads_last_x_days = ( - downloads.filter(ibis._.timestamp >= datetime.now() - timedelta(days=days))[ - "downloads" - ] - .sum() - .to_pandas() -) -st.metric("downloads", f"{downloads_last_x_days:,}") - -f""" -downloads grouped by {groupers} -""" -downloads_last_x_days_by_groupers = ( - downloads.filter(ibis._.timestamp >= datetime.now() - timedelta(days=days)) - .group_by(groupers) - .agg(ibis._.downloads.sum().name("downloads")) - .order_by(ibis._.downloads.desc()) -) -st.dataframe(downloads_last_x_days_by_groupers, use_container_width=True) - -# viz -t = ( - downloads.mutate( - timestamp=downloads["timestamp"].truncate("D"), - ) - .group_by("timestamp") - .agg(downloads=ibis._["downloads"].sum()) - .select( - "timestamp", - downloads=ibis._["downloads"] - .sum() - .over(ibis.window(order_by="timestamp", preceding=28, following=0)), - ) - .filter((ibis._["timestamp"] >= datetime.now() - timedelta(days=days))) - .order_by("timestamp") -) - -c00 = px.line( - t, - x="timestamp", - y="downloads", - title="downloads (28 days rolling)", -) -st.plotly_chart(c00, use_container_width=True) - -t = ( - downloads.mutate( - timestamp=downloads["timestamp"].truncate("D"), - version=downloads["version"].split(".")[0], - ) - .group_by("timestamp", "version") - .agg(downloads=ibis._["downloads"].sum()) - .select( - "timestamp", - "version", - downloads=ibis._["downloads"] - .sum() - .over( - ibis.window( - order_by="timestamp", group_by="version", preceding=28, following=0 - ) - ), - ) - .filter((ibis._["timestamp"] >= datetime.now() - timedelta(days=days))) - .order_by("timestamp") -) - -c00 = px.line( - t, - x="timestamp", - y="downloads", - color="version", - category_orders={ - "version": reversed( - sorted( - t.distinct(on="version")["version"].to_pyarrow().to_pylist(), - key=lambda x: int(x), - ) - ) - }, - title="downloads (28 days rolling) by version", -) -st.plotly_chart(c00, use_container_width=True) - -c0 = px.line( - downloads.filter(ibis._.timestamp >= datetime.now() - timedelta(days=days)) - .group_by(ibis._.timestamp.truncate(timescale).name("timestamp")) - .agg(ibis._.downloads.sum().name("downloads")) - .order_by(ibis._.timestamp.desc()) - .mutate( - ibis._.downloads.sum() - .over(rows=(0, None), order_by=ibis._.timestamp.desc()) - .name("total_downloads") - ) - .order_by(ibis._.timestamp.desc()), - x="timestamp", - y="total_downloads", - # log_y=True, - title="cumulative downloads", -) -st.plotly_chart(c0, use_container_width=True) - -c1 = px.bar( - downloads.filter(ibis._.timestamp >= datetime.now() - timedelta(days=days)) - .group_by( - [ibis._.timestamp.truncate(timescale).name("timestamp"), ibis._[groupers[0]]] - ) - .agg(ibis._.downloads.sum().name("downloads")) - .order_by(ibis._.timestamp.desc()) - .mutate( - ibis._.downloads.sum() - .over(rows=(0, None), group_by=groupers[0], order_by=ibis._.timestamp.desc()) - .name("total_downloads") - ) - .order_by([ibis._.timestamp.desc(), ibis._.downloads.desc()]), - x="timestamp", - y="downloads", - color=groupers[0], - title=f"downloads by {groupers[0]}", -) -st.plotly_chart(c1, use_container_width=True) - -c2 = px.line( - downloads.filter(ibis._.timestamp >= datetime.now() - timedelta(days=days)) - .group_by( - [ibis._.timestamp.truncate(timescale).name("timestamp"), ibis._[groupers[0]]] - ) - .agg(ibis._.downloads.sum().name("downloads")) - .order_by(ibis._.timestamp.desc()) - .mutate( - ibis._.downloads.sum() - .over(rows=(0, None), group_by=groupers[0], order_by=ibis._.timestamp.desc()) - .name("total_downloads") - ) - .order_by([ibis._.timestamp.desc(), ibis._.downloads.desc()]), - x="timestamp", - y="total_downloads", - log_y=True, - color=groupers[0], - title=f"cumulative downloads by {groupers[0]}", -) -st.plotly_chart(c2, use_container_width=True) diff --git a/pages/2_zulip.py b/pages/2_zulip.py deleted file mode 100644 index 3212bb6..0000000 --- a/pages/2_zulip.py +++ /dev/null @@ -1,101 +0,0 @@ -# imports -import toml -import ibis - -import streamlit as st -import plotly.io as pio -import plotly.express as px -import ibis.selectors as s - -from dotenv import load_dotenv -from datetime import datetime, timedelta - -# options -## load .env -load_dotenv() - -## config.toml -config = toml.load("config.toml")["app"] - -## streamlit config -st.set_page_config(layout="wide") - -## ibis config -con = ibis.connect(f"duckdb://{config['database']}", read_only=True) - -# use precomputed data -members = con.table("zulip_members") -messages = con.table("zulip_messages") - -# display metrics -""" -# Zulip metrics -""" - - -f""" ---- -""" - -with open("pages/2_zulip.py") as f: - zulip_code = f.read() - -with st.expander("Show source code", expanded=False): - st.code(zulip_code, line_numbers=True, language="python") - -""" ---- -""" - -total_members_all_time = members.select("user_id").nunique().to_pandas() -total_messages_all_time = messages.select("id").nunique().to_pandas() - -f""" -## totals (all time) -""" - -col0, col1 = st.columns(2) - -with col0: - st.metric(label="members", value=total_members_all_time) -with col1: - st.metric(label="messages", value=total_messages_all_time) - -# viz -c0 = px.line( - # members.filter(ibis._.date_joined > datetime.now() - timedelta(days=days)), - members, - x="date_joined", - y="total_members", - title=f"members over time", -) -st.plotly_chart(c0, use_container_width=True) - -c1 = px.line( - # TODO: investigate hack here - # messages.filter(ibis._.timestamp > datetime.now() - timedelta(days=days)).order_by( - # ibis._.timestamp.desc() - # ), - messages.order_by(ibis._.timestamp.desc()), - x="timestamp", - y="total_messages", - title=f"messages over time", -) -st.plotly_chart(c1, use_container_width=True) - -## variables -# with st.form(key="zulip"): -# days = st.number_input( -# "X days", -# min_value=1, -# max_value=3650, -# value=90, -# step=30, -# format="%d", -# ) -# timescale = st.selectbox( -# "timescale", -# options=["days", "weeks", "months", "years"], -# index=2, -# ) -# update_button = st.form_submit_button(label="update") diff --git a/pages/3_docs.py b/pages/3_docs.py deleted file mode 100644 index a81f43c..0000000 --- a/pages/3_docs.py +++ /dev/null @@ -1,147 +0,0 @@ -# imports -import toml -import ibis - -import streamlit as st -import plotly.io as pio -import plotly.express as px -import ibis.selectors as s - -from dotenv import load_dotenv -from datetime import datetime, timedelta - -# options -## load .env -load_dotenv() - -## config.toml -config = toml.load("config.toml")["app"] - -## streamlit config -st.set_page_config(layout="wide") - -# TODO: remove after docs are working -st.warning( - "Documentation metrics are broken as I fight with rate limiting, check back soon!", - icon="⚠️", -) - -## ibis config -con = ibis.connect(f"duckdb://{config['database']}", read_only=True) - -# use precomputed data -docs = con.table("docs") - -# display metrics -""" -# Documentation metrics -""" - -f""" ---- -""" - -with open("pages/3_docs.py") as f: - docs_code = f.read() - -with st.expander("Show source code", expanded=False): - st.code(docs_code, line_numbers=True, language="python") - -f""" ---- - -## totals (all time) -""" -total_visits_all_time = docs.count().to_pandas() -total_first_visits_all_time = docs.first_visit.sum().to_pandas() - -st.metric("visits", f"{total_visits_all_time:,}") -st.metric("first visits", f"{total_first_visits_all_time:,}") - -# variables -with st.form(key="docs"): - days = st.number_input( - "X days", - min_value=1, - max_value=3650, - value=90, - step=30, - format="%d", - ) - timescale = st.selectbox( - "timescale (plots)", - ["D", "W", "M", "Q", "Y"], - index=0, - ) - grouper = st.selectbox( - "grouper", - ["location", "browser", "referrer", "bot", "user_agent", "event"], - index=2, - ) - update_button = st.form_submit_button(label="update") - -f""" -## last X days -""" -total_visits = ( - docs.filter(ibis._.timestamp >= datetime.now() - timedelta(days=days)) - .count() - .to_pandas() -) -total_first_visits = ( - docs.filter(ibis._.timestamp >= datetime.now() - timedelta(days=days)) - .first_visit.sum() - .to_pandas() -) - -st.metric("visits", f"{total_visits:,}") -st.metric("first visits", f"{total_first_visits:,}") - -# viz -c0 = px.bar( - docs.filter(ibis._.timestamp >= datetime.now() - timedelta(days=days)) - .group_by([ibis._.timestamp.truncate(timescale).name("timestamp"), ibis._[grouper]]) - .agg([ibis._.count().name("visits"), ibis._.first_visit.sum().name("first_visits")]) - .order_by(ibis._.timestamp.desc()) - .mutate( - (ibis._.first_visits / ibis._.visits).name("percent_first_visit"), - ) - .mutate(ibis._[grouper].cast(str)[:20].name(grouper)) - .order_by([ibis._.timestamp.desc(), ibis._.visits.desc()]), - x="timestamp", - y="visits", - color=grouper, - title="docs visits", -) -st.plotly_chart(c0, use_container_width=True) - -c2 = ( - docs.filter(ibis._.timestamp >= datetime.now() - timedelta(days=days)) - .group_by( - [ - ibis._.timestamp.truncate(timescale).name("timestamp"), - ibis._.path, - ibis._.referrer, - ] - ) - .agg([ibis._.count().name("visits"), ibis._.first_visit.sum().name("first_visits")]) - .order_by(ibis._.timestamp.desc()) - .mutate( - (100 * (ibis._.first_visits / ibis._.visits)).name("percent_first_visit"), - ) - .order_by([ibis._.timestamp.desc(), ibis._.visits.desc()]) -) -st.dataframe(c2, use_container_width=True) - -c1 = px.line( - docs.filter(ibis._.timestamp >= datetime.now() - timedelta(days=days)) - .group_by([ibis._.timestamp.truncate(timescale).name("timestamp")]) - .agg([ibis._.count().name("visits"), ibis._.first_visit.sum().name("first_visits")]) - .order_by(ibis._.timestamp.desc()) - .mutate((100 * (ibis._.first_visits / ibis._.visits)).name("percent_first_visit")) - .order_by(ibis._.timestamp.desc()), - x="timestamp", - y="percent_first_visit", - title="docs first visit %", -) -st.plotly_chart(c1, use_container_width=True) diff --git a/pages/4_about.py b/pages/4_about.py deleted file mode 100644 index d753e3b..0000000 --- a/pages/4_about.py +++ /dev/null @@ -1,67 +0,0 @@ -# imports -import streamlit as st - -## streamlit config -st.set_page_config(layout="wide") - -# display header stuff -with open("readme.md") as f: - readme_code = f.read() - -f""" -{readme_code} -""" - -with open("requirements.txt") as f: - metrics_code = f.read() - -with st.expander("show `requirements.txt`", expanded=False): - st.code(metrics_code, line_numbers=True, language="python") - -with open("config.toml") as f: - config_code = f.read() - -with st.expander("show `config.toml`", expanded=False): - st.code(config_code, line_numbers=True, language="toml") - -with open("justfile") as f: - justfile_code = f.read() - -with st.expander("show `justfile`", expanded=False): - st.code(justfile_code, line_numbers=True, language="makefile") - -with open(".github/workflows/cicd.yaml") as f: - cicd_code = f.read() - -with st.expander("show `cicd.yaml`", expanded=False): - st.code(cicd_code, line_numbers=True, language="yaml") - - -col0, col1 = st.columns(2) -with col0: - """ - Built with [Ibis](https://ibis-project.org) and other OSS: - - - [DuckDB](https://duckdb.org) (databases, query engine) - - [Streamlit](https://streamlit.io) (dashboard) - - [Plotly](https://plotly.com/python) (plotting) - - [Dagster](https://dagster.io) (DAG pipeline) - - [justfile](https://github.com/casey/just) (command runner) - - [TOML](https://toml.io) (configuration)""" - -with col1: - """ - And some freemium cloud services: - - - [GitHub](https://github.com/ibis-project/ibis-analytics) (source control, CI/CD, source data) - - [Google BigQuery](https://cloud.google.com/free/docs/free-cloud-features#bigquery) (source data) - - [Zulip](https://zulip.com) (source data) - - [Azure](https://azure.microsoft.com) (VM, storage backups) - - [Streamlit Community Cloud](https://docs.streamlit.io/streamlit-community-cloud) (cloud hosting for dashboard) - - [MotherDuck](https://motherduck.com/) (cloud hosting for production databases)""" - - -""" - -:violet[**Note**]: data is refreshed every day. Check [the CI/CD pipeline for the latest run](https://github.com/ibis-project/ibis-analytics/actions/workflows/cicd.yaml). -""" diff --git a/pyproject.toml b/pyproject.toml index f6483e4..813e580 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -2,7 +2,49 @@ requires = ["hatchling"] build-backend = "hatchling.build" +[tool.hatch.metadata] +allow-direct-references = true + [project] -name = "dag" +name = "ibis-analytics" version = "0.1.0" +authors = [{ name = "Cody", email = "cody@dkdc.dev" }] +description = "Ibis analytics with Ibis" +readme = "readme.md" +requires-python = ">=3.9" +classifiers = [ + "Programming Language :: Python :: 3", + "License :: OSI Approved :: MIT License", + "Operating System :: OS Independent", +] +dependencies = [ + # secret management + 'python-dotenv', + # http + 'zulip', + 'httpx', + 'requests', + # cli + 'typer', + # cloud + 'gcsfs', + # data + 'ibis-framework[duckdb,polars,clickhouse,deltalake]', + # visualization + 'plotly', + 'great-tables', + # dashboards and apps + 'shiny>=1.0.0', + 'shinywidgets>=0.3.3', + 'shinyswatch>=0.7.0', +] + +[project.urls] +"Homepage" = "https://github.com/lostmygithubaccount/ibis-analytics" +"Bug Tracker" = "https://github.com/lostmygithubaccount/ibis-analytics/issues" + +[project.scripts] +ia = "ibis_analytics.cli:app" +[tool.ruff] +extend-include = ["*.ipynb"] diff --git a/readme.md b/readme.md index 61c4982..3b83050 100644 --- a/readme.md +++ b/readme.md @@ -1,7 +1,11 @@ -# ibis-analytics +# Ibis analytics -[![cicd](https://github.com/ibis-project/ibis-analytics/workflows/cicd/badge.svg)](https://github.com/ibis-project/ibis-analytics/actions/workflows/cicd.yaml) +***Ibis analytics with Ibis.*** -This is an end-to-end analytics project for [Ibis](https://ibis-project.org), ingesting and processing >10M rows of data at little to no cost. +## Getting started -[Check out the blog](https://ibis-project.org/posts/ibis-analytics/) or [the dashboard](https://ibis-analytics.streamlit.app/). +[See the documentation](https://lostmygithubaccount.github.io/ibis-analytics). + +## Contributing + +Contributions welcome. diff --git a/requirements.txt b/requirements.txt index 9b06092..e714c16 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,21 +1,2 @@ -# python -ruff -build -python-dotenv - -# web clients -httpx -zulip - -# data -duckdb==0.10.2 -ibis-framework[duckdb,bigquery,deltalake] @ git+https://github.com/ibis-project/ibis - -# viz -plotly -streamlit - -# ops -dagster -dagster-webserver - +-e . +#ibis-analytics diff --git a/dag/assets/extract/__init__.py b/src/ibis_analytics/__init__.py similarity index 100% rename from dag/assets/extract/__init__.py rename to src/ibis_analytics/__init__.py diff --git a/src/ibis_analytics/catalog.py b/src/ibis_analytics/catalog.py new file mode 100644 index 0000000..0b02d06 --- /dev/null +++ b/src/ibis_analytics/catalog.py @@ -0,0 +1,62 @@ +# imports +import os +import ibis + +from ibis_analytics.config import CLOUD, BUCKET, DATA_DIR + + +# functions +def delta_table_filename(table_name: str) -> str: + return f"{table_name}.delta" + + +def delta_table_path(table_name: str) -> str: + return os.path.join(DATA_DIR, delta_table_filename(table_name)) + + +def read_table(table_name: str) -> ibis.Table: + if CLOUD: + import gcsfs + + fs = gcsfs.GCSFileSystem(token="anon") + ibis.get_backend().register_filesystem(fs) + + table_path = f"gs://{BUCKET}/{delta_table_path(table_name)}" + else: + table_path = delta_table_path(table_name) + + return ibis.read_delta(table_path) + + +def write_table(t: ibis.Table, table_name: str) -> None: + if CLOUD: + import gcsfs + + fs = gcsfs.GCSFileSystem() + ibis.get_backend().register_filesystem(fs) + + table_path = f"gs://{BUCKET}/{delta_table_path(table_name)}" + else: + table_path = delta_table_path(table_name) + + t.to_delta( + table_path, + mode="overwrite", + partition_by=["extracted_at"], + ) + + +# classes +class Catalog: + def list_tables(self): + return [ + d + for d in os.listdir(DATA_DIR) + if not (d.startswith("_") or d.startswith(".")) + ] + + def table(self, table_name): + return read_table(table_name) + + def write_table(self, t, table_name): + write_table(t, table_name) diff --git a/src/ibis_analytics/cli.py b/src/ibis_analytics/cli.py new file mode 100644 index 0000000..e7489e7 --- /dev/null +++ b/src/ibis_analytics/cli.py @@ -0,0 +1,189 @@ +import os +import typer +import httpx +import subprocess + +from ibis_analytics.etl import main as etl_main +from ibis_analytics.ingest import main as ingest_main +from ibis_analytics.catalog import delta_table_path + +from ibis_analytics.config import ( + DATA_DIR, + RAW_DATA_DIR, + GH_PRS_TABLE, + GH_FORKS_TABLE, + GH_STARS_TABLE, + GH_ISSUES_TABLE, + GH_COMMITS_TABLE, + GH_WATCHERS_TABLE, +) + +TYPER_KWARGS = { + "no_args_is_help": True, + "add_completion": False, + "context_settings": {"help_option_names": ["-h", "--help"]}, +} +app = typer.Typer(help="acc", **TYPER_KWARGS) +clean_app = typer.Typer(help="Clean the data lake.", **TYPER_KWARGS) + +## add subcommands +app.add_typer(clean_app, name="clean") + +## add subcommand aliases +app.add_typer(clean_app, name="c", hidden=True) + + +# helper functions +def check_ingested_data_exists() -> bool: + # check that the ingested data exists + if not os.path.exists(os.path.join(DATA_DIR, RAW_DATA_DIR)): + typer.echo("run `acc ingest` first!") + return False + return True + + +def check_data_lake_exists() -> bool: + # check that the data lake exists + tables = [ + GH_PRS_TABLE, + GH_FORKS_TABLE, + GH_STARS_TABLE, + GH_ISSUES_TABLE, + GH_COMMITS_TABLE, + GH_WATCHERS_TABLE, + ] + for table in tables: + if not os.path.exists(delta_table_path(table)): + typer.echo("run `acc run` first!") + return False + return True + + +# commands +@app.command() +def ingest(): + """Ingest source data.""" + # ensure project config exists + try: + ingest_main() + except KeyboardInterrupt: + typer.echo("stopping...") + + except Exception as e: + typer.echo(f"error: {e}") + + +@app.command() +@app.command("etl", hidden=True) +def run( + override: bool = typer.Option( + False, "--override", "-o", help="Override checks", show_default=True + ), +): + """Run ETL.""" + + etl_main() + # ensure data is ingested + # if not override and not check_ingested_data_exists(): + # return + + # try: + # etl_main() + # except KeyboardInterrupt: + # typer.echo("stopping...") + # except Exception as e: + # typer.echo(f"error: {e}") + + +@app.command() +@app.command("dash", hidden=True) +@app.command("metrics", hidden=True) +def dashboard(): + """Open the dashboard.""" + + # ensure data is ingested + if not check_ingested_data_exists(): + return + + # ensure data lake exists + if not check_data_lake_exists(): + return + + if not os.path.exists("dashboard.py"): + url = "https://raw.githubusercontent.com/lostmygithubaccount/ibis-analytics/main/dashboard.py" + + response = httpx.get(url) + if response.status_code != 200: + typer.echo(f"error: {response.text}") + return + dashboard_code = response.text + + typer.echo("creating dashboard.py...") + with open("dashboard.py", "w") as f: + f.write(dashboard_code) + else: + typer.echo("found dashboard.py") + + typer.echo("opening dashboard...") + + cmd = "shiny run dashboard.py -b" + subprocess.call(cmd, shell=True) + + +@clean_app.command("lake") +def clean_lake( + override: bool = typer.Option( + False, "--override", "-o", help="Override checks", show_default=True + ), +): + """Clean the data lake.""" + # ensure the data lake exists + if not override and not check_data_lake_exists(): + return + + tables = [ + GH_PRS_TABLE, + GH_FORKS_TABLE, + GH_STARS_TABLE, + GH_ISSUES_TABLE, + GH_COMMITS_TABLE, + GH_WATCHERS_TABLE, + ] + + for table in tables: + cmd = f"rm -rf {delta_table_path(table)}/" + typer.echo(f"running: {cmd}...") + subprocess.call(cmd, shell=True) + + +@clean_app.command("ingest") +def clean_ingest( + override: bool = typer.Option( + False, "--override", "-o", help="Override checks", show_default=True + ), + confirm: bool = typer.Option( + True, "--confirm", "-c", help="Confirm deletion", show_default=True + ), +): + """Clean the raw data.""" + # ensure the data ingested exists + if not override and not check_ingested_data_exists(): + return + + if confirm: + typer.confirm("Are you sure you want to delete the ingested data?", abort=True) + + cmd = f"rm -rf {os.path.join(DATA_DIR, RAW_DATA_DIR)}/" + typer.echo(f"running: {cmd}...") + subprocess.call(cmd, shell=True) + + +@clean_app.command("all") +def clean_all(): + """Clean all the data.""" + clean_lake() + clean_ingest() + + +if __name__ == "__main__": + typer.run(app) diff --git a/src/ibis_analytics/config.py b/src/ibis_analytics/config.py new file mode 100644 index 0000000..9415499 --- /dev/null +++ b/src/ibis_analytics/config.py @@ -0,0 +1,26 @@ +GH_REPO = "ibis-project/ibis" +PYPI_PACKAGE = "ibis-framework" + +ZULIP_URL = "https://ibis-project.zulipchat.com" +DOCS_URL = "https://ibis.goatcounter.com" + +CLOUD = True +BUCKET = "ibis-analytics" + +DATA_DIR = "datalake" +RAW_DATA_DIR = "_raw" +RAW_DATA_GH_DIR = "github" +RAW_DATA_DOCS_DIR = "docs" +RAW_DATA_PYPI_DIR = "pypi" +RAW_DATA_ZULIP_DIR = "zulip" + +GH_PRS_TABLE = "gh_prs" +GH_FORKS_TABLE = "gh_forks" +GH_STARS_TABLE = "gh_stars" +GH_ISSUES_TABLE = "gh_issues" +GH_COMMITS_TABLE = "gh_commits" +GH_WATCHERS_TABLE = "gh_watchers" +DOCS_TABLE = "docs" +PYPI_TABLE = "pypi" +ZULIP_MEMBERS_TABLE = "zulip_members" +ZULIP_MESSAGES_TABLE = "zulip_messages" diff --git a/src/ibis_analytics/etl/__init__.py b/src/ibis_analytics/etl/__init__.py new file mode 100644 index 0000000..0e3e045 --- /dev/null +++ b/src/ibis_analytics/etl/__init__.py @@ -0,0 +1,106 @@ +# imports +from ibis_analytics.config import ( + GH_PRS_TABLE, + GH_FORKS_TABLE, + GH_STARS_TABLE, + GH_ISSUES_TABLE, + GH_COMMITS_TABLE, + GH_WATCHERS_TABLE, + DOCS_TABLE, + ZULIP_MEMBERS_TABLE, + ZULIP_MESSAGES_TABLE, +) +from ibis_analytics.catalog import Catalog +from ibis_analytics.etl.extract import ( + gh_prs as extract_gh_prs, + gh_forks as extract_gh_forks, + gh_stars as extract_gh_stars, + gh_issues as extract_gh_issues, + gh_commits as extract_gh_commits, + gh_watchers as extract_gh_watchers, + docs as extract_docs, + zulip_members as extract_zulip_members, + zulip_messages as extract_zulip_messages, +) +from ibis_analytics.etl.transform import ( + gh_prs as transform_gh_prs, + gh_forks as transform_gh_forks, + gh_stars as transform_gh_stars, + gh_issues as transform_gh_issues, + gh_commits as transform_gh_commits, + gh_watchers as transform_gh_watchers, + docs as transform_docs, + zulip_members as transform_zulip_members, + zulip_messages as transform_zulip_messages, +) + + +# functions +def main(): + # instantiate catalog + catalog = Catalog() + + # extract + extract_gh_prs_t = extract_gh_prs() + extract_gh_forks_t = extract_gh_forks() + extract_gh_stars_t = extract_gh_stars() + extract_gh_issues_t = extract_gh_issues() + extract_gh_commits_t = extract_gh_commits() + extract_gh_watchers_t = extract_gh_watchers() + extract_docs_t = extract_docs() + extract_zulip_members_t = extract_zulip_members() + extract_zulip_messages_t = extract_zulip_messages() + + # data validation + for t in [ + extract_gh_prs_t, + extract_gh_forks_t, + extract_gh_stars_t, + extract_gh_issues_t, + extract_gh_commits_t, + extract_gh_watchers_t, + extract_docs_t, + extract_zulip_members_t, + extract_zulip_messages_t, + ]: + assert ( + t.count().to_pyarrow().as_py() > 0 + ), f"No extracted data for {t.get_name()}" + + # transform + transform_gh_prs_t = transform_gh_prs(extract_gh_prs_t) + transform_gh_forks_t = transform_gh_forks(extract_gh_forks_t) + transform_gh_stars_t = transform_gh_stars(extract_gh_stars_t) + transform_gh_issues_t = transform_gh_issues(extract_gh_issues_t) + transform_gh_commits_t = transform_gh_commits(extract_gh_commits_t) + transform_gh_watchers_t = transform_gh_watchers(extract_gh_watchers_t) + transform_docs_t = transform_docs(extract_docs_t) + transform_zulip_members_t = transform_zulip_members(extract_zulip_members_t) + transform_zulip_messages_t = transform_zulip_messages(extract_zulip_messages_t) + + # data validation + for t in [ + transform_gh_prs_t, + transform_gh_forks_t, + transform_gh_stars_t, + transform_gh_issues_t, + transform_gh_commits_t, + transform_gh_watchers_t, + transform_docs_t, + transform_zulip_members_t, + transform_zulip_messages_t, + ]: + assert ( + t.count().to_pyarrow().as_py() > 0 + ), f"No transformed data for {t.get_name()}" + + # load + catalog.write_table(transform_gh_prs_t, GH_PRS_TABLE) + catalog.write_table(transform_gh_forks_t, GH_FORKS_TABLE) + catalog.write_table(transform_gh_stars_t, GH_STARS_TABLE) + catalog.write_table(transform_gh_issues_t, GH_ISSUES_TABLE) + catalog.write_table(transform_gh_commits_t, GH_COMMITS_TABLE) + catalog.write_table(transform_gh_watchers_t, GH_WATCHERS_TABLE) + catalog.write_table(transform_docs_t, DOCS_TABLE) + catalog.write_table(transform_zulip_members_t, ZULIP_MEMBERS_TABLE) + catalog.write_table(transform_zulip_messages_t, ZULIP_MESSAGES_TABLE) diff --git a/src/ibis_analytics/etl/extract.py b/src/ibis_analytics/etl/extract.py new file mode 100644 index 0000000..6603aec --- /dev/null +++ b/src/ibis_analytics/etl/extract.py @@ -0,0 +1,157 @@ +# imports +import os +import ibis + +from datetime import datetime +from ibis_analytics.config import ( + DATA_DIR, + RAW_DATA_DIR, + RAW_DATA_GH_DIR, + RAW_DATA_DOCS_DIR, + RAW_DATA_ZULIP_DIR, +) + +# set extracted_at timestamp +extracted_at = datetime.utcnow().isoformat() + + +# functions +def add_extracted_at(t): + """Add extracted_at column to table.""" + + # add extracted_at column and relocate it to the first position + t = t.mutate(extracted_at=ibis.literal(extracted_at)).relocate("extracted_at") + + return t + + +def constraints(t): + """Check common constraints for extracted tables.""" + + assert t.count().to_pyarrow().as_py() > 0, "table is empty!" + + return t + + +# extract data assets +def gh_commits(): + """Extract GitHub commits data.""" + + # read in raw data + data_glob = os.path.join(DATA_DIR, RAW_DATA_DIR, RAW_DATA_GH_DIR, "commits.*.json") + gh_commits = ibis.read_json(data_glob) + + # add extracted_at column + gh_commits = gh_commits.pipe(add_extracted_at).pipe(constraints) + + return gh_commits + + +def gh_issues(): + """Extract GitHub issues data.""" + + # read in raw data + data_glob = os.path.join(DATA_DIR, RAW_DATA_DIR, RAW_DATA_GH_DIR, "issues.*.json") + gh_issues = ibis.read_json(data_glob) + + # add extracted_at column + gh_issues = gh_issues.pipe(add_extracted_at).pipe(constraints) + + return gh_issues + + +def gh_prs(): + """Extract GitHub pull request (PR) data.""" + + # read in raw data + data_glob = os.path.join( + DATA_DIR, RAW_DATA_DIR, RAW_DATA_GH_DIR, "pullRequests.*.json" + ) + gh_prs = ibis.read_json(data_glob) + + # add extracted_at column + gh_prs = gh_prs.pipe(add_extracted_at).pipe(constraints) + + return gh_prs + + +def gh_forks(): + """Extract GitHub forks data.""" + + # read in raw data + data_glob = os.path.join(DATA_DIR, RAW_DATA_DIR, RAW_DATA_GH_DIR, "forks.*.json") + gh_forks = ibis.read_json(data_glob) + + # add extracted_at column + gh_forks = gh_forks.pipe(add_extracted_at).pipe(constraints) + + return gh_forks + + +def gh_stars(): + """Extract GitHub stargazers data.""" + + # read in raw data + data_glob = os.path.join( + DATA_DIR, RAW_DATA_DIR, RAW_DATA_GH_DIR, "stargazers.*.json" + ) + gh_stars = ibis.read_json(data_glob) + + # add extracted_at column + gh_stars = gh_stars.pipe(add_extracted_at).pipe(constraints) + + return gh_stars + + +def gh_watchers(): + """Extract GitHub watchers data.""" + + # read in raw data + data_glob = os.path.join(DATA_DIR, RAW_DATA_DIR, RAW_DATA_GH_DIR, "watchers.*.json") + gh_watchers = ibis.read_json(data_glob) + + # add extracted_at column + gh_watchers = gh_watchers.pipe(add_extracted_at).pipe(constraints) + + return gh_watchers + + +def docs(): + """Extract documentation data.""" + + # read in raw data + data_glob = os.path.join(DATA_DIR, RAW_DATA_DIR, RAW_DATA_DOCS_DIR, "*.csv.gz") + docs = ibis.read_csv(data_glob) + + # add extracted_at column + docs = docs.pipe(add_extracted_at).pipe(constraints) + + return docs + + +def zulip_members(): + """Extract Zulip members data.""" + + # read in raw data + data_glob = os.path.join(DATA_DIR, RAW_DATA_DIR, RAW_DATA_ZULIP_DIR, "members.json") + zulip_members = ibis.read_json(data_glob) + + # add extracted_at column + zulip_members = zulip_members.pipe(add_extracted_at).pipe(constraints) + + return zulip_members + + +def zulip_messages(): + """Extract Zulip messages data.""" + + # read in raw data + data_glob = os.path.join( + DATA_DIR, RAW_DATA_DIR, RAW_DATA_ZULIP_DIR, "messages.json" + ) + zulip_messages = ibis.read_json(data_glob) + + # add extracted_at column + zulip_messages = zulip_messages.pipe(add_extracted_at).pipe(constraints) + + return zulip_messages diff --git a/src/ibis_analytics/etl/load.py b/src/ibis_analytics/etl/load.py new file mode 100644 index 0000000..68c4527 --- /dev/null +++ b/src/ibis_analytics/etl/load.py @@ -0,0 +1,11 @@ +# imports +from ibis_analytics.catalog import Catalog + + +# functions +def load_table(table, table_name): + # instantiate catalog + catalog = Catalog() + + # load + catalog.write_table(table, table_name) diff --git a/src/ibis_analytics/etl/transform.py b/src/ibis_analytics/etl/transform.py new file mode 100644 index 0000000..8ba6122 --- /dev/null +++ b/src/ibis_analytics/etl/transform.py @@ -0,0 +1,223 @@ +# imports +import re +import ibis +import ibis.selectors as s + + +# transform functions +def preprocess(t): + """Common preprocessing steps.""" + + # ensure unique records + t = t.rename("snake_case") + t = t.distinct(on=~s.c("extracted_at"), keep="first").order_by("extracted_at") + + return t + + +def postprocess(t): + """Common postprocessing steps.""" + + # ensure consistent column casing + t = t.rename("snake_case") + + return t + + +# transform data assets +def gh_commits(gh_commits): + """Transform GitHub commits data.""" + + def transform(t): + t = t.unpack("node").unpack("author").rename("snake_case") + t = t.order_by(ibis._["committed_date"].desc()) + t = t.mutate(total_commits=ibis._.count().over(rows=(0, None))) + return t + + gh_commits = gh_commits.pipe(preprocess).pipe(transform).pipe(postprocess) + return gh_commits + + +def gh_issues(gh_issues): + """Transform GitHub issues data.""" + + def transform(t): + issue_state = ( + ibis.case().when(ibis._["is_closed"], "closed").else_("open").end() + ) + + t = t.unpack("node").unpack("author").rename("snake_case") + t = t.order_by(ibis._["created_at"].desc()) + t = t.mutate(is_closed=(ibis._["closed_at"] != None)) + t = t.mutate(total_issues=ibis._.count().over(rows=(0, None))) + t = t.mutate(state=issue_state) + t = ( + t.mutate( + is_first_issue=( + ibis.row_number().over( + ibis.window(group_by="login", order_by=t["created_at"]) + ) + == 0 + ) + ) + .relocate("is_first_issue", "login", "created_at") + .order_by(t["created_at"].desc()) + ) + return t + + gh_issues = gh_issues.pipe(preprocess).pipe(transform).pipe(postprocess) + return gh_issues + + +def gh_prs(gh_prs): + """Transform GitHub pull request (PR) data.""" + + def transform(t): + pull_state = ( + ibis.case() + .when(ibis._["is_merged"], "merged") + .when(ibis._["is_closed"], "closed") + .else_("open") + .end() + ) + + t = t.unpack("node").unpack("author").rename("snake_case") + t = t.order_by(ibis._["created_at"].desc()) + t = t.mutate(is_merged=(ibis._["merged_at"] != None)) + t = t.mutate(is_closed=(ibis._["closed_at"] != None)) + t = t.mutate(total_pulls=ibis._.count().over(rows=(0, None))) + # to remove bots + # t = t.filter( + # ~( + # (ibis._.login == "ibis-squawk-bot") + # | (ibis._.login == "pre-commit-ci") + # | (ibis._.login == "renovate") + # ) + # ) + t = t.mutate(state=pull_state) + t = t.mutate( + merged_at=ibis._["merged_at"].cast("timestamp") + ) # TODO: temporary fix + + # add first pull by login + t = ( + t.mutate( + is_first_pull=( + ibis.row_number().over( + ibis.window(group_by="login", order_by=t["created_at"]) + ) + == 0 + ) + ) + .relocate("is_first_pull", "login", "created_at") + .order_by(t["created_at"].desc()) + ) + return t + + gh_prs = gh_prs.pipe(preprocess).pipe(transform).pipe(postprocess) + return gh_prs + + +def gh_forks(gh_forks): + """Transform GitHub forks data.""" + + def transform(t): + t = t.unpack("node").unpack("owner").rename("snake_case") + t = t.order_by(ibis._["created_at"].desc()) + t = t.mutate(total_forks=ibis._.count().over(rows=(0, None))) + return t + + gh_forks = gh_forks.pipe(preprocess).pipe(transform).pipe(postprocess) + return gh_forks + + +def gh_stars(gh_stars): + """Transform GitHub stargazers data.""" + + def transform(t): + t = t.unpack("node").rename("snake_case") + # TODO: fix + t = t.order_by(ibis._["starred_at"].desc()) + t = t.mutate(company=ibis._["company"].fill_null("Unknown")) + t = t.mutate(total_stars=ibis._.count().over(rows=(0, None))) + return t + + gh_stars = gh_stars.pipe(preprocess).pipe(transform).pipe(postprocess) + return gh_stars + + +def gh_watchers(gh_watchers): + """Transform GitHub watchers data.""" + + def transform(t): + t = t.unpack("node").rename("snake_case") + # TODO: fix this + t = t.order_by(ibis._["updated_at"].desc()) + t = t.mutate(total_t=ibis._.count().over(rows=(0, None))) + t = t.order_by(ibis._["updated_at"].desc()) + return t + + gh_watchers = gh_watchers.pipe(preprocess).pipe(transform).pipe(postprocess) + return gh_watchers + + +def docs(t): + """ + Transform the docs data. + """ + + def transform(t): + t = t.rename({"path": "2_path", "timestamp": "date"}) + return t + + docs = t.pipe(preprocess).pipe(transform).pipe(postprocess) + return docs + + +def zulip_members(t): + """ + Transform the Zulip members data. + """ + + def transform(t): + # t = t.mutate(date_joined=ibis._["date_joined"].cast("timestamp")) + t = t.filter(ibis._["is_bot"] == False) + t = t.mutate( + total_members=ibis._.count().over( + rows=(0, None), order_by=ibis.desc("date_joined") + ) + ) + t = t.relocate("full_name", "date_joined", "timezone") + return t + + zulip_members = t.pipe(preprocess).pipe(transform).pipe(postprocess) + return zulip_members + + +def zulip_messages(t): + """ + Transform the Zulip messages data. + """ + + def transform(t): + t = t.mutate( + timestamp=ibis._["timestamp"].cast("timestamp"), + last_edit_timestamp=ibis._["last_edit_timestamp"].cast("timestamp"), + ) + t = t.filter(ibis._["stream_id"] != 405931) + t = t.mutate( + total_messages=ibis._.count().over( + rows=(0, None), order_by=ibis.desc("timestamp") + ) + ) + t = t.relocate( + "sender_full_name", + "display_recipient", + "subject", + "timestamp", + "last_edit_timestamp", + ) + return t + + zulip_messages = t.pipe(preprocess).pipe(transform).pipe(postprocess) + return zulip_messages diff --git a/dag/ingest.py b/src/ibis_analytics/ingest/__init__.py similarity index 66% rename from dag/ingest.py rename to src/ibis_analytics/ingest/__init__.py index 3445c98..127a6d5 100644 --- a/dag/ingest.py +++ b/src/ibis_analytics/ingest/__init__.py @@ -1,21 +1,32 @@ # imports import os +import sys import ibis -import time -import toml import json +import time import httpx import zulip -import inspect +import tomllib as toml import requests import logging as log -from ibis import _ from dotenv import load_dotenv -from datetime import datetime, timedelta, date - -from dag.graphql_queries import ( +from datetime import datetime, timedelta + +from ibis_analytics.config import ( + GH_REPO, + PYPI_PACKAGE, + ZULIP_URL, + DOCS_URL, + DATA_DIR, + RAW_DATA_DIR, + RAW_DATA_GH_DIR, + RAW_DATA_DOCS_DIR, + RAW_DATA_ZULIP_DIR, + RAW_DATA_PYPI_DIR, +) +from ibis_analytics.ingest.graphql_queries import ( issues_query, pulls_query, forks_query, @@ -24,18 +35,22 @@ watchers_query, ) +# configure logger +log.basicConfig(level=log.INFO) + # main function def main(): + """ + Ingest data. + """ # load environment variables load_dotenv() # ingest data - # ingest_docs() - ingest_zulip() - ingest_pypi() - ingest_gh() - # ingest_ci() # TODO: fix permissions, add assets + ingest_gh(gh_repo=GH_REPO) + ingest_zulip(zulip_url=ZULIP_URL) + ingest_docs(docs_url=DOCS_URL) # helper functions @@ -46,12 +61,15 @@ def write_json(data, filename): # ingest functions -def ingest_gh(): +def ingest_gh(gh_repo): """ - Ingest the GitHub data. + Ingest GitHub data. """ - # configure logger - log.basicConfig(level=log.INFO) + + def write_json(data, filename): + # write the data to a file + with open(filename, "w") as f: + json.dump(data, f, indent=4) # constants GRAPH_URL = "https://api.github.com/graphql" @@ -59,9 +77,7 @@ def ingest_gh(): # load environment variables GH_TOKEN = os.getenv("GITHUB_TOKEN") - # load config - config = toml.load("config.toml")["ingest"]["github"] - log.info(f"Using repos: {config['repos']}") + assert GH_TOKEN is not None and GH_TOKEN != "", "GITHUB_TOKEN is not set" # construct header headers = { @@ -162,6 +178,7 @@ def fetch_data(client, owner, repo, query_name, query, output_dir, num_items=100 filename = get_filename(query_name, page) output_path = os.path.join(output_dir, filename) log.info(f"\t\tWriting data to {output_path}") + write_json(data, output_path) variables["cursor"] = f"{cursor}" @@ -172,135 +189,35 @@ def fetch_data(client, owner, repo, query_name, query, output_dir, num_items=100 # increment page number page += 1 - except: + except Exception as e: # print error if response - log.error(f"\t\tFailed to fetch data for {owner}/{repo}") + log.error(f"\t\tFailed to fetch data for {owner}/{repo}: {e}") try: log.error(f"\t\t\tResponse: {resp.text}") - except: - pass - + except Exception as e: + log.error(f"\t\t\tFailed to print response: {e}") break # create a requests session with requests.Session() as client: - for repo in config["repos"]: + for repo in [gh_repo]: log.info(f"Fetching data for {repo}...") for query in queries: owner, repo_name = repo.split("/") output_dir = os.path.join( - "data", - "ingest", - "github", - owner, - repo_name, + DATA_DIR, + RAW_DATA_DIR, + RAW_DATA_GH_DIR, ) os.makedirs(output_dir, exist_ok=True) log.info(f"\tFetching data for {owner}/{repo_name} {query}...") fetch_data(client, owner, repo_name, query, queries[query], output_dir) -def ingest_pypi(): - """ - Ingest the PyPI data. - """ - # constants - # set DEFAULT_BACKFILL to the number of days - # since July 19th, 2015 until today - DEFAULT_BACKFILL = (datetime.now() - datetime(2015, 7, 19)).days - BIGQUERY_DATASET = "bigquery-public-data.pypi.file_downloads" - - # configure logger - log.basicConfig(level=log.INFO) - - # load environment variables - project_id = os.getenv("BQ_PROJECT_ID") - log.info(f"Project ID: {project_id}") - - # load config - config = toml.load("config.toml")["ingest"]["pypi"] - log.info(f"Packages: {config['packages']}") - - # configure lookback window - backfill = config["backfill"] if "backfill" in config else DEFAULT_BACKFILL - log.info(f"Backfill: {backfill}") - - # for each package - for package in config["packages"]: - log.info(f"Package: {package}") - # create output directory - output_dir = os.path.join("data", "ingest", "pypi", package) - os.makedirs(output_dir, exist_ok=True) - - # construct query - query = f""" - SELECT * - FROM `{BIGQUERY_DATASET}` - WHERE file.project = '{package}' - AND DATE(timestamp) - BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL {backfill} DAY) - AND CURRENT_DATE() - """.strip() - query = inspect.cleandoc(query) - - # connect to bigquery and execute query - con = ibis.connect(f"bigquery://{project_id}") - log.info(f"Executing query:\n{query}") - t = con.sql(query) - - # write to parquet - filename = f"file_downloads.parquet" - output_path = os.path.join(output_dir, filename) - log.info(f"Writing to: {output_path}") - t.to_parquet(output_path) - - -def ingest_ci(): - """ - Ingest the CI data. - """ - # constants - # set DEFAULT_BACKFILL to the number of days - # since July 19th, 2015 until today - DEFAULT_BACKFILL = (datetime.now() - datetime(2015, 7, 19)).days - - # configure logger - log.basicConfig(level=log.INFO) - - # load environment variables - project_id = os.getenv("BQ_PROJECT_ID") - log.info(f"Project ID: {project_id}") - - # load config - config = toml.load("config.toml")["ingest"]["ci"] - - # configure lookback window - backfill = config["backfill"] if "backfill" in config else DEFAULT_BACKFILL - log.info(f"Backfill: {backfill}") - - # make sure the data directory exists - os.makedirs("data/ingest/ci/ibis", exist_ok=True) - - # connect to databases - con = ibis.connect("duckdb://data/ingest/ci/ibis/raw.ddb") - bq_con = ibis.connect(f"bigquery://{project_id}/workflows") - - # copy over tables - for table in bq_con.list_tables(): - log.info(f"Writing table: {table}") - con.create_table(table, bq_con.table(table).to_pyarrow(), overwrite=True) - - -def ingest_zulip(): +def ingest_zulip(zulip_url, zulip_email: str = "cody@dkdc.dev"): """Ingest the Zulip data.""" - # constants - email = "cody@dkdc.dev" - # load config - config = toml.load("config.toml")["ingest"]["zulip"] - log.info(f"Using url: {config['url']}") - # configure logger log.basicConfig(level=log.INFO) @@ -308,7 +225,7 @@ def ingest_zulip(): zulip_key = os.getenv("ZULIP_KEY") # create the client - client = zulip.Client(email=email, site=config["url"], api_key=zulip_key) + client = zulip.Client(email=zulip_email, site=zulip_url, api_key=zulip_key) # get the users r = client.get_members() @@ -316,12 +233,12 @@ def ingest_zulip(): log.error(f"Failed to get users: {r}") else: members = r["members"] - # make sure the directory exists - os.makedirs("data/ingest/zulip", exist_ok=True) # write the users to a file filename = "members.json" - output_path = os.path.join("data", "ingest", "zulip", filename) + output_dir = os.path.join(DATA_DIR, RAW_DATA_DIR, RAW_DATA_ZULIP_DIR) + os.makedirs(output_dir, exist_ok=True) + output_path = os.path.join(output_dir, filename) log.info(f"Writing members to: {output_path}") write_json(members, output_path) @@ -351,28 +268,23 @@ def ingest_zulip(): messages = r["messages"] all_messages.extend(messages) - # make sure the directory exists - os.makedirs("data/ingest/zulip", exist_ok=True) - # write the messages to a file filename = "messages.json" - output_path = os.path.join("data", "ingest", "zulip", filename) + output_dir = os.path.join(DATA_DIR, RAW_DATA_DIR, RAW_DATA_ZULIP_DIR) + os.makedirs(output_dir, exist_ok=True) + output_path = os.path.join(output_dir, filename) log.info(f"Writing messages to: {output_path}") write_json(all_messages, output_path) -def ingest_docs(): +def ingest_docs(docs_url): """Ingest the docs data.""" - # (not so) constants - endpoint = "/api/v0/export" # configure logger log.basicConfig(level=log.INFO) - # load config - config = toml.load("config.toml")["ingest"]["docs"] - log.info(f"Using url: {config['url']}") - url = config["url"] + url = docs_url + endpoint = "/api/v0/export" # load environment variables goat_token = os.getenv("GOAT_TOKEN") @@ -429,14 +341,57 @@ def ingest_docs(): # write the export to a file try: - os.makedirs("data/ingest/docs", exist_ok=True) - filename = os.path.join("data", "ingest", "docs", "goatcounter.csv.gz") - with open(filename, "wb") as f: + output_dir = os.path.join(DATA_DIR, RAW_DATA_DIR, RAW_DATA_DOCS_DIR) + os.makedirs(output_dir, exist_ok=True) + output_path = os.path.join( + DATA_DIR, RAW_DATA_DIR, RAW_DATA_DOCS_DIR, "goatcounter.csv.gz" + ) + with open(output_path, "wb") as f: f.write(r.content) except: log.error(f"Failed to write export to file: {r}") return -if __name__ == "__main__": - main() +# def ingest_pypi(pypi_package): +# """ +# Ingest PyPI data. +# """ +# log.info(f"Fetching data for {pypi_package}...") +# +# # define external source +# host = "clickpy-clickhouse.clickhouse.com" +# port = 443 +# user = "play" +# database = "pypi" +# +# ch_con = ibis.clickhouse.connect( +# host=host, +# port=port, +# user=user, +# database=database, +# ) +# +# # create output directory +# output_dir = os.path.join(DATA_DIR, RAW_DATA_DIR, "pypi") +# os.makedirs(output_dir, exist_ok=True) +# +# # get table and metadata +# t = ch_con.table( +# "pypi_downloads_per_day_by_version_by_installer_by_type_by_country" +# ).filter(ibis._["project"] == pypi_package) +# min_date = t["date"].min().to_pyarrow().as_py() +# max_date = t["date"].max().to_pyarrow().as_py() +# +# # write data to parquet files +# date = min_date +# while date <= max_date: +# old_date = date +# date += timedelta(days=7) +# a = t.filter(t["date"] >= old_date, t["date"] < date) +# +# filename = f"start_date={old_date.strftime('%Y-%m-%d')}.parquet" +# log.info(f"\tWriting data to {os.path.join(output_dir, filename)}...") +# if a.count().to_pyarrow().as_py() > 0: +# a.to_parquet(os.path.join(output_dir, filename)) +# log.info(f"\tData written to {os.path.join(output_dir, filename)}...") diff --git a/dag/graphql_queries.py b/src/ibis_analytics/ingest/graphql_queries.py similarity index 100% rename from dag/graphql_queries.py rename to src/ibis_analytics/ingest/graphql_queries.py diff --git a/src/ibis_analytics/metrics.py b/src/ibis_analytics/metrics.py new file mode 100644 index 0000000..18c5e40 --- /dev/null +++ b/src/ibis_analytics/metrics.py @@ -0,0 +1,49 @@ +# imports +import ibis +from ibis_analytics.catalog import Catalog +import ibis.selectors as s + +from ibis_analytics.config import ( + PYPI_PACKAGE, + GH_PRS_TABLE, + GH_FORKS_TABLE, + GH_STARS_TABLE, + GH_ISSUES_TABLE, + GH_COMMITS_TABLE, + GH_WATCHERS_TABLE, + DOCS_TABLE, + ZULIP_MEMBERS_TABLE, + ZULIP_MESSAGES_TABLE, +) + + +# connect to PyPI data in the ClickHouse Cloud playground +host = "clickpy-clickhouse.clickhouse.com" +port = 443 +user = "play" +database = "pypi" + +ch_con = ibis.clickhouse.connect( + host=host, + port=port, + user=user, + database=database, +) + +# connect to catalog +catalog = Catalog() + +# get source tables +# TODO: use table names from config +pulls_t = catalog.table(GH_PRS_TABLE).cache() +stars_t = catalog.table(GH_STARS_TABLE).cache() +forks_t = catalog.table(GH_FORKS_TABLE).cache() +issues_t = catalog.table(GH_ISSUES_TABLE).cache() +commits_t = catalog.table(GH_COMMITS_TABLE).cache() +watchers_t = catalog.table(GH_WATCHERS_TABLE).cache() +downloads_t = ch_con.table( + "pypi_downloads_per_day_by_version_by_installer_by_type_by_country" +).filter(ibis._["project"] == PYPI_PACKAGE) +docs_t = catalog.table(DOCS_TABLE).cache() +zulip_members_t = catalog.table(ZULIP_MEMBERS_TABLE).cache() +zulip_messages_t = catalog.table(ZULIP_MESSAGES_TABLE).cache() diff --git a/website/.gitignore b/website/.gitignore new file mode 100644 index 0000000..075b254 --- /dev/null +++ b/website/.gitignore @@ -0,0 +1 @@ +/.quarto/ diff --git a/website/_quarto.yml b/website/_quarto.yml new file mode 100644 index 0000000..1d4bcd9 --- /dev/null +++ b/website/_quarto.yml @@ -0,0 +1,31 @@ +project: + type: website + output-dir: _output + +# website +website: + # basics + title: "Ibis Analytics" + description: "Ibis analytics with Ibis." + #favicon: logo.png + search: false + + # options + reader-mode: false + twitter-card: true + back-to-top-navigation: true + repo-url: https://github.com/lostmygithubaccount/ibis-analytics + + # footer + page-footer: + border: false + center: "Python analytics accelerator" + right: + - icon: github + href: https://github.com/lostmygithubaccount/ibis-analytics + +# theme +format: + html: + theme: minty + toc: true diff --git a/website/img/layers.png b/website/img/layers.png new file mode 100644 index 0000000000000000000000000000000000000000..e4f721cd5cc1acb37955f0162243259c3095bed2 GIT binary patch literal 217101 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%0DP1$z|BngR_zsuhNz1n6ojy z{slGVR(8}RoE2j`kQn*2xJ>nsbcUL*a*ADQKE*5-D(oID3QbHJI;1|otQT?jyzSsf zsBFT~@}ns2Kz86bPkLO+_1=7qS0P5;JwH=d&2ZhUsRAdK^0&ESj0Y)`s&YOI{Mt15 z={c>K&%b(-I!(SW|5h-^_P&O^diQ(~n<=CzfTiA&oa6i(cD4pylJV^tF7d4l|-mf=x#8F6E+gD|UjqPK3I<>&BGUz(R~_UVEfA&Q8co zf4h?ZL|$3F((Y*2FHL4Z1g6~VI6T%AEBzfkW)#Zid>wzFH|B9g%SjRM%A4s2w7Ekc z5rzjk<`!Jae~bQJ|E->d_5}-?TYoj{Hsy^Lb7hqYWG3}-MQpf3oF7HGhr2RlP>|!M z4c2rZT$_o`CyA;<;5Q3-hI44sW_?_o3E!BH!egF16_HR38`fVhi@&gfG&7ZAr2TcO z)$+Y;LRkJ5(Bz{iv$j5ho@GT02@88J3J;Xd=m97OFJ2Coof(a(6jpMoD~UXR^X!>8 z&)yhqZM!3_HWQeIqN90=P2+5fBkeU(a>Q*O{7^QK-9dC9jLD-Nx9|{rdZ4Bp;P2NH z$q}XRrH(v63nEJuO5U}WZ=4~gJm5z!^dskszZcs+86IZCu$fC`sA)Ge`?AX%fkf8s z-WH`vuoF@m%#1PFs5KVW8b8eflo7qgyfyNhqF{3M+kxzy2RndY&aC#$+4jA;ricqt z1MENQ=>bD<5{}kPQ%if&FC54&1BGE2id?Nfxbkg5b35C!;?;yI1eVSKt!pN;iVR|5 z93++SL?EnZ&OE#pR_i-imqVC=oO=48Wv^=y!@?1aQa0&8Bjmt zv@w&icx6>J3mw5EnENI^D}d^F83n`A$zj*%#PZ38)Qa~`LPv@NB?;nC^ysa6I>6{B z2?JKi+BoBSwNMSFYoFeGmw(Lihx5DgL))yx`oKAvBO5dGVh?d^8Qw7<2grG|Pm1(& z{v`ckm-#Wr5mVnHhSgarHjHT+Qxp|LyHm>q*20?GvDrQ8VIzq7!(gwo3{j?St!6a_ zfb9%xR^hf{$n5TZtlM;k&^8uW?U` zrabj1t}dXL*Zu}hUyQRK~Cap2Txvl$I+Z=$MXj>1jXAQYr0Q?>f z<;p4IdF{;xaWPDOQlR0EOiy2dwEG2>$Yf$}WhGUvr?2hwHNuvKnYlTgH=@N>b3-_$ zNw9)&i*O2{v{@^VJ*PBJh&Z57XgjeGV#8V)x^;`Hy0d?87}F>P9tCMy3LVJ)N-HCz zQ=H-X7{%GM1%W{S<8h&^aE|pK#}J5C*_Rab`1>Vqj=%3hIqLNV>YBgL*nD<#`0vSY zzw~h$5aAz>drtqm!I%Lrm$=3laHc62v^ud8y|nI!*RkLmPs3^c`vOI8AlU$2QUdY1 zLYMd?+~AKwJ$K>+sm#aAcj}|#p#UOVy|n-Y9tfSl=g!D?+WwDgq{B7H&@Z;?o}&61 zoC~P)@x&e1_qTiP0SEuS{(CWJ_@r3=+>F9!Z3{6c$`BqLfMg7=0e%KmO1CK>Qk+`a zsPM_H*Q=H%?1TU&*ZS-Y7_USeqWv%e<8dTl{l@J|y4JSR$du1^dW)c)Y6$6npQy<}}Ba;OL(2+2xE5k!ELy`IUAeq&s4N|Cg()pIW zjq!?_%aoS}rdRImG+@**yp0^Q@oomP$L1bOS7VPE44#bv4tuY}$GQO-oDgJmj# zwL12R^2+qltQsVgys=_q&B5T@16QD^M&mNdtdcOA&WeZTE<+wIg$?pV;fkt z-gA`lejRR*jKB7fv~%nq$$i+X4j}JT17fb$iV;uV2|p>baazhXBs!s@7*_Y;#D$hO z|M=*bo$En)B~%7vj?;JJJ$q5E%o?1h8K+-B4UxYvMO?c{xsBJ$mte$UbdbhlVkDs!4H=-E$8fD1=l;D+ii}pKqnSn>uVP#RE zBTybXESe!18AKtf)dC3UC^fa`P=(_i!PBf zPlf0#UC8YtaXYM}1KImC7G+&SWD|h56m~>Y-g!?IC!As&wS$H7cPJJ&{U-j2)Ig=O z204(xerK^7*vc*;18*sXJa|k7&0W(BR@z$SI9&L z61G|7HtM~$0Gb^}SLl?XmGL!Hu~Mg6e0$ar(=?eoPcvG-aY$p?APsIX9o$$O{@x-4 zC24_JuYZ!K2jj+^{>F&Uc8+2`D--CnKI#04sj2c22+?H92^F(<&|i4)<$96qfXf0l zjWEZ$^Y!_rT(hCVDS6_q$BM4}kF;F1 z=RJD^D)Ru!Yxys8{q^RpCriZudeB&X`80t`c$fd_{|zf}CD--;cnqcgkDDR>w;VwD zG(|-E`vS+J4{ZbXUk9la|DT~K{|@i}4#E4^djDGQ-^l$J_x_Jpj{gG7|A&F4j9ld~ z$R}YMTz7lvfHnf%E9U^E{h&BQl@1*J=XsexsKcED{)=`TI(+!=GNVDL(usp`81dA8 zenIJz2~C6_`-Xr}qRkEL$ zOrQ_a==z3p43vd^`}S>~wD5a4e#;6R=l{XVK7N#pe|M7$(PKm|+;&Dbk{h7^d^|b# zk9WZ)m;ciW&;O-3o!;mx-RR|;CADs3Sswi~zBjyjkMtiF^4ENLw2<0L&G}2Le1}{5 zbh2!ERCxy%pXq9wBEK>uo116{99-+y#OsPP=;9kMm@@8ba3IWfp9o&8A4aGgFUR3_ z@ET4ybP{$9CVVsZCG9LcJ<50U*#JMYeJ9)g4!4cA(7ZV5*YDE@Jwy>T(P5}&w+q_L zjWH;I})slQ$0ucMSFbRz##INLtQ z`ZqLbw*UCY|6X?j{wIsxK8M-mf3oxK*ZyBR#cAo+bq^aKUrSX>TWJsQ_;fq=qw1w| zok(J-+4jsR|M$KKm~`AOr4fk5@DYLVu&@*iy0bGrI-2!{|5;4I{R_tyQyl+#V^#YR zKS{$AlAVt@gOA@=yX5-)Ecvx6CD>TAeUj6s-U95Qk2!h*%xc`BD(pv;^0lxv(SNUx zkG3!?dZ_B-kC~#|^|vt?yg*N(svE2&79PuXkH+UaSAi-*G8??QZA$F=q?R z$rrIY+({Z-1*9m7ybI^j6ajAk)ISVKuPCX2dfbEv{DtQf*}iH|@`dP}p%f$(-YYNRCd%)4(>cH7DW z0wM5|rlt*-RbG*_gE8Yze{ZC<%gvyyyA$|?!UcTgYJr|7-kz3@<`Od%!EsBQa{YOh zge9BrL812@16mrI-%hJe*{CZt_KuGH7L}hrs}|~V9lxKUHcF~^osh3O>n2+1%Cfm0 zlT>K?LN|Yd6SKmKA%=K2pUu&de|g=Rs>@+GE=Zq>DJ&^T?JL&2{Fs4VrtYCq1;NTC z${2a6=E^g?la)^3F*={)bl%6Qd>E%X71Y&3137|ZqwmTF$|eNT=TbKgG^A>9S&nb^ zq`hjMZ<>}_^M%3hUw#qQLsCgDuCDypOif+g`>+%_s;cnYFyVI5=J1#wU}(QcvmeQ| z&UdG>)spSfC|ZQgEE@+7Mc-`Vs_|4;C)QmcXc>gwoBYU@o3g`4TM-cvj3|GU0_YeiS{YLh0>~HJe0bHQ@${jy zt(GRIGhZkl^EIQ60lPhOe_?Qe(eKg#6MAN8Cd4->gF%qK<6H4zzepw!>N~pT-y4k? zIc5xMgCz|=?A@{1rOl?@1fQXAS849>XAOSuM)HRamxdnkd_mtH~vK zu4Xt}2YvriaR0k)?G%RNqkG|4Duz2)wsCCEb>QG2F&H%lKfE)uf3ja>4RB;mZ3nwB zp{*{k2AIK!_3VlhDjvsJ4lG&InOo59nQ4KPy!E{R6O-S${@4WVw$qz9YyI<$|C=6f z4Qb^?1vOh+TWzYG{XSo)yzj8B-#Df$z)ZL3S{al%sdvsgr^amzFW z$(&O>Z$Gj^yLE*J0h8h{U$8qzb2Q~T{M16U`J044)m6{LHC~~)f9bg4wUfn}X}4of zbs~@Z)j+PLbk3Rd61APS< zchBdYMep)bGslFCIbWl>6KIF)xqQQ41)ZpsaVfOvVrbKzKbXSqN_yWmU~{2CR1H50 zPc+A+iggAE+?$wd{n0{4c+zRLh^9th+V?dCz~{HRZ4x7K znRoTttH%Er(g2vaR(O471zlOeVSBM&??h)W^&@Rjt4ANdPEMx(`t|Es-3WQ^LrRic z0s3A`>6ScS1a?mJn6Ctw_SB(x`qZleSCXfurV_{O?CnivgJn*>$Qe8Et7Y#4HFfp; zx4QTEBF^0-Pq*sbp;zL3A{9kN7dnyMot>SFTH|(F#X1VzruIHA#8?e3P(B}PhTQF> zSyWHE4~ys=T{uGAZ9VN2ofI2;TE^_?TU|7Eo-~M*uX}iP^l9-a-O~IS$OT@s(hb?nVOjB0G})^S?W`mb=R+X;)A=5 zWFHURsN=zrf5`>rI_5&CHX7v#G2T1uCuu*o(h@Q!%b^#2FGW@PT9~SSu2ttAEF{Hh zoi!lr=Ae16NZr7?cb5;L^614H&a8H)Knv$z_VqXMh=nY_kf3{~ShXd_wo z@8ku{0XT@z+1#c<#|J)3=fiKIa^V<^e!!iGEkINI)PQ%Vs7}O^=wFFHYolq(<-KQF=B?Vc!nMU|ESAjr4J1nV}}2b%IXRvHH9w>yLa>{!h zH0`rK9-X3(c7oWpO!~-S0e|I`E`PW6O^Pv;e39N)OG`@`K7*2N1#t`koFErUC-JhT za%I6Ye|+X=L;i9!WJ1%?YT0Z7&9vqB`QB)nntKAwAqFQd(fbDW+?E2U-n(z_!jE2G z`R7;FSksM{Cata4yeFT%;AL(Wv0z9h173srdEVtl_ANML)udPsC%0(wWAxS9lw=jr zogA4CmVEoWimo{)Sl&F#8?8L?)Kq;Rm!y=WHeHqZXVH7{db?F#YiQ956ARDHDjg2jI%o&16d&1Ww{MLgP78r{f5k6V=BSQ2;JBEf{iJuYl zTzAXH3n(-ppz%1h2U9^Xv$nnmISSk=69=pu?A$z(8;X^%S8G7tegw3Rok9qT748U7g+xo-94uec*kIan-b%LmK^}bx5o0grsSh{yzI{u7xltV{aHZEy&nQm<9UkUtufV{g zOH)CIgHWb`65S@F_Bw0$DEki39zbEOZ`_kA0a|H$Ojn2YiM63OYS7Qu^w(!Y7e;wJ zHQ~b5f zvmADg=4vv*MB8`yMoX(C%g%MowLiEJ>jbOOED#0TU-^~9!q9=9!i`xBB!EOP={1^o6B4i)NXlRJPEdRJ`M4alIKTY}wS|7h+Bw53xwT~ij9=;zlbOlAu()UnK6ze0 ztV`Q*pkrSe+wZ9eM|;EB#zb4Lh%hIUID^3tBLO=DX#9XHNZ;GluMM z;hIxKj(8Lu?p2KQ?I)-xd~#*}O+RAAa`eD*7Qxu=vFh-lM{mh?@b{;bI9^eFSFb9C zCS$w1696B`2ttMw;D!CyY+OxDQY=Xx>lN%NP&7=a-{+zqC9V6b0)~qMa#&>Ho%Ift z7+?yxn)*9x%kaIu`Uok-1m$t#V3O*k1Wch74(m90KS8-Y=TSX-Mmd{zjRE`=XJYu? z?m~FQTe>evq#{k-_wEie*OCOS+T!s zLSZ5Qe)QX(U#{Gb8Qzx%S=VI~9P8T23r?U43>jVl4hbCGXJQlXCOIf9R8{R#iPLzTrB0<%VP(k8f!42l zEv=ejRXOX#4005)x=!XiAhB)Cur2)3wwi#-sOfEhR*azY<%ouX22;onn45>TxE-?t z{>v5U$<~P0+stQJxu@atX=~b=o0}a<3ob_;>)9m`2}NcX?1>4xdp;gMQMTI%2?5bD zZrAkC0D)lL17$&A&$Covlv!V<4tJ9cGq%EAd-SQMRpnZN=*BXNyfEF~)C@ppN6E?W zSWMGq)oUD=tK2@_H~gT&;Ik0aRqyp13&k{*%lKJWmw`onYGIH!ODHYX#$vIIt_FA0 z($dWSVBBQXw<5F$GG5HFdal}#AqC)@I7h_&QinwX%5@LP*d6nI?Wp^YqcO$;o+c(T zJmss(HD8R5@+e9Neu>SNl#=2FoSzQgt8g$`Ic2v6+Y16|t2A=@L;-jc2TQdI0uHJ* zZC2rN@yl-?J$hRQ75UT{fwS_x)rs9EziJs2yDTb~dm_k%Sl}loVOAQQ&vKUsQ!7cO zl`4D@7EB*=4pY!QLYlp!KtA@Kaj!aesQvP+p39#~mqs$mB`0p@%=_ANM|BXedug!&(yyP!lkwA*xk z!_>3$(3^TTPhn%ujLT|j)PvLR`cS0;@G!ONI%mfX=hax~TUop-N=dmWub{y9r`8() zY~>VHhQ-q|&v!ki@)nGd(xPskcK4Lp$r}<9GC!H}q)>S57&(*|sZW!OCxKk3f=V`i zx>#Opka}H*=_c9B zVfcX!pDLC(^}84tmi>=#Wi#+ahXbpXHIFwAb z#n6?Pbq_5tNb2^tJzp*{*DDDy4~$z{U`Crlaj!>qFw29N7FZNsp0{U~%Ea~H!Hysi z0g;1T8AwL%r^Q^TIft|+sJy8%L`hb_5RbePZ}Q^2ol2e`qStlVP0u;QTeWK^AB-}t zJsGV1qkN`dP8@tSN;X=DI-`lLc0X=dugZ0p!+N6$?`?j#) z6J*zv@r&~EiWbY?A#2`qx_szNKTEK|iPw_xR6bu=_B@3`Vb87$9sM^Owg3eN=|L*= zC>@TpDx32wamXL?Ym}7$eSneqgt@?z(dyUd&!1=fa;4`WJxD9?DNbIRg70A33IhM9 z5Ub-9pHB5T&yTn%Ss=TC1{4-{Qs#{GF2uAn4*9lqPB=k1rR1gvYVN0iLN=ZZEuY~dg>=NN?W%UE zpjR0t9BKX|ea{^z>&UCUlSgaW$8%|)`{W}w%xC$$kFP)vft(xHp6{H*3o=2h{N?u# z*S@zxS_Ss7_txo_Uw#g8kgwW}Kaaa7Wb8AgiDW&sDWp}!&h&b0YIy?5fVBBPXWjIm zhzxgfzKx1zRjKP7-WCqn&IkAOk2Zgfx&$BJp z@jZpEW0e*0oI&cx$b}3n?X*8opZTt_Xw&^|#*13y{M;tBm;AwKV$nAG zy!)Ww3i5Uc?itr#n^m9>BuMGycMqfcW=NiI#`ZE<#GwXi!R9o9y$UsmvKn?RS=YudRh(H2S zQ)yF(>>Fm?g|N2H*a$my z3`@^Zu{m)m+Y_M>@QNFuo{XPiFFMO0p;!gQyW4pF9BF=xuvR>v=b~+eb>>{!l<uQE{ zUx~Fy1Lg->%=@NM_}Pko%$(a`=!ihNHLdV%VU!BUPoMoPFi--~?x_fz7|2>7kqkA} z4mH1%W>>v%4CIja3Q3Ni2LVLHad)@@hCnvp4mIoNJM!v6XcMonzWd<8odTw)uG_Jv z>TTdQk2UFI(3@Z`;MIdNcq17P^(-XuqEGpC4O`_au3uJJ;F#LAu&$x12TjEvZL?Z4 zT2AYZk>$n6M!%Ah66E5S55SlOXPRG?O#AujmnRoamEA`#X0fi`@5I5VUJUt%4-5>H z;1|$jh0#muz$RK((UFVsu{m-8yfD~ZeYgS0+L+r2(_kCZ#tiLR2hUnZ;*O)Z%a3ASX#OVVW&qGs zNC=EQ)=fA4qV}_rC+fwxDN*E^L}=~!ZqzuM3m5>!WTD;0=;-LFD`!KSx{r6mjxSnT zT6?=Ftyp0%ER>#)!xOoh0za!sW4PZuDThtxZj~WThQUpS$Em#ieNEj5A=%=7yH;pr zG}=Ud?Bxf0)BC~>>;)nbozF{i2Vfow__?{cYw{}US$e@1m|Tm9IDJIb*;wTi>3(5j z6tX2`$9<4YAW;C#Nmacho1hFW1V%PC_1JrFaV3y0O1s@*0s1-#9$kG&Z*~O>Zm_Mdkypfm zCjA8SiFE3^iLVjkeyVe^Ct7 zwP4vjf3SdAq1t^XEeKWUT*NNN;Rz z_t+F5{i}j=?ug5yy$* z2ZM4vm7gH;j+=|k)E;&D@rr}7bxj=25w2(Z=-~~6%^kXnK_=nAItnb(Dl02T=E9HH z7XA?MpTd?hn3F2>8N%Be@&UDtjEn?J2BG4gpjz4?Tn6$Th{l>BKu8XG1Sup1H;oqD zpYE4w^Mi|VaqeHzWb??;J0GOPMIY4V{7o@mE7&C5-km43X;a&hjUMAIlKJ}=h&vPNnmJ!AK!-qc{Ik>RUZKn0ZFg*1imE+P!UiZAo(X(R_a5{_>Wu&YOwn*MK&VBI$NR?$H39VGm0w+ zs1M-(Q@y!dkb&z1eL(%fS2L@w{F5vvGpO5_RyLOHLA#Aud;|sPRHPr2jlB+{;|`E{ z2ZC{Akgl@aO5FlgWE?qhA{i6fVuUN;;NW0t1?_EOYAO>GDjb$B$Blx}sy^uPF~DO! z{xU&~IPpEP9$5cp;R==r>_PIV_<%XzvX(sauD6G`K+DbXSMy1UGw)6bJmP$qqftNh zy~JKF6K6TTf(Z8&KLcC`ro>EV=IpEqm7_iOa``^tH>UZiP#N7lf3_3(-1W(|u#zjZ zs5vt7DI7>6=Fb3U@CfV?tw%?Xh8WI-v65%!b=Gub&)Vp*W*d7GPjDj&1@`P*_pSSpxE3B2(G3-SyRluTgLb~MW{URerl>==^`Q~3 zU9HFob^X$qO19M-&^)l?I%b}gnK{v?f&x7WWMQoPoF#Us8FG^@)pE>QUrY*onbEjA zI_V?7ico>dEk^tniS6+5w)G!LPD&b!&AgwYTA*`f%6Xt*$}rrhbLXNFq~41KyBuz2 zSm%R3ZK_uZo#UsnA6BZSL8+f|>O%az3*YQ@ouiXr4K%nC3GM_}Kxme7DM$i9f=u9J zj`7m$XHaupgM<2x>B=d;SC{8*#a_P!Vhvt{E!;pegniF2Jz45~mKMH8LdHytsrKPj z(8%lrGjzBaRx9*C=}*X2``JEj%e{$Q-PlrS5rF!OnpVBkJ-zHOEO>NCXUTy=`ql&*8EAVrnjh>3zSscDRSPL_R=H_UF~muv&n+V19sqklNqsE_Y>2C0u7FAxOW!W2j-e&*0gn_B~kw08nr97~_C_ zjXG$?Lp^>y?5rI)SKgE?M>jmq&1?ZqU2}s;WPND_a5%8%>tWxzhZt9%I|klgVhivEah8lS-8N)JJ0W^V4CQj%~+;O!cw(rSdCD1mnLW$=w9D#jKHXK{;=2O z|M1>r_{$z}p0z10?fhp00A?WH)!V=bp_Z*b&6sayr~C=$91Yn8C>_YnU^t-6me`U6 zXoWn3PfA&I-wp$22i;_06m>KYDWxYs>k#yT_U}vuGz5tRSMpT1Fdhe<2h$9RWdi&Q zF>J8c1xJ0*oT$dELY@3nmw0op%O;Ew)*`=E{)SJ66?;50VOru&G6|QL!LaazntIXQrqj! zR;zi)OM9!S(D`UN!411OH1rYlsb>em)z4>ju?z~l&AVFc2BrASKz`TkR*x*v-FK5` zTJ|TZM14P4)qWhhN4htPq0>uZ2Og3Q0{cn-5#*nHr#{Oj6v?|qFAYC>g?)sBf=5N+7A%tPAP;<|`QnkEPWAFVI5GRK{ zI7O@u5D2(B`~W+vMqS$y3!$=k_i5L1{?<;2sO4723Y9{ZfO=d3)K<`+htBwOcMu`S zZG+2MH+XsP7p~zd*Krmka-YOWI1|)}`6b^+JO$-n9iV5lT_;jp?^`+>qG4$OJ#j}il6QHX+cP0GU zGPQ5W*p^vpWMt%W01r2JV{Upm4z~aIszA6!k6nBxJvreH==c0bLHUJDM`kHtr}$)i z*!3sx8y-6pOI5XJYYw#<(6niwY?y%-lNk@dqrL78|IWoS)BOGd`8-=wi8^@Oeeh-G z`gV9L^7{3&s5!wBe#DS5tGuv|RVRPWuoey=> z#Rlc&^A1w(AE1y34wl7M7(0HJz_sFkx+#z^Ake(E<%y1>3ENBIo?n4l4Yya1+{cBM z*ItaSt}eNgrvtlIy7#C;t>Hc!X-ErlQOCm>Oi*N;M%aBDBX{thVCAh~Flz~``yfhI%Vs;m_2Ei5bJYRaYS&f|+x zNV|6d2+y~dv|p(bD5B2}Sv_fcoIO=a~YV(1pdu zIy8H40VaS>!E5dEakN}6Ay7fsHqLVJ_cvpyHC9)H^l^_Pn@X*4I+m*KLrjc1kje8w zeW5$WI*|~wk55Qq3LxU1GCv^-?P0#1qj49Qd;xxlWa8nW2Tt@#JT4PYcAAnY4?A0R z=qf{j+mu^iH{bvr;5|ghB8-fTf$X|P*0;b@X{iEo9M8Oa$&NQ!I*O2v@KIy=itr1E zEG#?*Q2b@sx*pZ6^;pNpQdZFd{sLj)m-R#y;M2Yfcg>ISSHj) z&)fz+A9aClaI+O%xaKmVwrNt;yQFXgBrjm@!Hms zEowWFvXWp_2yEA2PMRV$5#6C9GGjXH)1a57T6t9( zkQLXHp*<^1_;#GM{##0{e}1V`Q4FY0A%E2JhGs|t@Sy1E=#n)k5#WNm!w|i^5qq9= z0WZe2?W=^GFLCBDC{W%t!>799q5yhqFn+{5F1hHj6yR)OcN4j#&mMWj+<0?K&7;eO z4iN00a&HiYewTyW09m#bnM-)mUqFheTxMFURb2g36t?K?C6Rj|o14^5Os1u)B0)Eb zcV&7Ji`I87H<L$ONXIq^v{Rm0~SsNdI>o%Ch^dSXy99fkuN@6P#63#gn3d@-7 z63}MZ4FrcJAy_KjtokG{74FGhRn?;c3YY`4+PWv$WESs$^m!^$bHxti0oplUQ28c)z1S)ozJ-tmEcM3Jo?lPQQnV`G zCvnU!xE2I-Q|R)Ip`wovrB5vu5-IDC`%D{XOn^9$g5fpM~HFeTL9MD zV^}E7qQ^w+VwWtFGp=C|Y&K&Z3-45&R?<#zcRy?ees6&xlY!6lA96%L{_4*+0~h{N zFg*`T?Dhi$fxHOD4F+h|47nEe24qnSjL_4AUGOCm7MM?+<7a_NKk)pJco9<&ESvD` z2?SF+^bTOB7IS?HbsMxwLJV1ovs1zA+euSjZCNERe{urrJ4G8^JDJdFQk+S;hZdFQ zYU+SaFrUTTBeBItu3ZrayPw6OH^hjuvrnfTtHxx=3nb9{V`izJP;L{Jm}2Z`hxy|q zZr4@vrjGA8dMsb0Fi%EKp_4+5KoZl3amCaVeZ?#6+Gv+;^A(M zs-q+E4(*rsvge>Rd#UohdKs)<`D*D(Z@s7*+96trFa+}Cq zCqLy4I^-gdK@Go~!>)sm9M~!Uv^Wwr6GB5Shh#2Q`em%YGOFgW`^~$Yu#1u2cV-ol zZ3qRoy>4+P)1QyIfV9mC1JN&8mFRilq?e5Mp)LG^p`{BvtZxkaZpdzD%UDJmTK7ec3YD>>QFmC z*pat_!B$)$J?+mHc6OgfaYCR3C)(a($fcIQb5(F_58>8UDF-*bMFqb7EaU7aHusuR zvYGYIZsk1wz4~0B^n$+dNN&6z56?{iIL-OA`LjV;T2K*NP+37UtlR67c%ql$ScRSL z6@s$B8Fm-8Z1B@gNk{82^?n;@09hbSW5xPoJ@W3kAQ|Z4ghvYzCv-Z8s0N8ld#(FZ z7Hso&L@)4B(~xr<-8D>sJ!ujDpcE@x0^jbd>sJ``1=)#&t&z{-3ZO3dd^tOpOAdre z%V4a-SYoFMh)c=K zRu1yKZt2Fvgz2FN?@(j>x{>Cyji0#J*%)y2cSvI!II&QJ6Ss`Tk&O2ttuZ$%{0eb^ zJ%O-^1ok(X7Z1Yj3y1n&%10u%nBo6o>OJ78e&7FbWh7hKdnFZ74#~`>jL43pvK=FP z7nvDF5t)aOy=AXZ*-kpLN1=|Hab*6kqxbjo|9g0N>zz1W_kCa2^Ljp?*LDAEBZw)4 z42(~rmKp7i6d%9pc5nP`09o5fGJLISy~Nh-QKcin{FK?AXL%ruq~$O)FV|k5^yq6|NJO9P4$V2eKB_BX2y#-37{(>vf~~8KOg^* zF8NtOS&z*N4JH`zKCY*T(>E9y8G~_uKzM{*f^7>SZxzMeo!U(R%=A-&%7Tg&LB2g& zY*%#=l868u-cluVu!(N17%ngLKPY@?Y|u@hWV_7lcDs#Ss_J|HDC^kz#_@a)Y3YAi zQmQW8_&n5>k?$U;W-|9`Xlf4&g>H{LjQ!QS^mcdNcgmsG>$}$8A+EVZ^k^?BEbWfE z^RbiJFZ`c3TphvyXl3?>t2(THV7QTY?lfpT?8LI{ehDiO3k1W>0Nx^1FT3{VU^USE zov!WO1;=X=S>m7YWiFdl%p6gH1V)MHWsD*MpagGsIRa6+?Ro>IEO&1lvlH%n;+O2o zk@c5bW&rZZtEnP8=B&P*x{tU-RnR!ud+%Y9gcFz#ig#=(9#jCI2FMRaBPSpw|0`VJ z?3^mFUsZhy?ml?hlt(J!z}6GlPQL`_C)A~1(de^FcTG(l{vJN-0}?GMr`FzF^|)CA z{x(QXD#mq@%$B+w7-HgdN)z}U!GpLMj;(`l)*AV~8VSDg&j?MxoZ5lAXv)>|=?6>J zr~7R(8F;Gh%wq z17Yf)W2vgV9QELR-h;B80nEYZ4rX(#d24L3B=;}tlc9$U_ffz3v4dH)0D&g zNBjLw1=O)}haaq(WV7&cd)mYQmJ0FT0ZIYs1;m@IUuA$3L65EGroTjOP^oMDk`J0c zK)wK*Ylp7OGLD_e?`8Jjg6bA)aC2rChp)zvNu+mu6DVi+7`m@}58V82kKAqra}JGW zblaCS<@~~;eQamnRR?nsS>t~pdtwP_zli&>*F@3&qS8Q5|88q-(iS&;m2;Sp;5U!i z*VwvN89Urv&QE27yEj51G7=Hv%U3uvf?Ot3&CwkeSVbul`r)G0JC_s3be|d{#g=;8 zl&UYjR1<)A;F3XpNB@!$lGJ*q>u$mSwrWG#$=vWQ$#xua3^0De;cm&12{niGz_G8& zzrTDJw+$Et+^p+2v16bh12S^k`mGP%a42*^>-_x4i+YS3IP=}_83shu1aGfs-bq^^ zPA~GGO0+a?UDyGgZeO~B7WzDl6RPHB7^-eSvxUBEJR~N> zB<%>?Ot;bxH*>Muz!v_hGBm#fu6-~dUrR;TPE1Du?*%elkSP8^OP@K0uq`h|#l^qT zC|!YO0Vs~Cegy909X@ZV9(_G|;m=<`bnA1!03nSzK+(V=(L>h{i+zVnhprCjh^q{f z!(0W z+1*d6mOtQ`d_ncri>))xA1>RVl1x4+LGusZS}Y|HmztjLC@)}3P!4y zJur93u_6%)#fAQK%-@ZLDxiHK-kvA61^x+YmO#$8TP4*uC7i#)ft1_Lk{hB9+)?!Z z6Q53TGKkOC+dGLM8VS1TF}b(m^U?;;wx#j!)m6}30Y+=4tB$1M6~zkhzp>?QrwdHMMfY^vdy(SOIf z56~nA`JckDqE67M#Uv|L*zB`rC=^?g&gv}}*!)xatDh`q!#v&r^Fdba;lW8qC~ACM zmO4Ufi=m&PabsHw40oouE#EiOQP73}rb9Tb?CGcQ%OA#m41Xma<4IR!x{N2jTW0U; z+ifuAvyg~EVE=Q=8-TF*v%847y(W;I-i8{cc+D%JpC*Ex7;kg{cUj?92$Z5Nw9^t= zxBZ$10eFlBc@ms56w1!5u6r!{pR4FHbfjp(AR6xKFNj_)8WcFtIzGaRTiWz@9zJWg zn5g$GSurYTTiX_uRcBpKVTCn$8)^Xg^TONS-&>e_PHzgBp=${5hy{Z$ zSd#yp*ZZvh*IFh8Jv|sChJ=uc2XqD~fuQ5<+j4qx+R&Z!z?legocQ0`Z3DOoR=TfFmAkxy9jjx#WHJ z{+s^hP$IZD+Z71tUo1LrINU@9*1|tOyIV_&isxa-9x(0rov*oCLl1ue=mZW57}5c| z0NTVn-*&A{0by{gT9jfg^U&<%DKnwXg#+9a2G7*=`^}5GufB_!yFF4*S&dxveiB;A z@aMj90(26IiHcTO!xW>+1g+eyp+nm<%4P|dSOW%T03fs>#^y> z1;hE!4U;{+@T!sG2CeO z81Eqbo;)5xCp{!vK6O0k$OA3U7WM02bCBl!#OzY%Z&&SxthBy;duQ<_cR`5`AjoudddI8{3MoB$5pMFg?`Xa}`(+Sx$@~88Uuak_JFqy)mfNg(s zkUln>!l?n#CgF($+`H)tgQdH^tEUK-IJ;c%Q1jqm>ZtJ$d{lbJ=h7h{Ag#0-iO00L zXy5HZAv!Wi*ZC;ehueH>t2*Eh+UYs&UGdE`8f_eiNWIUbA`(`iF9H74q2f?$2LvQ9 za2(coAI#^FXCU?NKDzw2_spB)P|EtBm82Zvq?dHluZ&y0n_ItRSbOp)8yXHrv1IJz zVr=In@J#AnZ#5FKdb^0nQZimzu6)N8t#^@r)56>Pxh?HZ+LF^cB$0W7^b`iOZIhub4ug1B6mV(wm}H12ofld5!14H8H*o z;T~3S9Y_K@AqYeOM`)@mIk$PD7Bir~*04A8{VNfbq_g&a}dwOhux`v>;0ykFd`Bjhe<1PE!X<_=qY0ILb zqF|EfSA$0btpuh2e;%_M8Mt1+h|4hC0=qY`=n8o6=1W&zp)uOy+KV9d-(V!wQ4r$r zX9Vs0O+nPIIhj}wA-ewOV;ZgsEb{OBW%RGD#WltckB_sp;>(K>!zxtiMCog;XkZ2_ zK?QNoJeypwtWPD?F>f<-7>zmiE{VG#)YIS<2 zd!3QVVr=`wc9D$y-vjqwd(=~EqG^auDCs;a#;%J;xYbW6jJ^&n#!5&^ zvixl@DI#eXF{;$KC7)n9QVm~ve@tAkTe3!ObZjgbTjxqkR3?DX3@*kFxTjX+_1|#Y zSC=d{xJdsM>%P-OZH94WC&b}!XE~?F$9pz$7zAagMGAR6OSay{OnBFQ|8cc!Y`IVK zJ~^!!o!KR%lT&*&(ksn#Wq)Kt+9sIdy8GqgN`v<)>M37|ms_t5ZW)=IcY#v6{=2gPK8?ksc1n+r zhdVYjY;A9%(J&+|Je(xy(G!(ygMwD~iI*XkjhPGw6(?|g8iMLWEg02iZBfxilzn1yjnEl!Q=}z`AEOZez->Dg(Pqaktut zPWhzn7Kz5o0$%|lmyE{DE4l2FHYz~RCD0&@?~ zw%-k(SEY+_SsoShN;}o%Lb8$-Nmf};fjXF%ex`5s?Y4}1T!z5See-FDyYK}V_l4~Z z!S2W7D;BNEF>@bRvli_i@!;Q3-Y(8w&MQ*|C55w-Qn(!P%r{)5_-EL;MOj!<^3dO3 z#@$ARkEQGH;yUj$3yI8x98YKGCsTiq0#32AvP!IL|8H>!|6812`{`jvr*MN8yT;>>ow?1kl5m*p?7FGXO(V~T7eZP>fiP1B08 zys^Wf7A=V04^O(>CqBBfhPrUG@jCHBpx0f zp-r+*7Abt{wUMI~?P~P+t0!i^=SDCXS8Bhu{AHl2!AbAAM?o410XXJQ(lJ99nzo(mj^414C zCK9+lY@kajRV%0Iw|r)dy3bVD>fX8-Le5D^sU5b2aRRsc86_PyCOx_kA!2!&Q}n&Q zYuPA)7naN@0VQ9qtZ*6TIpLFI%{XDNeR4ZTqyom#D zd(twt@)Zt3j=iw-eh^$}O&d-_)cWr9gGC`4Jv!n9%Xb$aeW^&}BAq25=q`tV#n#3A z_xrjuHU12}P|>4PuUypAZ@k^Y>K{uYW2i$X5P632B%$@xFP#~`ZlwfEc;3bdGj*5S zMXfaAvda`3zx=!k-$PQ=e=w42V3D49wp1kDrW(aF#6^04Y`bHGz{Kr4PB$qk<(0#Mud@=oS`*Sf%ASqXuDkz zyrSq)Zzd5#*j;``F+LXtOu|OdME60r)2~2t3#Ly07xA)~z1io&kDER81`xEgW>nDe zBQCqUmgU-9kL#0hKq6;$b|f}_SeH09upAw2VKL;kyaa3<9J3GxQwXB*Pd|L|%>8f@ zeDD-Xg%}wvw?`s-IN23(VGho28u_Te7yL@d%67K4o}i+lzB)y4e8B4pVQc8VjZY#Ik~m22&_x9vEGn=3Z@jISc*khW_xo5o^^D#Nbl> z&tkIw^8!@F@wK{}870t%Z4Eduhw7*?Dc739e!p`ePE6AkCI6_`DtNjEd$rCsP&d}wWbDpl(|RZnvDqF+|{=~Jk~mnKCF z&7AEbUQ~)oO0K`)3486&%#oi>Rep$Y@;m6%7~R_c>&nK)F+Dv^kj~~8Btl_5M0NZy zd6H#AZD2eS?VzqCJZaAT8P4fooSXn6qG1Y1znSzM>rCb&`ZuktLQ0hyMlILh-WC)Z z^AfPZ6i(RhJbPC}zonjj^m7wn)$)T;-+!BUF6U~dFHb1VjWd?IloWu&>s6u;HvvVWFt^a=1$Q* za${p-`-NwEPiUeqn_iVPWua()qsDp88QQOh z?XGA**qR>#Y(Yi97=+0Axw%OP*KzIqm_8fxlkeYx{Ld@9MhIHuX&;DwBBW zpr2EWN#tT5X**4*#m9LJ9%i&K$kW^|GMMY~o02mWD6t*=H2dWEs3#nIc5ywaglup8oKT)J63(6zxo-iF~9d*}9%u8beNlO<^I|eIt%fEsjW8XZEPBm>hOl z9cRvF83OV*(f#5j|M{ss?dsgqcs^t)Pxf><{ zrHuNXd;<7bU*95mz9rx>;2>k4gJ{h9(sxm5uQdXQs9KNM2S>DyK0?lwkdU7C()zbw z>Yi}3;L~E|CKVNxv$L}Z){2I9@MOFtb2ZXBS>_^3OF|6|_r)h_QsgieL80+pSdQ&& zeX+E`dK=?Y5|C8DP3QHkU%imX8_5}`umJ--A#CX zf$5peq(qGCjOk^`L?^j&V2k;LH<#;#udrFKLyeJH(e9hZ z*l#0k=i#G?<~M0561X`#r!#UdZjmkjNUDo~67|=@_*)B2^x_V{f3~iOJ^e?C-%W|4f@N1iSs)qn=R#sjn}CV`t-|XpabWqoM7MUo^G++T?Pkd@}duEsXop$_hhW zPbHE34S4qX`M337;~)yy6ifSW(`l#6baZx-h!;B%5Zs&a5<_1_srM6nJewY3;pO-M zCc)$1P<#}FT>n1hxtRecBq-0qhn%Q_jy<}fPxt+^tSnx*c3{EhK%`udmo%uyf(H^x zC>N;;L(I?9g1@RNDu86Z!+4Ea_v<#J@)gY0-RH)Cs)GsnZC`#WPm!$T*CYr%4y@W~ z(h-4-q1<}fC`4D7fWX56>#O$RD$Rm38ahlAgFHhBO2}Y`HP|}RAOZj# z3*Ht?&~zmc6aT^K8UKwlk&;_1bm--gX(1Z((2 zp@6~Ty;t3q@b0(X!MKpXOw>B^^h6};24vY6_w`y%^yV&(TYRO!>8uTwmNHH+ZM@I_ z9Wpy=`}r~Q0TYRm&d0t!Dndl~d`|{;UxdP9OdQ}9WRuy4w>Qrc{~)mLdZ;`&qWRkP;3R34vF}6;S!|cX{BO?@)QnD)Ck3ub?mN*NC z?HGebBE|DZ>c*B8Fk4SCj-eKC+?hgY!|J!l+G!$DQNyw7N|gdu%o(&1+a1b8w&5sJ zG~(3CR4&-C+TG1K?!Zc4-qH&2IJ%3o9%uQtiggZ5D0!t@iV2qCD5j$tLmHy>8)@E6 z#&lKYaoJBrHC2LNSjjLQSB8t_FD$Q@(OfJNlxLYElGrS%m~f13ObO>xFBQDx`GMG( z!5IqifuQ?3bY1sOIU9_>tbS9Mo}V9rJeq79tfW)E@Iy4wdP1q<)lVs@{1;*m#>7XL z#q)5J5N=heuTS4%JoqEqS|#^05L8=- zvSc>uWVdwbEUma0m304Y=EFI;LqdFe_j6#;m)q=7&VtiRrnR^c2o~cd zdSAUO1tJIBWn>Tg&{YiY&~{ZMX_u6rTIq1k<~^|2MC*ni=f(2VhY&EHs9?c+03j4` zZ!`7b6Q~l!6D)fXH+XdmhNmU^j4YmR(2x#k(>#-yPL&V;uV8`ySmW26{8oY`U~$M6 z-<^gac&t;F8B^U1x6;v}BaTEpx=2UfF2d1bGq$Z1c>}62+vFs3YhwndPsboT!sgo- zzHaG)Kc#JTliwwjbu`3o7k_tXgZk2*Mmxpa)7IpHypc(}l@-wtHEKzy zhd^X4Sw#D8R!|JWZz`5tE);oGh{h^8{91B$YdQP-s?x!A9r=MuC=K*ee^e`XhUkRD zm{v-NgwudIOUzu9H2?DID*hf_T&IdZBXfp4A`pVRCkJP0?sJq^CbhtB6ZKr(Wq6#H z#*EvX&0BYy>5l^6>(x02>{p~8P&98yH3#Eg1Rmtf%?Ubt2+@Yz+^WX7q?9QlfDFm8 zUH4y74?REd1AeEM{(bObb?Cg(61@&2f6+wi3ItTy;Y9KT(Z3YZ~K;6%h zUO2bGlrebeR-PPw`HtTP%O66;B$Sf3W0CS!=jUU%%#2w|O6oWmwv`t~^r?)(4q2>A zlX&x(?id)s~d?iyaGX*d3z}wJ;@Gsk_Xl4mehXg12nvgGrGBT?aYF9D)~{Qj*>)rrt#f ztpU|!OwAZ_u}-#ZS`MR3uy5ii)SX@b<-ePAdW~)iImtbdd16p~! z(v%R22Nseo->)05YBzI{PS;%y;!+z=TwPg#m-Vvi1*7mif)=IiXvAGeF&i?xT`pD( zsF&5GHBdRhaKJ-PI!R7q+447uHchp~&o3DkQ}_wisYJ%O+XAZu=jzD~e4#r9LwuTv z2=-xIm#nAI`fy1AeR|;G^?<+K=ChZ~|K4P?fkWcwz~**OxchPOA(?Rk{CQmX0X#zj zl4K`!?()VUt|zw1c^Ir>I&=wN4M8&WibQ?&rz^%P=nrd5-Qhu5ia2E&266q6O)o|I zI>NOrIktaxV~z`B{0Gt&r=GeKN=mlM6;X({y$Vh$5X1lrbP_V~UtnQ!b92-4vbbAi z(gEZQTbJ?gq?Y4=Z)NH0>uY0?f)6p2P@P0{!)?=w{TNGQ4&(5z*nTB#+~ZHpPj+M~d~4$;r_C{Ig?+!DKSLwvkKh zU9h2z?%susC{zXa1;;0C!tSs%4%vdn;&bpyy+{_-Z|l<+V^Q}?7J#7u)VMa=@%*c@ zc9v3Cl}}^Z1=9C{<|*Pm4~#6JE%E&>oBveoQ99vZ#C+_6w=>(R1j|;)|8hDsRmZ5} z?c2ADZjywF`Xv~^wgc`FDAFmM3(OtZIV2W}mEPOYNq_2c@<^o&DTS%JO(!wsAnpR- zSh#8DWHnL|UHSEdz7m2H<@{cHuLNkA(zdE9v8Cl@pbDlj&4*%5e_ofQ)F*D8A@z=hCj{#KX7BnF%_mzMNAgf=eIvxdnTfJHf>>Magj7XA27;JT@-_1F8cH4 zbxldm=Neb@?7#$ZvVY@#vQ@svkAt)`v_knVLH_688x)+IjA#Cc=nWzLN>6kGnr4#! zzlFXm10~y_f(Qj6WTCT-?+q@#Ui{o!BADPj#mEcWQRvjlX#WFCA;hHPI@4 zMC?Q-=#r?Zt`RXqXvSkryp!VCi<=S*f^i}CvJ!9ktO zRaH7=iJ0K?+G!eva!5~4&!t(h?s7o8uJrT^6BtULR7>OcN7ap8f$|uBI)>W84KIPpZc`|NKJl;OICD?gkqK%MSGE*zfmF?Nh>}HnV-0Hbk$1R>~T@ zku?||8{NLG{7&~YgmXcoVFab{y@nP5cBYsP=s{pgD^qe9>)YH1NK2xuc~$A*!1V{s z0DK|$OT2(K$~QTuHPKcqYw}76YJQo_VTtleO&z+Wr6rA0v5qrD+#6RC|932HzKZ~N zIG<)|3}^e!U2~xE5Yc7{mLH0xwpeY4?da1MC{uqXAAdbi1(Hc*bAsJ0l5fRC{BGYH zy5EQzdtpdtbtQ66B7(T%0CP8s($(F1qY~^yeIXnlmThhl7BBJGNc${4So6Us6bAs z9iq)LoZY6i0C%%6K6N;;?cgpTmpLp4y3hv*k^Fpks8FOA8IS{T`kdhklnk)BYh_keK zqj<_ID&p=*{n=DBI)&$p+8cPgI2Q0f3)Q zxwTukIcj+s3CVCgq$gVC;iF6@TKY?pIk2}i(X%Kv1}R;WjkW6#x5~U^VjtInB*L_) zs`TDF?UW|E6fSr_rMJbxpi7)$7RDTULRp8&pep;%Gn*)%UcS9gY+VQu4b#P5Xu;wvcQ_8LPl5=L@06siLn$Z1IuOC*<>fuqRB@;=>&;M=a#i0iP zCwhhS^~)+ML@TyHL@bN!Lue|(cC#C769Fny{+Jw4y8e^7RPMLfL5F@;WD);hsC2oY z=&d#7p^Wv0Ro-swyzO4@1tqv}XJlfcV{nibk{@J*o_Q67z4xvKk^CFA^$5XkQF4_c z3>L_P4J@iD&lo0@zqc0CqdVvB+#w=Qld|VI+8pR4pq#KQcJW4*d8LzqK0QhRfBHwp z#%{6G!HqSYWOukxOOS6+0yN53E)RWmXSZNdpdku4f8n(^xVZWlORTRS^1%qtl-4)l zS2v`oq2fxg+-Zt+tYKxWw@Vf;&A6klpO>F}$>u48;?dSP&wx97s#b34PndPb#?J0S zaf()`(WRZ$Z;EsD{6d{0H%1_9rARGKZ*fO?3I`D`thZOQu&8JTBpWCh$nFLFwZz9L z=-7u?7g8jAp&{yj&)4QVUTB#A#%HD3XJ>7F-jI7p@Hs=M#S0SJL9d$y=f-^(CR@^r z#_ry+?YW6BxqW3ih(_wme{7}Dw7!2VKqO$uR+)j0MPJM zM!3S}VNhM=*hQaI!S45a9JuZ6tHd@GP};fSBgF@gWfqob63NuQ+Wz|0J)0^Me6}x> z9i%WyaObw^+K?sz}PzVH+(j@OX+Ai^Y zQN$B1Wc?eUM$joUGwW7`bCXw&!|p%{K=7%J$!vGVKk#~&l9wtI3(PhBm!na;zx<}U z=I8lgm5U+tER64w2NA@~wIDQsxr5wY2?+FC5q5XntmMo;R16LM`sY z1KqIC;-XZK>)c&>jw0RWEWqPwTV1i z@CM`oKpz(4Sk+L}*9R71^(?^nU2h&u!!+k&9b6ngvxY?Eg7=#A>i7Y-dK_2x)#K`e zH#Rzm3r+z?SGd4g(0{N#nEP#{X)Dxl+-WrXM_+2=}ieyDV*|T@oM8kaBu6sGQ z$&6(0Bf=Aubuzou>n2u=_8uzhgieyvE7O8Zf-C2R+~;Z&cZ@UvvsEvbolGZ|e^QL4 zSUL9}-Nb{s6$bPoB5~eUya1eZK3rh}k*=J#EsPl+8P9W3;J@r!d+6M~!G*eX;d*+wnwNWm?#W<%K&H zsbA9sj1)2MBh}G%Rg#bY0!#;3ipNg)IuSXxpzt0BWKgtEd*jZ%!L!Sr>c%C#5A7_|4}4lNMPL-*~~Eg z%ZhM++<@h1(d@ z)ABKG>1c_HT)4VY6_|^@kbTtRZU(UhChLuN19QMjs16Z)K8cI;L%;zD)^gW(9z_;i zuc)g_9^wDDv6CC8-nbKnhwnzerD?9MJ#CyYXKWAJ0U)d{6RTu-^8EbEJ=1MB-?hm% z9mAOmQD@f@5gYf9T2`{3K8v?&M}6{*e)H2ke)Lee=ZTdu1N`HnyEUbdUmR=R?pDEB z4+)8&(Y!-L1a+JR)4Y#AUG~d!M5=Th8lvkHjlS15rkA-$fd(@vGWd<*+nV}R9tC(- zulsa64OC2UC|q5@J`89;>tG-DsM}cX^~*p&!-Md7;h%8829G}vli?pYBzx7z!P+{E zxG7NyY@GB8v=i|x9o5V0tYS(|;41m({7z@pUPL4UqRTnrzbZ zY)u+U^yxwlm=bS%!wMze5c_h@$OxVTvX)aVKH=z zF2wp+%*-mANnAPHBGY1g>$nK`)HseH+}A|+H16NCU_wneW)0d*zO2UC?G_uoW@QMKkXjO(ro_G#u#=E^jyhB)&s$ zp9>wGkQxQMz5f18bb+Q>JxqAY=Qsv%;NPaRw3BDavCY}-3q8ib(Zkf)wkE$%^apWK zEMK}c7AivF+PgUh_DQHY-vu0I_-l_gDi*&_q!vo z?^W3o215jj4y055Oy{Wf9C|D)>sFG(=Hdmr*UQB1ZF0f06kHj(1WWLxyBZ0mC}0zS z{8QNd6iId+Sg|c1b`W(%qTWAqjP{*yGB%iz51C6lFJy17LPxLxCH#)4=~s#WWFt5S zCJyFl_(Kr+3b6y(8T8xn?gT#D#aV`IIv`2flULw+o~v z;R0$+xUc-Eys0UM)x7yB_-4X`!siyc@LE6GT3eKU1?k{$e{Q$4r3-X_(4+_mppBZp z_+BGR$!dJC_8O?!pnkX&;&e=eX115d6ggLs?OdLd4e=62tB}qK3922PEWr3b?aCn+ zKymaj_K3X^ql4u~{mlmbD|nxwl8ao z$;~ieYI1FC0uCS1`*QD*dK}28x*;Ii3y9_oXe9j9%Pi4(qC!jfjk5ho zj_vzV!R|jH%df;GuG!yxKHBeIKk-g3mm75imx@9$nzCn>e3HA%1-=!@%7TqIOfr@b zN+NMSi~B@57s8)o1tE>n0p&HP7*| z+*&=X2DjXI2L&_&_&$TF2lW#iK1VzS0vcKOO0p&#+pCv*o;KJx=Xfdb^9gK2mW zK>&!5>{@|xcBT)gOUuhoPA?sZDh1oDtHr(YzCBz{>;z;pgwi@SEuB{% zMG70SHu5#xSU)35g99OCxE7|| zuwc{9te&UUF*(?K4&%-~E~sJ%bTTgs$$<|*LTh#hY(aO-M796yeC5obh3X01d!ZKD zCP#VwTYUXz!^1n_&JIwVUwNC}g|R{8e%we|KwZ+<(kX&nA6ONt__O@MW zas|6Xwix^4@X+hwg<$#r6+?Lv%~!A_G_>^U`ugE0iA|Sdg6FlVT)QLq0aK*j5K52_ zfG&cGRx!ii`Mq&0T;xG6CM8CzGYIE-CM-;@fyQRg-qMnoGjR1G*t|G>{lOSUF|cSp zrOFxbjC%5j3nRII_Q-TZxfzDUp(-VJKDf_yMt`)F^INs}?cuj}cxq>{J$4pPwVR@* zqqEbMp}{ZzgsZJpHiy9znS7D@PvSkS826dI!+|dRJh3)+pu_tzq?g>YIMO?}W64O% z)#}n7$x8@Qw(W+_8P3;f(ZUGUR0lF$aPkdDqL)D?C>RF+5ob+V z_+gt%!j;eVxh}EH&jX6jsh<(-2J_#c!lV;F59$$|6>)L#(k9tMiQd9*7))7N*_BO} z7ynk6;Vhg^oA;pTq7k`1?bazzU!`hUFFk#eV@s9#S&|Z;wJob4g zOBvPJckO7u_ai~{y&CiSXep=3&sAwU7L1-N6!%u}__pM_wDd<9K9|20xRL5KyKP@{ zM(-=UUzU&0t~Rbd*++!6kyqV-#mfqfx{8kKLCzglR)6cRQ>B>&>W6f-~4 zypNB}!wjR$6k2=lt<|)5%~9W81Hx9urO?c|W0+jQpSCi*-#9usuB) zfy(mw^W!vJjs9C*gP&Oscw*^(*1rvTUiIG{9s~v+jrYTd{!h3wq1^Zf%?(93*!lW5 zu5y;-y34?D!`mg8bv)1Bx~Sg$#Xb&a8N~HzLXKQ;yB2PXcsOy2j|cU)vaIYWoDu@L zqlNUj^Kyr$n~prEx~QoG!~3=6x;*7}FT(;~72W{j?AqU73yOg#OGhX)VguHA{Q`Ec z2YBr$`W>w{#RmS}G+)~QMMT!?C^+-%Ys)S8gZBep70qgXQiWNpoZP|wxCA=38Rs(V z>bvC_jQ@;#^&gFDlZK~II~gb?tC00CTA$dG@bJAKwsSV~w7WLlc{)=dKRP+*XOp~m z(TNniCkfO#!D3#XlTTIyHYbd)S!AD@3V4CF>RDgE0(E?tYyg~a@@7a2+7vrpn>#wc zx6GRZWVT!*!Wq<83FIM1Gm%iVKS7Sc-UQPvFL_yf8`YCR!sh2T?G5FE_K&W3gNywM590inFhqCR}&A??j98F>?fHStLVD7hK?)}6}>;+oAvJM`j zC0%b9`Qb2FsfW<)X3vJDAlYuu{>6B@-Pwk;>%$+4JT0`<6z=@?LBABKw5FV9T1Fht zserdRpAY#^=d6?GLpG`kI}&wXu9j~Vp_LOXe^L#B;&Geq-5O0XU(6ho?tmTXt9w+k zT17l~ZWbL$VD|!k+rM9w4DQ1GOvpJBE`p#QvF%GNPoS*xI7G%O({@y^pAq6VT#$5i zHIThaK5OueMsO(P3$W6Id;N}FGn41ioWR^OHx1VZ-X<{j+!i zYXs}NyJR~%cg<;BL%I`2w7dS0ERR|y>g$X=+&nMGUPt*aTqF?Vcd^4i*QQAkZ1BLP zwICi6Nu>@IyaKQlF+mW=cfs?IU%~Ljr5s}#B1Wq%br_2-r0fE9U#TED92hu?@P0Pc zJ2adDrltrLHkC_at+F4l-fLpLqJB-qz}&d;#ZZ&Gul?eNwyex&zpRjOo21i0Pe60< zX^eq)yQ*Zn0fVeTChx|04=#&QaSfjro`XXqL_nJEG{Q~t6cqiRHYUw5y;TSHRVLhH zfw#H65N|CJybIRp{-Jo032zR7XnfXs{EKg@8lu1R^bix>t9bq=7IC6&S{D%y;*fn~ z>92Dpyh)xgUUxR3A?hR0sQj_ppZez+RoN%pW6;~64f2-R8fz#wNIFtm1kq|x_PMj$ z+uH+6w&pK~c?=HEZ{NOorH6#;-l6;1<|2NpS;@`M?8o=P3+(#(T`Lt1RVKXc&d+Ix zZGmr&5NsZ_Sz~z>&Y+uiDA6wR7>A9?`iBd1Y%e=JAp)l0>h2(Qz%zXC)$4CO7)3Vh zEqjvR#X+B+^Bj!oms~U; z;dn`H*pABqoAs@!`!FZ>HXU(}Z5yJuCzwd4A8cT??H7FhDVU&PFfMzrCRox-l3Jw5 zODi*q8YhH+Fo>-hTTzeXD4#kZA^-gA1#ft{ARg({O)Pt43XsX}EmicC2-)qawni9N2fhq> zGvSy>>{M9^rW3*LB%BlI?s0sn zGF2~d6^Q+Ikq^}8Oca9qs{V`%hi?Zj1*WCyw0hdc=tEun-h8$0G7xo8rg?`8c7qA| z*bQ~u1<_fD(fzph+uzYm8eGke%`i9b=1{1hcHfIvP96fVIn#6lDt8*A_D>nnV#prl0Xg=?+n?b6up-reUjZs&Du_F!#V z1@1JiT_ki}+YfK;-rWMVy8=$zG@tdm;h|5s!?nh+q|uFaoNVWpFE?{A|41sKi+C)c z^e=&FqBEcldzzPH3)`Y*KwQ5-9|n8^g$H3fd45Eh##<3gC&CQ`pfUk1Zc3=hur+V~ zl2AW<@v%Btrv$Xx+;wWEpLzw)4Ynst*c-p}Xrljcg?Tby54m&Ry5feTgTwTM6Ls^I zN{CfZY(iCFeGikR8XH=@2N2)umKV7N(=2=zaV@NT(uSMIM11hR6&m46EQMf+?g{xY zN5Qwm{;V;axJBn_GIFf8Z)9HGftuxLO2GzCQV+G_AS0^D7)PZ3ahW|Q<&=)+6P z>#pk?e2R$j?a$fE&y(F}>;uD9M?I`5kJO}mv!U;S;4h-<52Wxe7k(BM1*Hw{ew?)A zWvDBdLQmj%WC|TwWz&Tp2V>fgzwN1;HP;qPd1l^Msx*amfq}%A?&Z-o&4Q#SfkzFn zS62>P5KzNwejTMvs|zf?x^(!`)I*wt-^tm9uDWMKmB&O04qaVwY!$WWvB$2wu&nLt z22g7txksY-((Ii%Wzqpq+9rcFOyB4#Ep2Zun1>twE;#koF(*y^X8Z#yI*a8R5ckqy}aIdn_eJ1?q&*Ky!toV_}Y{31ehn?7JptFYK)wg(`dxZ z-e1XN70~Tq9xmu;P-P_NyyI}55?;mfi!GjCZ8>bP;Hu#1h6aaL_-9NR@=8gs4dQXE zjVD-IjJf|DI8AiTQFF#NuEc9=uR+5=XYE^dXzbYOO!wzqch4G?*3jMQ`0|C!aq`1y zuD@2@@WtQ~@4?Cfh~&I?q_|)6`iSA^hvvicJjviQfIcz++FwgRrv=r+WJN)sUBnqW zkie(&wFJB|pmS0k8hw2l0JL<1C2WSTUEJV3fa~J&@=es%y(X8NL8fy8HDa8<)gQjE(sO)ub?G%U$W_d+5m z;oK|NPiQT5Vg0FvoA)2HP2N(fRQo5o=;;eR;w?w_Mi#87=hM^pWEX&pNy2=W>N}QX!^1D{{wZX= zp_HfyV?IC@1OxVKpZmf2`2a$aZR){lncT|{Z7PA~bSyvFTSVV0gf=MaKG&lGy$DjO z^#lcv$^C+N!ymiSWql>raQGgaWz6Ntyic>=E363vSJQVSq@~%C#RFhqK<4sI2yPsK zJ6<;RHBc@N&Z)Y*>Eu$EXKRN}p`en3Uzn@SG2sba<$a?o-W(9gEtsHm0ux2C2LQ-(`#pKF5T-}cww1CwAcoHv3)O*}*J7ji{10H@qylQykAEhAVBMiVK^r`W0fK&FB9d$}CUu za*=+yU@p}lga?SNHsWv3Iu09mnS%QnnnEe-lwlAlG?Ep*y`p1l&2*0Ei~Wekd3lM$ z`$5JOYF;~&?U~oo@u3Ma0jm$;;@TPwz=kBu-$h!dJ{mKRc$PQP!d6#qNIK2j072o9 zA#H(P{OkiASW7Od*Prt9`ZKY0wImzX6Nd*9OzAcVIA(TLP$FM#7DwhSX1A$|Y2Mmu z@RrKSVJ4bvKGLqB+~|=^s!q?VkpYg=eL|1003a*qkZPF(w7ruOQ%Gn=p~EfK^=*g) zYf1pVGz?a{AC824t!XEm3Q&r`^;cLD2{0-Y+uVmluq2(&`oc?w4nMghrm0wElDa7Q zv?8Jgs$!lRT!>0b0^!V0C2?+vchS8TF zq+8@^X+!aV5;PV zK_%cz*#il&Zu3vt7|tB-0;8X-InTqBd`4e?(6I*49+)VgSusaeJsdd(M;(IQRp?^` z$J_ZjSu;#nnspS~@cQS|sLo|vYR5<6cm|>q2+j8Sd8>WqzOzxy*csWA3?*-1eLqO3rlIk?>-yPl>$5OV_fDvEQPs_=(g1j=Qyqs>fOoq6BYixdSh;thzeEeqIBJB+!tiaL)m(vAqy&hFHs|4#>a4 zk&IR-Pe*+kkGp^2jG>Rm^}Z3bI{M6NqJrCl%f7v(3%w%veg6kKew>>{{(~Q(FdmBA zJO((q;0Ev2ygq!U3jh^ir-!+3_CX2Q0B8B65s-DO#~mF`RRiO2Yr2T zKNjDf;(_|JyBuU^$U)9P;6)JGkp_uuN5z^g zMqLt8B8!q33sD;BMk$f*W`F^Sp>tpu<~uH2_w(HE`~3so58rHVDokD1c^>Bx`w{y` zr8>eXO-;>OoplNsTD8l87j_H(h#*BXyyzF|sD9Jk&CQ>>C`YB|En7$V?iZWC*yrvn zt3seZsyl$K*~HP2H90xN`9-5WH>AaY@V>ZRFvX#;xhB-x3c0iNkChC@j?D28;LYa8 z+R*b!S)oP8|7@zrjl08_4uaJ}p_s1^1f-Pto|c_P=>J)G37%qiEj^&m{sM^W8U}IvfxbdtLa*x3w3=Z?^yrsE+m7Hhn}a^H@DIL~SCI zrqsP(QOV)dKmZA4H4Hft?szXv-5L#!&H3hQ9OMY$`%Sd`E1U$4j!~K&hB@WsKF9Tr zHxG{rJz{Pho=Ei)zrpAc`Q-AdeP*X6qmZn!bWg8D=Ro*rh*zKr z63X3`UFG6H^0)b*u7$W+VYN`=`%*9zBbu#|a>RS+O`@pd>svw3K!g6`-@800A181( zdaEk-V+{(W6^ZTB%c!iB=jNMWI>IsWAIbGaB{y&T+GMaIE%cQ||CRl7^~Q^Pb};Ak z(IM5=GZDX9jDt!f8w4&4%g#HnmHMB1yEqR4?}Y7ZkxerHhdTEaH>Y=1FebpBvbkD? z4YUU+YW5Be2GhO=5sK7?BrCb- zuf5ORSYB>Bu3F{-BRj_(C`)&$yU{%iW#uyIkF*S7@_5W9BmG|vGoO-^0pu|eenFUo z{peDBDTy|CuWD)Bs_*ORIc+UdiFQJP`^n(71rcZf;r8XroPSch9%wa0R?O!B=#+yI zq(|C6@a=!x7SN( zN?&bQ@WZ$>ObMv0tkjk?`2>W@KWsgq=n)oGZB-AA8NsUYLnf|W0+#bYhh=V9vpUy< zL&Et$P-&?&uYz&kd}5iaGxw~yDBWy7`0bnvSL}vOwELjchOp2owA0!LH4c!`lBl1W zH@jV&=2wb;)JFF{XnLLVXoB?3uMdoUSX)`{JajgGcIoc%P@#G#23nklcDaNr?r*Gc zDp1ycx{Z$eGo%F`YuCWxgkB9F(Y?D|TwOVyg5}9UcIxH|eH8WOiqoZAD}LF_i@n-w zO4qb`tyW(xzrT^&7(PV8#&vFh!%g(zq1^+8j%H_wy+x%Fq`vU*kr6iSE1uDIp1;9g za|4j?xXqugvLc4EE0EY}b%E#3yaXMyq@G_}dQE)D>W zV`yj_RZ_V)Et{9ve)N6lrZlt-D1LkfaFr#%#xQota8mH(hiVum^Pae=Kn?@2>$3$E z`9wacu6+jO;N3thRMRk@0@%k98y1RdD?0*%OV|}X8MR>0g1bR7ksE~PEle}Hw_eEj zEkB=Lznc|DxOC7HuRf?A2h$$duKQ-cx}NB)-|Sq*5-i#vEg*JpjQs{kTnVJdS@;aW zeM1$hC!x8FhB_v6CmY66pjbY@pTem;w}>1UWLHS;=Ll!`WW4{j8zP(jUi{)-DG53Z z9wKK^G^TBevBUorXIq1V)GHVcLRTAl|BgAk;(N(2ih~j==hJ@Nguxo4I1;H3=gkOT zMhKHUks#+2LdF+`hRSZ4r#hFd$FFA=6}^It{<)<>yR8kbmr1_B2TcG6ygS2?Z!^ws zeo^rNbNs}mrUy-INx3jP;jJtTwqkk=NQy}cT={e9RX&w0L~%_5Pp6~Gb(NZ?A%oSb%j{FANKcz@;7(QB8! z2@&L|%X0Kh{%6rb1qj_1eK5EQcLPsrIO96ITQB<@cDb~#mEr@XaxHhK#eh`z4@W@x zq?F+PU5{IM09*Cs$e&la`%eckM!{e4&~7-WCZW<$qz(P2?ONB+UK_>ZCcKqmkJ0f5 zjW1ukcoD`LqhIQAL~dhI{VAZENB{u_R2TDJJMW#wC4hNHvB zF1yQQK%IuXok%=5z-~|Jchu}tjfH>Ay1whAU0l05qL$?N==IaLV*Yo3jW6|xGq1Hv z2tRCv`Eqd9V#qI`(+6CUj;Ky9hX~V}%I!O;68%!m*v%Y(P34Qg`G%eYbW{cSk@uL! z1V3yXdbt(-`EnK(T5LeE?Y;(EEDN#qVkngqO6o7C=x#wf=nr7#yFU0p2qXPotMH~kf}dmC1D&}xT+P|qBgOn3h{I##&`Nq%%EzZfwHR2Yb_cFS* z+0}EdLTAi}(@4`AV|et}A$xA~x6ph&8uJ8omh|)c(eWbCfTasy3}7Lot>xxLb?S;b zc-kc3LG>dUxF@v-RHpJ@JET_-!h9o4JPRgLsosUE9II3Vc<+S!gh29}llyj>q6bVE zPFQTN0<;4k$t0ezduPl9>uUZOjKCi8k^qB>+hXPOai@wd4)-&e4*sJuLvH|1wF1gI~MA8}* zXRXY9iG9{G+Zb-1K2$dCoTj0h(2*|@ zBO0$JYDY`ScW7&RFYot3BjtuHZhqe~qD{P+dD25wVpf&qWn@RE-!)53F8p_F640AQD_x z$2K+7^#W+=4?1~mv6Zh>s|u^-aYQ8)9}d)HGoc2PyJhAY*qT?yH(@$m@u2ey5#-&V z3*9&CoFdh7x)j^>Q%!C4Wr^2{VE`?`{_6uvcjuC9vu0aNTR@aLf~gIwRO<5TU0SGQ znm4)tQ}k{qzX*2y0kbU2O|_;n|2BsdUBPOXZobUx!Ut!nVdSvK{Ri~1`wGnE^7_k( zjlMTiS7)q0dKAf+nVNnk5&+bbmNijMY7eU)|M1|<4T10g6#-V!(v`L)pQxADkE6Gp zUe0Dj?xW)8YGuAsc&bjP-#dWBhN&fe)DlvBf5#tIei@s53SJD;3P*d*aKX*qYuSs7 zp*~k&-mfOBAr1CB1cUO$(Mr&*46p9Yf>|6uJ-#Tb*&*F%>R4(247Yv>&rGQbl}@qzG!Z6U=!pMEey zr3r__85+bmz(dz29~I>YS7hxqWKPmIdZGJ>d$oG=pav~cVUR1)L#hg3^|C1MwN{kH z8A?Wfh;4apn%&zS&TrETy1P$Z$d-1$R_Mv-tc^UJ|-b_gy^RtK+xWe$j^g3R&5-ZAp9ITVZV_6 z!oFTOU&zO0{8vQ5*3$ST$KNU)Y{YZt&M^b>xAfLVSVY8jx)0rjxbmm6A$Zp-pFe-r zIVy;OvR(ol{n4$L%S7L2@UnE>`}wj`tF6v*a*n2sH2eoNkLKM!2xJxM0I9G`>1rQ$ zNQ55Izd&vx>64X8WG;WWb2^7%c*MYrZdBd92-A+tZ_N z%>wU37|bfp)k!;bGlvb1D1TJF%_Z%WSi~1p1`INVm|Gp!+|b;-Zj(C(bzV@$`>J|0 z?}b5>_1a~9^5UScxwXqxSIKLq$GbvyB9;yt3bC>U;7N$5j`m|5TN z8PeZvE&<k{ad+~(AtXj#=YT|fdRe8+1jicNY5&~9Ni{wpsgS58a*1H%FyCJ zDXYbVu$LHT6@0DeiwEQ>e}xQu5dqNe+i{JvHiV~tjiik9`~{tOYsc|2#8#G?E+;E{VNxE-4>qNbOPH%W~`p%whPd&X^8U@lEHc4$wO>#+H_r=Kdm-2HPwJN;*V_< znYY5_bloE3eI$=_IyySW3TF`aIreK)iePpmAyjT?brCc%_`SZhFd6-l)8rl42jOly zYl9?o;u));+R99!_n8QtghLWCGCVN)`|<-?#0834axGb=)CQ<96u)8;umRy_4!`dj zxIK_@{BxY}{m(tdda_Isq<2;9)wa_!Q>aRu5V6_t5(VYK+|5*kVAW7Dkr(x_aB;~? zxwa09swrN&JG)bs{0M$Cah8gRm4LW+sh$OqrW^*=^GOgIRKCCg9$Vf}O@jnsH^l2O z@UL$r*<(;8Pp8)uhV6h-fcz-D2o4{k6*TZcEhse9z?xVZ^}$@yuTogj}??B&4ALC83}P*i(mYoSv50SHmW+(|g>x8v#h8QM&* z3xY`iiBVPE>iG)>Bg^PMWWu&)8t81G+8q?fj@+f@9ljR^Y_Q>V3R3YQz+A_o2YxX0 zA}GKhILq9kw0*!%<56iMwMY6vO6SjsW#QQzdIzD-ODgE0tsj4;S8V9RCSCY;)Fr+1 zF9pb~-8pStY-8jIG($^N3|K0)c&W}MZP8S{hxxIGjw3ycw-eivT{m~+&H+`AyZ5Iv zw4Oe^KMYtD@0^}-(>ji1$|zIDuF+XEG&HOT-4qY6OZBJ`I}H?VDGTO^ksG&M*;+x9 zzkigW_vPupRi0!Zr!aD5`9Q;v2C51@g7516dwY9T6LUmMPlB|{ANd3-9-sZ}Hj+BK zR3Akc!Oz7Z-W%if(t4^@KYm;n5)yLSvbMKB_qOr(K}|U6@o>a>_Ibi2TQ1&qRZ?Z< z%O^-?8Q5zeFa$mo-L-Ygh^`1$Pa2~P0A$b=jJTaUU;?bZC*sxC$7GAY&F3E0n~ax4 zf?X}Y3hTw{OQCxU{*A$$UIgiLkyu( z)Rvgo1_BP}R^IR6YC%!sq5}hhjqgZ_h@&w&1O|sre;48fO*|fD(=%^if8pyyZD=dR zh!T%-V5asAW#yOa?2tQc#T=lN{J3T~zCpmn6qWT1>YVq#ypB(x%{hB`KM(+&fG7Vr z0z8Ftx5L9xy6OBJb9N-tQPy!woapTh)MY%$u>D4^tRPLLi6=?zN$T@G7ov7aLS z7S;wDEHG^Xh}acCRmU6($A<%~FLD7ct81G9+5!A15ECG*_KR>yg3|}i9;|GywabQ; zU@Zf$jE4m1e~18hiUp9CQV^1=o}Qk!IKyHW;U>dNk`c4!kz(3 zFy=OSYs(W%CA!mA+2BGJ>V@3fXW z??WX=<*SO&VAHfYzQDxy6a0ClTGelK(z+hX9Yok|z+%H5!o}Pa2nXL3bcYbtv8un> z1(kk&7@{E>I-AmI2?`S~1h^&#A(6#BhQ2ahO$m(2K@Xtss3#nYZT!77uMS7!d`!dA zdeM<2bzBILwSL9dftQl!Svt%4*~boPv4bRr-ug1Qo-8L}sAbCu^e#cA^TVgXRsjF$ z^51Jv~!&4GShvcOI$=lyfvvjdM*->gq1c;7$yDmUsJ+!HSq0{FvJbgIN zSq3pOQ98&MK#`m?T#xqS^LFz~h8^gkq;omZAhE6H5}?Y^<6%-8QoXgcmDiuzO+=3{ z+<#wK#BVtJaFwJMKiR`zwfnPjdK6G*!rt35aG@0mosEuRgA$jxuuWwviK2|CSRvRD zkN{AK)+xaX{3F_u2&S#Fobt59aVFl%TffZH-6%J{{Hga~-_Yf?rZ1vh^cp}mT4C!* zd3ONmc?FIsXfCj4a2v2Vuo+S1KvDO0qN%xA3F1AqRK5<&ORyJUHWfgbS&-TE1dEI(4i4u*(!kd9YV7b2iE)C%aRR#bZ$O8L6G#8OG!4lkzkzLvurk%I zThs+P(e7|TtK7G@&>gQxf2|@=EMYctK{u@3O)p>Fx5wWz8>%`*};Xr#PNzfQKh;aqaQ(sw-;<@q z?X(Zcv;v2VRP3`pUjzQ}3^3EQj3Y=;$&Tu{2+W=N1E|*DiS4DJ!-gqkhjo-46a}IP z#K(c~LO69pZ5zs>wLohXWrBWJdj5(KuwP)eQN!Z76pjl*IgS?Dd=}YWh|nWOW1yzo z#v?TII)Mt(4LnA0No11YXoB7>__J6=|5+>_2Zy#Z81yN4tTaH;I;e}PB-z!k*P?bI zVoU$Zba6Z=|9x+FHhC>*XDRysdnuGcdBGbwqq1}PJD=sN0xA-``^ob=KPvhjV#G27 z_W>AyS}3*3AE*Ii2_?kf$IL!@vhy1BuL_ratvf$VCcqo?p)3I1GT@RKzxYS)cs1bG z|ND{Y2r@Urvf=67a_YZ-5C3OqKrw~?`;kZ7yoM547OTQ1KR#brG6>p0C(Xs#7Wilv zqEQX!0g)#hMAdlKtiqz5{r}I07`4E+Ay-37K@^4i0bn`xz(i&zV(N~GjSU1F0c2W( z1Q6CZDd%LOi)J2P^~(+`%zr)sVR!+2t?<)~0GN-?GEgjlZ%lN*O-KjIwQT4mn?RjjUgRs^;3J5ZFGnp-o(KhbWH+}_ z_t}^V$(7lt3a4f4h>nidN}nZ)`pE3Od^M_E_HZsuQ1Xr#z-<7>(tWa|12HW>&pPSe zR|p#+{5SU8%HaF^BufC$9r9F4fo4O)dM|MN0az+6@tPYbgwAN;S~wuWoja7P|6b<| zkGkyQWA5$TN**}?rUS{cUWVM4Jx|(}FRy87Y4x=Bsd>*mj@ufjyI>`~W#va0)~6>x zco+Z%sIRpzgj<$H-E%6y`OlLmN&-6T{>@7L$)PVfIOfnm1^m0g;AOT&3KI5@cafFb6%tmm@d$1*MavtM0IEm{`V z)n&W>d^cibmV;N~*T5@#Jn{6r(v%>>1*-%A zjbZx#9;J#om$8K~Rh%OLEIC42eWHF$d_yaj^9LN1L9AEazty0hmtr?DF^QEj1Edh$ zWby;%ia9__K-P~%+^!xQ8(VVOLD69Tv7*U<9T-PfPY$ummwUTk z2LkO2$eNcG7+iKBH0QJ{UDc?E&~SQs08ab#fSMt=OkncC?PDa1LCl$QQQGU@YZcS0 zSr4_FDv95lOq%Ra%6A&7dbZu2*EvtEct$IezI!LGK@b^0wsi99#~tc%Ry_IoaH5~+ zexa){hbYX-JF?MKa&V}jK?N*8#yHVy9%INY?IHx7S@l_d2YGasw>ySvAha!#f>^}5 z$P_6GS4+}VJuPxHP(QxE@zXd!b+Cl+Szv0@f5a8V8x3v)!&Tl!K23!ptgP|^@lD!_ zcvtw%lg1t%Qs|Nc7SJhv_TSBBKLW|5dGZAp{x7sfqTo8i1-Hm98d)qoC7&EMP`h(8 zsoj3E<$Xx^9;2L8wr?FELtuU2JivK{h(cFZSG0;2JJL2))>7|{S``&_^;%f*QLyX4 z2>?ocJ=F_w>C##EH=r*~myng^{o{6Hu0yQ4??5VGN4S1fk`Y9$fDu4+b?mQ(0Z{Z76^utnR1{N^&Y`b zUF#&Ssxmh1Ho61{IWpq?1cW~Dtzc07htzGs^n!~y8e^7V@s$SK+VWNX99$J_j40(9 z=v>s9eQ@TK3a!!Zv{j+$miO`yBz|n|8Nj}GoM^g{ra^RzkD$C&;LqY7?M{dGTG+n& zGN@eJ(Gcm~#FPXtnjN^YzIh>1MNLf+Oc?02qsBIkk8SV}2%H?-o+4|;1 zA%2mu;=*oQFd67T0Awwt@UeaOIB38{DF_!)ygDlsLN|@s=5YsDp0bibi?-Z|5SmT9 z(mN1MXHR)6CgC=i?J_)Yf1J2_GI%Z0vh-;DaQd)D=eP6liRTb8>#m|^K!3|hvo8aJ z3%+y6wTC;xC$`tDDJ}q%IR0}};R1&31B8TMKa{&{|JZPw9FvDAv}^S;S~L#8s#of? z4GQrA-dwZIweITG6meG5<>WA}k>n23P=ANT((-LU!k+BX0Ym4pXTnzS0#4dh%^x(N zC7-n+;7A%N!hYsLJni+ch>GnVtnVEQ2R@T`6IJgR6s@N+EYwddTltzhN%=hSuh9ul zrE`v=yL0D*$)a5Z)c&C6C_Timq=+3wig76( zx_}VS^LoA`_5sWAQ55aRrEFU5p#Id(iDIcW!2Ru;i@qON|4%JIl56@!>|H@r`Q?3W zADf7P?T))-Z`?@8{|M1(mR8Pr!3uu>RD~aL0E7y<3_TJAz>T|UR0hq<*%})gS5s|} z%_Ohq8ri*i3EVQ5F9QSlc`#n;=`fZ3U$-o3J*~uyMr^CkXI}L1eqp)p?zg03p2T}! zpS-cf;OP*TK-7Aw<+j1u&+CxWCF-j~5Cvky(v#3U(aq3m?xPNhNoTGZG&JUqKjtwF zU=}kom+wQpLWfgx8!IvpYP)_&^`9)uLm}36!TFF)V=uv9P_7JCuU61!Hhgi6RlNp{ zplg9xO!z;hKMRcbPMQdUMQ!r2IsjuWog3G_zXGU0U;S8gY%GzqN+N{TqUdVGZH~#k zVn4d}8-ouE=u&x!4_G5WWYyDSR0K2!rBfyLiE;M50L=1U{X}U3gFc*t(#(q-oJLML zcs5vIWvl^z*rc|c$t?{2hZik&Fqu+lfWd!_dNvJsFWCS33oHQ&>KT75MZYtMbiqbs zEaAtzzQ0v>dafs$H*j0XW~%X%TN-(``x=@gkR`dw_GFnYv)nBWEF403cmws0nf_&6{Wh4pfpB z`!o;#@x?1LwY9YTF>|GYa{(AS{a|)7>Q>P>9R9&2dgMiR*W*b* zDaXCQ?MhQ#suKfb4|ZzT>Vf+qpr=1v7qQe9veOgF^cDc8w;v^c~_a`Lc4 zkGTXu$+qr>{9#&0ZWriZKM0cYP8w+VI!DFfZo5ABfqCHRpImvE(uu-#kc-%i!3cy; z6;ad-k2b)owQxJO;KSN2Yk-LD!NpGB$aQ#rUBO4=I4vrt^irxKx|h!twO`hSai%7w zrUGzR;8Q2$?7K<@H5GZQ4&GQFp4dmPl)HXE&#`e0bD!+B4?FUYih%BO!`MdCdWy01 zdI;<>DAw^5z_;_uDYFmX!ziz8f%RRPXLIq=QJZSBUSAA+y9L7Q9(Ft9AOyoUb#WTD zXPk=#PAb@0p8sT804T?l-GR&&61xL!fb4dH*7lehf&>C2rCS}!Ixo?zrK_FQ$U~cN zSzAF#!M-r|C&2OTF#rbvydCgfvd4FcT_p~R_xTK&W%q(RuAd83p8(sW_TlOtgPY^g zxec!H!(xP?OVJDUD!?+^TrP|CR#eFO+cDJ)=!cV7{b-D$Q=KzrHGe*W_!(XlpkVB7 zh`D(bE^wi{YdUSA0E#C1V{mRsDQ}$ zyI~?wUb)WsC0H-}>5i}ImX{#Cx=#l=@u3vovb|iaCxXVsQTdv5>#ILzW~|2?F4MlC z>4^Y6qa2N5R7)}$r9KxyZNoJIMyY9Y;4%tl&ep@J^jeQ_v1~8}kZ%v**dYeMtB5V% zi3{`IQEn(__YORLql5WbV=9nu0}yNfQ{#cwk4m~4$AbMqYcB7if2W?exqKn)=1fmA zJHp_%Hk_!I!U!&MBz{6XMn#>>0fcowVi3ij9wW-kcJxW0GV%uui)PJI<4zBxgX{vH z>G44f3HlH`mpx0#1{3N$d?Ww3A4uP(IV^Uj?`qAMwQIv~@N=c+V2}l%LYl$fq58&P zc>|MpZ>q-tG}da6Q5q3As5A5a#1}yy*4Tsx)l3uO<869v`Kz)JcQr1d_Gr(ps*n(Zjab?^t>Kf`#12+cznLsK_%bo9{{Mq!6#@! zy5}8DMS8cYf6eVu??_2$Y2wB)xXx6Qj}wCw_H5uJ0URBz8qo0S3Utkfr>uwmxT1=8 z$$|fIW;+8&I?&;fpa^xM-e_X@=}*6bum z_X%EC2WJt4QSoDzZ9jN;0){j*=i}+9YU=8CZV6->#99c9Cy7K_asf-7>i}cZP+&mB z4wBkmQnq_Nz|BB0D9EZU-7Z9zmJL1VWf+AjfRn)!6|q})Y%m4DUQeWZNpENwGIQAP zI}VgCu)*Xx8SEq!3Vu)I4|x!ep4HKXwdkM`Q|J@S1&`WU)5?~~l9P`Q0L3RS&9E{b zWZWz~Jc?54S|9}v%ZW?gWu#@}yr&f88sY|l-@7WL`sTAC@+6R>c7jx6cL)a|oi~(8 z@glF;6f43-_SE;$o_*VB3JLwlYAbM^Kng%*=9Dz+Zv?^f*!UBucjJ4LtYCq-;MTsc zaZzUMBskAWN_HlOv5SSI-ozCewQOn52ep%t+}ZQ5{FvL zBuMxqlfO+E2}Stl0xn&Cqld4(K5WRSd!`wMLzG@QyfJ{b=ucj?&1x7G}qN+-kXB55j^ zx#-p4TEW2DX~&2HV&Jt}3Q1nH#HOeg1lQ$?DZb2$a^?Wi)yX^eKqLy>>r{77xT%=e z;faZ@WLSHN2#Z98YfQbiu^M$PLwiq8SK_8Mese4ji_xiVs+ zP&F_RcNK*g6*Vr#+DsKIr5>yhimDf;jHIo+kQV07OaQkg9oG%#twr}=AIZoc_9!|o z&bqg|aX1;$5umt*0dwjF{H|1l8GHP`&{18DY@*9^TQHSS+~C~U4D~bcrtw*W)H{Z0 z8r`K(KNbs$|J$G{6$1XWY21_Z94XD9&ad+2&>K7LuSngoreFcVN5w1+6o+qYY&<+5 z2v@p;;=;d3#cK8a&S)^rJEMXjGs@cR^}Gk` zGx9mNf>v`acP4CD8}EnKvNy9j(A|>!T7KuKwO|H!8^P#}OPIBpN-<0khZiusSbJzvJWG3I|4V0D$-YWf3{ZR8 ze3dIak45tfinjnn1{D+O6~9>nC=!4rntKdve^aIg1_s{Zz_Ej}8Ssf#v*ELRu{-A; zy-fsrFptxr;O^B?jeh-RkMFPGSD9R}yAR1|VMKQCLo#G0>(~CEl~2ZysCS`?0gKMT%~6r`oz9}I*7&%|Mi&EfGpwzBSpbp>pZ1SctT9& z&q?{8*PQssM#BzqF8L+;tkeJN+4~5JQFT$ITxPWDp)Tcv;3IB$B?H^PEBNmRRs1w( zDhH>ce<2RQHA}-JG1M7U?Ehms|9uhs^NtI`FwkuEWsrUxfzAhESUXUa4(^6f`+;T+ zIlIGeCqk)FS|9$e7E~4Vfd+!gywwr_gs_9x;ZXk9LyYBH?@Y26II$^?I|mnqslYJ8 z`j?)ulLuRkRyuTM#fQL%j2+dM8S=-;_}>q?D%mG50cXGaIQzJRdnX_u?SbFmX?B+X zi6nMjjC~JLqp_!F398noHn-Gjp|EoH2)aXe3cXw4-~W0zfmi*5MgKlah`k8T5Yr+qW$)vs(Q{9{({WkIf# z^tz-*;Y-?VyNKzos;YXY%+5isU9YWcj^}pbnBj+_G@m0VgfPl>((jo6&)JKohBvAGk1C5=aZUEhM}dfL6e+t9~Lg*)2cwS>SUV;5UmFJrPi zAUT<9=S9?A9Gv&c7quxTn+>J?3wfaHT5$(FOPkN1RqnjYM>7g*(zc=XqK0!8#Q-^n z%8@8?{tEo9?Jm#eg6H`{{nTV7CeQag*>08FQnK&o$w%oFJo@Gq$sx5LL$CC;Uwk&l z1IZr9;y~uG=ZT1n>tA!*V}mkw>kVv8r1>Mh6$hFRcqFdd7HxcnY3aAs`>#A5zFI=s z3QV~B9Vs+xVM6a7u!y9I*|LRPwvxdAITf3?{pl(W7LZn|3#NX@8r$1v3C^NvnQBo( ziOV!bY;U8Z{gVxl*RmYO7Ll-wFD>#7T^Lxp1T=x93| z=FSmhMnrPZ^M3OSi4v||*!bm&7fe-9CpG0>TtmOBqKP;zz8FzcQ!^?@>Gfe@*^Nkl zGW2pLd_okP(JZY|2BaDNYk9q_`)9djJ$nwE$I1-94`-^@=PS4BpS`j=cAxInt{De) znT-cC_;Mdz8^}?`w9sWLsi>+}pTPM%hWC}v7qC?##d?qe2vj!=g8Q_|&Gw;gyG_?6 zc|1U`P*j#Wnm3<2`{xoNu~pL{d|$?9ndDU)%(NRz1BF0~9jxlBCAjT~q;meNP)&KK zd~>?y7EKT@sA%a)v@jT|r=ZLL@;{3`C;FL25hDro^6ZBzo(bc8mK+6TQfYciRkyJ4>e7hAb!EAj}@k_VK3t<>cd ztvij;gudtIXddl+l-t^Vp%Sy0C~MnOO!xN3#?Rd5oMOhUs~v ztD1wROp_AaeqFtfm3b^(_xpanO0~Qo-?aQggyADp&AQFBrtO(SuSrs7?Wc+E{#o=L zuv#T)S+#>Lej%e5Ho@b@%p z?+mxc4FP4AN!KfETfGd)#t{6LoKH5qt70xI0yBGih>@nksFXZ7AA+Ow;({jMN(as8b}bR%Zw|Oi1bi7&_L%dbPjsaVFxF&lz0Qtjtb`)^rXU1M8_LQX0i2e zgZ`%C)PA!`MmHwJ%m?)5upblZ$Q1AG#=WS4o_ zc~XP(cXnq7#hw_#bjkci1w1&z$HWg+1%uwTv-VJsN#tGrIl&ju%uQ`L_;7cHnB~P- z`}Ri3>e12BqS{i>xL1bhp^LZd>F)!J(72$t9u0Ri`f|ds=lv_}Ai8fqe*9R&xHUgzip(ba?FcTi*ZOb%pg zj@gzI)=1S%+oO5?aMO#rOjM1nQF@WYa^S zU~9`s6IA0t6JE^9IT}tR^9F%jOE|0UlSm{a*~YNEqe0|mqEYM_TB9B`2QgQ;p74-->M?E0EyzUm&lRK*#FOPV z2y*8*I9&=|w>qRFsT*iPh^}{8W@hFg9BE7t?4|u60oC7M1#z$7;19Gp_guCs+c4ED z^|)X_=}O6Rb3V5-QM-KG1I_f5Z8X}YOKpSFLp3VnyL+HV{!1*N3$IqPY@2c37ctr^ zEF@HgCP^4WF(X!@d&}st%nSe85AF46koPK(jW4)^hRb$%G`F<;9|JkMmTNqLF^+(30DbkDwDU5JK2ts2E=?L>eLr(Ylzc|-S%vGfcgL> zfHY5~l#9+|Ku>B3?_0x09Op#qWrSbqrXJZUj0Am!DnCY94*rbNZ5>#i)!CLHO~c@B z1D~{UN>wPOCv>M5feIr|oBjO@&?>G8X}tFK0OXE=$8~Gf3}Tz zbwVjb0n9y6i)XyuE#+MQpk!g|Kq=L?r=>GRGfH0Ez-zTr3sSFgTO&+Saz5R~Lr0*h z1g-fyT?X1dZ?_PoL!I)#lS;;i;x?vm0dkw=+ow_4t-%Z}Cy*+A$bMGa>wwA{{5dN& zo%34Ec1&ZX7B*yrj8MzsGGT!<+FVyqhu9i&1)Iu+~uJl$^Xz7n#@=k zuf-`+rQBv^!H6%{sQ9{N&1k+4ZhAYFH*y)C@jt_Mh9~wHa z6-J|Zu;N|G+NRZFZ?l(6q52|vw0f1BYwWh{${!uMjc90l9Ca3QRgv4Z79Fgiqdhex zD#rsRr@+!DDdM3asqetK3m0;K=c3yb5U}r&jP&qy=YQ11ri*z^zJblgR?YelyX26Y z$yQ_eh9segm>yWZ8fungX6D6ZXrEuq_u00qT^7B$Lkgx+BuC++7JK9{ zDsr^Q=Hq{zUDT8;mD$oSm2LcvwTDJ`w`D&n6=#=Da=h`gCV1XU8VZgd$p556Rx~gR zlXw!B&xyH`M#5;eWzx)1~ z!XWJ?#V3|Vt>0SzWUNv=M%KFBjPPjZ{hjk}_c!7C-dl>s5})EM_8q4k$UYVkBJ)Ag zG;pcGSB1m=UQH6V=gEI+0jz&IxMJxJ5FCa_jgLCAMV!eZDSgGJd>g)+JRW_3g+ly8QlN z=5>Gf1TB&^P2FRbu&00DU{Fw?Z~5_K7jo?Iei~$#Ag$J|bffKTcNKiJ?e7+U|1Z_4 zpEVoBH0jI_@h}7`2g0ZZru$4OE*CRy9Ij42&KaQa8+B)$XD6OsT8La1CQ-cIN)6mfhmvX7GqzVAD!Z=8$&tm` zq9vm5u2}9i{rSy$>NL~jGmhuSw04OH;VKc#QNILpIeG$_ALOauM4k}lYfpoV77z$wEnjK+mb!-b?}Y43Xh+@jp?F_ z7muFmpLJQ@grQCT*av4GUT}KQE+I2Xs=cm1l8L=~tistFP8jBk=a6SMHpO%>32uew zaLw}5G%Xf7{fmZ-4}7oMIeQm%l}a%)&oZF{2`!mnqf?-q?C>pGE_w?jw^9NTyJHgg zBTOu^Trb@UpJipj&c|i9;O{^A?p4i)o3b~5OgR~omNK8P)Sg!Rl7#5AOH{GipX579 zGg-|9rw31kJsxP7Ng4sHVW+$D&7)6Nh!A2 zzt4A$Irp!J4;RH&4}CcOb{;rQj`#4Ty4$$?p5gek9i8mn02cwdX}!*hAj{kGm$zyu z1?!!qQcC3)zCPFwCyxgCzCHX*JI+$*(3^zYrslq_m+7_U69_KE_Z;y}O|SM`%Y82H zf$><(1}@_rl66oV*b7%^uQno#Mg%i1ShXB#-8Tl+_A^qH2w!XV?la@Zxe)drFtX{v z=XZx+t0iTX_8tY3yK(#D+U`Hac+hAGZi4h2&8)Z@%mQl0ncf_!Smo-5u}-$Cc+250uqA)} zN3VTMN}^{QD!j8uvA&Xdt_&|}oZrv9PwCL!-G@SJL4BSGZ;YPsf3ZENu8;%VZM&zw z{(VR6!74`fFvBDGT2N@NHs9luli4|VzPGipBzP`=nln}g&6B>-{2QiR_=+$sem{Sg z>r5$K%5Q#=E{0tfrM~W*1%oR-+uR>Dm4wOG>u*J(nr(>d7sZ{u_IKOqN#>hPm@b;n zww4vI37y{a^INK)>CHEZ$PumiPbNa67p{w2@|+EC#nH15x`7t=to59noqc(1uYWCp zl!T|UVt*|#7!eRgm;duRWh{kN;HPmaBK-1)Ml#{O46s*YZ% znW0(({=jr7IMS_Jhg-Ee7}|$7pa9d{41Q_paU{l??$w8ARS}{#@X{+NtcIPWY~(D) z6(u0QVaC$mMe@icNth8;Ovo_UURaWgmD$VB-)48nR5s!JPdi0RgPCU0h7+Zc7X^uy z=YF8v*NvtrI;U-RTi#SZrq3L&Jii$p(^@1j$~x4^z3$WvayTp(QL=;-_8yvq(fPmTj#WI zr5{_n!2nua;YXM$lb?Scj2(}Y#S|H*f8z|TeL*%HgaO4$jb08L+#x0IRRcrQ7Y4cP z%AR@3+SyV!dU29lS6-Zcb%-x;flP_@eN?g(u6bsN=u^y>Wu7``pU0^k85Xq+Bm7N` zV3^0#eIlUpOpL>|-L-KSA394c z?KD$wi$vqhRdc<1WK)MOyWZ$l{&$b`P|$8`v?ghW9>O+56I?X0=;+LaD?-zUcV${eKs!C|LxhR=8?&)k4I=YMWPPqr;B(Bd+RS|d;AbEpiHIw zp1;g}(36@pPvpISiKS*Ks{Z#{63+9LBkhFcoSd7*A!TLd-!8d@J@J%R*DRBt_M zsOD5XwttVz?%uuf7YmA4`)EJXJsYV7Pr(u$G1I{xG=~E|gaIdG+q2g=v1L6MVpOhs z3)r!Lrs1Bs8r*h>F{=KhUHL}dv^Qw70=Fq+eKHHPjbh{z5Po@Z5L_GlZeIE}@+r)| zEE+^wlSNDO%~^lJQAqYabuG4s$*Nuyeb8O_;2mq?DV8-Q@BcriVW^E3vRE&}TA8nS zZxxK1!5YJ^9w^6`=RSk8kN~8%=w^V`*>ZW_O;xa&Z0HrgNjdk#7ITHSL8VzM{X4pe z4o|9BJ~LCUyfX61oFmwtVz+@q1*)xaHW)^j(w>`UoVheDtz*wvq^+ftee=!ZeGR8) z^Jpgn1LD+@IHI%S{~xm60xZjQi5h-sBqXF!;>AF^L0U=$L2ye*hjc1PN-7ODExl0$ zDd{c&rMnv`DQW3{9`Ky+eBbZIb?H_&!t>ns%$l{<%ozS-!e#LGU*hNdVe7s02^cn< z00FN`eRwfu*Yy2>Mdw%y-b9eI;@d6ji!<7vp3&F1rz<>ck`1sSB~ue)C+Tx?Dc=_K zlBnd+fE$9v`L2!WT~|FnDyd^Ylh{>cJi11D%Gd0kDas0< zCObNg!(ah-$Pw7<+Yb-JW-FtlDr^=8gDkwYm2=Q^p_nN2)NMU5UKN|GsuDz3@m5;T zz|OuOcy}Q6qte-1;ectsQd`hilkmHICwkBI`}{!JUY-J3x3M0x$VxDtjgL;)Jh78x^?hJ#lD7YZl=VA z-+RyKsY2`orLj8aGeL+)?vM7{Jk;nyY;@EntChSXy-z9X17TfoP`X}32koDid#!>9 z_QJ#H@Q0tu{OSd757xz$z>sF3j9e2`HqppWnFgg2l*jBD{=^oJ>8{k}f5WwcFYf zKM+S(#5*~AO-;Gy_mcOaAk-;AFIeJMtJNWJxr)Es(k@%w#3CareA#8~KEIZQ&Dl1Z za8tkCWWUj=ZOubnotID4FD)&NGrVbLeezgyHn=$H;2p5)$A8C zprGD3DjcyLg4LB)lu%+=u%92i|DX?pJC$UU4)_;yty zO%bRJ06%y_MZiNuu3S-Fy~6oVA@S}ym{!1P6x6I>uu8|fBMPL%C1Yu(hDd}LT(>Ii?)*+{^- zGbEPwn7zflEpqDt-!6ZGrdYg+le2T|h;wF2`wH9(vb>?q7^$8>1C3 z!d?-_oxAd%6i*&Y8F$eTo&;GmX`Chsln>;O*|p_8f46@Jx^)P2hlBs0tSzY|*XsxK z_ZAA(p!`P)l8v>F(FEVE2X$@q!fiM>keT4ot9M-)Rm~h!Q&$JDG<;uVD8v5^-0a|w zmPnl(`_X8+_=2vq!a+A+CAH1rhTlKqt}Q%yy3!RympXiCDgov7_(qk#PEYaVw!8JJ z=JDF&%#-#9>hdDw+16oMPvTiy_%@y}gruCt9Sp8o9GBv9Bl*{TP@}lJ!?`WD9H@wI zUB}w5ey&q&k5LneCE&B-{{qSmvK8t=sv_%Hv+QKlma2dWS^1t-KK~;KPdhKv96sE= z$}IJ+Ew^3LfUyIn2lrAb&Ua!!>KKSz>J1KBFyx;j4maC)E1a;sL)l*C(P%OpaN--`*Kp{BUid8yUFiM4?fPuI$)ct#LO zIlN14khCB6Dttz@iCO%v#EVmu3-53WZj%**`D05mK+=>05$6N3Y7I%@nk%0Z;Kk&J zy~i9ak#-V3`hzeknKriTyZmj~J?GA5D<*>F^YHNN*bPs^c~IE*CCtRk6lEUP`huoa3 zncHt)#Jn;mQ!Cd#EkJB;?Xt+Nu;qP_{u#A&QqEW| z6tJGRe)Xlr{KxEjQ~Tjdk-LXY1ND3r4EB9Yle&_4Y7~#tXGjmdyxV5Dxj3h%(?a83 z0)I4lAmwQ=5dF_*3KW2ZRm+9k%XcDc!n(O8ea0)B7M)^!X+83oKKECYj;xH|&ufNK z56UNa$R6hz2jfwo&A>h&IXN-)j_Li4*Tg1|E4zZEB4yF>K|9o`TF~Xa zQZnOsH4dY*;>APYLRERN6FUM=lRjOHjoFAie6Iy!Z%N+5CB(;(9oat$$NY(^nSGMn z(&yjHxLw!eE>_I=OXSf|`~1c!4}|$JlI#GDJC$35A{Kq!JUjQENn~lBvMPo z@b`4mji$ZDYl(HQhMDQ+aodfY?fUte9=5@?d)+estE_Q^wZKG}CiLCEpU9yvzO5## z=7$eJ;wbq5AYULa>Lf67lXM_oOhVL97ApLH?8nD1kvn2RA2#nj=UDUAQp<$5iYx<) zNd$x(7|UNTM&;aC4fdh)nl(9aYs%F|9N#l7TUN|aDXOTfq}<7Cqor`(&iQx7EL6M3OV6* zcKIfdKgtD~0{*`2DTL55i*EQ&eLvu+cQpi!%T267-2Izzw|;56ZfP4m$T+%L+SXkYR`CHw zw?^V9DI_P2tUz_Y;N&cn)|r|_!E~oPyX|>YfVoJ#$_u~bOHao}R#4%PXiLQ$Y4+Oi z2?gNl1jW{9P1UHjUe34XeMGq zmwJJ)$8;p4m+$b2{kyfb1+|z1n4{A&?BWv<^;c`g6 zMApR+V-S7IowG7krm$A&xt6x}*9w=d6UmU1&66X>e5Q?v#0ukMn}rQh;OT~cNB=YM z$>FH+siTJ!MJ72}VJeiZaLgc^6?{rglgs+(be?oj#34oRy+OU3IK$}CPrHWExri=y zV7bkQ*5IU#C9;H|AE@J?AYLrHv1&tPiZqoFkbT?wQVQ1u;~iPF(F-#HrJL88-u+;T zSAlvu&IBsS;!8|=oZ=>*Hjm0LC1EUdoCgxi2${zWl_Cfttp3}o#Q7G|J+0Q7C`vtk zoSQylX6Dq&PC*2#SPA6N!F?tcM{JFZW-@>U{^wuF7LWukGc`EC!wQ3Q810&BdAVe<`2; z337gyks+9)L^L~at*avye+Q3Vq9EY@Y4Lf9TfZW=V(k=c+~P_E&s6%Ky-KN3Fbqw! zB=;*vngSnAA^({+ni(Hc*N<@3&ZUK7y^o-M(6YEf;e|OW{9GsMtitJCZ5DgnPcUTo z27|1tRzsBl`UnA8t5P)R4iv{Nk;DEmp8?1)@>v#c**5t@ zljOR&L))5$5(1GOJaB2wUxoSSWQ8ab-$gqYT-!&laSe%kP^bysiR>4aD31&2>y2^t zOo<(FBXLiYM>(8K002>Q>lIW8dpgoV^qDIHUbsReXqG#Q^I#>g;Xn>A2GDRhKi=YJ zY?osC`HsYiK7ZqU7c=G-KH&VzC2V?WcR*dEU&ux1_gbA*bOu^vT$1LI6+TW zTP`Y-(5o7DrW*n22@iy2?G-A0ytbmE#|?_g-tEsJoh5BDFu~nomv-~+s$KD(o=QO? z2Nx&!KFB^xee67Oh6-RX;NV*1g`h(|W4pB|A8x=7`^$?VNnzT+S5NhCW#PWckW?@P z*!J3V=!1a}z*T%d!vM1aMZ*BtjOKXkF8rL|r_tY>X2wp=2e-4t{2~GpdPSQFDVvKi zj><}UhCWw2J7?P?DBEHJNIf`hK-r>r=H<1bVY~^ha?e)jmJRNZ4Hb}Zl8Gdhm6a7z zAlZeUasX_Y`o8;f31PX22$%BY>{^5`clR$a5hvvt(bY8i(%BVzj3i!o`GV7kDvmR0 zffFpGyZ2Dx ziZeh^B93bdfWjC515v?)T0(?XV#U#|bS^ZS4{$}lbVb{ZC;r^HaZ$p#AVsfcmMLoc1FE0L9Tj z1%MoZu`obCak6+o{3_yaomq5J!nj*iHqg1gMyW| z*1O9;$fMPU8|XU4P9T-=^Q5X1a-I_Oeai&|3r38UmF^3hDpaPlgu(Qb2^a!G()GVr zC(DUr=ug)x?HGbMHYT;Sh-+n&-{~8aUP)_x&~3e_M@V-CowC!giAhEl!SBZ#=9VIp z3>#y&eupt8R$}hwo1o_SO>UAJ77yuUFT!6UDIAtMt}DN-1-Sxcc__J2c$av;zX{8s^&tM`uzqa?k5$ zuMx?#!8nh3ineAPD_k=fg*w|2fDOJ7&=ujZheuE=(J<4eHIRdrCT+S78(9mvSXc!h zKe@B5{1PXC{}wWl^c1WlKrO5+3d*JGuacuqsX$`Jn!DxURPxq7NxI)4ZFGLjRq7UJ_})5k; zD7(oI4}WViBpEF`TJJ}e>M?v*JKnTHl-)V00fMgd;<%rG21P)s2gw6H3_H$@pt1oV z3t};llvY}GD?snSr#@U=U88$)SjlvUd`>D(xcsxe>pbQ)@!+7MANZ4mABdR9U)mfK zjugDry}2A3edUGyul@H!+ny}&HSkCZ>8pK-fg7?lsD?=RSXfvk2S3IF!s0>3_`*=w;IVtF(QcxD^y2L}(^`#Nqnnj59ND z!84#W?oQ|mBI0#>V zj*erSzRx;}Y|N24mTL#W?02Bm%Zz*!u2Z4OR}eS}EDnqdl(a98I5ZtPMS~aajN6S@i}XFj22MQgwiGBHPm|$i+!2aMk@94Pa6xbC`O!@x zVq*0b?3@fXl|%{KbGat#Y#@^H%0$9T4y%yrUY_d2_>{pWrzTLWr@ErQT&%$ z>*mDQTBCV{ZAOz!yK))f^M5db6zi>X?;gqM*s9*jdu@gUAYE8U@ddtIn9!FZadr7U z77%y@p$W3TDU}6<5`o|^)c0A8x6!YbOxWD^s9w;{cbbc_8pljc_oNl-O{Mx*gMl{v$^3`CfK;h_3?51Ch?-eFwrayOSt4U zQnHn63cg$VPhIqtbBw3*{bT2oA1GFP?YLJ)`jlEhd17p7`D0_;tkw~Pct+(Oj@nzg zAEeuoGT6MT|9Aix(3Z(3I-c0Ir#`&R07qCQ3Vj^#G z;29oJKFQY34%4q4jlbbIaz-jtugny}>W%-OmT6nbl%e6Ez*6>8oe-&8iQ_e`8XbKA zyrXJ(UFkZOgNnI06g`1ttc5Ksr3pdK06#*ntZ$E|{+l7|6_IFx^` zx5wHNvfb9smWJLdW#lT3?~yxt{cPGJXA!8!X9a2jZKZhz53ow z(9c>jfYPAsZ^wKb%a2p}(?0G_L%mX`5A|R&t=;*RP zYGN$Z-m0wJe+FKdLRg*zN(>a?|LfoImb4V#q&&TL$te)*3f4|*Pn=fZi~;`sS^1XW zX_imbjoEgthextFK{{MlG7wZqT`oLnl6X+O)bjr^E6g4?8E8bJ|I-tzc)`SHo7j5U z*|tY|v!Oc!8UsQc3Jc!l-UFE2&7oAz+CI{~A;1FyRtB6$b}UZ=4}E7j|C-bXY##{; zsbxW6X~N~1B_a&-hd_w#oL{ou$px;e9oR0yL{26OB4!Gr!nXNH18&T|@@9}ecW7$A zczAjxJ(s7DN2ty}T3{wz=I(xbQ?Swr9oRl&PLc_PkaW1L@T}Z?EvwN7D;}?C&5NZ)Vu&b?)bN z;&$L^VbVsM8Q0cRmvVY?qV6xhiIPe;kN=_qXLE`KsDwfqQjRky+iX#0=>cuWGwiZL zAd9v}*WbB{XqKes2|EDgV|CL z{mHtVkCgNAq(OPBOwgsk#?TzE_5<#Gs((etqb#YYXDFC(o*UeJF-Bk*bgHix5RH#V z>}dd$Bc;QCKEDi98TIqax~lZz7*1!^NA-IoM~is?_`Rifb5>3wP*sp#Ug{iz?C04oSSHm-rRiqC}Sq_>Q=# zEYRL?xzEQQfI3c7`YhX+>n??S%TDr3S^AePr{9B|+NgkB{nEO&AGe&^7uwkJnC=-= z&AF3c+e_xfma%X@;LxeEQdr@dVXNS_)`T5t{8VQb0oi`w_jxy*G(&x{wWqGQougpZ z$sMwNZR)mp31NbQwBJ7_)?1>h(s0pCt?5+NPp_+^1Z+68;tZlRoZoy3`=+X(JXcuo zOG2~x3!EbWf1#2(Gb0LB+&}{=h8kFvfS@47to=rG&Xo>V|9Z@2XEE>yLfr_Di`g8% zUFBN!C*&U#szne9)|Z%@bkdu30%09oB)xDX&5{%>Z`FlUX+X6YDT5JMZ)BIaw?|7v zM8q`6_zfNe1SV1m;_uW?{#*Tph2VsS{) zfUtluRWtnsRVCUK^00qiGs?QB4omvvKndr0q1X%Z!gqf6Yeq*ef;0%)jsxUEk7FLm zcRx_lvY}$y!GLSF!YzSmflJN1xlRO71SmmI%}!al0`<&Ab=DBS&9x8q&C|K6JP0`t zxO?>e8)p&nBHaVgi|4JmHp?Ee9t*N6E;&-?p9S>OX|ZB=D8SNw!v8PAHkL%{l8D91V3IKPIY$U{7{86Ie#7EciV*oGoqjRDOoDfALToLSx^Sll8bBdxr4 zK)3*@p@G*L#{%X4sRjNNVcpKH@I25dnCR;Ay*43!6a6MPjHEM^2olv~+D#>+7cH}V z&qXsRnS)X+ZoF)o`ONP6JiU*WWHPh?U001i^I-D9KaFr-K>H;bmHiC&7|e%n&T1yG zp{x$=`2?k_H(Yp(V1d2;*o{5#sIJ-xpI!CdZ3nww`xN)R3j!)V$&UO6faNKF1O-V* z16sk0zfS(b18Q~kw%0+BYUY1ALMlBDn9`WVpq+Kp>T`Okp0FfLSd3DA9R9oT4=jc< zXC;ZrntO4Aojp-vX9sa1gU%Jk76~0LKWi_mK5;#o8O;W&f}_RVBH(fiVHQ#2;Y|=K zPVGboF<`w``P61C0Q;AK&)-`!;%@9*hJY@Jd8%&(-8S&(UR?e{`_;(#J?9dS4#QU? zr)a?t)39k;=jbab&tWy3TpbyF%y-snLzMXN~7^9dIigwCC+1MYivtY8wv1O z@hyds-sYFoGNHXLXwzE5tYeuuaQOsjs7;R9yNc zSYBnp5dsa;o&mUV^c%>0nOi;QfXz7kzpETYWyVZtY zzO(P0K`{yE8l?O)(rhPhoWV0of6=`P@PAur^7y#E7aloTpJ8j(X-+4Az=%MZksc4j z1a49?TlN3wZb_=027=0&v@aH&mpbfZYf0C-kO;5+?SBm9cw=XB4!|D4rx&w|CX0rR ze@Yq{{6iq8$XH{V{}5GUaJ)e+?)tlC^b^p%-%@x{?o*RMt_xDnywanu|1;>?msknb zMvf7nbR%EJLkR@DNJ~o#`de~fw095+bf0}_W13JFp;FjktPG1J=OlwLU z61f$b|J%jZ-HRs&E>lOBx#*2!mj6X;1OX0g4jDuBfbvB^vVl_7x%^U(@W(ibiwLMZ zGa^_^{%nET*nK%YP1@xz0jODj89h7@<^fg#dLT-{2GT3@K)vDn0zO1Bjx`W=`JVHU zw*-ew4j=*%KQ{W}Ig`B>Q^$i@67Ec|)umhdIr!#T4Pe8kAu={|ZzTVC2DM{NC&K4q zo0~MMybG%f6Y?r&Jqdx@qsKJ?7j9zdoP($7p}fNq)X#qrq8z3`!Kibi3qzPtbx4hn)B62!&Ph7jPO9mUIK z*QJd?QR&U)bDN26u)!1IH^~x%EUH6J-FYCB-BuEJJ)>nQt4t&j8`t!FM#l8kP)}r% z;F&ddVvCNlvwmFk{8Jm(th;hfuPNVS{xuRpxuuK!OnP?X1~fI|v>0$9>No`WRWEmH z5F{fF1MjCXlgv(C0QT=y_p6MA%n8>`Vt%F~jqhwp9p1$HbYEz%>L^>51SUVTDa>Yp zYLeIeX~A@K+SFI@D8raKvwB|8F#+^UAr=ewr7GOd*L44-yYu#S)TWuCf@L6DI&l+V zw#ui?8eB7)3>C)e{$*+PqCy!z!wV3+%XkLrx7l3CO#(hyXiy=8xAhJv=s>;F-ky zAh`y19-WU`v2-2yqLhrGh(QJR6;t|V_(&GRtov5!-X~`)q8`e9p%3nO@v@Gs{;mJm z!>$*X6u_tpkki<`b^r@B{AsQ?%)~Jexp*GQl9Rg!%pqv_Hd_j1KX33xw&(4=$_X@e zl^D-(wA~hU+#v#`tb&2tuQrKx)QE@5=+3?EPNKA=|JarqPVS{{`|4T;Lz?CcQtQ`d150`jg}_xYz~fg`LyAv)kp z+8q@tdrWt|9ilFrzM6h4!T(Z6Ao&uJ5T~Z5Vu5wKd4W>N2iI_==%Etgu+V`g@oe{J zd70?*DA8YHR@b%CDYtI+X8b>PK2Cn-;gBiCEZEBql2#s&yLnnRF*1?&LD$VKDX>@^ zy|_#gJ25XOM<0B8!#Q0N0f&~judsm^?0EjnEf3FBn#E!tpL|2Dt zc@-ZX>Qvp6*i@khV&zjuLJ_v*1F?C{IOuD-FA{`r66C_Z2;IPPRF_C*rHyWD$?P&bJ`IE7t$Gde_1 zFK@b6qof9a8o9Lv$o5z{<^EK12P;Q-!90AD%CEP;+6;7kmgv2{&BLrnuB%2VbKXk@!ykv;Hfi^2!TJ!UVq!)Ocq3L;oV#8k=b|R-z{}mnaNehR>AOOPv*#TM&rqv?q9Y5e zZU8rl{V`#I{lE9G1EP!x*_B`*L1|&CU|6%t?@8R*t5Dk;h527dx1(bs^s<$B&6MqJ zj^V3vl6+4Wj8eb%I)KdL;MYBa!q#M@Q|@JB$(vJv4sQRqmmgADV)*ndzBui;z%{cm z6qX61mw$U1{4$O=_1Pf=XMxuLMe3g6Bywfo&X@*Rz4y04Ej1`3ePm$4FgO2n{A>9| ze$No!t`=Bd0nY;C{y#}~pqEJ#`ZK0oXc6h$)dcRb+WWG4dN%{4V@7V|w8Xy3Pr$6r z3nQL1dNL6f1HdqXOe$GR=}rZr(HSh0kE0!9+plOxMph1=RmH=!(_IRm<$m`T(+Io<$gjtlR^m(^T!G zG{yq`gg}K=%_bFx16#65H@vi+0>R?arAw|Y2a%=9a!#GJwTb}Kkev3j;x2nEsGh(c zJC&9JzcbPANOsDS7x5O~Um4XE?f8emPmL}YV_|+LwJJ5T^i%hZgl^LFf4w+uyj)zI zXT|lmnWk6k;HR1%t+~-6+1FUEHtD}UVN_U}2VITOk&px-3(fIJxK0vv#K6xz-_{ux zj>!)Mf%EW~&qqt}k8sj|z$own&Sf8iF2DtELY|dIhLy%@NA>K&-m!X0#6>*B6Pnm8 zBNT>t9i5^8o{vX-?qp?$cLT~tvT~-Zecjm5DOO<)zo3`_9;H&E5;(W@vS2W~KPIsd zH)w-uyD)_|*2uwS$$C1h@NuJ1VmastWLDVd3B*vRJId``BUT+gKJVU}ML# zvN3(^Rp|><0y^(Q&GdB2Ln6fG4CObMW>lJVd4fX-++e_6yv4;MQ{@_@Fk-Oo`@(H` z>Ic#!N6=uJM`2C6a^-(4Ip9(3US?KTKZ~oO#Lm)hFSmLNk;tnd4(rqUq5P8xE4Kz5 zBDn2fS?6fblRjd;E$8GwGmm*Dly@#qX}$NZR-ZZR=0y2qw$Qyr+=ifeI;Z7EfD#vd z=s*s_7`$x2D6RbA_Y^<^mKjzF@D_xhjH{8(l(-gM^&K-UzTCo2YYqq)zTMdpgme0mSViVkOC7%7EpK+t!JSFklHS#^mr zo|uF<4&%uQ^w;~|I@!QK*~V!I6nd9f4nujU-`e=HhET47 zm|{zx0#KOKkylSoFETM=U;A*lqL{V1DScSlOgDpB}c1>{Pt4a7* zn*@~e#WkT0Gh+%kwfuqN1v0M=*Ovq&o}3p#4w#zW@D;e?`q7Qf4+wi-U;aVVi%|c5 zPK#Kjz@2XyhRw?N-8lKL7ht2bVrZ(o_j?2xqIgq3CIiYv_L&W505Ybo)UmJrp3A#|nFjL6R$DcS zwu8Wp>da@W&}b8ladB3PA1Vu$ybnCPu=|0gLcrou{Z)*wV1_~@WiI`)lEsOcbytUz z%!6|06;(+g7LIQVewQWsWck76!_OmoIy7Ldp%|&k@7&kHHbq2g&aG?elgKy&{u?Hg;@U}=Xl_Emi{>sBhjb(*4^!nY67wS0Wl?|JXzEJ%f5^CiHS$0+12+bi|_(0#aF| z)${x85Ot!qJm^p~Zr=a?U|~jRl$7Vq`2D>hu|x7h&$7C13_Uabj!PEtSz~l{b5Cnj zMNTa8hgmKV9YS%YS|nsE1S}4@hx+(hByFhvHGdFbp!0TH)BKa00Rjx=3KEfPmHuP+ zv6`hAt|e-P7R(^rs&Le6fK~ZEFTA=x0Jc59S|;G!`_Lixf%GV>&xsjEb5cSlJ{ z6fhaea8aaON3T*{y^tazf_el-RezIw6*D26mMr%-_hvMK`OwDI+!}2~{PwaD^kNmA z^X5BidMjf0_XOpKrj*aPG}78xnx0IJA3^+}iwBcj-I+y40OvlzeZ&B@c^GSo{+(yN!Gc=gi4+)BV*N_RRgehr0MssM5o-#pLy?Nb8(NI*3tRthR{EZCmkn- zhK*dqmXr4RpdtZPKf(qo_ymeLNg~nZ3=q`b&wBl(f}S6h4?pF$4lVxF#p=Q^ZGCeE zQB)E36={_lPZ*C(v`44(1I-6A1lUbchV6O9E&B>+D=roq7P#>oRIpzsi8X{FL9N@c zW-QD56U_uC5z*ZgVX1{&(rRx#?#49eK zyE%U*uceeq@bI8=nyjxk{@HqWFHU<|FKe=XW<9B;4@X@cI(*oUB>)7Qsf+hlpl{DW-OH_c63d0Z}XjC?y@i6o9X)70jhjEF<&1Faj z#p`vO83sxyE^AKqh8o2iEfpq6a)jK9w!PsLsJb_~Y0{VX-6){Z@%R3lfi}A-7-Itj zrSnY3NMv^kxrz8JPE?+Fn6Rp7z6o~f2Bb@8Ia z2&%s2pBGj4E2mGJep{zY*;6%nT+G|QdRO|&&f?gFb2PK0%)PyQj{ii;W0!iQF=9UW zSggj-`QN0^C<@#l9r-rdoEQ;hg*v^~!S{=vJUA`EtfQWTw;%p^USzLuo@2X}L-ei9 zxiNj0SC5nwvG~VQgsHwd`+Og{&p?HBKX}%9uED0;i|(sZ(7TNmj)$w*(Jh$w+sm+> zQh9fib+2fw=N#X^T+LXM6pH?wqMRW5^w(k4{QRb%2N8ceq4WKpyLB%5tb3c|!tQxr zE52q8Tt#P4{&+y1yu=JX|K47=o1*Um_QMHs26Vb+R%*|CPjM+7&Z=y-U=8rSTn3N98ZS=ona!CTia)2wmLDx7yuDn>DuUE`ds-;I9P&QKq# z8{$~$M<`-xl3?YJZ~x3n9e*7zmpKdi=F9BT)C5C3AwycD3J*@gn1&y*okJ~bJiYXX zR2x041H5UBBAPB-#tSWLaba?EuXA=OBWB$SJ*@Ze3gMN^gM~f%4QUt9-G&y$95os@Sw@j3?%;0=+xi z!Q25K0)m1@TXh!7Dk5O=*7R~tGb6lg6>~&0DK;l-U@#HMCGuW-kCwF}c?mOI2J(N)s2NR-E`u4M#ci;LR0fb$k4qD zkk-py#=KheOr?gAAcV;{{9lOE?WEoXS>%{TaAY5D5yZyDJ>F}IvYvD0k>Izr%xS@K zqI=RYp~ppC1rvoYtpsLd1btC}V<4wifNhAX`R-5F+Saaq=)OZ5ZayJ7(sjJ@{^*ct zcj89;otf{Mw^|d2WbZt|y44bXf|~8HcYc2P4t$aPJS;B8G^i4iatJVx#j*HzZstuA zK?_-XdwXp3>nQpJuuaBbN zj?bYZibdd5MGSJLMp)yF<&~*oYv%?_SqTt#_xyVsUo2_IX^)C;qoXQcf;naFwmsk1472a}18NoS^jCgeUTI z-|s!bxAiMcr>?G++m??s9St3q<%_^ZIXOF}vT36JmX)@*Ll*DJtgn5}sUeI^E4|Z)uJgbti)e!F1Awt$=oar4(?H0;M z%Mqg~WJ#{RVU?;ESam7LABGz~GakMF-42Fv@rd$SUDr>pgm2{WX1}tHjZLpSz5DDZ zO%y81`$=iDhfL`dhqAKr!g;5tqh~`S6o4elT~@V27K_NoO-N>0KgCYT%N00Yh}!ar zZ;`6f?eVlgMSI&b(B61Hl$nn+5h|hjeSv>?q-%7ii(zhu>DbU9BqBIyr>9Lv_>Jpp z>65r4_}rQvE^KD@sl*Z3#)Ho<^-JnOyN_^jPmBQHBGGEoYHDTWCH+^$HV5{M7jl>2 z*0Z;;UoogRB*|j^E5&ZrEkwRjYdml&EN_09`V%+sEK;|P7QJfudCW-DWWYk|WM`NC zbFKNvrQjste%Lh08JFLj(Ri7+*n?jnRl|?&mposD9N*_x7wFjapE@~3&%7wyI#J`E zqLuapU(1>G4m_E}J7@_L`dq5TAz7i;lu8YA<@osvedS-?$_vm5V%diCmTEKNp{*Xl zosmQPx}w|H1l2C_?2jsZ*Zc2HCuuVJe##E1t(?vrp@hfw-}Pf74O8$5p&&AF?s#P&GI4|uaz)B2wFj9>vW&CrBf*rDV7bom@r2?Gw>;w{ zW36vh-jSM-WJeqX0O7g_Qw0+{Z7vc*FrissOy61UbOgliW=gwpp)_S@Lcd@Rc)azE zCNpNkM}mI7#a~XU{bd9o;(r?8m$x$V|I$1=Q$^a^g_hsj{YQrnM4cS{td4cm0^qSu#=5wp553FYc-hz`1W%^v% z=Wxa@Z!_%6TYsc~iT3Tkfo3!_cYUgw-~MI)A3Xd#8K$kf{WYPE-)El?s=E%|1$TTC zDY_X&a19|pJib?LJiWqh1pQ0t`ygypE=XMd=MIV|boItd8K>X0gv0WwYNr<)6BbdG zJ<}5u?pNux2-%Kz%y~>lh$$erR9s_bf%~fG^wSlFB0yjL5k*X2&x>x4E)T6eR~(r* zpBAZ7-IcK+O33vIK@eOE?5e89yytm4i8n#O$JWv73}PVP4eStiT1ER zpVi(UOU$ANP{O|xvwvV)s5AXvedRcZWzZvt6z8V|AlB*cEO{5-dlC`Vw#yVO5 z<}Iht4x^jWfZY!q)3yBE9CoJyP~h9keewdkY5gFpHZXPO3QInIK>Km_=u)UiUJapLL5UFnK+l_N$@op^6>d5>5#^t1wHZLc< zvdl`Qa=(PS8gOHF=CwT3Ak9{jbuQk+hEC|fb&=0*J5ah}KuEaP@&5AI67c>j57q;yiSDWZ2n>Gt-?~jf9)n;Li5iKTwhy z_xgb8gSU?7=IL1u@B1p3%Fi(atCKL3G+=}Ptg*1LluI`L9;o*YKiSJXv9#OW-k$QO z7CK3MAq2CxYy!-ByIjpUTZr4ib&uLYN4LL3JWzF>gL;m&w9?0=t`gx5{nqd*tN-&V ze}$`QS-h}rkipoJ0}sA-I4c!L@d!yq7Q1KVea*_7c4OXAw+f{!r{Blh=e$YR zpz$sIivrK@ev~)^NdRsjDG@Ghx?1vVgekm1WFRCUXFbX&m=ICDS6=;jr0DB7NObVW zaF9?a#LJ6wu)+29ZpU2{<^oj*oR#~wA(cn8r96J6L!~JPCfpSx%^{<54`A|y(R4R9 zpkQ9OvBTy0OK@WYx3uaCGY2?4n;?cX5S`@hQm%O3Nevp*Kh$N*4GT(-q?x(8ts!1X zxpQovU0Zwe!|z0CB_%?1=9`Kn0!aMajGhlS4jBf;sfFJ!nb-#&c|LgZ1)LfSZk5;8 zjukOQoI_7xG0Z1CaYN6v$BX@exzH$-_x{>3MY1Zs%BOd}w0NqelVR;I+u7EpcKRG$ zaaAXvJ=oJ=6X|t>`*XQ5WL)8~aq??opN0^*a?Z?0Z|?qr9;*wq5V1Vl_5DK)!Hf^_ z4b0=y!6Fp$ywu5=#k{&H&tVp(#AOrNYMiYlA`}z6p(bd2FA&w~>irT}L2G0Wi*la| zCPtrLe`m&1nEYMKbD#R;cW7C~ceOPzI(r6MqTK!L;mY$xd|^eJuQP_NY%nj;UM0Gs zqET&2@s(p{E-UVJ;`fDxg_=^v51Hjfd{E3eNxVRywBBU5#aBhDV!JWFEiIXU{<%dZl{1j(mldn&7ph8v6z z(`7-RTceO(i*=EjKi@=T24o`-AbLpZAB(IBf^qM2&nJ$XPxA-Nct!cNH(UlghKh&H zUp5&33I9V6%kAzet57Z{&Iib0)a2VIs&5UKu1!Frs@0Q><%6N~CL1wZz;&vACHQ&m z>ntz4Nzi8wf7^Rmj5ocmdfpT*ov4`B8vJ~l`~$|%Ky#?4$ndePjy-2Hc44q6KTi?& zV3e@NS(z-iU9bP!!p=I@boq|Oh1O|>&7#jS(9T7f+cC0vX|u0EgsJPMF}B97({$`; zXA_kZ+H^fdPn9D&t6MTPzwe>b6bxB{A1R8bENe*EbSVjyRQgW#a*P6gH|m$vU93U< zBxt7dpi6nv{_nbROQ?KkD|Dm|e$yHcDQpNaTlSBSpbCQ+TKM8Ah4#~(w6&^7*LSXK zUYuBfGYQBG1LavOiA3v)TORcmEK7oSKaT^e1{eAJy`Ptgk9O+H6+;e|Gp+K!ho=j{ z6%SUr0DMwdrI-d}fBr_^)!{yCGbuF+`HM@UW|CKhM>(Jlg}H}j-k*2F^}lfBpnMp* zse%pH8_@^%dtu4PXr57ti^83><&?F&310>vmRtC*=mYx`E&Xo`x}8|4K4 zg5{*fjJsg6_G6MJ#oiQ&Z~qtCcni{)D26?DBCcV07IKl-6yrggqOvSmgQHJ>*Sl`oy?k< zl$8o!Ag;d*uDd@TG56v)9V!nq`#O#D8eEE2;-;>*Qv||f7c!>@33M5T@U^-yLXq_`76(@B&5~zVctco=#S`D87t)oxrty z)qPMSV@$v~U?nDo25PBK?|ilk>obc@x@i=&mYMURb;l^U8AKv3_Xl%Zt0N@tpWtK_D^K*fWwKDa!gi3H zTD`K~CTy0|p|#`)i5%^_4ArVN`A;nwq$=E}m#Q}k3vU6D1PUgIT#OIHp8*p;TkYAh zRcxUdL+htwB*|CC>EQx{I_G@0$c&re!hil(N=o%6{l}Iz(-Dp^^MtYAHVJr?s$kmI zZ}LY9-2U9pX4V*Ybb!X7UOP7sQg_!G{^w`~D&`ge9B8 zs=9%SJpQn;urK~kA5^eB+5QY*)TrJP1|eJ#5pIIU_iNaSsl$a4lzMc z!N+gVEj28CP6|fP*#tmR2D~)zRacKPirS4Krx)w-LT|pGEfuAzgpR(p2ywc#YrRVO z^WcxlNifttC0g#>xXxfi>qvugTq~Gcg5l|>I#5@MDeylAHp79aVWEXA1wTZ0=H@;)S)27vbmFdKEw#~@T zy}gp!ThrGzn&OhuEg9gMq@p=fljPg+^5A=8Vm;@^2bc8?4hrQjDV!mflQLDCET7%V z-zmt zpoX^Iibr>@6F=T9zial%I68Wgn#pw|xSVBFTqW40xsYa3z$5CoSOLPEOZ;b4d3g`hq4cjbhffc&Uzcd&EUNIgfG92lK ztglzQq!`8xaco?ww!q^C;0iMB%BvJ7@E#EQGRCO+S#eHUpKaT zWYxR#1B`B&rjRN%6rF&Qwm8+*k3JzovED^OgYz>>wvHY~(Aqax&~Wz*e|rJd$wD~9 zg}pi#(h1Cb@RNgvm&}8k+Q~(6Oe%1OcQNjn$Q9f@b39T7m$b&2sM##ka_$KeNrcyT z&X}W91Cjzto>{3oIu>5Oj*cs&-RB93j?_e^l%vM}aY1c7gOXis*xt3C=HVm)jkR6r za2RMD6GqB8l10fj7Prp++7&Ws5%AmV5@^FS5$3Zg^Bve z%Y8?fxC$-akN68eqBmj)Nrm8po(FM(dUnZyd)HXQh8Ly7-~Nz@F@7^?z#B`F?lLaU zuT|13sV5Zbrti8z4Q}vYv`*LE{;8EoYWfYrpaQ5j(qMQA&BkU z$?d_!CS!5RVQHcKvyNWzD{iSOY*g9a%U1P~Qv<~C&B0v{%0)oKQ^dOxHHDKp-t&%2 z`VQ>0)8hX^vk%@HP@ z#B4fu=PbVSGtW|kVfJfVJSIr)Vq7skAuytyjl}vP^dm+(>{bNU5mu8@u)Df2Xnxk< zOaX(;l`8tw*$p>@47o0&1h35*^R`+Nlf5rvk_#dYin@u}30WEhA$aCn9@U>ofI9O6 zOjo2KdQ<3XgP~L;pJ-s2F2fU^O3GaKBLWpn_%GE9R0`f?eqwBV4?ze`<6$bKCYPSb zP;?FbZ0qj+WJYiD9DJLob%Agt2^IhJxAZ2e(j$(#pe6$KLcqb47ICB8`YJULD{5azFr{P=^_H_Z7No&@y}po;ax1p zVgxzAfyaTo{H`H?6MWxDr%pTE+;3e-$4s9+Q#_x@)2dZg4Phr>)0T!V#^@XyUBFKm zzL4v{8@rq5W)%41VFp|s*gx>~YPA{$sT!~c+5=oLBniox1ELHRa{goY3;a|jzw2+b zs6VEaC5Ha0$$F&MVWNpNeKfs{wIZ@>5`l1ym1p3)+{e)?#LaovQ%=>Wf3r%=I%cibxJU%#ke_>lh%Nx<4m zoC7ra+Qs;57o&wWF^^cC<}+n_EFJJ21nPxI^0i1LayR1!qw)6_uAPbW6`gxRe$-8~ zXYiWk&nhUPE%6#ZDtyHcRsKZtJK_$ubZoA5FHH^m6>#cagb3z1;!43+305G1LHR&0 z*VGi~m1zsO4gMLDwyn0ohPvZo!oYkqq0Iz&@5%u#E;7WSlbnB^5~oKX{KJQH&{|W1 zhdx-Q6+k_Xn`U#O$+V$1=Qkve*&3eBjblhD2D|O?xo}W8|C;^ramo{TQu0&eSicEu zUJ*^?g&s}fW`us8Cl9!DtBo(*HTV6v1Tcz*q`nLcVbJUKI%G0~Fmq^Ug@*5N>mvVc z(cmGcQ6NC%g2;@v_VOkL6?PHB@cjHdbyd#sG+0XQ0mOn*qU3{ZJ<*XG-;}x(-WnRp z=yRP_K|%I&pw9a0?iY*~$agk(s#RS{zF zozGr7lWBTn_vfRJ0}EPv7l~3yu2g`Z5I}QzPxtEcuk`u0L)Uak;mps_~k;#nA zq7NU|SK7mcUFq@r0rd2a?0erA(<-rFqhF}5EoWrtc$Gw_#zQu9YA3Zk`r>7fg9&^1 z1b(nA+aA9I)fpOk1qB6$Rbv}?;o*t%n+a3A8x|edoj=_FJUQ*}?{Bu7w{^h2GdfpV z#2P?F+y%TSXyTyPtjsMf?fuS&jQ}JxqXtD(yd#mr=BKZqS+w-E@lop=8|tpg8D}6A z6ajbjwMXtE@hngS6lUDgXH4|hs_~`mcNwaZ5N9dVAD?VQ;XnKtrA;^ z?tpqab$R#4N9Bie>z^vUawt);?sm(M%2z?Ay5IM_g0(!XmL#{AIJa4MWn1?JV;sy- zXSc?iUbint?)VlKP|8NynU_|ei|=;OdVN! zc4@&HJH87&p1v}oeF0iU9vKo-Gc4EHAk(Ws*k_OU@!*M{P?hD+z09Z5l=R%8DzzWw z+i{m*QEp-X^Z1+|`rsq<Yx_0g<#nNmn#&G>OzSfI0IsDS9R3Kgx=#m1aHRH7! z7v89#L9w%c1~hv?3x~0d?QcZecVEAL?J&7Y?KlYeQbxZ{!(I9Z{r$S@X=xBry*u*` z{?+ZoT@>tej#La$(ip*9$qpr}&(;0LzA^o5o!)HPOP( zPQf{uaoE?+G@1w6e<)*io-VB<>9WqG&TpMEYcfOJc&;HUvsvaoDPwO-l%T8?R zb6v|UE{<+?K6=opTwCveWZx~dTE>MM@LibHd(GL~zuJ&>$1l8`z1a6*LgYN&z?EUWdTN`0sdQERi3_LP~-L$h2A3pu1l1B7;Wi#Qe-L zNjQZ;3VVOj^&}~)KI-qw^2gohkj{u4DG$#mXt@kO1%nb2Wwp*~` zGqPqYv_{%FSv*%6B65I$1SAmUR@($Q4ynMZ_VRrp9EX9d{`=zD1n=p}?Lrv&x4kcMqQ=M{=L0MG!kyOh3@{q`5*mv?tc%ZG0*Lw@oa;C3=mven^pkWK*Q%( zB?H_JI|8%jop$#IAeI4I%;+RNNJpXbcCIwiICb0nyV&X+rQ@LYP$bN^50XS-(2dU& z(%sQZ>lpkIzaG(972eHGEq{RlV#an@W5<4(mg3*#5qo!^&_*I7dL`^WCchHeUQH^@ zy%P}+?Jw4+N@?vS|5xH4Cj+GVDl4k=ZdJZ*9_{c{&i&DuURKM^gpn!Q|7(UG$-g1V35Cz`omGB)> zh$%rX2G~&szke#0W$_GxES9uDH8MEF%vUz2XIQy*{*@$^LK*)Zz%j|?bi0r52%g(l z?!Xn3PI_*KYX-PCqZd;yB|KG*o5l`Jj!n2zIz*iUeVuQdxqZU17&H`u@gXqe_~X>X zGnAe8yqB;Wqz&zN+DZD8ZH1=h;JO9vT)Q+WP2dmx7A|c#kZ@ceOaq{i$J?J7?Di5d zZyz$Xf29ZAfEtrwqY3vB&ZBC3XQ#X-CT!JBYinN zZDpvse(4x#p292?YllUI*;$WbbPuI#w0{a;x{R0GTan!h+A88++PwVyx?kf=r((~s z5n?Ow|7@D}#WcYw3JZ@k^0FJ@S&umX3v3T6R0xF%>=*9_D-^W6DN`J{V% zR1Nwh{psTmV7UwQBMsl0kr0`&uiV!KBn9=04)JDWPB||R4P#t;Wqv@bw(1q@T^t5b z`a?YkLx(r4)4CT%wj)wNfA{g<;l6#sALKQo%gsfl=ufq!HNQ!rFMl}>7ZRk7 zni&TEakjdxeKu41q%udFAFfG38IA9>Olzjhf{EbG>kVuFrc1IYrXP?W z4WA65BhvGv5=VP8Tlg=!52{+9q)AH$tI|TBU{aZrSLRA!Y_KP*j4x$h^54QyM8EWu zJ$Tp2nljv7owlh-iV>iM$tj4O#m;p!ocjEm*RKWKj9x7cIRb6+tuyC8>Qnr&bih$# z*wEC34=k^kJH|$SF@Aqn+|}~ry_fe~BSRaF>AcLv_^IA$z4)Aw0Wi20_7$Ju3tLb@ zFQG+F+9I9=II4m-zMVVfUus)W2ir-9{U@(z+(^sxAKcaNtoAIK@I1>t!1b<%zv#r4 zGOSpv2mWKVgPFL037#~B2t%i!h<^s_uWn3x$$hqh9}5MCHxN#)Ex`ji00R-Ebu!AA z-mY|zq7qe^q4 z<+v#eqaU$J$!jmrMe650{{hzyVA$`4EVFWRr}ry|xIP~b(Tz?cJ=MsceUjRhn)?es zaB#;(7eIn0(A0TJI?|1^+w6XVY(1En5kZPH|6PU|R?cnDkfZU-r+g7C8k-%%e%x~d znuM?x(Iw7B>roO=X>LlJS|LA6ze`fBe#^{7p{C5HDHcfWcAo^3r9M-1Ga8v>HJHlp znhGBgg{h!+*=w_+G6~S}qSDego;k>6_fxWO@REBiJtbQIhcGFK5%C~Nc~zOO!Mi?* zR!2lk%mV)b&r=$nY5f4dvt*yOcme_L0WrnE7&1v|RTP$3?;iElCoeu~A{oG4KQZRV zHj_dhG@QV89iH!-)7c~)d0fI|u3hIY(h_xjo&4j1D5~g7@2OKmPZB>k$XsgTqww$_ z`@x>UtnepaFz59Pp}sB=o{21lbcK6sYr26p!dJCp+Szcyh9~}^vvYo7CJU2;#yWd5 zYC9gw2Z726KKBPc51?FEYY{x*bNOK5f2;>3{qdtzIK4p-$_hX>852CqW`XeU3$$}S z-*7G=eaYfrDffY1fJSCfu7$Q@qY4IFEqRsQ^=4F_gC`a&iif)|g}<*M7y_mzdV)&(VvAuv4n%>hg?uB0 znJX?S@jCo&{j8sgJPS&_5k$^L9P(UlK?BT51$3;jWogKUGxYdu5KRd+@SwBwkN`m? zqzX4%P*p4LfUFf&41mpya)Gqx{#NI4pXMPSxp5THKIeUP#I{BgB;qfGpzL1GJd3?k zUQ^g@2^kFBw<#yNMC?p&uiCBOtSA;QvL ze_^hBiZ2H;ABck!KcEr>HD{IG1q(1rV2RmbLWLXCYMHD%ZU{31og0ARD}7p7&(YrZ`SH1mWL?s@eIe)$ z0URtDnaQr#m3#+g7xY~)AmI&0%H}?q*k{BWR7=$net47o$Lp#qx|0%@U5N0UwjqZB z(5}L=y@2IP!-K4-k~$VcL~FKTUo+BJbuLvw=vcqi(hT4S&xjU?O@oiMP>l=o&`K!= zE2PyuEmk<9L1UZ`?eJjj;nT1L-&9U{93fm8Bt7LSd0Ldy$+7`XE6)T$0Kwl4vPP3O zFGBynxVRYOCc4ZKw% zXqgA=YyIB5Jf(SijkE?|3=+4w?F`Uf1 z^BEJ}MQ%k2{JPjrCqkcU?2n_%*9GXZ(w~pOkM>t{`?tZ_v~r%WuiwCfciiA$fzRuTAC0Dxffeh8Oe#1xW_=08k7J4*r1w1pIh8 zdR1nY4TxOHwi{~ol=(F8;?1LCUpDzr`cFwvFheY72qG3JLM+-@!`iLxHYr_sfAvBD z%)xkt@CuThNqa3xW9_1&U)D#Jbq5N7djZfw11$;KTtQ*srvQv*S4%)s0rW?3YVeB} zFL)DwsQU}b=o|ymJFf)eJ7AaAfs)!MVAo79J~QRAR2o>AnUOZXetyVK^!&n9qfh$XMxw%STj``9-E%hG_K5I+ zzTn{)Oh~{j1CNOymimMJXxHRs_D@%DMzyVwpnwg&=A8Vd_lXs-F`)a~$xeMmdevAL z7MmiU;{UxAC_@lla4omgK?j^|64%s2M>|i1XSL_Ln>1m%d2=oQFYAErg@lxljg2R* z2pTQtFQ-fPsZTLL!B^S@m(5;m6s^nq7hnEs7T)D%QkMv+B+z3 zz6rLvp1;O|a=|PLwIYe_+h1GZp8o_rJB+m?C3&0S0GS6F9Mm(!X!1PG0Bo2!~ce9~p|1^~6?d9WU7S<7&fjtZ6Pz%PL#kD`u z@19qD(q?rQX-azY=FR1gvncSQ0JQ|ad{{nr^?!<-xN8fu-|;{zM3n}r`@;sD4#F=2 z19#pr!#-V-rG}lWv?kS|`MiYnzBPdmiHdyG2>(@h-NIg(dI7-5|C57F;6)Mr zheSQ4CAI8@FR6Z90Mw{wiIb0e;W#|GMp?cEBI-h^V5zUfT>{{f2*ZV5iInty zY=|8g?1Zf51jme`Lw;lpo`TG;BfZ~GS^226;~Uo02Vd3y*^%=FE*q~i2l$BD1EiU- zZb3}w@i~5~Gra>Jtz#U$-NzI@RYx6_t*=9TG$nBz?_t~a3c#cCn+-Wy4ne~*#OGQ` z+rYhk(UrdIya2IZa*!F5lcPM>040FKV_}H)R!|IfyD+@Pnpxbh)y0X~4G9pBIR#(` zdNI;r7h~&kl|@lZH^os8PAYk>_c2jOiT3*RUTlc4TR>LCXV3WIfI<2AR}|<&WI@W6 za-QHh_>Ry2n)0}naz`3;L0WrQ5QjBFW;atR?X^Wwn|JK1VYj+{G?hj{odZx_yCh<_l) zZfbvYcVu&AJe!<25CSWM;gSX5CIog;f%zD56C*s2^42IRl)o1@aDnY#)o|ojD~taB zRCz~d>({Cde?q;t@c3E2ziqLd2O$(#W?Y+Zof%^+1jw{xFbWVeSKA{qyqu?w7f3 zNukJf|I=Px(4GW~la&NE9wAF~AO--$Uu*>obt~IOinR)9Msygj?jtB?p_A_Ae}MD} z7ZhM{4kcIGYe{mHK9QhJhC&1hKacK zP%$=_STZT{kbgHzi}8cy>+%~+$p%S6*n(|?AI$IvkL6;jawbR+W;9Y@;roXXNZno2 z>YE*&B^<5swT1_wt02<_0ky6$TZ7i=ilGTIqCiWVQ3IxZVvmFE=_w~jfFNVOVoGDZ zAglu0tc*Y*&>bSRh^JMa$!GmfxC36S`lINqD+%(P1h@Ot+ByC^#ugUozpDof ztbvk7*M`Z0&1O);9q44lVO6eYX&5gd{aa?Q?(I{dTmN^LopAehMaF#xg_L}{0X6b* z`oJL(w^D3jl5!K{^65|Tpy>a5P^#GiL_dp3Neg)917@3S@$lwIqDEjB1Y&4-aRWSC zU|xiE>YzMn@t*LEx_uS|z7wk``0Hm&(xTHuOOU{yTSebHcJUED<3ONSMLw2vjmWQ) z_bse??6L6o{}u`LUy+$rI8c*y(L+OF`OeJM7E2&`qXE)S+9b>ZEkTIW)-p!&gLBcpksKL^;rK#TY-BxHA%Kmj zYomE8ltI1ojS0?VV0{7T4FFgG>r<1eta9EiZMg8BW&kTLYKEI+^#2r>{nmSRA50HU zn&QM-pT=;`*DV#P?{CQ=J=g?xw1uyPzV5k1zxKT7O{nP*7Tw0 zd587uWi3)t9Uo7)+X9sglL*Ay!`{4;E=IT(ZThgZ_G?eW0`%l(y$`CEJ;}YdW4)h2 zQxAU^UTC?x`Xzs9h=75ypt9NHotH^}&hN^ugJqPVW=KnTEeWI!N?m^GkL7t$A2e8C zjqC3JcGI=!JfLMQ?^#|O-KMj(vhrJwi>#xkE(kJT;0WGgd!6)Vw7VwYL4g>_k5 zXL`-s1Qd3+Ty~|l`v0Y|h#|QI8osQ|{0@JJA_d<6KeRhR+&yCAPeroU4RVy?u2Bgs z5}B6 z!pTRSjE2JtUH3yNC#mJ>)*77>s*2zE7IarxI(^B}d97U9Pa9y9F)Gkf?JHq}mWOx# zLPk1h3oE;x0jPb0!w>GCDRWyuKL8fP>{p?7HW9bg(K3elQLk`Fc>rP&<@V4zCG>fD zCp2_gmHAqE0$DErL4`ZxeuZ23DDQwXoXeef$xkS0v;Y$dS;}4D(hYBe(Xa862uEn+ zb8u2v zImx=hWCP<5`wKz@y9JE1(9;{USg3cXcU@n?*v@;iVzlwusq=j`qo?0_AJ+XM0K?4@ z<_+?3iSswz1S?gk>__pl;J2E+73#T)MmIQ zroTzRrvnau_$gW5zHnS@_tZMfVo1_Pgi!CjH@BBzqXqIQaz4WK@W88g0QolM0`)~x z%uq-imuFLOq9H$u*a}q@XJ=>EQ7|xn%!b5s_fFA_{8aQ&;0v@|AUmTX7sUZDG0-z8 zpZKQ+Gwd%Z(txpf}8@PoCXe%ra@&EQ9OrHPGRgX_O!uz@~tH1DL|_v%loz|1m$ zJC;H_JZ=-*VQ2anv-+2tmFRt?{u)EWc}f%Qt*m5$5B7cOTPb3By2uA$jx#x{ zj2{P^RKhnFK4D!yKPO{I?x3~%INLB-ori{--cEgHuQCp%OrGi*EzCpASV;C$#Xh;31uVTL zt%$C32w?eUpZ17&0p7kC*OY2Lb1QN_H@4&bixyL-Nl&FCd#_quv)TVWfK1RY65yLJ zkO4@o`~^U29olhvAC_Pz&|UaVr`2K_-rSl6b@quTJA*a*x@~*=x1X7-T>cN#Wgjr* zFX}v+KBh$SF6)niQUbFrA}5j+_36E2$sSvs;3RJWKg|?)!6)Y-ZET`A1v^Z|jZKQ} zW7IMq3cu>#oko8&Uet0{_Jym*Fb-?@2`>alO3z|byNe;ditY!;50-BtRWHq#q1%{W z-+h05-oiB>?^w|MYDjt4(S3A=SBFp(oSHz1=pN*xXXq4;=4M4T!d_HRO>tJ-y@d9H zEodNt{ciHf;$ieZT?*&&HcYAT55-`kA1yR1y^HH+NiaHg35TFxpi^yqB-X#FC^ws3 z=>x+7Fx2B*-4$Ori!z061mHlPE;7VOTxE&W{(^v8>wW0d6lnm9E2l_%es4=I zazlur@)wXKwF}THJsM$whYTWAfEhtdkRA%LZyrAQs3DibrkIYK+(xVf2fIo85(o36 z`@MSm%;A9u>~s8yE)23cGMV{hMO|vXOH4ggL0-W-82*LuDeN(S&Z0;$fV<@(32o@= zK+v5fCWXK7LB)9UZxG(!a$0jYdwP`5;Em(cbuP|G1e7!mS2pIYD?4BV9`bp-a=7h*92z> zcFG-)+e?p_3n$(*@$jfL6o5SbI>@$f>7Mlcg{6_oNkh`{b<#l$9Ba_bQt9WG&P;$q z7&?}_H;88HB#PabJ`4y#3--SGBtS?_Uf=lyLVm*ZjTq2=n=A%Ilt1!ch0zNh^3lBD z{ZS=foKpRRN|~u3Tz`Ch-mFP9YrKOhZFvX`PR9^ z>0yHT;B6mTdHDwkPDegY-}D#kpW5_=?k^%yU|{htU&^HfSUKvZgo@k|TALjy!pldeu20G==H3QSS}Jh3YMjnp=g&ap8@Fs(%A3?$N-CO{2bC{RnvTkbQ3L z#vc8?mziolf%(S9c31|y#&Jy}oHXgJFw42Zbsuy_!<34$Y{|z3MuIrKv(%?pMjK>~swOTC`smdJpq51jwSTJOO z-D0)+5Xf4SQzot{w9y`{i&z?yAd&#L49Hq^$=dQ+3rh=DucDpk>Rdp(1-EEMmH3ke zG0iI=SdN zIMfPEm|T2CB}uGUwccAb2RJ(VHg$uCor7Cz7^&;vy+dZ5uN6_AAlGCINu8{QW|JCk z=N}IM_hIkh?vuUwngi~Gh0X&KTU%S8=)s+HR0SNeo@LyQ;_zJXucNPMf(>Dk3y3i( zryA6ON16=j2_b)T1diY$6Tx4{lni(4UknqBMIYV=@ztimz9f#Y(+U4C|DHQ05;8*{ z&<`}N>GDpCoHv!T_#uZC=HTN-(w`S}eJf&i;(Is+ixK%L$^l$lY~Rl$r}Dk0d_k5q zH0BD7j)r-r*WiFvpc!3~_un=m!~W>0`vJ5EzmAP)Kcnx;F#M;qrD^ZibiSl^GTA77 zgN@Y3h{65SK)_jlbNoNbhwI8y7(m|)EgaHQrw3|SK`8=ygkq`-0IRN(uj_{Ng=BwE z0O;n~H8{ELK8(9uz2v{hx%m9V2uE1F7~$H0-ZlqxKx(g4!>A*kVo}*o#M<$L_nHCF zWkh%)xl>>&lObWz4Dce518uqi!++BRVFp>>FA1{v+3+WptYmw03iz}*pnsfCDP`D# z{S<{5#Osm}G;(V0c7Lz-?&J2m33lH4XH(p+y>|!s{VUHfh>`+TG+2&+u7h8pUd>=X z4oPH14HBdClH~dZ{jw!%67B{J4I1H^A|+icpfryS`~*w%63 zB?zJvL)qYysGSruv@5-0{U}T`ibF^R=bs@ha|QR#kGAq4$h!itL9dz*RPV3%q=e{B z3;fkKO4fK*+d8oJG_x$$2^8}LON3BTbs8lLf%4w9L4jziz@pPV!kk+0XmIO4 z{dC?_oFfbo`*>oD%8k`sCz=V!h0*iwR*^2=0zg^UBbket{7ZEN6pN@8WV8(O$UW<- zt(KLB1w-gVndKZqm$9skJnekbs+J9<&TAcXKk6?DOJ`|3GU)>c0q91K6D`D_BdnJj zpW)$1zwJh4FN>EtCmYxd>HrngJz&PL<=$!#eWcFtKK~_()TBOR-9*Iku)PI@zLj44CQnm z@;9BtRT>UlB_I7JJXi^milcpxNYqO9ET;WION558%j!gX9wQS|QI@P* z*D#<6U>w`~#p+cjOOkN`ycbL-AO|Mp)29g$sE#evs^8iw zo7{u=6-1M+L8Wml!V@ZW>{P#|`m~IXJy9ukc(g7>2GLCwnr~0@L2n6s2X)Q#-yn{1 zQ^dC>A}8eHb%)>u)KwNmIKXn@Om9`68Ot!h-y7q2CwX1$B#tmf|Cpkf@h)T?h7>Yq z)}f~O(Gv&a?j6LR=p679TKZ@h?v-oT#oz>2US7VHEN!2iuEKCCD|6u4P1f70wEs@_YMTa*rHi|wURgS)8Qz^_sG4nCW4zs)~%rdet^|ynkMC070 z!kc}pLw=d_?7Flreu>hI%$39@*n4VbZk{rvx<3DB&T~We;A+aYTm8U*&d=RBRZZQ} z{yRciw|Gw%zmj!3o9%7Cez?rJGm%h{n4Xi<@wD*g&zaM_(G=hQI-svb9~tJ}7%sHY zQOVb>%#OF)eJgoD{oaW07r)wXlP5Ax)x^2ZIz9>_09S^2AghrXH>!71y@dfxid^){ znwcl55ea*{^fqe1bVMPWkHIAxGW0 z{)WU?&l*iYsUC9XdZe_+b)FqD$gAXz&7oqpezRGVc_NRi_>Qz|GZ!jveq3*-^T@^e zNWXQ++4M)fvMx67R^|Mfiu%UOjdDm>HVjDx%}xOiBOeRi#loV?i5<5sn%=^HG-^0s zI*Ba$8QTU*vN@hE8eBAUXkyU0#cSl`MC179GGNk1PeyvefN^Tjyi!v?aV&R(qRuQ! ztb{x-(4Sb&njaq8Xitp1ygdCWaaWk%{_&gX>1n}TOcu+n{O%5SYum8q36&*IhvkRn z=f(%Vh`h#8zqOwQn14oQ#&)UT@jbylAb`}X0o-@Fk=Q8W%-;CRHzve;t4-oA(0(QT zeuLxG%-r0!3pt?gGtw|(*r;~XpQ#~h^QObOD6jRT_=zjdC1}UTy4XJODH&N>ej3{; z?ia`Lm9DE7aO6}-!7jRX(YH!@@ls_|_!envGdM{4ZiAU8>$i0H($bQj?J!A5>e$ca z#9uaVig@oQR)x&=73qKN?itV!sBFI9Wy+V)&S%Bz+~dYQg*_zOc=wuh%Au)Qpf&!l z>>70M^%rVUbdnM_Wx?mfIdJk=+|4&hVGD99Cj<6Ikwdu01a0b~se=WD+{Yl2Qp>uN zD2IEWE$IeDr3S-3&8VR_%$9%HiZCvDIh1BOead)!%FZP1)gM{*cpr|NFsP<-PF0@g z-j*$ep>wA9`uNBMpWBFnDiudG2bFxwQ?sEM(oJz^afn(|y?3vnmL!97+fQiDYF(Tb##^G*sINZoCi|93C2hhH{5lc+RrL^5#6L3+xbySqCHm)AyZ#ZRQA z`@RPmN@T;MY@4a7VO)A5Md4?6clPdYvw>-B>BEXxp4PwzY>rjN;qUO(yVWTYuro3) z9$F{SAM14}(HgbLy?>{cB0SuL?7PdS&9sDi4|t0`M?A|ujui5Yz>}PH89!{|x}*X> z!x@irB-T{KAcVq} zQ1M$e-MyFx5&}RHO_H`j8V`KAk^Y~4SxnRY9=zx;BvPv+5fpRdoPe0H1)DX$W5xTn<9PBR&c`JU&;ccV|-=xV6U_J_r!7iJHn0J39On>sesPhRw)ro#wJU zsN@mNB4V5u?xdooiujzVDWILvk5gL-Th+=MSkV7V7d ze0bKJX2b)4=quvI6ox{R#6OX`vo-I0$N-J`;VVb98+*Jo4~?AZMPmq!A;cbW->ga) zY!9$&tlsR$TSGZ`E`3h+B0&SNY#98giwSOyDxe?7q3kNEb+dJJ0 z?oo3()K^yzXb2BNyQHI4Jl46~;ebF{__kn*ZERFaIn%p(ZGfsUV?>fpK3 zN1-|z;x#QTEua6L%l^xH@~Q%~Neyr}fr!O}z=NF1CVO8g>efkaZtnQQAKW_^pP%TW zNx(+U^g4dtEF*0_Zv0^l2NnXliC~!<4!TUSg(vN;pP!kZhrCIYp|+u>oewN^N1LN0 zd%SE~sWHr?J;V(55EICH?rQjHYj3(IdB&M-*wE!R9Nd;e!mSN>C>(s!-Xt&&gwX7;ME8G zCN6CyLjyS;%dZFV0TK?o#zKNc5{E4=r9%Rl3!ddPOW6zKwy9w`H^_C>;U=B;2|9+4Yt-sxWD5Z;ki}>UP49mZ9y@U~= zC2g?-E#RS{I-yyO9(9#J^q0F#t3M4A3T}~8D@uj0bY!oxG4aQ0?*y^I7WTnp%~q_-W={pYaj56pCWd;pdLz=L>gtqlp27N|X{wL$#FMX+Y@5^` zbJ^>*$uFg~?Nz^?{tYT|zT5iJ7hgQxiXemv2ai3uyxeuT-md6Z*vRP8q;o=v1PDhD z!q>nF0&VwMP5meirgW)f{%P(lUdSZ5n!kCX;lSn6{An)rD~Sq+EnYvxtX97D z>h~{9sR?RJ{nG+0h?$r-L2$QEuTqVfwguPClg2{%enM}YlV%hw*uEq)52yi#NBX2I zu6a1^^WI`Bz&U|~SwykL4+U3lroV@Wxw|h$b2X-rjC*QDoR{#On!lVsUg@9*Y(vet z|2gVZeOiW9-RR<7s}muqrm{k&^opO(N<3D%r>7p?)T97%C5VGzzBi;an3T#H-@iIF zO`nio=i~;@+WjrT*Mxa=$7T6*XKtK(8MwQaXkT!J#?+^&2N{mJx*5IK@9gRQ@^81p zN3KtF$!2_~2Sd_++egs~`fG0#)MNj=W8Ej5D+oDUzAhyT--FwOqb9rGWhNzPy+*WK zj0uHm?(CTE`Dq&SV^;V8V}D5FTyyA|m6bK-n6yjnvE&#j%juA_e_d*aatQ!Fuz4;2 z+8sS~SA$iqn%*0le`cm7KPHv(q2s^tg8;LHAwNpjDFE*?M3%cIs?PqK7qP5JLf1iE)!NSa_`nNQxkRz6Ue(FX~iAI};wSqxJH9ao_U*YTN zI7k@l$Wdx=%X%fQ>vW;1BTOdd!QQy{Uc)6lezb-NZIaw$u8hq^+iY7r;y+Fjm5PVu zyVpb&05{ zog!kOduN2YlCD;>J4a_Xyfb1Z`cFN21my+?hm_In@3-4wtF|D7TTva%RG&u01A3-) z9+v%CfnnwPMFZ*mkE46{9#{3@v3bt~s2ja)Hm!DZ*T0qBB{Lr0k_ZY zJ)3vb=>jdYB4^a73hg`V#~qR<0wVlsI%SW>Flg0d8u9Yu>40*~dDfd(Ss6yY>=9R* zrvzucWLMC$->h(aiNKk-I;i_Zx}S|FxDNI_Ha4J#K4n%K;q7pMlG|5qME+*J;3(Yk?hxK6k zF4@$BW`(aQ(Xe`uI`P{DYz8I<)8N3HPo7-T!REEN`ZJyOex#S@D|c9s-x`imG*Jg$II{Dis943sQhY(&@yobK9j@dMR^yn`64^DLhgCwJV?=FK!KyPuJJb|k1 znmrAtnW)3zHZBU@OydU+@OXV=06K{1`TpH+YeNi%`t<~Xh-^8W(;&&^;pc}9DbS}| zke9?3>4VWcwlyu16b?B_UrIrIBt4EV3f^wCN-6w=!pyecPJE}3pQwHa@7;)Jbnm>p zvNL(068UUtqnYvLT?H^T{wbV*7UcPDj)!+D@nK?sQ3!SMw0f0iRiHq`SJU?v!3t~? z0VZaZYI^$gXbfo`eR$`ki()1?El77&#PYlFM}v^CkWi0| zqVykB_=k6Qpo7t3S$3_`4|AbU&hP%?{7+NzuSdLg?M(ne1Qwmq#c4WDD-vrp|E2o>L5jGO#iB(w)vU zTnl(o(@cld4JgvT!`=V!U)V_Xza}21{#*eQ(5->RfC4X<&f}&XX-Cw!kdf#1YnSlT z40r;!O`gC>X{(kX2Ge47?9MknhF0@Sz6=@#=5I>+ZO-Bu-#?X0AJa;TCJbr_oRnrW zEGL6yxuNJ#x4JCM(84eIJM8hbBOftyLLcy742q z<}Zw=;HG{z5kOXDu<2G+<}q6^?h3f%V2xjy6o=-zXw8#ySBxL zj^+0QQQ>zt^ELVOWbD29&z(O{TIzn4>Wdcy=dc=A+9)!| zc6v<}s!%nq4CQp>q&81&Loeds_3J7a;-P+Obzcb<(WxE_yBpDIx%eQ+9D20b>Ef-+ zznzt<2$CIq@SmT!(LN&eib1IjhDPp0rM18Dq5sFzOeH-cUPwQ*-zw8+Tv|6=#k2fP z+?CgF1NDqn&pwUT*On&G@|799_YPttlM#M^#sZp|Z%3O-OZ*c->q4C7<{p`8dqM}r zcJn0r%NJ3l&mNgoi70ZMq8JsVsZvr>g4DLt6okojqkw%#+lPYf0+|-uJ4F8<#@+&| z>UHZL-iUzG(v65B(k0Se3KB|4NGc6d0@B@KkV+$;pmUGVg z{=e}b-}o5!p6flL?ETx%v({X5&b5|_3mX~w%fuTV_V!nR^+L(!LL!!~20BFsGwH1w zWd<4=Q1QFH3{kWr#a+3YO9B*ab51b#KY(r-0A1V+Sc)a34bp7d@J=zC`E5&vxr9Wj z8P-R4qDjzMsYwL$? z)!Qw~o?|$O`L2`>!SdU|8nHq_6{D*Z;=)l7%E1WfTqF9-J^q0rG+u{gz#^4q&v*`l zCh>_gd77i4VAb`!;J(GLIbyrFYPY+Dp`=1_ZP5c4gfv-c@J%57cyjI*eTXmr({z%_~#wUm{Uhiqj2P8sl7f3Dun1%v6^F?XJs=dx<9`u}us{R7@m|HDu6 zw}ijU`Da|{lONyK@cg*ePayy<%?|zzM!R@pz7*N7QZ)l0Jox>C>VoQ=ozoz^B!qXP zmRJIP#`WADyK7t-930YVL16a`aoNRq<$2qQ?tT+a*6h zExN>qwGndiDq}f0G4WfK4g3~hCxFU6N{Cin?=3Q~gJ$}Sf`Wntp&xLc`g)n9jTjNQ z$#i~KFTo!L&C@ZAE0pDKT_GL7LbnF5rG4c_sNBJZCVi=UVS|~jNZfBD@w3Fs?W;hvQ$LZgx+yGyj%YG#f}5b_djokOX!B5Gz)p84{Bb3dzQ3Z~)20QPUcx1S+=Nt@NImYe zdY#=wYRam?EIDYbRDbPu34wshU*u>Zv(kOP!0R1z7`S90R*l8j>IAI}Tk}Vx(sI_= zyoJ>Dofad%yNu_0XnE4gR77AP20}tZLu1ahcI}Oc!-y+x_oL($&k=YC`2F-f>m}Gd zh?gbZEY4$X|F#NNf1p;AFXfu3H((h|Js_2$i`Yk^N|0(l3}qw%1=@ zD9YuN2Cqe=d7FBhfj|M)@26HaRs+bWzXa9k^&ar#p;CvRTk&N-AIQVd=y&WTuIFdv zIq?;r>F(=vAI*{xFHv2fF?lw>{pw!cwf$xP2cgfeKk_6~lp5CIiXP#Pbq9Of2fdYe=9A>it~rwx?U0gWAC6KXIzx zv05=ErQl1#8c19r9m`oSd&fv0Ut#o|!Kzbq_k9G$z37B4A z4rn%l)D<^v0XgLg)unu-ef$ghzGG|N?2LyPsV1kQ<}+Fd*PTsyyvYHNN!h&3?G3Bu zg~cwskn?P$ZAT59iTmmL}i4ey@wfjyRI8BLRJ}(8E zet@+yu4-6aUhlZfRU%}No6GVxil1^1D==ypIQv}-1}b<1!-ZGWB>$Hp^cO+o;^OwE z-D^S#IC%U=N6aAGXHDFTKUsQ)%7=-~d;njd zHjLwarBz*ZKm#BVA)#xfD_bYet_nE1j=3GkfP!*-5buC4>zGf(8TwHw^@!IoBuIn7 zG+iRnqa|p#vn8VCkChewb|-4B7vL&11i(oKppL=bRx*+0 z77pAj$uAiuM&MsO(k@tRTkjuY7XxdrGpgfwbQxqP>Y-;bG$WGBoII405c~uy#1%Gt zH5Uem%q11mW+mS#EXz=r(0fn2b{(|Sm`;f=$X`qRydv(?SwFPAdo59cs_712@10CY zTZ4Oe>Ie-DhPy<7tiz*TeZO&+=;#Ouie4x{2Y7i!xOZ7wS!CM6`0I7nX9^w@tn<{) zMIJ=@Mc=`ye-dn-&{i&yJte?L2UX5O-0CO|CEvO9T@Rbep5t))(!5U&w$SAI_skUBF&j7 zKTg9=?p9lSY0=zoN5H-yCvl5pUUE#Zt3S!t5C9BmYe`TJT|1Jm-zRy#y?UwgN`q0A zN?)rVez1R|g6-#zDwpdp{KQ<4e@MDM4})fhY&O1^Ul z2+7xpZdFYc^y74XtX!qZhH;QrlEbb+D2LbwL0R2N@`q(upt{BY`gPO#+vsU_+!<9b zs~@42k$nIo1^lard>c)AFY_*A`X3-0&fLf9+{x*^kBjuvtOf?prCiznFo*;8T@G(# z@ht9WZf;Z5Fw!yjz^0$&)npyhUN8hN3T3mAZ zb}Bm0D!^e{md>eT804WlC=J&?#>-nngY;q!qGA*;xOwx7FC{g*5NXTGXoBqa#Z*5LvF6rq@w3oRJj1~{c5-V7IObn zyUVDfCS=6^oj*klrmxs$n)mj#GnMHtKT+ge@XBi%n=^aIO`5Dz;=C?1%B}>b4eED- z*{BPXX!IjGqvaaCt^OA+AsIaVa&hCXL}0dRBTSuq+U-0sG#Ly4ZT6_)NY_C2u?;PJ zwy;neE+Xh6f}UR7 zfG;GyPx`1>P^P&y*=mbae|>*d{+wie+MwcQH)p)-`vx6&3JJT*c9#okeVHXr(@=Z8 zk9O6_UT9phskPN0Nj>L5JGu>EHaUQ+7fNW>N{D7nV|<2hn8h0PS?N; zGFQD}1nqjgn8)0-JCuY>fc)(4rBM~sdogZX>Mhc_o2K{E*&+tD6)E_x_Hox z5crPb`QBnp7eac zw1k0=Q0ginwBVB35cfKlL-yL);e%og;S(pJ*rn71Pq(mv0Ic6PFtih-dDgr==q0iZ z>&x&^C?DPMTk zo7BAmgz0Da8DIjkAvG*Z-c4PR7fLQa?(Fo%oU@l?(Cn_WKarDNO9k5?oJK^?)H7y_ zF%$e#DlZ$?`{=O84yEp)+Bqxr3SNuFTi4J{WSu2(hFG(SV1n%$(_6YXEvt<1U1<91 zp-R;5c3?F~62O@SohaAa$>vEA@}5bGgWj-3Ms0<1*)V>*UQ}G1F$ry@(D=xkPU#M3 zXY}Kl?mhNtcRLg5V)@FCY-0B;7()9Kr*fg|yCHY24n|TM7>m5@L{qBPl@yM0! zrV2N4b84m9F__%OEJL=%W1#94nMinH9+Mk#I zI!d%2pjJctS|2sovK~kDcxF&DHZx+-n{W(vrF;`Pk6H)*XEOw0WV1Iw);H#cXn@ho zS2_gM7O$$mvj_|pP7af*XV1*d#fAV4^j&T4b6P>Sub&AT&NflqoAVJ^MYyyPObD!RYnNrVd56=K;U)beo*C0^_S!5%3vUsSZsMa+%n>0 z&%by2=H!EYf6QZCLk{I1ZF)4yr4P>uxgq3s`C$3$rsu^^gUuoL!M0GS^qA-EvjR|n zcmV}8Eko)lpHd8Bwx6>7Frt8z7^I!=-*`0&Bf8PHB6HFFjee!=ngLQ}4;_JWc6`-M zyUhmx6GRape;hBMb((BCG}!`TAFFZUT(@43V6x7vXdr*{<_*GU*>MPmEX=mFF}*R# ztDyf&=*r75hYJc@p}_I%c}&~e3N|#H)Sm=xrVJM9T5Q}QVefj(s>z_(l7K9F0M2PF z)AtWP)}qK$V!wwzqpKWNC!@Y(&O=9f%em;4A)RyNbKK&of|`%Dwb2m3M?zrln2KO8 zAnGE}s2;$yAZdotD<~@r3&#JauyXh3;tq(SnjdFeu@G0iL<>0M9X4I+5s{F=P_&0b z6+{y#FnUx2Mt6;Y4Yq2=t}8D&mrLA=zMk`*&k~J8^GdY1ft7&(y&%^6*je(xS>y5J zd~fGrU#iVzdyrFbFfD;<)T?sBfVvaJ4YqI!@H2s;lU1jkB-P>3i58elfqkK0Bsqnfhnbb?1~lQE6#3v3#Qa$=ARJB5u%%gSc{o zd^igKQ@)Mfzg~c7steyf9X3AqT4q6xx2I#ybvc3-T+#;=YZIP|gk#2^V;o-cJSnz@~%F97X-TCs#kJr-5inr~3 z*>gcO<xz}@ZFEEP*^|UGv&r8L}$M-swS`0{1;r9G9 zmhgYGv;(N+hrO5&VwBRu-MhQqp*ahG#{S9tzJHi})PEI@OOI3OH`M@P0lvyC>ErnLS{`3^*MY8HV9f*t$vpkV~d75 z`=QRJm4YvZhAaf=k=_KJ^|NeB0HqDl~e(t5^95c>>DJeJQtW zvH=brcHLhVXo`bPl(_wPcT7@PS(Q3gc<>>+9A zX@URG^NP&fgew9yT>a4Aas|m4l+iXl6x7={j*bx6UApyN>nDYnsNSFz6sm2`;@Oex`y*+NU6`&IUI=Jp`$~!T7wL)Zc(q|nf zM_Yg%;FWJA+V#%IZ3}w=J+tfOblc<__%Rq9(0F;P8tD)YVuk0G5KHw${i#^TzMJQo zTjQkBUv5;KauUo$t?e5y$lnj#afrqnhC>C9RY`6Tzh&qEH?%gUDU3__YXnjbT8l+3 zKL-mUC_9hr?mzv8Z>@*&PYvS(jN0ju15VFVbDHuUX-YM%IU3ancTC&NE!h3?c_Nxj z_|Dr%G^){H=i1%K&1cqNe>BHIj%&5qEf4PVgCXeu_)`DcvatTlnKqU6N%ldlhj|D)XYLQ63ofh~M(JB!M@K4DwV+CdT!sE@;B^_PgUPIp~No-nY1{=U5 z=bFDl!&Oxeey0*B&4KSvYErcU9|tHyhEA^F5Gb|L(9+6;bO=^lF78*0ZG~O>vWjUK zP}wd=gPLS+WA$S=8!{J%9BKwg;nJ=<(p?cH(u|s2C(_n1#G)+28U@un=-an%NyyUQ zB94n`SHcWCuc0Sy>t2-ps758#k?|fK&zRxRm)-^*w&5 z5J3kpqhNdjlysqG9d!%*v|O8!1bO1b2#WG_DG>0$mTtaTVmk6FifgcZt9=6Yafaa=bA?09yw*>Yu9-_@E<# zo6&N3`v|J`!7%pdQ-jdCL=Sl)31diIy?zQ83hbpNF~Pz2`Q0=rVC(Qb?^F*D&7c;SKixtl; zZ@w|_<+}Ch%xEtk-HKDp$&)pM885dR-EaRVrhFhttv=g4Nwsxmgl5jLe}G0|vR5Q; zyDj?s%`TwbZ4*|7418cPAj(1&R>12XWDOf$Ry$;ICLq)I<0y0__P&ZJ<%(2iDdXUc z&F-^+Y8VU$sJF2nYD?Cdp9zO1U!o`mn7zO~Q@^WI;ReUoG&ME3b{Ys`A1CyU3|caO zjRddP$98pC^#>(nyn6e0FJEUO7?kl_8-gdO`SAH+p&TJbuJrWA^22ji_ ztny;w#Jb_~{X<$fRLx{Oc+x;%gXClansRj8CTR5Di-HX1gWr7yUr&(xyQ3-Ir!P*- z{^R{A5{g<;q@1gX@sA_KNJ`uT#e~$mP*-zhloH&P5Ic32C=a%ezpyu z2Qjr9qgm?(9Se^*D%#8YDQRzMfn*0PuBej9@5sv_F%4Z;0)jUpnX>u&cWlUk=9f!9 zspZ|GXJJWE+#>56&HQpcbwGbOXZ( zHh>Ns_KMK|93K!iW__b-z+KKwM%Qt93XKQ3ma;~-CV_7opmrQkO#%fFN3B0nTwDSqky4UZrSXhI3 z9bzzacKpl;aNl3kj&cFBYQ}OgkvaYph%GQb7M=~1%kwM3PqgJ8+?7%z0iL_Pf)|-& za5`(iA7FkQo^ytgV&NL(`9laAt{|?!;{_In_4MM1TIp1Ts|Y^OcL=~D5TY+tjQ*I4 zzy>o&WM*VpN!vhpc=*v_o0Lhq3=i5>$NDDQ3KIx5jfT*-C#(caq>qw8XG8dTOINRQ zab7jH!Knjry;G@?Mz?qNw1r6D24B7BBGrW3GWJ@I)?j7e|D>c*l-V#OgwBWT{S`1y za-RO?#N7wAv(86JV<2OhhkOy1-@W$ZD!ssOsShsyx|6y`dU_XME|SA%>WHl$TAml|y=ZhioO+_I?904U^)mmMXm{v4xks9BT-u^ z;HD506EApvtXP?s|0_UrUe5cOuwSJ+P!Q~*JyBm-8FCtroOYUQcM;Vc1& zgr@?SnT?%YQjMgJ&|n6FE%fG~P>0wm@U2P>h1Jz>+t8Mola*({?TAP;*;!gzx^H{M z1_PGgfFX~qt56jbWdj|FSV2A(gO{zu?y2q6e^|pZ#8MnCa{!pPV{l-2_L3Z(ubi{- z76S1=@z%d|WN*~wi=i2T&Gppaj@@7Ah0BWa)EoU1oKv0NZp7a42Zne$^8X!$QeM=| zUUT%UzC|#X=KH6f9i~>`_Eb77VuOy2K%4`4!IEoMV6F#@22nGamI~GE#q@@4&{G21 zyx?5p-=Tvy*qRZjjnadalqBleo1r=bK89^>N54Xon z(xPfqo6Qur*L)*hd>I&;?f^v6j~)6sKT`NqKQ53!H^fb~L!hDRyxiUkl!-mK&N4=iG*PhvsqfRt z|G+Xtt{h||40IV7hJ@Eh_WC-hCtmy%&qczC7+W$={FjuOcu6!|wG+R8Ujt2{1DOO- zP8Mmx&ISH_;2MG6`5*lN7*-sVvP^SZFtA?ya8m`B0Vp1{#@7>M`BF|S*kJOR;iQ@D zl^p`X0Hy*^kIawne`z#|g=R9KtxdeVQW_~oJHg`K*VmU|kYMK8Dg=`Kxd%5yhUXP= zlLhJfBJk`20eVEC%XpW_4Jm$^mssz@inB2KzmrDI<)IJAzILn3R$c4t_uKrwSvTB5 zk9_JJeLP-;f1wM?KK|D=E&+?`>VnB#p51))EoAz)J;L>Pvu$&*rNRNb3yL}W*`KjV z8NB(w?!5b9%E~H(jsP-gk%3Agn=1;VhM15)U0yy?LEAH z*QS#I{V(YlmLfYn(g!Pr9%Mj4bWm#HR59uEvc*66VkwI<(PAUw7(_W5pE9T2#=?FC z?|A5|m0M#Tm_hs-(pUBsN)zGj(Y^R{rP-w(+~q(daB*`REwqL2cIW11l;jbk%2WYC zA4n5Ggaz3J4Xl({oZLR3-Z3_=8AqAlOjg@=?0*3fj!4VD?Oi0QQ2@vW^~nF4Rh~7r zfvyZYlZ@tcdC#?E;Bdk&0|1^TAEEf--4iXtW3*61Moyj%O$ZXWhz+;z)aX#kUzF@I zu(G!=dOyFqy~Z1%-DyI7ZZO}b1f2u2NYG502S5i#C|JjUi}ypB5O4*F-~P){tImAr z4PP(oi7@Uo$$8KuWBwd~$v>pAo52Z~zaIj1P_&WoR2{Pp496ek5g&Ob- zxJ_@*37+m`F!2Fgqpq9Y7~k)>+dsBR)|VLeE~X#Q z7;v4nDvT*x`=!*$CF};;BMPY0MM0S;&A|3@cm_Rx^_tO`8s0476F z3fakD(!iLDKqCg&2SAa6ftfHNkatiR2KHan*&-X)S#3izVg6B7GGA%)2~|ivV#~(D z0#h!ef-thPd1%vV>bPkTwC+Pd+a^3%{IN99eA*1^e=BWs-S71T5?!Z*-aQ0x*f3$2 zP{Vi_)WH4jxzh<5W%&cDPrMID;}zWq{>mG`0k+L5#^Z>cf^#RxB*|kY+IsHPdFl@W z&iQ-U%P?{4FCO5^Nzj7mXviiKM?3=kdqA&1YC0}aIpKxg)Bj~#_)^z~2cj5df>!Q| zeZsk?sKD*SkVk zFwhIAdVjIgt@kX{_+Td%*rmcFVPe)3)d0t=1w0?`#%ZpNWO(flaF12**8STpgFdYB zI8dv85HEhY=rvucf=38)k@Tc$R-|x!c1UYn`Cqy%1Izwjz>AtPWRA`)W8yx%KKhLL z=a#DoDlMJ$<=b+%_0LhHbHo zoBMi0FoD`Mi*8$^i3p?4e92B(q5gQ%+2D0|1D zqVEBY1{f$V`1(wj!H`Ws%+43Y& zx`_{@J?KnWSX{eRqap-`8+f&~&PTV&hHXt2ov2Q3A{hiQI%YUw7~LO5c?a9>Q(IB! zpprI^B83(#OmB3!!GoVxms>=lPywq);={uBcf1zneUx9R=}(~F3HwWLHj}b??}K3P zFY|OKG{A^vFavWH)F$w^TVb~+0t>J6Gf`p$0&(t@x<7P3(Z=JP>TtH6E_omE3|R-fodd zPR~V3kLR#~Gcb9?0&}#1DFTwk9PbHviWzyF zRf`C?n7}R;MSnbnW$s>|zi|*=4q+aRFG&(olbBu-O<4K*nqJqk;7N z*~m9Uq>Tbjf9009L1Uf!KH`ZfTVYS$uJdNkV zN+)mUza8lFySw`g9!#G&$=wQbbLRr06Qubde!vK3sG+}8`9I3XX}2D_d*dUPsd=Lr z71T^L_`!4uM)*n@-``_gn;osc6L$SBI3t@oJ8?M-s%wo3tp?-)x%BJ@gUGaKK4-iN z4bpG`FZ}Qgqi(ipqy$IyBkgZ`s`{XxSC0q*b%x1m&4}Cm%Qb^JqoQHo_rh%;mYkfQ z>jXuS3U$N7O%6tB zoxa-XI$yE+uVY&Kq9d@6$_<7C!NAo+Hh2AcdTH(BKD2!&l+-^kE4Z0U0$0BG;|KlH zA+Q4gvXQ2zgJ=zfii1JQV^Co|1%ij9$%K zb#L3q;8foEeFr!CF8KYB{S&W8mO*9$g$R~BrFhqa3^o~8R9YHyhpTzf3Hlez_aG>uEfB!z3IHrS(V0-3DWa^ziQBc1UpK(aZw4f>v_+l9k^*-}x>m81>&oOyv-w60WfH{+{%1kRSC!^(bN(0MYF&jWU zyu)IAMCc;$qnAoLZlX+) z(@Ay(9wy-s=lF8y2QKi!P^G=&ZPCx8tB^hZcCnzkAH?Bf#YV}m$(MhC%>4P1OK?wE zp%u+-sGwaQMwfJ&*g6`hu|WQMSPi}t*eO+5VNTIzSw5T3f^@wXH%ogZDLt83=SNlA zsvq#@H(x0kp81{xoqQhfs>{n`HS0V{o2P{?CP#3Bfc;*k`!XFT@vGbC6|CBgQNRk@ zXY+;=$jPHOtOqj{1)nU(TbcwlS(8t_H^$HELtu|mA>{|?ggO6u3Z@&4*TMWXXz>3> zHK6?s=D@TpEN7zHgcLmVT~3+A9(L(z@r0= z^TZJI5Im_R*>Es`K7-jeV7vet$r#+G>-E6W9SeKoLt~i1$gZN`=!*Xy#(uy1i}i4s zYpp}rf9f^a$avX6SKB5#i^h$flKSJP|D>e07FUgA_X0Jmj&Biar!a(Ac=AZ*k)Nf0 zdNBGiISgfp2RkOva&DV-WHDg6vieoWJ`Cq^ntnqV`G^fO ziG8&S?0pdOxLUjB!1N1UU(l+zb?B#vm^ge=RhCZ*omZ$ccpXr!q=ts4JFM73$*M32 z;703A7UmV(I~fUrnk17~v}mgzEP^gJP*J#)Dh$B}bj7aAJzS|OPM0~r5F$8#JOl3s zOtkq+$BZx+uN*i-&7Z9A#&ORxO2+feoxX;+{rc!QugWC^9^xQV{HS4L=WIpt`7URH z8?9z;p7)h*K9NW>s+3lFMe(mL_1p0WdlkSaL{I+PvmatkeFzTzGw;1MvC5C=D%&T0 z8lt?fe!Wt#He>a3Q*3I)<1Wqp|tb3uzWx@y{2=9-a`iSM#V-{qkYoQBi& z24%O@U%U^*Q5CuP+5FiQf%k#GU9xRBemsZ%+d)Sxe@T&o7kYdv8KW7^A0OrfpiLQa zQQY}OfEYKcnZfii>DKpLY|4s}E-gZ)JlWqrsx`N;3Dpe_$u-MUeU_W*V5p~h2L^p# zMckEuLHqa%J^8B)y?x(j^Z*e%-YiDyb|FmtQ%Zn^<2DwKZrk zsv{i!;8u=ZN59MTc<|$!978^eK$A^N&)d1X1Bu%9-?gQ?7?NJhE9o7xCFUrml4TI` zB;uZV%%}3!g>5tK3EU8R@aEo%eX}}D4m;x5Yr#NaWDhU;3%&?I`S1&-oAe$Gyquf_ z*nt=B1rjYiw`3;4rn~bdZCmMPl2(%AR=rz6fB#^JelQWOOIz{&NYS&i`djFF@MBUR zAF>&(v@LJ{Uc9fOBK$k{M>l?)r2u2o^0rioBxAMh%E+Up)MwWQIanhwO_(%o^kuyH zFL0&2y5HOO^UIDn4kEjO(@4U9M5PoRL4|+&$&33T%vvWq&v{#0ZJ)Z|{)>-I->*&C z#>B^7uU%bzW48Hic3PYL46BBvXc-w>q9Z3Hm5!{m+vG9%Zz^oe&#EEn zq_pA$ksGd;HBVTnxYC1q@SQgHR`8*l_>%0pe4PcsD$&!vxt~9nIapf1w4uX9J9(t; zDl-dT7EuC`|Xc=tOlQ=KL7 z#9&@H`K7}355II?HQvtAE30xUv7;%ka&r7Wq*vI@dJ&qg3sppM8+y!fTGYZ9CMyiN zfS`|*Y%?6QDg|#6t*{#V8yym5{>y#!79-W3zObdsP4D&{o?Ugs_>2U88!iDE({qj$-Gxxw!Jv=y8R&rJ`Ug1l4v#RO+PeKzbOmC5NM zB4d>$7=ec)=H5}g$gIbx!Rv6aK)Rp3#D5}R7D#6}+Fn4!XuQ!b?+=r>m1M4PHizpL%W1}cU;Q#c027&{lAEruxH!?x^ljx30hi*C4s_(q~C zP*)H5ft5Pv-j{EC%}KiGXtblOzTVDHYh8Sk(~QnWrl=>n zRup`x(nn5vEsT!CbMmPEb84?mZzyI!htpGY&k|BlnP5X7S@OWRX$1o(XS8_E4dr}I zY53eveNSWB^!D^?Hq5dfP?ASK`T%A$2!r_hA9S5gzJ8S%L*gRrqN``FQE7B*8l4>N z0@gZK{I$X#5gpA)ck?n|bnQOk^o_yb1`l@zIgPD!( z>%s!F&&GPp=&Ew%dWaV-dQ;(3prSJNcXqSgK=v%HA7;@rTQ9qb=WJ1?Q))4T?$W!X zab(f5X6iQ`vGXB@g#s6|*Q+9{Ox9_P$f!)G#XghocSw~F1QPPP?h7yZ`ibv9s7gz?+aWrhGN8K-RCCH_+aVLqH2h7p@3w5SVrj4mOHqxuJfK z6e424(~c*_rPrunJnP0$EpL?eqnb|{3^Z8}Lc5bvL-*7ml0pKKODs?d!9@EO+#2Gb z;iWIOw7evXT!)Vyumuh7JH`>Id~@@D%d(8BkJ?Uq%j*99uaM|pUOFmJj4|dyEIN-G zFS&Am@4k>7)xYjh_VR`sCpRg~DZVOlj51#V+Uj0!UTSz0S-9pA2>-=EKqgXUiGffi zovwOSoHKRZ#iHwZeP5`=Rm8*Oy8>igx8?lRNQz3FwTXk+GiKZ*1U|(Q8!-J3luT_t+04w!H{sXQg?m*Pl_YxGMAY}3;(467 zaN;g)f-dIh6}QFR+a_OhB}#@NQbD5mEH)MG-?0Na#Zuar44yP~(LVi^rX3zt(fzyJ zWv%Jz|6Jb0Rxn0h=@n5V`MChG53+Srd=I06#E@kfuK5#5$a!vEy8+$KdS*lyuo7Rg zWvl6_M}X3qL`$M;*@`~Ro3ABe@Tzw{6weaq6NV3H0l`1-DJrVz=|vpZdbH1ORr0pR zEqj!i|iRY)jiPE9}O( zDpG4!GWs$;zO7O80^w<$M&ZLu?=_P%!cn$oNkvQTRMSArjv#Wsl zR4h}!dQTjrZqn1Az|=Hr%KF1O>f^p=XO~m;PGu?$^!4db;H2?DfzO}$4Qwss=Hc-R z%O|DuREgt&pBmoc2QR>mEpIdt1zk9(fuFW$WlBfA0yr1Lk6^fEjn*SiYo9kH8JOzy}X+X>fs&vfIsgG91HSve)^g zG6lCTMR)ssn06T}%mR5fI@~W&iAgQV7VrfUe?^h10vFTY6~dWa)rqU{#JZb7DV}^V zA5iV50skF`YY3_zItb5U{Yb&|2l-!m8JV1FJ;|E2)m>{+Cn4G$nEI9oZ<$pyU!i&pJ}0+2eUg5tL#`x0MnWx-wOJ?; zGkWdH`)}Xwl8}<7muJTz*SyJbF#*ks^}k!1X%hdoBK(;E2D`!Y6!6?awN93=k8zB7 zE&aJQUD>+ooarEcgNca=fw*7DpAHd0;B;<-P8J3YnS1BaX1%*t~`9FtqbuX_w&)%66#xJJ3L*ur?=B&&D}h|-Du8*U7=m`3H25OGl;kc5{ZHYQ#d?z zb}0Rnn55lxg&`8wiai@Ee#%2xPlI&ONxdc0WF*WgoS<6}tv5m?w z{~wyBFJBN)J~F&g_?&M{JwqvYji@JNg}S=ixh?P!Nd9Djd_D)==tS%|uAfEaqJ}bU zetkwG)n(n_bU6!bo4Wp+%D(ZZkz{iRUW77{nv}TbctlZ=?y&yf_>w`%eRg!4Xe_UVJm z&TDM`awTLiA3I=KIvokW6*`@ldGKe;j%?`V-_%mPs<+QsT!$@VfwV2x@(D5j2pjO) zK?2^hRK@>4%bt}N76ecRPA~qST#XpohR1YoxyIP}ITgk4(#{n9#4 z#y%dXqH3IULn2W(%Tz8%jM+f_YJ9jgt4c}7Hni%Tqqh$QfYbBm&;q1*3D!s9WqaWE zN|6XIm;bPBhH8g`l2Q_0g!*z`{4tl2w2A*`0)QTH>RxI@tZf)`qpe7w& zxI}P6p5Qihq#VFE7_u*2bgyw*lt?Xa0PYp`JgFIUjmAE}@NY!e7}?^ncK46mwz6NC zm438GA2%(0fG=`K&qL%xSk z$`g7I?#-0anXDFP+-Hr_hpQ7PF5k9fd@J_e0&J79tF9YL;mSxa{23lJdXtIix73SX zW2`@K>?13u90HpuU$sZMB~!tr;J-KB(5hd{>>J$ZNq@0E_Z}m7xp4^ zt%eGwyOM<$j)Rry{NIGAH+fz>4_WN`6QeFfa(viZ^sSZy_h7qp;=q<7KUvq(rlZZ! zKC7DQ#wDQ%v3IK)4A(LQ%XP|#Kz&EdH(B_*{mOHkwLm6f zw!m{}!|dWQ4?*T%Vx~0J91FomW7)p-R<+=App?0IFaDX97wYVt9*ZAWEm$vo>Fgq- zo_4M&ve;&tcGyWAz4ZxlkLbMHRk(mI-TEZtq-O517hfd=%?Dv2DEiv{fX_)iUR5ck z(z?qe^x=x9=ECpa#zt59V`a=@@3%n7>d$kf$n0*t(=^c^2SErLP;ov?(V#}Got*0H zbgPuAMqst}j`u~rdUa*Gb8O%U(xay4b)h~XLb@+jR#u9X$k5$i-`ix`VyG1 zTb=o^MpCe2%n0n?mz17oe`>g+xGO|PdEG^TCWGPvA-<7bgR|%~&$zA2n7dcjgUg<= zbbxpstrd$KFu9Gzrn6oSp58~Hbz>EokLnqK_yM%O-@i-Jg)08-)eh<~7%%g_S-B0P z-VKpms~O9!1(A|j>Y-6Di0ZI9f_}NSmWSCynEgqRL5r*p_q@x<)^{Rub=d4p5i;#* zN1V|?MRT7}S58Yecm)B%)r&J`y!Se)rZh3BD6TuFQFx0Th2?s34*cKa`(m9N zRDVyN8i&x(2^`J~Y9saUR!PAXsVrA{^Hn-4jh9L)5EToTjybkf*_*Vw50Lh(6rrt`}YN(q~q5O z|HUShb1G|I5xi(dt|E|Y;8y?As}?j;mF9@gTsNktqN2{GspW;-k#Zt*1!`q}8)~Ss z8X-dAT9S~>4Qf9OnUgw4#({*dAvV2qyaXrbhKrmjbcZA=k&!nnoO~dM=+xLE3(=2dD>hM&NcB@ARg6K^w1BIw8P*h(Hwd z^eR-HK+-T=^!yyTR-I(cEXvO|zkN96TtkdsNN+2` z=Jr_Rv}6WY0+lKbphHGVH``_a+XvO(Bgh*Fn}~LkUDnBF^@mE2;wNsP)W+BbSJEp6 zfC{GJl<*(7IWziin5b_~z1d4trc=hV3bXS>9-fjg{zLc0Y}Y%k@9&=`tj1owrh^?-=Y@+ZeS@ir z>sVqk;mM9D2VfcF(+fp_>D_hWN$=!Ujk}|+hBUAJUJj8RDziM3PU+@b-)#UMu>*BEcI09LOQsi?efW&cz88cZ@m&uWS9@;rq7Xds##_ZKDq`wSmWgH=V@g@o_XmdUUfqVAPPAL<$+|e9*8p11>57 zkA;oeXL+SuaEXrpJo7G26Z5~3ak$$z^aEf}?CQW@fBD;@OnIfdCgkZoo;2>`exnn@ zeL8cH-)KaQ{nU?o^gbE4y4D%+zJKK(clQSKtrr&n+QU&(dwFIz5{(zQHdDTj4XCm{wzS+{;XS7^58&fJV`r4)7ME*Z9gT#lk(3-b(KqL)Wl zbf(gu{fJK2%u_SCvpbyb*sJ76)dy94k@0{(b{!}IW?kLcGy%~UZ|}H?Hj9-$0cr$* zjR_32f-JK#Tw->2wF00vJa`%Z^j_fhm+tRAY~=%P2$R+ym=!d{?(^NI&l6IY8C7lD z%cj1=(S<}s^J60*lk&|Qf_jSA@$tcMSQrwngqjkvV*<=+n-B427U5gta%!Z#QOt#b*rF0euIxu#^+Wh*Czv$0o{_ zmKNZwQwFz~%K+B^2}9-LS-ffu44j?EQi4NOU|=9btDAUaU8GQ-$H_D%%fRawtJxZk zK@y;P?mke%5n_qO9+9&7$t>q2VbZPWUYXnzb8sdf!c2;K(7>dmyJy#4#3EQxc0)Qz zQ^6<7S6h2$9-Zn6uEihxNK^KdakZdG>ePgirxUbiv>XPf>=1S$fUZj{ndKmfFn^h+3lEbm zx-#*L+Hym$+^Ev4{RXS}x_&y5~P}+W`{fu;Ko+fJ^voxqz3;+<2oR=9DE2;0imGOC81{}WM_cgB?BpK|gD&M!}Repp1j z+>8hW7t3$^A2S&?vK6veZ@yiGPajl_ox~}42h$hB2=gAfCS*!hVk%z2 zLQFGIuiR1)cU>I?No2KadJFm*9;85f(bX3{&i*2dzRN20{`jNec-1UlDgT zTxcwz4c_OX+5>DA;g?1rs5?}@Eejc57J@P%SUZX;*G-9C2tgNs{&(cnK=>gHBt#i_ z!+UX|H{|~UE2+Dh9zHKnxRr=_5?lq(<;OU+OzPbX=Fq z*P1>kU%C?C+xOG&hwy{I&d^MXl8i_brrxL(@rs#|$x2@8h@PeG8_ig;wy;1f;Pk4r zk8RAGsys@|@}#K+tj%6`wJfX^aNrK)GE$At#c`I%nIJiD-Xe^B<4OEm?rl z7=2m5f)=oTmCbf{RrtzUr7DLnyzne6x6@6Gr{b2bQBd}MjsniJK24DJx^e*rKG=UN z-gatwvR2Ye2o8$qg$vP-7NR}`5C!T$T}g#Mt!z;6`iF7up@SzfpvgphC*{j(0v|Y1tES^ zv9ddu+hW(iSqXU5W+cVUqM|&zMcm5KnoR4UOc1eD5nv$9M1%(P%1-u(s>w(c9{XjIP_wg+Xx~BW z&n?uu@zNwVZOF4v>##VVH(j>0*DI3_H9wp1I)t3zU(YCUIqMl+iw?;yOSnNrQEG>F z-Er|SHM?>L|7|z9JoQ$=ncHkKS6!rkj7DdZ_VACim69O8nOHA|lHh#s{$Nqgv6$V| zG~>AETC)Y$=^{~o+&MfSFm{k4rPm&U!F74!+YUA%5f`EzphUhZ_h+iJ+wS!kmZg}> zkL=iyll+$j2(4I8>&G>B@zn3-4OV4+@Vxo=jIW&zCpq9B@KNxf8uz9Rh)eS@0P|FY zjm3ohP~7=*`Od?KAwB^J$}4v}MDn%5zU90w0b`dvk7(E{)1UhHv)=&?%HY<$$9*XK zZ8a%Qegj0o73-Co_Gt=nA-aW1{vXeQ2?zxP(gU~{7#Qjg?$nqEFIibyO?SQJ2HP)V ze(0P=`5hM~?xR6P6bNt9az$Az{G_{$wEG z*GXRSSRFueBcVdDVlqKBSM>hl#P_&BlhAw?%iA9DPX6iWZ!%3$3+8`FC1gE*Sx;C@ z3>&I{q4w2}27lbGYQ|FewO~c7V!X1lGT>}Q`6Vzd7e01pWR#rC%Gxk+`~h;%ipy(r z$;|!Zll6^{oh;a9P|+TV7}K|4++tIDrBI2hf&Zcbkb zxXKG9dPZ-z`bxJ`4I%hKixT~zKwG{`82DS0jeMw6*$U%}9EJ_RD4+I$XfxMa^Y=2- zgW6|^GO1DOT3V!0mZW6ie$={!IgUdUyA=m|4JTGpM7KfoAB}nDB-4i0ruY?|r zLo0!o3o&>Ax0IN5rz)0r3xVUBF|S}q=Uzld9?rsDMigoR2AW}>VAJDDS*BPB7m96p zW9d4AD~);SwZi#~-bUQCiHl&<$S^XFa>rgz*J1~P6(pD8BbTA0)ljLBX!NW25nx(8 z9^vex6uX+SOcBMmy9JgNMP^~2&SOItbJ)-K0)!gmFJ0>gV$kpSrY1x8yY zu$k{m-@(4(`T1x>v&3WHe(HGV@W(DmkTch-i-*FAszNin)BnpD5asaP`FlLbUP;n` zeZc4Oj8uB)Zs@~_qGbPT;q5U>^T&_wnQ8-YJ-ScA#SINg{d7jS*ujiSFsZ!fodNSG zIrdn)^%|XC{n3c1tK``+VM-#HsNOwv_x`%00)@s2NGc~CIkf&yJbC>Qfb+^yFukdy zQexT;@Rk(KSm|nn$b~~lsMbpybrg1Ac9?*J760d5C627~ZD9x#$bfAF?w_bS`XdQm z?iN85Z*FW5BxOKinb~{YURuW?%52|e1$n6#FQ!iSQ#c`xC_sT72r(w!^$nEIx>QX? zu9L=5lw`#wpCKfppzPdm`wAHekV}pGOcm*uHe7m6w8g<$%=;mbDJviVl6#_a*W|?- zFCTCQ1kadB?4Se+GzUT@E0q#C=deG-tIS5$=E1YGgn#E`5F_rm1rja$s ziFVh6C~4T;s|tgOzg4kwKI>Y2^q`m=Mq-nfRHNvMBLfj70J zY5=lOnX>Skp-opy+WR1of{CptMY6ntC$0acp9N1Jz=%T*c*W3Hqv%DGKupb~{qz4Y z);mC00E$KeIyEa#u9<0Q4kbycTB#FIw%Yjw)D?aY@1)5HHW)6H-RrQkU@`W8oPzs$xusl#z+rHU@V*5D9nR!c=3nsc4<_i^{nmUY!u6^q zFP$h>-1B9(MgY<`|IfCcC(=$1pA=zpJ^B?S2$Jctbg@Ad?JzNLGr2qX}{&++n^m)p6{((0K%c&5i!Cbj0qRJ9&AZkDnU0~nj^cU8cBz}h`MC@3Pqf72dDYwZ5i zg|h3j;a^Eie@M+}hC%@EjlxASpLM4lz#kUY;=PpJI@Cs$6pXds7Ps9*XrrngJvDg% za1@FA;gGU~{YD;r=xKC7h$g}f;RksELQqyYo4e@dVpJHCei(y;193I`w&0NX8!Rpx ztqbb<+RtO>g5`D*QC*(efqm@KAM<-fUcO-RRCyjQ1xVunou%h;p@cIN_k=TfXNTG~ zYNt}{&2bf=4W)VB%#uI6$fA6>4M7Bcfz#n!T8DITDfSS`2NY4c96OZLCsy*lFiqW%h77w$d{)K+HsKp1OZW|Z&l}VV80SCJtc)7 z74XR36|hO)-7m!uwi$0Rklq^PJu(R5EWFY?O%BCpl~H~%nJLD3Ko-DKC z(+^25bjGVNH1#s)Mg$3J7ii06-S@|#xG3=9NH4SZU5d7h@$vx|Vp=<|dA&IBG8X2; zn0(RMjOvWBp*zUPTZ8*JCHu*n!17P> z($sKi=;IrO+F7z=C}m54Er2ZvKs_rV)OHFd)U)`?E~Y?A)AezIvEfG%%MIv(rCR^}D0Hl#efcL4n!= z2iV-D`qHZN*C%}Kc+N`|i;wsdLDq(#WqbYcAxz4iW0Y72fy=L-?RGeQR#Bg^^bSru z>&=!#*+tp()+l}pwTLQXde@m-F>#UZGjuzGwbb+2Bk($!O6!?Cr` z&{vN;t#^lb_>=|5c(G#9_V@QId2w$cg^;6pC2U1Z>e;8Crmfz`Th+H}JvTXnigHi9*^!#^_s7;* zaE(_=3O`hVf156}FNPzV$UO*b+|X>~%SC7)52e9%*NU4^-2q?g7CNn-5IeN2?Pfuc z7@Tzt@XyMxmD36(v9<{kJ49B!TAuK%04E22f{pw?gcb;HGOi`zH%*h`3a|u)YHke~ ztbyPudnDCLZvz#K60hwF1I3XL`_b^Y6$L#23E1u_^KI*z$FV`?e|Ab!Z^S1TMhjkO z7BczjYE%zK4*T@W8U~_3M^FcmfA%*Cmne9AsWhqCYXX__5yRbvxO;*MXr>UuK}A13{F`?^dj-*ZdJKKv7-*$3tj@Uf$M% zlrQibgXJ!1m~%tQY#H_i4^?`n6{ob=d;I>ilQLrWdp5r;>R#pyg^Wlhg1PryZ!(Fc z-~*y)G#3o3XjEX@zy+@z#ks$`ffG1j8QJi@Q!Fb4gAm`M_L0lEHRn1|Nx53QuyJtg zeoeEWLU7ChDkJ_ed=~s*`LdOh--8WJg%2tzd(uTI_D`8-d^av^oV-LD5-1QaK2UXD zH{JWq9#waO2Q0+&a<<+2r>CSKmLX{2*9T_A9|pK#yZxKOWucD14ulaZ*VHF{=09?u zHK;F2fk!O9v~W1P$r}{hfMjFxw5}45FEq6_Mzm;t*uV%C$*-bNg4`G-r4?vvoxrjElACVSOx63f}|# zLZwf^j_<($auO&zukdjY*k736D(!f39*Iv->db_2uYy0dLMb73AcBPf zu%b9a5+Id`M6eYGZ(U2E#>LpEnzu95sRpmd@KZ4evZzlR!qH~tkyqm3GZRq~U^e15 zOz_mEqNXw={_}Fq1eruu0VQfvOZxzSPwd4%37e}=Cw zTLqjA50G%XgUp_(W3oHES|t-SY@{@EHL}SR-c3-Jp1)s%VZh7~<5!&wWv#8)eK%k}zl1(oM0T7Wm=GpzefU08Jdm{=$= zJwv6as5n&dY~;DyM14%_Y8vX(8Ks9ntf_ZBu8hmbvHkK*K|!GqG-?cgB#o`;8{e)i z#Ts^gWxVcnT4+ylxX1X9b^G(X_Y_DM-W0tCaqj9!!P$({>Ch9LLZR5bJE&8V0z}Z&#OQ(v$;6r*^ zHSr%C|HS+&Yr;;)nC6- z06{bx?YD$vkM+Rl+FA*iIhndZhmCy${}a zhvCr(P2Ouby4%!_1pelRKKXz*HTDz)4eH7#?nRQ^nHg}`nf&h^efKXRLA{Si6@l9P zh$D(LITv6u6##^;VSzvfei;<+rj7QN7IesYwdI7z=juImxFdk1-}FHA z0JEwY(r=Iw7Qw*wqDj_JU=~V6x*3eB;u3T7LfezMX%$`^*OHE9rQl6vw@fX9Ntd${9Ab`Dvr^}8T=amSybn13`K=-Y`SuYr5C?t_ZK$ps zc(HuxOl#WTiqE~ao>rh$a4*+$0&Go(lcQK2rOVk<+g_2*6UVk)X=Z#ntS{47Cs)g6 zsE9!QMuNx45k}&xP<7{@q(G-{eE)C+%+B?Q_)9OP0>Bje)E0SrvX#M$0BkLNt&F4) zQ$P`&|2(vnW5dPq@2B+ede!btJJ=Z}{nE_Wh7XqtW?24NZ|+V14-=F&{>{Up8H0BK z8R6Zm@wi>Ei>EFT*3on1SpMwJ>i-3EQURrR0qv$gcD~hDdafH$gTSH!ET{Y{R}(^J z^RqGQMub#d`eA%{P^ba!KYc(&ie-tKlI4Y~1m5(ABFaD1RVcCjF=_G9b?!Sx4!<6Q z0C}cCBHg^Bv9e;uI&W0t3brvAj@Tfj!yr!2FGuw&cbkeWmN$R|M1vLgdMv26wl?`l zyzkGM7j`KrmOTM%*bFW94E;Aja_bmvJ=Xb?hLP! z(vSfgI=n(7QVEd==bw1~JAfhPhF=`7%X4^Q2J4T%h}DrP10@1M0deutfpD~Vne9UL zF27XCt?$Q0I0W?abSP(FuQwSUqeH0^ace>UD^RG(m3ra*^m4*ntKXG2qw~4X`f{=- zqYh5BK*3zgb6_a%*X|iDL~TY~wEOT2Kqjq3vAb?`qNVg5kV&6ibngCDe{FM%oyQxS zP0f)z(Ub0sl=S|!{gN&M2?Sa9^NwW?(_coiTvc+i+lSL0J}Gm$-)mbX`$v}u4%)^_7hsKNHf2r`9sf6*y^UgWDv_dGY(7rz{Y-8C~Cjw1Y zqwKv-+5nYTeixl!pDyj3!kA3U&vL7UWzljNYT{hi zUOG||1PUQG@v8;WdjJ`SYRq^pKL7A2zeNzDp0nL;%dm@iOz9&_l&R z=39Wvno1_bBAyJCL>O2VEmn>5fw0A1X>~KLv-?2lU7c!smXnfGhK+86Q-RgfhTXss zuuDOdM)*V3@>$G+XA1eGMEmgh_b^1JE$ON9bc&bDu1O*~? zW>&yZ!?M{uJl^ZuVrizrNuIeAylDSK=1jq0S@nXdgJsMWO8+{d@sSL)LoJoNU!Ivr z82_@cu=X7`BA=ESaef*M;ckGIxpWkSjpregIkr+#d{rnW;-Gvw00$&XBLu!3ufiPi-aMav)R4zO$82p{Vz#u_f zTDTemtS+FYhz|GTUiZvTO%Cu8K?qHynKD;;BoQN+07V776pF7)Phk2VCM}DHpTI#q zFo?ON`xTHOu~B$0UwBiK93o&aHlQMlgr))0XFHfdAx%NWL>`gpW$2lkcv2F*hR7~s2Qr8icd({ zn_xs1CNv=SY4h_EL=EThyeZlHLHt-wljmA@7oOM-p3h?$7;tau?MfoT&b!;Z}7!hMx zw1g$cdUDIbHgp>J=gtH{S--l&Fhnrfcz^f6x> zQidQEipLY#+rzMRYVWtffNM;n}; zOlun$1%lDIOmz*I%)NeapZUM@Ma0{1DH0PBsW8wvRGr1SS^?e+NfTjbw!oo&u1Yx? zBs-c13JfMwcBS+PGq8$wtw8(et8aLGOr7ApJ%LCjz!Afyrg(D6jMD$SjDKnJWEjLa zMCtF@*cmQcP3uT+|K5H4-7nfa?}9|_`hQsft*h$l>z^a&X;d~3?>gI_pivWndn^GY z6lA^bLkE(xuW=3=k!txldFkn^V2$3@2e-JgZnD`gf3>K6s8y`1^hmQ+$qW^TGJW z20@*Tjg9{e3KMz~I)I@c8&FDa4!sA#|IzmEm;F(I*aM9* zjg5uh)UJWa)UVr)L%}lxf2PXR3No%AHn8I2NOQLj=YcZKM!?3!Cna zSFxXAcD1kGhF>7^!b6&HgKo1gH*?DysB64%D7bOKYREPB)&ig|?)>W3)tC=fgFCL# z=A(6oxBAis0fd#ESZB%K_=P#vId&{`c0f%j5Zt8@t}b>d(!}7yZSo#qJ1&}smyuzt zn6R8?KO6svu7jJq(9s|#2YV=xDRwXev^%r*ODT=0>2L47Yry5`YH=nSR&s|+O_;ltW5HLR zdB}rwVJDB@KFw1hI2}kTp$9f_yC}`p{n2!_&f(2!L;?>;7$4z^9S{`Hw3fJk9Y*mp z&+H14r)z*AJSh&mM?H4rKWyMHbP6}7e3Iy3@ahf4TFyHh=1JH*S$x!wEX+KM=wR|wM?ydkql&rdnM zWzfWab9Q3af6LS5S8%uCOdDID{(PzUm)xU$=(_xcyow-iylBHlV%A_^L3BzUsca8x zD%c`r70{?dnFK?dsAWX@U_ryjvLDxm`R7NV%wjfN?L|(y|6}W>gl3R2`gNVy9T`?^ zp0OTN5g5?5t`BG+pU3~A)0^_IfDcO`@mE<_N)VpC1QyASW;z&P>I?HhaHWTBz0Lc3 zk!P*?72}!Vm9KRPxnC@4?ArRiM<&lO8?{1ghY8X?0k%|iof$?72A|e`|8BD1->k~W zaXd>|BC)35s<>2~>iI_0WMpKb#}3aTtH1<}TNy~F3WE{fr!D~**Fnecn#6?_A?kWs zU(+$TTw^Ev&seFU^uq^ta6sWLFn!H6U*)6p4mK75g}Ze%7go5TQ0_a+i30~3F1F4P z$UqkWD3CcqRzM2LYRJ!EDhp6X%9PhrpCz~i^JqTQi7ALeOAX7UJUu+!pFpxf!2aNC zwA+pEoXcEq19=M>pcO&pJM@*o(<(8#JI!+deihiHMzFC80ABcFUrQ|?c+Dkql`@_h!Z0Ogm?-iwAj`sO z4A+RHaygtG&L;8=ft0uG;e!;!2b(ixvEXus^9arLdf(y&!YK3Xr7>q|)#`WVX?pZ+ z;4#35iE|&>x!O{~sW)u$X)}sdvz={f-6O#S3aUy?ANp+h*-hQUWaz{4Il75X>dIO7 zUpO4{|Fa(Uktnc6kYZ5Z=H?cVn=(=sY>T5Q0&l_;U;YD}{ZKUO60>UbCjVO{W*_1@ zOf2xYTCoF9V4IS3?l;j+R0i30qP(w%nj)tmGs19jDs@ zfqIK&hWGY;6CHA_uZ!9K9Ct*wW*itEYs?Ofy8gls&3fm_k6c1hdoo))vGdLutk2qq zO#+WE4{P`e?qG{+DkmKVx8LR+8p5F2n%R2J(YmuWgCpVPlI}4PO^{1Yl3bahZhd!Z zveCbGW{rc8JJ-;XPnPvXW4dri`@H?%HLIr|qCC`>;kqgjB4W%GPEj$jFXz6!1LlxQYe9^Po1Cvmki|!@uGqRrYo?kmFD=V9gO45JoNUl8`VSB@BSYzSu z6#Qxs)6QNj#TMr&U&5tP5;^^Q)^{_^?-2nL@u%8?E1KY-%fGF6P4F&ztA zh9-{aYHwalMUZ`gVYlJ$5s&W(xVgI-GL#0ROFrZIt*)u*_a@a1`}_}IQNE(2nQMm8 zvFEH78Tf;0@Jk%;LlEd3<7HI;wkw6+(|f9yczrf-!&I|+CtnveU>*MSxDkidji}`&SF8qft3l;mNq@x<1iM>aCQpxms zDxl`M&ic_E!*<_(?L*jk52tDh*OAf})Vvzfl~lhMgp5zG`gHG7$~PM?uF_8`98v0> zw2$YVi%it*(vy2UkCB%)LfgOTI#L-Jc@15%D9Tz~YGS6UA+=xXGp+hwtjPM)tm908r$d@z&d&NlG61H*K?LKxoK|e{2S*qFaJB*5Ng}R zkfTx+qjbmk&S!?HLE0j$!~iq}d~@^*YYElvHtA2KCqBf&aGhYKU^C1Prwe~d7j7w+ z;_{v{qF#`eA}DRGeP=}NUm=T{%pSTMCX1K(*>Az3P#Xs}v5nlKQBqQdvPio-t9CP< zW!8;}iwh4fw)fY}2tdIPLFkhu zoUEk_d8~R%O%eAotZ`wV#fB{kq>)ah96#>{Sa}X20!h}}8{4)auP)@sQ4y2x?TpxL zP>7!zjc*}Iv6y!39HTD&$jC_WJc_*x@oFMBH|+&eEU~HDRU2)U*4+qDmx;0L9qcnS z^Ig7G`oZ1?i2^U}+IkVMX_xEE)62?c@2S?Sx1!R zSh(<@m7VT9b({($ub8u#^XdOBo*`mU?@YXzkl+$>T(qpVt^V9-VjOLm)8ky)!+J5B zsz>=L9^C=X6MU@KvWYIgd@pY(OOK7SIk`8_Embp$6Fj5Vw_8JeOVum5n|rsdP9Hv( z`AP68QU8bTg38OYI&mt4hGvHPdX3TPI27+0Z&nk{yg$S>SKwROnrUjiibCTHuU$db zMbHu7+SsShsu8a*`c>9V5IlolVKYJgZ1~-~$PK)IH@cXU{S82w<6%kZ$Dpnh3W&Y z7X3SgdLe@&de6c&>MtstMpDY%wONPDR#=fr=RHH|pOrro@j4RuD7A)tUzoDr+{#8C zc4Uhfg7_asa$ScXnQ?`XuWm3;YHgkE5~Huf-}WJeKlk z)Uwo(7;xU@hkf}ss^R`PSiu@dD_-gy%qJuilxFS?Gku{&%Lai*so663P@v$y_7?^X zIIBMRqP73x(vrXJ?MD*+Ujm}8pOURLi5*6*mtY9`O-CZTx)XF&ZO5JD z%I{txIRR{2Q2lD5yz}7@1T8Y$=c~fSNRGwMF$+ z2d#05qO|pE2uAByn6mjJb7ge(lPJHqxchiVSIGz6!oBQc5=f}=se-VluA%R1X}tYB zP)y%rqcx@-wneh{kbMoMsT$?}o}7o}`hGU&xoc%%|1U_oG1W_nUJHeZb`cwKsxF<@ zw*_w(j>geY931oTO@hX_sQ*1s&kVwTS~LanuR6NA@Ud!Olh#HZb=<307+JlTj0bDd zeiO{Oxw(|x=>c!qi#}y3N6Td@%1rJp*M9Ht`LFm8<&5^MQ>xYP65drNkjeL89caFR zowG^B$GEZ4di4qcrt0C5xu^q{@Iml;|8Y%**VC=%EAEFo*5)SzBO?2$Sn!Zg9Dgdnq3u(63%d~La&cpB(zzq4N{m;Nb zsi^2=m-e+mv8DWjp@j3JcyeqsJUpy5R4G5q0>-RRD7N83J17RGIi~Daxs28QF?|!- z@^^0=_6UVUb>Rzo4xtZdlR@o)J#)?PvwF>2I^G@-AJ>iy{&KAP=|HAkKo%TDi=9}k zd+)(T6s)a-Guf0b{4R7ig%J}$I7vj@3D7~(W3HzEeCwyjy^uZ1LLT9pa=Ir06$jTs zT{S9Agx)@ihK5GIH2=QDVC&UUSAox9I!_&A=zQeF!g|&+ja*hz;&tq%di!>GH=UHd z2%*B;JQ+7PG0unN@O)kB#$%qDVc;2&;hMp6WXxT3l<$^t?|Y`%`B^1AsopQ}bu?;DPePBK+&lMP3$-o5}jHj}n-mXa46RoghSTY4mx9f_ZcqMy2$@C1#}yaD`^E*+gp0!m`t0Z9{1S-5+dc2>`HJ zrCB6U-HILWwJ`h7bTpN zs&_HHuXKSnN*o>~JiPOp6*kQPR&Nkk0z6gUdd!00=KRC^SZ(cVJeJ2Ua+go9Y*~oR zyVfoF8oKs>i6>1~9ap{c9>305|zR~r6#h;C|4;V?EO7%%jrq!y~=%^{t)X5LA zfVLA66(v_A|2l4^|BJAA9v{D$Uu>+5`gu%MRL8fDIdnDM0f@>#8G`2W^|8PcVQWe# zL4YvAoXDp3LT3PJ27RmTlJcf);XIM>>(MD*l_OQu?veqL-Z(VvHF@@i`M*!r9aB)ti@0gq_hdmy~V z-x!nF|I0+gm}~>KIsxb&{*GHTNVEAfv{LPpj;X>-ew*mhFGn$?sno`EK717rApH`X z1x`^W{R;uU)Dod@QTNfkZG;XbX!M@$@JYSSZw)xNgc1`MW5zInG~xg&rO}^#k1O<8 z{|FJw&#op3T1k7xf#&PfX={AkdPi)diwr8;>X}IZbXQZ)Iqu@3P~U%ZP0zZQyWMPJ zW>c9H7`mTO$s{G*F?&-+t7*;+m9v?c*J=9rX~ORI>gu`Wkp~GqMdh0N5h4{?%05$5 z51?TLWK5N?TfJA!$2R9p_*WF-U|f@sh$ZoXEweBignSs2n195yHB6lDURW~*;s{6_ zQmGmTmRH!QG*w^m=T6nGprdBzHzjWMcFfsBcZVkxBc8bn-_40_DU5681D!FZ>6?#O zK(p-a9fn+ZM0lDWDO*`rZNHPdyExQNjkQUs2exR2OYMb#f!TlFjjJMH>;OFw7E*6H zF(&a{6D0#i46%}!t1j<#GXD4ee;%AK+Uvn#xi^!qB(W*sH$o<&{A1vU?3@19I=UAf zr2Lm^YHMk4y-AW|wR!N76ZWUVOH0IN!qznV{jzR%CHOU=u?m55M4O(I-!H!D85m&k zf=CQ0;N-l5!f=ran4E)uGazIX3UHB%0at73TQk=#y{UKFSM|BvpN$v$9A zm>12C&PnzP3C4drK|;)j-4P@@G47{Dz-)0wgL!gE2ya}!0IUKk!Su}6uXrx{byO;I z$ooosr|eP^Xr=G=L)!NC{1t7OHQI*&6XX&+*jOF8i#4n-GE!;Nyt6WbupVx`DnGly z_Hg8B%5>IyQt5-pAp&FOV2we)@ zboS;HNvri0BWh-5X4I!4qE;^XSH9DkMzH=uAWzmRN{?IlTM0FAV1Q=hiu=(2e_#o?eI1!{B6`{=Po-dk=yK zIrQZLc)-DcN8CC?=|WtRLN|l*u{6H6Z0xkL>-c}h-+JxuJo|$J9;zuBk!|bYKmox@ zL!)WKx53ZVNk|CnvQ97gu=V1UyWynXvk3xB0HQ~G-M6n1Z(?&st8(SBJGnkg+m1H= zBIwTgy?72f!Sf1+ZHL!(zx{>n=Cf{ENo5m9rv$pPb9xxct_h!&ai%c3zaE5@UR6xn zonN;DQ#i@O0iP$RvH~ueot+JFW@XjQGid|6UO5JQ_Vn03T{0_m`5aBYA-RGul^nnQ zFsjqTv=ia+!#Vf8LGR;1(M}*6dvJUKNH5eqI8uc{A?RqZQK*B`X_WO1E68N<4);@q zJl;FLeS%VAeId&oAKpugA@Bp^rOE|BkN_3r0g&mhY4&}S^2XP>2%Ci15 zO}9D#2>kDlmxpVVlSi$Oo5F7Yl)_3Z8-q#$U8wKgO?f#(&>Ak0w2%B8QMZ1FUlR?r z91!d$*AcM2sG-1v*pLyk;0VGNKv7ug6F(Ao5ab5iAMysV|9fqRz8lHG(}Sul_o~1q zFOB3`eqLUP)u>b&0h~QspxLlCV1^2vQBaCTP$1jz*N2eq;BbA|ZU%TG3_hJ;?F8Y6 z$m<#jI$pQip|g`VT3uYQW`nIjVaoFVntOPOK1XBC8fAu-)QjI4mq%M>ovUo8umRa? zO2)Cw*pB)(+g+65;TI5oWM)Xe)9^w3z4h#z^@Dz*$ZgFVZ-aT;fo(v;X8^WwS@H+0 z0zBs-zA?rS%^Y?aqzU-1@4h&&opq63`xZojCEoX_*COy`XDyYdj$NIl{+4b{2(K~N zknEo2j>D>6IRlq^`S5_D?H*EHOAkn*`wmzgS~HP9WHivLMXNu5`!-jiT+rrySa2F7 zS+hH-+0Fw0SRZ6{(4``GxcCbG4}f7nHW`@`o0oq8*978ZyB_J^LGPsF$M}h>s@1%0 z`B9L^3tE^x1)1S(AqVt{Hj*E_{^LHm1h0D_y^m3MX`nen5$*t>EXGeSD8RYr{+`w2 z5L!13*8!P;s04Nn8ayt$3)~zW96j5v@q2qM57-b5V(YyF{4cLImGQ}b7i=Rx7s*&O zh;uXk0(GQPZ7!^xPTVR@Rm$>(0m_jT48jD$Rr{KjXgAt+QFw&~}YeR#}Bd#8QVXoc$;sy}M5E`s}|t1ET)z&O`-BjQ6J zf1AK{L4)gAGWQsz?peQ!qO61d;SZQMv<}`7;0A^b!e5=~&1C$wiM<;BhMHmB7oE11 zO!IP+h@8R$@;CB95ZGI`=LrgWIyL4T5u-BLTBZ+l@N)DM*Um3)k9((Hnt0%| zvC>25XU!XUP+ZDO5O~2AYeHFlp!d9p-Lzn?=gA^Yk*qk**7`yB3CH{{=|5D#MgNx* zUdBX2$&|lzzMC~?<8+-lRl0U}-(zuc*=Hpe4{$apOSsin`81eVICA;SY0%+%hUd>& zp}gZ-V?f&lL&&!yD~q{!tgO+gzbzf3kOMYLc|Y7A{JX2zV{a-LKG&zp2``!t5fJu= z(yuY0&LEUKwY85R{1+XsOfuj0|7w~2o=y1`SVvGT_rzu8r)u1@_O6UcjcXKw;ZSHS z3$US*fIG5OdBga>ECAJq2rYt8^2wf9`AZ}jTo1|Z_)m<`o2jfJB>~_WZmj zb+E{Mw5TkdMA8N4z!boqJrtmtQ2+uN-8Fibq7ANkb1i=ar(aJys~4gmL3o64;0?R$ zB`)&d0aGJ0Kr=16aV$%2gTABX5kfS1n0>bU!FLeL2R* z)j-Qcolonp#c}_S5WhfbltuNgUwh1C`0aE+`)sG0$e>{OL(8z-ewDCG6^`_b_)0tw zAc!lz4agOa`(-KPbGnIh51x;xSvB@JlKSvLi1k{S+*ye#qdps&%nS?=M3AnUu)(IjNc> zDn#*rh1Dkb^XE?}yKHI|D=-h1pMQncW9Cs)``kYqFJHwLQ2YMpTRCU}pXYqnaBv^1 zzXOtxB=y8^_{se20NGoadogh#L9IrOfVUMq#(@6=!ut60V?rgB-j6<0*y^9URqI~4K7D%CwiAAM%G|RNJI@W31#<5^u zqduV?jYy3rnNDg7#uc}JN)w$PzdSBj&q$Phd#t#Uyc?qS#(!0j?wx^7R#f3^4so)$ z`_plqZ_6%0a8fbqdq z?8|aHyQQnf2HvCFj~WjXL7&X>zK;9wUA#*A*PkH^1Fr!bV4D7DQw+Sev%+PfVEk&* zT}WTRp9+Kkhps!)V-5D>um621`G`G7L=+gpmJM&Yg0k5~)Z`@1Mb}_$l~7y0NDz1c z%VnA0(-;bMdvWIl;VKqX$Sah5h0jXRufYa?w%2`Otgs5eQfR8-^r#_gUIDNEXtPt4 z4{wP=8&~HdsBkd7h_p?u2Y16irb68Sp|NY^b|%&Tk(=dkAD_7s7uKS$=V;2-$m4(k zf{Sr}M(=7&y+U-e3qPa?N>B_ek80eGYl-ksAY_MM&5TV=jcU6SX)ZB<3Cr?f35Qe> z$WL=gx4voY(pemWW5CXJm5gB!-p{>LnjqWTpBjbnyF|^pYF|;&(Y2->b)-!mt~Fdl zNx1#Nv^kBggrNHjJx(Dm^qAiZ16$m8VC8$zE=>y}GZJN;FTDmG4((xMGOzMOYr37~ z5oRehV3K!?Nr2-+09KG14?5DkA7|98E&ITqJ58Do%?|EYT*5O>wQ)2(A!4G98^3lzSv)l}bBTmcr)1V|h3 zq1JaPZ&2@NQ z$`p>HmAk>E03T+;EVG$Dl#Y^-&$k|lCMO)>kBuEKt}&=|97dnffHS9yJrwZUIiD8> z7OkP=eeeMPe@$W*T}!2Um=6!w98m5i1T-q4PyiS5skw=KdeSj`K3)DE%SNKnJtMI; zu68x)3_b$*uRZP>*^Bqyr?9gx2g1KrHU`}vwy?dg>IG5;Xps?f3qt^U4PC z1F08C0j-!lCJ56gWPt&_O^?SCfK~8vLl0d+joNa8J9O>J7vAo<^ax?X@hcNAo8JDi zY>PoCvS8_KzOmTL{O8Y~kfjHO+U%WFy*h>P7iV#2X|dbwWR;3|%-Vi8g*pR}K|U3r z!@PnZG6T)?`_XX|HsgBzvuZs!rj*YZAPtZS?En~syg_E#t|xK#zUZRvL^)eSw7dTx zUD@XP?tc@{SGzSY2(q#^G|zS3;}dken*XA`=FAKYOHS8+_UBWwdP{xX1)T z==>Pdw>_=~xTC?h3?$+i2I>9}#5Z9p@(5OZ4i=*cr+J5Na8I|K%ukF?C$(&Bh7>UZKQDi zQ*ubqfTdz-zNks!WOdOmtvfAPeE<}aOBn#o(K4f;Vv&>fg5L?)Ga%9vaUEbW4R`$2 z)s^$UX~$w>;*5Y&HoUp;RYxm^8AnM_=v{UHd@QdHxJxnA9R5tYhiuK8yV;qwXsDhi zmTf~r340#vp4mV@+wDE&C8@`42;)meRtzie16`Cn+zE+(ed}AEkhZdiG=HjW2Pt

uiqDTq7*+cfc^^W;M@Y}3&<@%Dfzicm-YF=XTWG?&w`tQC zojUq?jz<*o2uWt#&fbQ&D`;DgIQ8#m-eUa6Idy`r(9c~O1*bi@(sC9HI-J~^r#_`^ z7H5PIB-3msev<-hMYhZ7*v z9_eCW1e0Xp5cNqiFT|rGs}ZO_^Ok(b+xqdxS=gI-a4AcR<)*;uXJ(txx#_IXB?GZ&AZW^nJ?y)=mm=%T~kOPei$zk6)#o9rjm8ZE77w;D|x&uV0E` zhs_HL3EkL%*jT?yHuCqb7wb6bY6gZ}anWgLf?1IXx}4o*NzrHNDV`3CDxt=FlII)+ z<_i6BstWXMTptw(M)ZNjWpnIBJlR#ld*UE?`*+bxz?Y{h3Jf314%8l0`kxuad}dga zLEj?vq4!$_JWWz}lOdK`U8sw-j%ULKWKf9IE($7;Ubgy>G-k5|$fck;A6 zDtsLZo$!Z)%iJiTTaUzCZDRetOZFn30N}VO&-b|2O*dBb^@0lHtB*E4!F(Ior03_} zlEU9M$Y6&&4R;K#^Un`zwmQV1v-f*SgLH$OFTJv4W0Se3cx3fp&omayE~`3_s^r0r z-4uycualOAsBTW^A2z0f1~D&Ui}g@Rj*&=)$ zvv;eyb^XrAmMngE*P58VS?>{}GYRDdr|IuZS-xY7Ei$&tZ#s-nl#lFg;X*U7pSKG= zgcKC5ynbML4DpHJqM%%Lee&Y#(q%HPwzhgFar@sqCmv}iga4uU4=}vvR$a!D$LB5p zMqnXnnJxP3!adl0trEsgUVV!6dHIx7Ocj`FQFN$Hvalq%^@k@n)=m;3Ki{yOKc{p} zz@4ThUUhI&FS}da-@!+S&(t(Im6r&y{|=kQ&bqEPu`$^omS)5!5qeQ4d54kk&W?L> z)<{25Cm$IXQ$gEDfLTz1l02i;o_Z>*yFX&&UPUpWh)z9g%Z;g%DbGyZ7Q3;=$uJV)00 z)3awwy;q{nXEm;ML17P5*#{edR(9}h^XT8f5eaQ%me>3vCybACX-9`b4)S#O>|9U= zCr@pnf$C;!xUv9>ag9HYCF9GdEE0;`m-@_A1s-2km4n>gpTa9am#BHDcdgZV_&4|7 zIJd>$srVgxb}z`U$%@e(=rDuCH+rYdUeuc%Zbt_6`ZkQrOq2iW);-%mhsUA6_r^3^ zQPm8f%_~S4DWmE7gtP_6*&`R;upwIAsjA68Z4tK>52m}%p)15d5_YC|f>q%n=}W4V zl^utDhuZZ{UR4o7K_ZxLdDW>ljBbF^ySc&q2UAZ=eFr=wVs9nasWU0X9f=tGJJHx| zi&$=~T|~@7L8UrdsHqz<;H&aw>_>J|RnU@_>m?nk;E)OFvfs$Tg`>rd44lgX|N$Lx)*9rA} z{baqoJ#a3-alT(i-g~bp&9;(C6UzK^#37r!cLp)Kl`d6EGu&%oYpU%WL@t=W>YSbh zUq{?liv|2|pGpF$?#?@xajbWA+tD~8tG+&K-l4F5@5i$1 zzrV~Ro29MacJ+y97M^MgvvaIkPi!O^f?kX7hY4fjfmz>uo65{`wl6Q|bAuZnMTbHt zn}ypM+3#&q@=Eo)d}=|^j<{WLe>w8T31&&pSC6myXkd0$Cdx2)c&}CmkWpD+%41>v zj#+HCew++^As>KSW-#^t7M~R{qD^N(`@(}!p5-d({6KI-7p zZCy|g#73m51mw=kzfyRHXlazv8ezjv)+!j+xi%~M4#Dm9m+j5DlVP&$|?8YuTZ){?gH$=?`lFC zvN>`qSE@!0P|$#0DuF(!??Y_O_~v%^l3kb~wfpL$weQ~e5}*$8WjLmzp8>19ysZmG z(D>`Si7HKLE%eo^9Mx&DJCoVX!vd>YpP~9|9tQXvoSGQXR;>=zOuX_#sBBNvrOaRN z6>W^|HGi{Zv6QT!*Rs}Dx zQ5qZw0=|Wm9_p1J<$}ZAOgdE=g@vR9Eh~LHNq%T_)}<%X*V8)iqjL*fThBJGnj4D& zuYgXKOUj%<=7M0%iL+fwly2m_08t?VAJ4L~!gH9Dz`pBq1&T{^n;%zR|IVws4(kvy{{=jDYe0Qwdg&L4>bmazBivADE^!O7)6Lj8eHU-_xg-f(QEGkj(V zkwbIEJ-KZLg(DHwIvn=5-PU%UnT41$jV)!;(_6E$9tA^&7gHlAz9)R=cE5}MPS3yy zN_pF6!p0{+aAh8Z8$gm^MCbUW#h&7Z#dm8zNw%-9=CROf62(PnkpEsji`6>XDMbHf zn+;ZAdgeUELbdi2rn|!NorVA>#*|CuoX<5jeUum9^s)u0ZSIm|9o-8wm5uF9KSRDj zjP}ehY42Yu|=1lr8W3W){**ZR>8hZOO*l^{Ry--WybHzUadKYy@ z!WKtA|CSeu{umouyDhx-gLFT0mx^|cZ0rYz)5!AubZof&UyocA-7#k?qpX+$oC8CD zLVx$C=K9-4uLrtjLQQ(j4PEO-{DK`ejazOSfb;vHQk~CKluPQn*nGT4oG_`hHyK36 zwNIJ6cMrtQge-ctgo0>|tA%Q-BHA{BQWIg`1UYgN^ZRgC7l3a_F2FP;Ga%J$|5khIK*Q&{i zS6ta1@sMyq?f@(fF@$nK8V(iOTe0M<-d-PR@wbR_7m)qjK!n8(WV<}RF8M$xta%nf z9Lb?1Uk&A~`Kyt->09)EPp;{2^POPUPZ)aZjfZFG_8SK2aewKq8mfv>eaX2U63cvY)$Q;V!q;iLO|d~79g(lVP{h(+28k_n{b^Cap9jl%o`N_ zTe?JFoJwh2X$-Pj5_Ld9->M<)>wzb8@{nh59Z)(8`M~nLylvR>OA#mcyS2)$xyo*a zt>j^J=(YK;-{S520vx^nwg|50$L?l~mI-EisCGz?b@GXJLFsJw4G4hHVCS{iy-x46 zk|W$d>UaWeGMe-rG&D^{8j5*u7keix#k>OYuBfo7jpqaucInXAgVHEC)wo59JmL;o zg}t(TMjeXDn=G4c3Xf1AcITv>wVj)v_;W?@3jP9Y$gH7;a)WsRz!LvvYm}b*B7f!f zQu!7*oC;KDv3ohWsV@+pgmjh9M`F*BhK!74{r>O->MAw+-MO^R_9JPso>UUCN(_e$F5COZ#}7R%*Zx_(lY7g{B?kdMi_GD zD^zh%#Pj=q;1lt9Aw^zr$u40H?D30TfMVF7MpQ{;OV*W0&#vB(zQLTyGRi3-noN^?bwRw% z)Jw}>deN;)60fDpOd=SbM!lOha$pU59V40^ckY^bL~s8KC^J}FU@Ed@FKsp)`{VNX z0f0mjtG219qQ^Uy|L!i5lUTO10GH;Y^`^R<3ctO}iiJoN-#M0~PD`iB z%ayR^scq(>jlPjkVw1h#zU%|8 zzc%@+s_JrJ7SsyrY(MDFLLh}2H@m4g3E%hv{vljKB|yyr9S2pQm2Fi&`2p_}?GfZl zm3E2(^J%fZ#C2YLcfm}Oqr}#9EA8tyy~78D@qv@nH4y{mp%~(>!p1_Nv%IWEoUhXgrJoJnaMZa<2GGhW&H4o?V=x= zr@FkWlwdZGFX6gF=W+|B^FpKoq-w4`Ldi&bHAn?BFZ1D z4T4wA84eO!0kz#~)1MzD05@D7=Uz~*vs$KRplK7dciEI1m`#(Z?F4E>fvKr07}$qU zzR=!H8A!cbn!$8CR5LUHQa(hO`yYMgb&+KiHE%Q9fQvRabrKmdIt3IG z-@C6+>effT4lZ*@c!qMt!0E~z$v{6;XeW&v$~L^Fn5504n|E8KKb0_y{GKm{H69eJ z)}JpufTNG2cwx?^?*5xp9!Nufez;VX);_smqUu|@E%Q@Qp@Mgl0Yx#<)k>4r1*5rv zA-@S^yXyMh8*>eO6PY(@p_(EIV3hpZ%=CxUoA5liao8=}K#n>W2XA0BA_=;ljBf3g^EpxlQ~w4@aN_V##OV3`ul0)Mv9Ysdl$`K)$H z&w|OqkM?B{5K*>1iJvcn?#IvryfQ4^LbnB^fQXo=)cIZ1Zs4M;Fd*lCRWclZNl9!a z2xT&MDfco=qkGOA{miGchRQn zBg`OX-t^13=Nx%gN>MJ_1*sVWB0JqhyL?1{J(uqJ*|0eZmX89yJWx*^K=_9MIKU8> zM2@g?4a@(~Z>&L^83kOR8eDh_3}BzN1_a|LtFa?E&GKs9q`oKS9T#jwGyRut3o8=N zB>1nG9cu5N>vNglR{&BywLIt+>{z$2-GwJ~bgxGM?Q<^R4*umY;J;1t?_Ds^7&M?h z`WYjb(Zz9+$9bIqUuMtK&1;e!Y!HB)XzQAM2Zb|qkVrB^Fj%s=K1Zmj$(8sHr-cJ2 zn^HS3~Y&+zZ?-Y;s5Sz7;EW)xzC0vnJuyUXiW7g!6be=wWT0_eqyl*zxXz}-#0D#2k)hhui1n@G#-b>3(kX~tmjTbdS@KkA7KdP)oW9r7^TWlcYJAUND&M3FH^0G*blJ`T2$??Buf-JGX;BR=A z&!H_iq`)uJ-Rpo$vWqArJ-xBM5%z-o$U((3rmR^{^rj=hVXpAd&JjIYc(xtjZ5!I+xtR&mJ$&SrP9Y~3MK{nAfDSy-9l}+}2x30AnO7GcfE|;A@^G1a4 z2AvBjWj8^s$qD}TDic3gw=TtXGHA>)MC)k<{CjL;Un? zswZtvT}c}N4SV`L0l*EU(rHPiI$#d@$ED&{O^c*z1`98;FkY5G&D}o)&UK}Cd=RuD zV&#H&xDH2Pg(sx~U|te=l;|+04Kdrwj}dKpGoq2?&A*1{=CxD_s9?V@mH@*H$b2B| zas<3GamGlL;&3VpMliK&2zDaw(9&NZKU4EtV^Hc;#;IQDWs~5lp<}Q79x8E#V|s_Q zT1sQ?*WxC@e-Yc(+P5uv&1MV&kj?X0$q z&`ursIPwW7lGg((!SlqBnUN@v8~}K|q3Gv!3C2rtBAX!bNvmI@4bbmDFp^=PGB0&l zxg;wc{$Z*bwA&KLp3xojg5xq;u0*;McwvofMRmNO)dnXrECgFSWsa`))XKtorpg5! zxFt0$bT)xtA}52lGJ<{+uSDOVmtko1UHcTlHfZ)KJl>DWI*pq z3BA&_>Eur@Z;wUbK7o1OC=|VTf4u@^n+QeLzjCacG3uht3o{ow52r}TX|#+PkL*B} zX$=o`&IE!4W&+wn?vJ7TC{D9x?=8nNaFp7L645etE{qDHEof3-n`C}o(ZUHsx>6l3 z$rq0SCxg8}$`fQw=_~4l&H>J)w*kPb#oHi7ZebG00pZS!MrC;TadDykkJ)5?P;tq03G&cV{nA~?z7;5*vU<+%8 zM$JWGMN_QmA|${)eC77(qbjTYn>N7V*n9m1hj!FRR&RelBNXltBAt_B@vX{k9$4B? zj0$vdWwh+s)r3m7xxN3^`8I3gn6yih0R6n7^Q*8JDqq*rn_q{owC5?!Do^iR|GFFf zPP?ridhA^%bLIh=DWnE0l0t_T%v}FDJlC#1IEe))OhRezv(H%|$v~{{LCk_8O_ZW7 z2f4L0*^BJJCM1zy;!(Q)-z>8uVIfV&-2H zq$PbvM!0MUgZxl)NkEk~non92BfR&bdfX;<&)%*I(wvV9fKrvzufSdFO3vsHQdMa~ z;D&xf+OR)<9tP2i;s)!1Ukhthq~_LBl^eDs7NBLo%I6GHLZ<;r2`G8Sq?l@+frKkK zl~w$qyRyA!zv9gE%g|s2!HMRwu;EB?vw&*R0iK`X7FCqqUy3(4QpwGCS$5;?(?X)P> z)wltW_OowKlV^H)qDo?C`nH??V3>jr482D072A0L`DNT=?y2Q6iHqkzUBA$GouEhR zdo~|8AOcM+;62^YrrWW@zusVUJFi9cN6B-hW*1BD3!l{f%w1Ah;sib0b2@wZP@!3f za>^X{|Hkj{3x!+L4NTf%Z<#H85z<1Xbj{M#$xZ2-AqYi}zx+nxIb2>(7xA!pXYkN- z=&~X?oPcS2LyawGrTDtIb%L7sM4dd8y`H!zL)g;Q>TXS3x(wj`_jt=;HU^@FQi!2V zYAVpIotOA%60OE}n$!Fzw0eL_MdA1m=g7lTFuc#c;zIThK=y#a$A(ep?1&XYa_NgC zzc^((U~><1oL9?#!q^ddmGuMRJ4A?(C77KkaFW0bR?tM`ju@&!sEFWy10;1}=}S+o zQ(8@+T7o3i1}*Dz+MltbQtK81<+YfhyvBCzpy zSil5WNfCkhqJXNP2B_c?1q9^W8YlGPK5TmM=D#eQ9T$-nuXx{n=W(t<-PeCn7=rX6 zQka@Id=nLJfS>`!(?Za}R?9V>pN44C{Shw(%NFfX=AcA;3xq@S4<7`D*(Bo&UqV(I zE$UXkr)zc#Xk3#44pu|Odj8kmn=92EB_0#yxaocR|K*I4KPv((%GX^XIQ;HJg$48o zlnlxYx3y?AnCMfXjtiPZ-+2Lg#jL!L1Pgk?9C{gqz8zY$Q)*6vXHzGygF>?e(EU#+cLyxOryKbC$I03C(v~%bP0v{vg{UUPN-lbN z>nivUul1>2ee^{26nrN|kaV@+Qa#^*Gzg?1U1z#hLjy{{!AR*WQxJoRXeyh)B~`9F z3FdQu^sF2^{y@T>i3zY=&76HhE)yUDN0n$eD}9}Nu?T6njvHHSk)xw*#!TzV30VPJ zdTE`oTLsa&d81IxDFo*g>0%`BRqcJRWoP)v^P#BrQdKC$KDA^m60RRd;w1FgrLPvU z$bcLR(k|7DKn*&b@z)UlgzT@6;L+9>^g3yc=kWwS-8EN;ZP}&Mh1MFp`BReVn_t@6 zFicBZ4u^W(SMF4dZ@Q&-rcpNlDx`>kb{&H!)^0j395NBVl>-D!Fd$s#8@PXaH4uly zUCf%dwThV6lN$`QvNuSHS6~6Q>={M-a>ju=FwyXc)NLKCdcWR>2_gPSo+4-jXDG90 zgw!UV6?ZN&c$!YNmtUA-N$q!yE@1^zenbW{XF6K4}< z$Rl9%LWz)A%IIp7ji;dKD*##9&d;jA4=L=}@AoOc+b#kxcAF08-NJcq$7+zb_FfHZ zzEZ@a&+~Tzwv2$)H&dK?eV`Gm80Bp(>SW!u8QG~TUYl?9u8eaksEWztSiX9ahref3 zx}b1@mKc=>`Ve0(?Mvu<1x;~O*v39sFvf{y26vZ3L?N^^@D3*u)V+e`ITvL_c5UHk zND?-N^uD%+g`xK)3}GfD>9$&j+9UoIDNk-d(+?<6lPLMyxNhizKrbBDwuq>1g2e2_ zZCw%tI+PDR9EcbY1!AA>5qq5|FU2a zsyidXkhP5mfviFG_w&>En--MK)*T$-za;;o1sMKW)cG>rGLpR70ryKYYEVStdZ_n1 zL;7^!Plae;>nul~2d<2=S)$A^MQhZq)37mbSHYTSZeXB8)Mrp4OJ@r53cu&P zm6s>_(mRhwQ*fMqy=0zelK{JfiUhp7FA#%+LP22BazZHLfW%bG5Bq%<1YM{AH#@tp zDyX`8DzMN~B6iD7{}&Uldt(zsQC6JflmHurx=Snc3;t zQUAnV$m=UiQ$0P;uV#u*?zVt^?T@RDd}ztC@OYdNXPZ+M!}qR@TjD%$l4m+fJoMr%F;Z+^FHJcJ&{&do0n z${}*9R|XyM2#4!XteV3Ct)uq$nQXYCbWrg@ZU^ZpG&j_Ta)w@kFmFkrbt)o}vJAqB z2eSxDs@{O6>y%J%<(MmKV_n}D$BmS70M@+_&PYT7&3u3V$c!W`n$i2 z&m(CH@C#<$P4Hd|TAN_nFBvU@U&A~p zvd=EU_(-44m%ZWCY1YqLA8Oy0u)t`cVrrb*>pKo%3WGDhphSxxcrq z4tpTrkq{uD5OXSAJSTINpcvL-%g64l_BU(B)2v8@^HERJ&iW@kGkXK`dxd^oLjmoD zK=S}cewX>Tr!XTEH0Nlxgn30N{+5oBrdrg zH`S5gmyn68^)s|qq?^0ir~FWivvBab#|48>zU%7lt?TR7wIi;;E9A)}4mxZdwEk4u zkDov6D)42{3JNW`Vb$G#dj}>vHEMTJaagAT z{j<23Jl5v=;t{K}8P77?({iVNTUb#V1Uw{In3FVjIdF)#Gw!T5YdLCU))-w) z=uoMoChm-WmTjxXaB5?tTC!%xrx`%;D-5=)5_$ebm zS4Vl*K|U8`Q!B4?eXAvb+0Z=7DJbKfu2n4flcV3Q)086|+B6~iy8d2!_*l7Mkoq_% zC{!n|mrzRsWo7BjJmGpnMCcEQIe&Ty47qVv zCDYv``Uu%y9VEA(Zg(+!j|s?jePkJLYHdo;WIq!=zkBrn&fS<-mza|4_bu_goCS%+*g_`vf-cjOzXE>TH+T@rV`B$J}HBAleD* zkIKw1DzAKhd~q}wc9d2^l-coQEVHf02q`A9j4u7Q`Xo_Y911<15{bx`X(mnES8}DXH?MlP zKI-ocQ%&DbM#&TiY8K-G*TJ8f8QT^T%~`Zo#4^n02^MJlOFoEi(SAzr0^fbA9ELWd zWO2^o6<@~W2A0O5n2!_DC!x#^wkWmg;|G6$!OTsENrPZF-S*uf`(+>*8sl%SA3glb z!$G(GxImY&8PIt9sjS;xBHlypg4OBU`)#}8lov(3cCgNBJA=0N(n4p4!-QvIcZjM>X z=ie?KPOogTGj&Rf3r`!uac_$}^Ldn?1W%s)U&Q$i2HXl}2MC;w0+3s062hl9i#eVO zXyq9Gc2{!NE&kf7tdwJ-Z?|7`i?1W{nL-tqrRz6CS~ygCq-$3I>=G_PqI> zJ*|Lli`3#`{l<4jZhs`yu6`Q)B=uI!GBxWYITnLgm7shJK_GtYCa32|OAzoF==V8+ ziv6*~-%BTXFd5R(qlV#I-<;4sV}UPg1F_FPj%!Hf%x(Dh43xM{+bx zP089wH3rzm*BcI_6gH3K{l`Xeaa9(m^afug$W`-!)Lck1@2CLgMeU{UDQX)pMd;N%q~~CcMtGsTLfr- z8nD-!eX`dQFy0N#GT1P5{PL>>HKDT__W6bvBXtMXaUTI^W+JE*lm_m72~KE?0vM=|jE-SJ%0X zq(3*&>jc^(lI?c9y>1)L@t1M}G9rr7w&AZ8*E2eK-bLU-rp{tdfd10jP!A$!+J4JF z#uFa{Z3!)vq(CErC71=UV^>PJ=;u_xrUP%!%3#rqofUTyLARly zNmFikVDsq@{{w#H3Mks>!Xcu)zZT@E@qeGbtb4Hq<09Y^F7?E}UeA*YueVgcWVZF@MEoL?x1 z+kP1m@O_rDbepFa}g^ zusM@fguOT;4s_7!*DeTt8=xTfk9j;KN~YkVTm86|kU8+x6AG=4C={ZXbJV)U5v*IqlClC6?l z|Hxes?7qPj9|mUK=lKO_GQ#)x2|kAYJ21RCkmW4RpZZQ1uLcxCEmBR;Hm$XpV#;6f zY@NYRCHFsy92t3IV-r&dT;bje?`FK(FrO+%`_uW|uK|}|%yQD1-#CE6GFPj|2Hm3o z4(|-!+S_ug#)8-a^bF7&0_NM!z2D}7fu-A12z%&eA=s%kRYtk_^`f=?=$BS;x=c5w zTLQVN&@$QH(1KP09I>FjQ@Or9Aa}?Dz|02!BnW@xvD1&s_bQ+l5=?#;ttIG=6*EWb za`dg`bjJBhTLv}?5Q`Q$RBK@dckTCXO|`t*7JdR!iO~xKv(r%mMjdg=#%xdIy?Yn1H4TWc&4hQS~0+RQLb?xUH;+kdcv4 zX4!j(LR4fP30WaKdu2o@lI$6>_g-;x60*uMlWgLc9rO4-PoL}izpnp%b=}u>-&f~& zzu&Ld>-l`F=i9r~ccYOp0|Z!Bh8uu`nn!HU&Z@m6+8y%_+s4}^8>ViQUwGL0*{JG6 zLiNMp(a>o2o1c<3t8QLzc5|lZwwBn`#!GnTLz}0j7sEv!Ep$5s?`pLBMK0Uayrg-K z)y0DkAFXx5KQ2D*7-9QWbjnU%WZU+guUJEG1VhLu;+UYXcK?Qf+#vc88)@4*nLgGZ z$ad=9G9+i8K;VkqXg?i%rXm_2cVC11fd=pS!7#2*3!5G;VY}XF1#HCG71D^Xu$&ld z!Idik^`X1f+;rDI|DxdJT zE24ml?c;m-D-u!hK~=d8*w>#JZup!EMkm`{ul4a*B*u2Ua8X{Yp+Csb(!2QLtc*~f zHS2|;VPEB6g?(9uUjkQ?X3QIAH~eg`Cj2CC6>8q~8Y?^ub$PJ-vfTJ|xY76k98Tkjp2y}K8y(k?E@$ewfj z_)JYO9vxz+)f2joW>xb(r$<*F`thU28Zj1mHpf#lh2DlyZ%Vu^`1inWLwy}rUi@|5 zI|ShtS;MjySaijxE^Fq#Q7|kNs-zW_Bs?%6ta@fh3fDq2<2Y7Z@+hWz@nd-3UCPsY za_{cl`C^?3H*$d`f7mwT-rro_^Mz}8LA$a`?s9#8g%LAi?xhHPVXC)N@9Q`;ry5$m zbJt$qEkD0CyU<;#6w~b_k6QJPw=!235lHx{Vj7$4cRwmmGmQP*7i$d9yjig=Hl=UV z7b`24;{5*TkOLNzGo^=`lGC_&N7L?;=o#nqrmo36@WchZn!E#xVGv~NdnBtF|cEsj?_LWU0 zFJ_#J)*j!Q@INY&zW!AI2Y!ZMX0Tn#(Ef0z*w9K-WXJlXZ4)ihohRDZe|oM{FfaFw z(C;lIr`G6y&H)$!EzZ;Nw&)W5Az=mX$ET-tT?_3+0hiCvVNrnx$ZgBIIxfG%mg$9d zE=TwrXVQ#%`K$*et*$5CyV$R97A4*NUxs#dY7KwBfs`OSBpi%wSxm4L+{^FiQPXiY zXv_Rloi<;aTSO)NJzSWAu%qDs>C~^QcX1`)&lHJJneui;#a?6gs|UQ_u+jX+Xz9C| z>VKr|kxzE4e0MR!0c3S}$GY5lbdGV=DD)8-!DUm1I_(GVUT)l^tj#WWlnzrDP@yKW z8u5kIl6tSGs;WxIp@8o=b-#f+CipIOMp+zZV_XG!HzxkhCTF&+>S12Z^O-9Tn@68S zlF-Z;ZRj{yl*k?OhAFq%%FtT~WSFQ)SPA9u{%$`QWb+QF=anIg?=_oB3DfeqkRtw{ zBCFzPxX5f`&H-K(3ljHM@%gg@h1qW{Liu*T7nUvej?G%690d6}$!XJQ@>L}N?O6X& z?b{*3+O+#9eK;i#?>V$Bt1d5B6)-1B6RW^LdGR=^@?*jHT~@=x`+MiZ2s%J z@Q`rZk#v9q)dOmxv`jG@EOudezPIwwKV!D>u2Jm#X)~3mW902!zt!!+Rqo3v;;P#f zL5_CJ&fl2sIu5?#jpALnz>R*z8s2vicZTU0bCld8jJj8n_YhVIW&sR0Wh&{%7R>2U z85EcE6>n3&)F2S$pD(K~{YW07HEOC^w9LJ_-#jErnd~0kz3$G_FSI%SUzk&qymI+$ zwZKFCptA!uY;)qKLgKXAiKU-~1t%T~eTBqk$e&)#^+47P^{C2>GpCt-4Uh8fa+hRH zXK7#RkMoue4xTxIKCWh{{jhb8b;Av5BSVTV#lt+J$FdyqWQOEak|BE=Y*k1ROc{ILJtk7$TWAC%6^s)O2U7i-)>I$sQ zv6;-__+1BIw@ILefl<`@4O!N{?>lDZbW6(YxnWVo|@*80}d=Y{oVr{%)vz-Q>5c-x9W)?1-A^v**uYAH=wnrcrFJ zt8p`;c%-h>t@7$Qf;;Mqy^XGQ6iMs+`x^P?S89f6Y zVjJH=Cgp& zZg=%wMRSTJ}X$gAD_R5@>UJHk}D)ECX6T#x3i9l4*N|t zY}WV*)8^|+m3|g}tKnu-=4V0YHPBS;-g2>UwN*fx&?61qqAT&Gwz|Q*OJZ7+8yL)i_b2p zW8-tT;(KSpPz81>D9p?as{VHVsyN#7GL%#_}A-`=qt ztkiJ2sNAN#z~tn^BI%Cp=@0+4A3I}BP6p3L&o1J+mg;KZ>xZrk$3j&i9<)&Yx-Vb} zA74&Wa>q2rB!6}FTXl0d%o9yMOMN7LW43ovpOcd*y6N-lAEq4+azSNr+-_fY@qN#> z;^uwg-^v>wP~HC_gx5mIo4>4F5c;6hLn7a%9#ic{#~Rb zYuVi2mcF}=RV20!cRP~?`@~cd@-{T(?m^crMR-sYYslZpb~O&=jne&rALX{&T-*}3 zRh^Mr-HR;_=ow>RPParf6dy_$Kq*Ov-%lkol*Z(?%J}G0N zx!*MkI89@SlK8&OtJz#n>G_S#P{}v6=+bhywovW-UIUfqdzMSO*Be*Woi&Bk0CL^xaH_={mOPUJc$?$+4>)F9>W9%9{M9r~~h`DQqGu@#-GpSBMjUxf#0& z&(KGnbX*C|Zw1(Er3Wv358l|G+UP?cOSETt7Q`Uh9c13}og=vTRfV2>y_1yi^rrL?UUr$xOxHM6^>*diz{Mwl%evn1LzRasPR1Zwb+;Gnm=Z@P`@N9@X_iMRzOoro%r7Pmhr%rwd0AP7 zp6&jss1Sb7f3CCt@T(yI7rWFA9rDG5`0`2$8Kqcrlsa!F%e~lkSXQVTYj!c+a{v`; zDgkzhYOCBxj{1{wjXps|;6nxd(bLRD-7jn<8&}Ln!?QP;>+13}RKDLR5R*M|vRQSQ zfX|a{Za%?xFnvVVo%sDJ_3+aa=SVuQ^R{i*Q^Z>`?wX`!5(Yu;410P9Q_g$d@6gXe zrssD!)Fli!@qEc$-)pkxJxg!XtE#$7l;(VXeJOA5AuXX_@uh0=aay7|AMN0}il0{Q zth#ezSDre~7OB-~nTrgT8|l6y`W6rvyVJYfFQ+tOF%UgkDH-O_ui%{W;MZ;H99{&< z44sWa=Sb-vbDblAE6$5=PVivyjJcU3NyQT|HtH^4qw>QahX;mF0mA0^EAr`n@M{?yoO>{3`^Qz9Z2W?HyCo7rx8%uE; ziNG_b`Kg8Co^n_bl>rlV?)p`VS`Ja|(4v6Py39vdIa(t8PwT`35|^G_?Q?Ng_-oUY zLOXmas!JM6egsXw6yegE-_$fRd^mJ_S;hC$6UXvzt4T>rf`DIe*L5(* zSfdlu2PyedjTqj{cW>@&=D0t6iqGNAMEd!_{Kb{%UOei;!p9DGl@rrx#iJge%IpG= z|MVn11tMa3&Z%XdRmnLKv#D&ddh78*_WFtBbT)EcK!8yjq^HPfTh zlPlG3LYLgxb-cQ>t@&$ez2Z1sT$^^FKBmJmEQDPWL1=K#;a~uLUnH;qQF!p9oHnxC z>e<~X;n(G{^Tg^310;7Nb0WXmIc86N@{mv6Y*^Tj0G4@dHk_9+QGMGQ^xE+7hBj;9o&l?y zAEwXpytF!CFYAI@`ud09l%gy0F)+deqeEI#}e82Ix zK7hXiMue>a45Sgn$ZZ-D8)_PX6sl+OkEqA29L?#vYt4(-kIo%=P`W%kHt!ZsH^l$l z(O~zv$iAikV`-tH!0838?(5P!At5nfXR!kmHwtRQ4xjdAp6!pgG@HX)GZ6*IUf1bb zB_jYC4_#4@1gb~nf3~mldpy%i31AJk&}w7W_XzrJ@p&7|qv3YBOZYLPIbk}A{4mER zG}X9u?Vwr-j<4!MI0us|=8ZmYYd?Xq0;_J<2SNH-fJS|r>LaH|4w1i?{v#vRx^%75 zJ+kM9j8j=ODvNyBj5F$Y=b_t~n)vrlt6x(KKUR(ck!Nzo_S92k-zv!X#JkP-&T-|e z@Q+Tk9M%N~OK-7?(>y)4SUKX|!on>9Fl=rUht`j_o5T?Ow<@@$L@XEZuZ@J|QxXPB zjII6XAYRG0(}`a*($YZK?-!NNrk?b1x=x(-4!)aF#*^t){}iUy?Y`S0zgsF07)Ah( zYeD{TUK}1j{bf_LRgvgrsPVlEf*0=)RIy-KqHk)`#wAB8GoJbwY>eE8mym+g8!ssLYsqJu6Pqq~C8o5EWnZ+A_wyPW7<965&KU>vh z73S6eFYX%8%Te)>CE^`Saqu&*(kHy_+bn;UUCzX*+GT%2Q>!ISyC(lQi)!f2y0{n zfJ96+4qMl)T1_|P*f$Fmgqs5`y!glBEm!Y;#z0E0vzKvfZExj=*DvD@HM69L9rKGq zKcd7Ae)vr(3O2V_ZKdfq@hwNMqFkOEZm}Hi9vd0ehJ^Xi#Mi{^Xr6B>yPB-Uk{_NhuoAHj(sL{YZe6sqwjX|#z%`*DwWihSvGJPuY4Ii>Psrc@M8o z=OPLde4i>&Q)67vv$kzUO)GJmZNN$wIr2wQY)$e}H629;<^6Q&Ppgml*dE;%dboEq zlQ_+1GE3R#>3WgqGv>(`;MP+ko>}ZBgVg=z_lcfrmXuKHBu2u9UhLm`C6zv zEI~Uo6Z?7+DRmqgCEzo`@poT0%&vtt|1o#|W0~WFUb9)0wvs8rUh>3c+WHoddUt8s z)mpDN+uh#9DMAT(j{iN`8L1`riA2?C0)a4Y?KH;cBnV30&9O^?E@3cfW(e4A^{VY8 zHK7OfN?J?pHI78BnUxR)&B>l)FV>Z#b2$e=mY-GK(c@++#{1O)OigBHtA*`lIm3RT zBYIN0FA(Lk`z*BZw4Vd`vETn{rRA4J^=$p}5)$KK=GA)JNpw)J_>n1Q7HHPlgA0dA zKP|4$Z|z4do5t2^TdSYnXEl?*-ni)??LIu2#N{|elEW(#HE**_HzqMi#^l`Q2uEBO z@bp*XXE}wJE|9lfvH2kk%_4kq2;;Fo_WtE=HHky5c;q9wce6{kMr%V-^36z3= zh(2&NRy{pY8>`i2r%$lqF7!Fw94QA`l*s3733JJ+y|&3e=r(roh0B`zaK8py_AFXk zzL=(1&M2EbhxYr+{6{7l}kME4dVgc$P&=9dGe)~g-7jO$QX1NQt` zwO{#mM*(RM-dvnEsFl&!?tT=Ik^hHRw~X-VOj9uad?wnnK|1^ynBu?ri)`*F-~Q;6^%Qs%v1gK~XvhpoK+oOeyAL z6$%*7G>TkE;*A1D!!lh z`rV?bDmrM#;R8e!q=?E?k5i9J$?i|Hhu}9nqr&oa(i=VeU!F2F4&gKH5-Az3g#4}( z8Wp{%+uqNA@bE|QJXgX4n=R!4Q_(6kP20`E(%lyJbD*lx|5R`=SCY;%2^a64UqvQ| zsV#u~9zt|$wRL^)z|W#8_DgKO_nFS|^$hK6UT^*0DZ@zzrUY{7TSTf+_vfqrL}q7y zeYv7If4iRCE+^La5Pnc`vN3)IuKEp^-8{k1l6enHV*Cj`xQGwE8f<3mn~vo?ez7^SX(ug3YYc-9L8}mx*5JKhqug&Ww|2*i5)mD8sfOrv zd9J%zW?EmVn}Aihpdsx&)fvQzxDh15Xu z)vSMF>{njaM25fDG)Hdx3*pvAO$nG-u{qBh|Mx1Zg@2B{8~?PS!{{tN)>dB+s zsu~dM6by(efBtsQpEa)J2XdwjZDK}5ca5-y}}grn3cL zIh!AvMcbtW$1MW!+iUxqk?*hYQ}I0+cP*AE8LxEyg}X-4~(i42~! z40Q!Ov-HO?g`ZC?W4)HH=BDYY5cng z6LR@iIk%|7x3I}YX=C)tPMsCfe3ajV%V&w#v9n~JCLgzJod&Dl*dNVW-n`uS2YcU= z&I#1}VCkT;byRfTMks5j4&Wib;Tn#==2onkHtD(6QdFwb{$gwFJWZz$Jt}sx&Oi1O zl5QQ;e|-souotGVbj8Lm9vCA`au1(or;ZdsD*{=7%s}Rf-3HGcz1J#*DE!-F`#GcH z`l(sD6_yPw>foT{9OoT+$|5&0SQ9!m5Vr|pXu_?`OcGleNm+tvf&4R=CX_2*=AP^whBZ~R_cLFZXcp;Ygl&EDxg@KO$!HP>sNjN%cIvA}h z^;J5UiVZsGH2U37IX{HgcFIqDIE};v{ET}b^ssO(2;=mR;V`R+MsD70jvZ41b1AaV zg)T{poN69u`_Ivu^_+IzlB3(c3s<{$%ib;pK#* z=5IDieni>zoIeCApKSR@YpGaeEFO;n+p)A$0Y>PUf7#niPVkHK?_SJh^J9V@+Opj+ zj`RzTun|IU**Zee-q7hoNpVKuQG#3rog5+S;{9n3ypr#0mlmo9A64k_5_P!C@PTV#APe&}@E>og$ctdVM}HxADBio9z|v@2)d zc85i?9{7P<3&#`y9Y8K0yXaJZr~dTdRiuFu2+E7Q#85WMM1{ZD-_PN_z|nW>w`VioAe0`Yr(2|FI`#F z^rdg)&e#!8UKlpBW_YYHI9Lnsd8sd|WcepOXRk|B%&#wa1vZ_}=0~FBvA1T%yUWH@ z>DZu?Ff&Xq+xQKAYNQaR61H!19LJ{SQ*!jV@XFj-z<9$>&;6;6;~&Bq2#l~$n3#n<2lUPc=>T{Vwj+s9iwrx|o(I}G~xq#s>9hr-p*L|svO|zS%UQD>Z za{eifX3J4E7iNrcCYu_7x*HLuvFQRoyXC-w4cBA+US6AU;bW{8X~#P*j(ZY(h#3&3 zpu0exv3#dENF|=@TnP25WEA_kw~o=9Bn9h1h1!|NOVN%cI!`(zRhPs)?_~&yeq4c- zOWxfF6J|%Vcl%^^vxdH`I`>@RKgxCwB+gH_nI$ge;lFMcQaEv1Hb4>MVcf3hzMuaB z+Ik}iP2)v18uYA3)<1d)tU)D7s=(VovFC-!1@7gkm+?WoQJ9^RyQ=Q9l3};-=F!Pt z?I`j7q`osP6!Ey)QIBUUQ~BW;bCX4H9)>-N6LCU4&=T?^sC)C6KWQc+pOV!aRpVK( zcrfF0RJ8UY)3!AbXj@q*G|brJon0g12?k+Ahy38+?=4~IKbxr_m0x`Q>$cuS$>URR zt6eWpc1{BZ_gkK%qf1CAdeyHlR2}nC8pFN>G6l!=(bY*vFszj$m-m30HU0_6%MSP_ z&Ne$O9Q@dJ8J#uv#8=(@lhOy*{;rEH-Qju!N`WuFhEmm(?bmX{D_jHR$L%T`I98y} zmUC$;fNuOySs@j?;xL#hW=^AWl9{O|}&fHQ7zCP=(gS-U? zcHH-zJE%K1alt57hD2ngNxo6uGsTLAh(k9xJ%>vaL zw;~cAEFT(bQMq4;zmw0Bu(rHdbsUSdPFZR&TxfdypYeY(v*}@9V%*JMtRruzTnPa(6$ZUJH5-6oNzlYlb#63!vljJAb)Y*INbgYEdrtIo~%DcP^0!o4| zcX8Km#nazLdvgp7@uMvsLeHwJ1vC>fkB$8+Z4)-(b<%7xONad)KA@lwdIXtzo;C56 zyv!C?Ef_^KY%(*XSdaOS5Zw^mYD`x_$VXlk;h`}(N8<0-rW^aeiXyIM&DVY{y*`T z6yhHofz+#VpsqtpfkSCzFZfgR|D?q}dCbiBzE?$5y2X$DVnzoftX;^bD#rcKY$u1r z6bTtomIS{J{~0Y#)3Y;s_|(Jp{TFopdvfdN*+@@nbD@vIA`*dF^iS@KVCHt8bnxTa`T=vYztoLS3$If)@|mk!StpWA&QQ`|;E*5t1cSI^zCMC`8+GF=UgeHDqN*FpSa={Qdm?uL++cE()k zn^?YG&I`kHtREzyLI4=xyfE~^^T3j3Lx*o`m!hj9pA>V&I9&g$Wy}|DL!8<+9NdakvK) z&&c(i@C#V_yynw5c$1!+8M}>5690L2v8_V%2LGl}>27sT=ZjxZa1t`(wxJyb?5`6c zP9C$Rz3-D>URHrEvYN|YK!9J-lwSH19$r(4GWqxs*$LFKBE=KoeL=Vr{OFi`1 z+BlQpub|q&9-1+t=`t9)ZLE>2i2Acn5$31T!85bmdh*x7S@^krd@H8{o(McHgQg46 zgD~})ELcN|nIV0gLvu_4My*C{DGL41er_)dcY11(!o5~r{9;G6bT(i`ZM_rN}2K3^i7l?9~PYgzMnY z*dVKtc8X0i>x8YNeE%I0_K0C-dr(v}KI;!}UErpDMdE`kLN%V11^uC+n6GvNUT;W* zGa_XV4__?OHoHq`fH>6|z_-T{^_#g%xB?@}su{s4q!cPzVrim|GHMTFERt3{_3-%Q zANf19_v}IwHS!*22EtFN)%nYHR#LGedY5P7{7?EaNhFU}UvN}(#j>A++EQT{M6Wu$ zh>TlxLyQYoHn4d8k(TzCV|r>T!0V}KCa^xu;NBu~D%rKgj_W+QJq2bGP4DkgZ%Ccx zHHK&Uq6&d|oia!vE0Zeb$JfZvVr@q&TdP*-=eWsGk==f*hEus z*vSqLh2?_(0CP>_Yuft5L3TII-aIeXh6k(?)B`rwJc-jD{^g)_gORZHJHr2DRH1MF za7OH#2#sSCd%N@Lz1GAZCIGZgmb|VHl5i`D&5A3B=^G9>BTg#Vq-8BLe6j`gE#03R zo}1o!+9cQ$cUZ~Gr`WYF2klWOARh=qAQp8ORz$XHsU@H-npgJff0Eq5E{C}-B1wi> zuSIbJT5btMoqyNUTx1Dd5KvVxyvX5)0aM}d`cwe}A3h0U*$iP{7TRRNKe~##sOGh+ z4IhIb8hp%X>d6IoUQ9qaw;&Vn_uguu-)Kbr#j5@?uVQ+4rK9Jsbm9|7jel(>0aE?G z)+f+VaC~h=IiWB_6nNxSA*$yOO+`E2}BSON&;)_NoES!#4@ z*`Bz_2*%bdy}neXxQk)o;TgaF@|=)4m4%^B_rq5+uL! z7K>o8jXFCP>J3`UHJ3bc7eV5>QDX20 zaJhjK^ZBD>Mwg~dD&rSz&mztK*-8xmFblYm!9Lkd@&&_wT~td8*CFFqFuHT%o$^%M zRfskN?=??rX!t`zVkgLSg>PR<5vOqPht6P7?nBR*2x3C4HZ>6_d2g1;(oarezind1 zU2d7`lfDh}u}#5vLJXpL)YvE}d39Tz1VVNP)s1NH`4ZLBkOs_ z`gHn0T*%)2i5Los;qYb+&paFM;ny%JEu~DCDM;A)iLVe$A0B=^-u%p@(3cg=siaU0 z4h%>VAc*_TMnFzfd0>@x=31{6+3CH%16ms_Sjh}#DqpttZ`^`l*1}0>Q}G(}e>P}t zg$v;9y8yFTRg62NMhJ}=Uus9I9J%zMeEIseHAN)AfPtjcEZS%6!gU$4pJ`(LSLAT2 z(l8^i+?5_JhG78SiiAlzX-*lm9E3bf0}^oES6R6{)?Uv)`b|QXiDPe`ki-$go8u-c z$`x)m9E~ZWVks9Zh*n4=Q_>oxs5!s|1%0Nax!w`2l{1_{bO2t^RPJEfCG4mDPTGT@ zvE_T#`qf!As@AqMO(U5qmUb+EG-`@j=)am&Rf?mDkyHKuwQR^h0xv%G7st^!DY(S8*w$SO7S7eZ<24@1&YVBIU!G#jniT0E;Q*0X|8&c; zGIx+wrZ_3um(3u>LisUGp7h}S&T!4#B!OsT=T}%7+YEL3Ck{5)=C(Hqip`@bXw=z=<1O*}D8(4h z0_!O&OOr{2Pp}H4DSCO;0~E^Fb9JKyH=jg?cNekZ0<1X$dQI2xN0rJeQ8W6d#TF$V zfl9=VytKDrmv^{k>T|b7yo?8be&7GXn%A84uvro~R|e%IDGy>fHRcba{}?OZ;D@rv zm2iEq@rwtEts(IIn5D)I!=#UXt}T0i3)YWLh+2&;Ed%7Qwu8C~CBN~Hyz7KNV|Xy4 zom`()5v9(!DqVN&Je;~-EBo9Yc^ueZ`HNHC9A82~{IuZ26-wzDy{oE6@x!r4R2v`% zbOD;RasHSk?_cg-1Xxj{1HEg7Sd^{eLD(IMQ7)gLlm?I6ON)L_k1T?2!xQ*e~md@}6YwFB@4UcFN|G|KRqbs|# zIdhk?IL;A#8)Tvw%8G$lK_lYAZHuGk0KZMC4}R#B{8z07cIIY1xZK6#^pWB1{y;D3 zQjOS&fdkn-HB;PPP_;0Em%Zk`Mzk}(Pzq<(XC04?;l0DDi}`K`1r3G1jrd?*{HT>} zAw*joo?B$(A7Z+lsd)0~3I;15qKv`n?XC|*apAhJhz)s<7 zgO7;8uIf(SX!>4WF#Jv7zIezm5^LR-b72Mh>wxi1Ib-R5cTSn9y#L zG?O^e^p&6>g#Z7OwCy&CUx&QbCZY()hW&2h%cIq1md0w00~8tZYi5*3LGCDr%ao@{ z)N#cj7+Z6Dmj#T{N7-uQz66{Q&fU}h@o2oOhFyuN*5`-Yj;sdzOKAPDfBcB;_KxJH zsKFTS-5q~&^YRaXAq2Uw;hV~QGn@fhPyN189#U%hw-Ig0B=u7B(Ar-@tKj+ay#)o^}T~Qjo8bB2CF(bvWBa@gF92Cs$TLZgd1?(QBQ#i}|Ny^D2*q zZ2>^tuAr9IvdjvoJUy-mrd>?9c)xe%OXtl3bjkeK!4g71P{yrM~vs#80%^w$UM^SGm5^ zFrJ;%%Q%XrIJ3+~OdZK6(p^&11lPvKq#luj_`fUwW-;IIzOrd7=@IMNesdcp_g~dy z7`vy1YW}o_SL@S_lHK_i-d!~8dWzcnta;=@66QDTIeq(cgHD;%JE)k)MeQQmw4hh~ zZJ9>FXwqOKtESA;@ zvOVFpAYo2v?n1YRm@v3I z?9nDxeD$c=)8nHMk^aij7gS|>rr3MLcfBtR(Ai}fhA3+1I^|owu`1CIzBKBfUE1X^ zuKj8!;QpdC>9++wFsNjIf(p67@8*x>$io0YieTP_Tl|89GCV8|fnrJQzm8I)47n$a zb~LZYtKk92W89JFPSgsMr-DAhnZvHFKbijC^4D$d^ohbZ z^|yCp94R|x^;spyxCbS!XkL3zhfYLwuG=~7yG#6YZpuM6f2)ZO14H-PyO&*Uoq+~@ z@p+D*mV%Z8grWt>>3Uxpe);fgMT;zui6CU-Rr+#P%3O*1nFGNF5PA^Sbc=lll?dk* z$(r37^_^Fi$G;7xl*JVD=kVr0ch2VWEA4i%-}$(H6}1eF)3(*&_$U@@&zKRn%~T!T zZAD`H&-m`Kgl2QNw9Gvl6deqREwXca0B~^gFwppYxtUz;Y9)4Eq`w; zTzFQ_illu+8aqb={Ss6q9+Y)cnPnlRikG(OH8>cDyo-!^xTK{0J{e>*zqqpCLZqiv z57{HR9Dzfu9L(rK4T9+NKbPa2HnZRzbd-dmceRTZJTN7(Z>?b9(P^vTYo5cnP338!jn*m+SODN}1TWp5G@)2og4u})@gMJ{`jK2Ic z*KShl?aLx6+4^;i-0rAjm-b>!kFV#XA!2qICz8Ycf4Khs6GY0j@(IFX;JJbbOW*U8 zV%{MSxt{0l&N9K6Z<2lUv4`^Ai3|mBR>5=KZ??Qta!U36vzE&{IG(&0-fHEK`N-lb zxx2`8$n@zJnQwik{G&^MlkVgbceFK(&Fvf=H{K#{ACo#tf5^l)4gm3?F(<(gsWYb*M zeUGrvP|H&;PD<|`5hU^cmb|KT@FVO{7qA+}VBE$li>zk}|D6C2+%6*KJf~dvZL&20 z<@UyP;r_$Th^fb#9Oe|PIry(hsQ{gPhG@paTVVjLb9i8)gETNbZFcaHZm@^*dXsHI>*$@X&J?Jf8lG zCO_n)3N)3qF(L1En^=Z6X|s9hU(}~6-Z!m+?%LdovmY?Q;eQ7CQ|M{6zh=;Foqh&7 zN2kti3}JpQ_eUL(c0Xl4A5!I<*Q4WctLh`N1I=ZQ$$mi$QT;3^{G_73xy(|$i*p$v1qgndty{aZ&TMbE z1t9x`ZB?V#a#4+3_lL25sR4kXDY}H8ek*9j9!vttepcR4oN2*Gj&d?F8PVEGC<;iX zYXOB8H}?j_^G}pEt~{uRQ99`gJ)DZoSm)H7!j)vFDo6_VD6(d~5jtx6D~6+A-d6bG zrncIubg#?SV>xsK2r_bh)2nv7$8IHgK%c1OQ=(fFG^j zfC0vihTz8^j+Q+j;=t-~^S$?(xV1UqK6%jgbT{};TL~_$`(4RMyUC%tO>2j{Pd3gC zvlM@O20?bkWpO@@+~Z2;W3*1N*C;ffY~)9>LojN7A?k0=n&tynoOar;q4z22yAJlT zJnEfifYVIuEaq9jloE7p#;kww)%u?QiQ^j=J>Lw8YUAWIh#KgYGc^9ANzssb%$AJTIfj3wJ)5;gX5pQLJyi96h9K`=9>kT+{p||` zX$f87yLj_qTLEN@kxqBGTNw^oYF|T~10*%aLFXLa*ycCdrMai(w!xlkUyuV=fIIF}d)YU4tX(U!`SQ!vng!G@!-Qr~xJT*U zVs#Xd5-8d52k^j_P#{yksV^(maPJb48m_+7KNyFRda8E%E@5S2W1ksX)mn`S~+vMR zu>aL4PGEJx%T}PMeqa0Beul7AgIt`3vLgWS4x}Tz5H3C-?bV<0kfSv{2HJ(%*!-p3 zBt3a4s(ruzb(kXw34c6Q_hvvyI5z4d16mJMiB7g576n3D06jj&T?uFjhv$=bvDP<7 z)HHQ~B4jsjpX>{zrsv~M)3=^%tG{90@ioaxR=^tmH#rAz0U%?Zqy@y_O=EE()x>GD z8`Dn$jtTestO$NO9(&HwcxF2XsBr($h_^cSs~`NjrkDw>;h%`}jgAZQl>H85)k1hE zRwj|UCw96Vkt$HayPnJJx zzpTrR(y?SdcgMJ=2aMaVu_4OX4lg}D&^xNV<=rwSeN!^dCsh1T%r#2mKG!)(h?C)A z%f#2nooCqG_f07C0wg41GaQ%w%|WXbWnyyC7(E#~|7PrFtxTzAL>|=2iI@{+zkx-%HJ_h+To2>xaMqjLnIpL6Ev1ol%VFe=xMm*NA|UdJ z?_5YZoEh69dweU^sgPYtMQNj&TS(zrS-bYz4oz z)D=M^Pn|j_Ra(*_BFlvn-`xhHZ%|)ijAK45jW$}Ye3f$!@{<0~@UrYSXO)zgR#$u) zJgz{*6LJq3GXJy`1DuvZe9_~r<~t&#Eq{?R-t*983@$EIlFf&a3{#TP3~yL4l7JZ5 zi&w}M!@x|sp;)|r6&ZX_GoG99N0WS~BCFOFKFy2JSKK4xrm)L#pJVeW&6-0@$SbF> z@bqmb6U)Kh(q;Y~e83*>ZkyBGSxS4rO^X}O{Q0$MN1)oj9p!9M2I`OR>N50sTtJ3% zKzovb`o!PpDVwTZWmG{3oekyp&;5bEa?Ucpb=ArrzqY#?ciz1@DAnU=%{86z-P~|1 zAs&<|Ir7$?bp0C+=5OvTB;|0u@q6b=S@J3#CLKYle&!g1zG*Ghru#)imvpFRPV4c6 z=&0x;raZkbY}1D4RFyTeus$beGn@YD5blkyY2DjKttIxJDJVD`FcHGQAq0%zL_JPf z`ufe=ph0iQg&KGCqQWoUQtcAe#)S)@=W-={>OH_Upcy-FL7gpmdGxP-uy$GlB;vPP zJ??wHtL4AFMdrExTMUWYHmWuDa5j%C;1_Foum|KOu>ER#<$u!OyKO&BK`2_&U=v+Vw;wzAhM#g9+4_pBeY` zM3bZ>`Ps2Izum<356;OK;L_)Gz{12(3`5G4^ah;}Ya*ySiq|tFIOr3=jrSgnP*Qcs zU%v`*8su(iRW6aVM2(CiQnLjh2Q)q0OyV&gYhu!sEOCmi+P=!fE6(aD^|DYjL?e4c z0_%J0Fzq$jyytBvpD($9L}7B75jUot3W5l37Mj8JUc}Rbr?10&O(gAZ2Fx>C{@OCL87=ke7XY~nCf4l>ZT)2n) z133bPy#qj;`%?g81fzBnS1>0I)iUx0H{Ze-AUvNi^na_4mv%^j{jco%HZ+ZZSO?SY zFz}71DBg^IfdCDWCyrc%1P5>3lfW?mQA~MOVo$+)R$b_7;vS-fkig0UH*4moiqzDEGp|u%WL9l9OkOvCxK9^&HSzZa}-MZJ-ikAK6!weUfM)k z5!F+A(Yqsmtq{+fVxWyUM z@!RWWHXPK`#hz0R=2a~9>5l|h6a6>t(sgT&Cb~R6#w(HzvheHHW!BlWOJud)F)A(6 zgwPSZbi$lcJ%9hGHQ8ISeDXu;vtKzrFKt!LFf@D3ykDs)6$Y$Z2om5;0=Qw*|3xQl zAN&Kl35$|oy=Ie*=GHySK2EKEnx*r3o%ToucX9NnxTp!|*FhQu6w+aKwz z`x&q$DfyIgp*NkX4hD*!Kk>ES37kQj@pBX6fsF`Ldq_8$;m;QMz+t@2?=fpa$%X*K z4>8Ateo{Ly9ERrK{SXt-sm?7T1ihZ;Os@6Z&~?0VyXjvLNn89VzRI;>)9=>A&cAXB z;y?l(EdYZeLQo<=vJ1Z`)mjHxoCb|i;}=p2;x}7M;jIwdekycq?1@_1^dzzFGnHRT z4az%2wa6r#5QVFoOWxOxaNLA3!t{t5Nn3p5_ zl1r03`h9ERT1VxSyRxR1vMiFkvbMLOmLJK{=enZiKDPe+mOq6jOv50zU7&7T@<4>A zNu|(}J3ZNN_J3--8A=YLt%~V#q-3n&!**OOq@?nJ<-?y^KVdt~AAa?4+d0X{?J_lp$~v{8?8)7Zu2 zRoG$zPQJ^-dq?c|Z*=M7wz6&RO&~h&?|)%~VIXmCzb6w}z@>(LP!nI+DV3<7HrZbs zKK;d`*yRdAK#-q&GL^_kE(G#FIhKx*D|Gi6^q|o$pRG-Q{LI{|yp}e)w=M4DjGd#^ zTb|*3h<2q4Ho!v!G%5%goVGF#;v^?P$Uo zBA7YoEaztVH%`2*Up{|6J2RLRAA>bNRjCoNnF$dcppPPkHlv10Oa?(Jj9+7`-mBrO zI7R~c773IX*-ysEL&|a8)LfQdtB11W`CJ1FQWux}zaaWe%1pMd|2T{HRjFbPIC&W-pcX~N0YP@`H*^8}chqb`XjID`I<+;8@K~^o!mDK#io1DQz8&xHhmd%Wsa#~W2PSC{hMm8BRgCNAOcI@rbf?L-}1Vl3&OKo6xH z^x6Ej^=K&nxISR=FBkf&nf?)KU-R@8>O;Thf5ABj3!2ed9z>i!yL{xr2Yw|LnU;`D`|VhZLfS5hKZ1V?JJ%d^7m0th2YeC5k~T{_Hp&M8oIZBYzsTnn9H zJ3gOzu0}4d^VMol+*|eKH|+ED0rY`Z3?nKt6d^?(s@Im^Z4vPUN*+%3Jrh zWocual1$F|b}(ORgY74^1vNKgDw(Pm%viWoptz8`2Ch4NIz%_Zyc+-YVlsNMKEEo_Fk>-fz(D-5{KKs;Do zv26j#@oZRj0@z+bH=Dqstvy&E^)6&ZNZx^&h1!gGJD;b4NI_6)3AlA_QO#@%eO~R~ z35D?rl}L7a+T?fyV_O8&@1LEYclg?jJ^E=0#eJ+&T5F15)i1s_!x+_L0}qM>&h_f$ zIO(iwIF}zYRBmNRy0-C(17ZP@b?kUt9cjU#oPU?s+OOZ*#!X_Pzs}qc{fW?=S zncjKJy#&vqL13FIeNAPQJOfH}GtU)CKjv)PE)_t6+eZ+_MyIWJz1r&7c>$Jfh6kdQibEwlAv^{g zprgqOHFRB4`P`%K3Mw0$r>|x99L;QR_yME@5*V~U%hqbTk24A&66rqW9tRidz46mv z6OzfkX!G30GtVPHP|~lfmL)004=V|Mg%x~8#FE#czth*>ARB}-tvCr0%aPtF5s8Z@ z_=ISrM)l?jWFtB^N_RiBy-T}$q1lS_W@u(H^F=MK8WX~k_(_$SgkNunNIGr?L_<4^ zbyO87t^V&}au9tT?YtU~py*7<`SDl<`ULlAp4%2VWfTKb%rFcQ&v9avNHlSxNO!d@ z$5rI!@H2dDU^pD<7YD*(A-lWZ8LxoohKHCCDt#f1cFsjKy!*{!;9>#wihzjg|X!S3igk+l}2QjP^1IjCWb+mAq1B4^QkPLDHDqGuI zYd&2CDY|vN;PVV$kO{v^cK(ZZt8Y9dTJIg44!qcNm~Gj-dXU{oH&Ai;(ijKC_zuq3 zq~&+=`96pH=yAzj?R`dh8j}A-QSwag=0_ve9f}%_FGY(i4baml6GH<&If+*6^Pqqo z+wUMz6EB`1`DFXIFJ1AlERZ>r0iM)hYkxhKbLlfEBk>*ilPD47^`Hg;xI;*?BDD-6 zO#+I+i(|Jn+cbop)6;{Y@!Lfq3`Gk(junM^BMkximQSS3w3}arg;6Hwb4}3BAR=sd zd?^@wfOH5d1J(uFU_Ba4o`&VqSwb0r0NpWvQg+>a)GTIUPD%=EM0pzgHY`?l_gr@Z zdA7A=TUOR71Y<7q??du@a?@KXM?_t@88xoe3j{sMeu{M`UqRGT+S!V99Jy?1bW^eT1%M}s|Xd+L<8fAg=+ zRQa1lWk^XQ`bzXGc(JA&>{l|WZaggV6BsNdb?@V;(MkzWYA$-(MaUHuZ3H@6SC+a& z+T!Q8+C|7;!+gY}IedXW-xp+Jq8vKnk;_;$`Cu>B{pK|~wzL@G7dvz443Eyje2T?K zd?>d%gBc&zAoR>(*ZHW*t98{%z{6V~EYV9T>0C z*vk)v>RTP6GFYZXp8vb+%NK)Su{lJ3C`eU?p`X`76$O}^G7DG=%Y#lWBa{9t$ODoY zZ--@qhJX%Zu8hX)UhDfjqjB;nN2?>Y0eDo$r7CRe9_Q{1o!1W5&;{rnK_X9FOEw;H zRPrTaJa)z|fYvhd$^uN`+w-8e1Gc` z6UrXLczFK>U_p^%_Pa7R5%SYN4#N4*Klg{c>Ce`R7@8I>bBt*%r+Ke;QJbhC|I}wX z=<+x5k`4Di#3vrFg9~0*u8Ekre5q#+iknh}l|kS3?%l5%dTVkQ-`~TGq?CpQx_q=S z9ujh{<$Z}r!OLjwn<{NLdq_;)yfU}g%2gL$KvEa1z>h(NxcU7%MX9@OZSnz?43~$wzBnhfsNr9+NH8qFjeE68sndiIj(o@|a;06tJ zL+GoK6mnW*Zu;)$sax8xvHrD#8(@kF~&XYb|BTYVaiaGja$IIWZe(hgX>)|-}>%}vXce}s0cYS7Yeg!|n zFjockKQQ|p>$*Nmkf|Npsvn==vr;ZN&paOKDSUFR#lt+j z!p$Tx$Ho@pMWR)tha^Wz@*GfARx2^rPg&CZg3oQz@v9eTNMETd#o|_g996)>qo=Q{EII&T;~t^ts=yVnWC|g zVSgA>zLM5orq(&Q6k=gA_Kb#{{Dje}Yxf6)5!K~Yz9&zvA-hZ}4~KFd-^#rlRV@EF z?58wVk~mAW%%h(({?Gw6zC2eI?N-Y%l4h&0I{)x#BYC=O_jxXO1Dkuui~B{fwfY zI4UpAvcm0NNkFruPa^p;P1J3!_P6r(_lrm-{9eD2DZf#@G^b7dfJ}Pfka!(|8m`Y`kgDCM6~p@uxuTOWV5*uooX# zL$lvvp-F^KDMs~@q^uZb^?b@p7A^jMyy-_eq37OHLs>Au5vxQ(GH+Ko@~AMyb>Qx; zW+AI6>PR8%41W8iITLFkme}~_ZkF16mCjCkb$8Z~vjc8js2cg>-5T_11ViunuYYPp zd#&{4U}T~ag2vEF-_VR?MAhRa%SXiPLZ?(WzXz$skJZ;Dr|~oGm#jA=cJ`1MoHl5F zf4ZeR^^JUD`^JPittl={KV+daaQF=D4dXl>cn-fBF7?H4Txw)TYtOx7GQZo{9^u81pGdzTks-m zINp>Vtu@$~c*ZZ{^8JsO?Gh8c-Qyj-cywmKaKYlQPFz#nth?Lnm)!PU`@3XB@yxwDhqCP7M#94MjgHxKsaqV_nbBFa@ZqmP-UCS&JLE^IIs&r+cBlgUG%Q)_E zKIs8WBBuDU7%87Z_rnRBd#AtNyLn0Z!d6%u8jI_DJlL+NO%hhrmJQZmx@YRwj3#I8 z(Ctv&#`u^6m5lB6dC^Mm>$hlWbXwuop2Dg^Xyaool zc<}*_lsBof)N1B2ANvoX4;j|Xu?kO~?k&H;u7AiruKBbh8xr73gV274J1(swm_%^f zx{mn%H16t7D%)zSy1qhj<|{LC7H86kfGWwg4UMripGNGhvD5t3O9Q{SkKqx1#+D_= zqcr1_jqLlijQ0M|LepWm+gn&Fb|WS#Zn^dWXeT=wMkya<+G9*9n3(J_yY^XA z#m{2<7p-`dl%hyJS~5;sUk6onc0y*P;)FAM;?KdR>TE z5-lo;$91-i3FJE0vB|H_H@RO_U}#`2<*$5S5>Hn>elf)2X<`oeknD|(>??Iou?W{H z!AecB~JrqvxJaMXo_Y zx=ijhw&N)V&*J%KVF&XrKArFuw~B&kJM=M+`mZPl{a7k0Lo4 zvPE4nhB0>sRL#y7ZUJ;PW!h%5*%9E60Jd|&BDq7JTnVMTGV~US2G!Q?! zztt$}qK{G|YjH-!APsOo+!~Jq6@3+s?~fJPOJ=;z#f|MYtW41ueBG@f@fckU3L2Be zZ;oIVg73#m(rUjQ8s~={dppM|YF+YA#r5T>G%ma84&a!WE*W0YAPF}rT6P0shSyYnYF(5IRbd6Ar||r&=yhf?q8|(Ep)T$0Z+9yQ7n{V=eNI~@Qlt*CzbG|E%}sWIhb{?mFer*2P($Tj0f{F zGt|13nb7de(N@bJ`Tbfq2ER$mg=T*Lf>eXJ=>xU>`=Nsp(e(WMZyO1DR@#Z3LHMw) zN6WSC^$q2)pF^sA9|pR-iZd(|Vb(J+!0jJQ=yKMwK_oI;9}>(seXgy#e&2a*eZO!( zP}*%Tzf15oG~I2pnV9fPb2(Ef5xh}xxQ8~U6WyincG$oWLC~o7RPXJ zss;kU8zX7EN!vFsMJVI9QgPr@sb9Iza7o!|h@%}t-_)Tmt!oENVGX=Cs zfQ`6zWBfA-0&U43zxTcyg}c>?Y@V_yKHnJP!SEUfSNA}wf;$O$Ap~CwQX`X&q)R(V z3%jLRI8_;5uaR)4%Am;tvjM*)=jDB-&MvJ^p)SA%rxZ<)U)nCB7;E!d8=VAv6AzZr@6Ks5?AVwi)}yG z<>V7!7*A^dU6usVT=h}-zv1i5tmQaCYA`xgqf*d8EHF@rH$yxm^DFWpsvWxj;+-0qX}aPs*VqZR4)3!8;B;n5{S@S8O+DvF zODj^ahsPe`Hxg8s&z*gjyAl*1do{KKZ%dRSGFhEU43l?UKYw;ky(fTZy5pqlJ-Gi= z%kEeuzIOYq)4qF6uF7`_RE!b(SBjyp{IUsnJ3+RP^zWbC!YBHS?{)p*gZ0$ z($CONi076Sig>Vcv^l{5W4Yotf;@u)M7FqBnxK)NI2@GWARG>;BymZ262!N*Pl*w(-;6-O7%!>4N z35*Qt^lA+aK7RwCN?es71u(hqgHRq{!sFik`g39d)bK@rIrGA&$JoiQ7%9Qcdhori z4J_CSfe@|LsLM`U>b9Auna1cNHdx+?xAq+lRq=V09usrvEr!-8Ti5;R)iZk>5uK7F zEy6zzk%jgNiAO&mIAFsEM1asQE$DgU1J42tLTe4t2n+Z#PzN{l@)m-dBk~e;sRzAapjfFIrA7s7M`^1Sy6MKWdQyxzy zDZy>vev#}}tCv3!&{I|~nN22rB$%vOaGUsU%0HX!!tRcxMpz%snOkkbv{tC{`D#4Fa?Ix1o_G5`9a=oQSfnu*#n)zxc5oH znWLAL!$R}(!IMO`Tmd&y?A*D1e71;nuf?$aX5&ik!}PTLpxNal_o6Y7Bo=ktZf^sF z6D)_robG6!LaMDGg^?w{gaair#wU8q=E-deClnRHTC}&v#iXVZf4nQhkeGa=Z_-v$+EtBUmU-Aduf(Mr+9um%(WI{R(Dqhc?dQfjKg~m7w#U94Gn##p~5Dr zEwIb*tl%jh2@5*-(lxtSg$kNDotLjb2UP{03i9ncshm}<1ZEZtto5NMJT*j7$%l`r z_Yz>HK&&pUMi#=U77e@nB04BwJ56qu-ITArS62zo%G|2vH0EOm#LAN}AS* z1;O{0Y65?)?(biL9S>O<0lR$&-1@dL`0Fd)3`GD|HsXBDXH#u=H+-+jgqK6mt?Btl zb#msY(*ZJ(oJ4q#oi&k(erE6Gol_c8Q&MU%r3Q`r&X37Vm;6k`FS>}#RXh0gfDMXY z!^xsDVF)V&FajG9SMg$n&xN_ZGzRB;xo{vb*oA1`-F(3NScCf!|KkACPjH!@3{yF!0|rGY4$Nh6spPuwXlRf&yQ?=8QNOr z3@i`c$pWy4kMk?;qOpNTX2OS?-HAE!TT_2@5)%qPOBwddBI$}rp44p1%U1KvtseeC z?>Sed{n+(X2Sfef!BY)B_R!wfN?s3c#iB}E@!|a->|zVsb@>B|v!9>@A0}Tu6a&LL z$CIfBsry)CnM1TvhvEUn<3pDMO|n@u$^Bg5H@s5HYLn>4B-v#+7HfEv)$=RLGYq${ zq`y%r3M-m$JD?h?B|tP~Kfja+x}h0c|Ie$4UuL-R|hLMsVXWF_fl=I2XsC>!LcqD?ZfJOZz$i%qQL#|FY#a@wRc`ZL6`qWT!Jz42b(eMc!WTZ zpG~?*U<4djYo z!z=#ao8is300S&a&Qhb```osjX3oFSS7C`9I1(6um4H9;&;I-X$Sw#urn-6t|AA3W zO%i_BL^%9C=iTnpl1qxHocS%^Fu@%io}qV*HvJM&pwFrAmtzRn#WXaS_8pw((Qv(7 zJaK{MQ%>rU!+&>F>Yw+tQ&DJp(3n%aNag|;d~bR%TwzD)tC9B4S@<)X7`TW|LBFv8d8$TJ=P=}9=XD&)u#TpoO<^BJWpIPwdJUcIv0WcbVc z&*6_<0(Z6S<~@&A|ItS*i$7awF0-F%*Hu5N(}EFyn%)1rJ4H*@iwr~ECu&U6_^1spkevnX}hfhi`cQBuuu8 z@EZ2rM(f{Cxao2{`O4_&FR6Ao;Ct%tVU+rJ*g$h;VoR?@;!QvT$VJv^@t5+aj>JEW zKeaeatt4Izjg(ajDV@SFSm1Ya#Kiz^qR7>#p0IuKpKC!Yp2!>M`n^`hw}AyT^gnG? z)MFEVP*XIK`ak{n_-{XsA^;dT`cWaGuS&v=orb1pYW{6%SmK`d?<4%LlmGKe^#A=3|M?6}3*Pqs zaa3)=#-9I=qp3pn|9ZOroLVIEcar_*_y7LEVfn8u`|m&f=VyQGsK4XtKY#e|AN0Kc z_Q-$#=|4YD4&VI0+W9{p{{O!s^6vj?xg5x*ymore-f8wgXfj0Mlw?@-j@Upf}a-h6~sMzH0_%-0n1W=_R!N6-?e<8cK z85Kc~pTGZeREYv3%<|p@&x(xMg#~~A8G4IHgt>Yt2VT3#wnLtvp>5f#hMa{pM?g=O^9rJsgx)vv(wuj68_*GlT z{H(OGeW+vKmb|ss<_1(I+18r#HCn(3#=L*LDIPg?ZG8K~Rh|jmh7|qx)e|Cs*>UJ@Rt9zq z?9T`HKFbPD;10i`ox|OOC}n&X^{tgqG10wO47*eW&zgsr~#m!@PrM_3yU|q zUO#pktB@<}xALTVP(Jj!^HK^Ft56qdB3;UJf~sJGB0DlLP%@@*(t3S^QPN* z|0p_K6>T4NsQ2&da0~S(HXA~v!FLi$zEr4f$4%8b}Io7Nn*pc42stZ|4WUD9r-Cfpy}U!eFIsQTePPN~~v&=hZ)Qh{?SwZ!Q71yJuitLF`x`MUuto zE~Y|qScB%NJ8t`9qFmuNr_JcSp^Wj<(tP~Glwbe6P@C_>(5ocE?Zf5b&FNxObf(sR z_s^r6t>XPz)Bn7f9t+ERmWDL-qU5e;^#|a<2As(~ZD2|!@Pp}7N@>XVMt+Phf@N7a zfW=bnJJ-pp+=hsVy{hpw{}y0%P8|xuz`L>WDUz3Rqwi~IoEgW)TIv{N?e87dxs?g* z%{}~UbOuo~^?%lD)of?};|UV3N>}sYZUDCH@Gw6){K3Xr2s6yK3T@IHP<9xyzEBrVSP9UUCGEApIJ{0u@H?f@ih(*2IF zivBWUGbuN=>9R3Ssv^Oy4F7(4k`Tq)<~2TRdVBH>@f|a=J|62JH42DoyeScO-0<9b ziZD1rWzRtHzJs)bAn@V!8M5>n3@~3qmcoR0Hkv^tp^HzaHrz7-3RZ>w-)3o&1G;Og zVQ}-XZjg9I42Ec=F=nM(QOQz@Zr)1?n97O3hbmK8goC;%otOQsDJJa?)T})6<)Kcq zF6lD#Kn&cf9{ zzG&GCMMzKpcZ9)oj$;x#=kz3brKH@p*YF$*=LDXK`FpU70&W8S2rP#OQU!j%d2`M@ zB$Eb`*a^5$4Cb4dLdQo3*2Z${b6W1Gp%|rAQiO~0WjCG<`Gt_|w=V+741f*|tgoAO zhPwe*ALmb`9|bSV2{tN@K4Q8j!z4Heg$b2?dJd$%=r&OqrC#lCArL?P#Qi%~{jo-) zn|ldS{)>)mp?5UPU&%=&^#-4AR6TA`;L_AQi#^Tl2UDg>bBX083@8Aw(^x*hw(V{5 zq+?%zl>D$E(#>1!!%cW2wa-0{Krmg@7;b1SQZ? zd#+Ac>3^4Bz%%;qzuTKi#|{>^yf7dq4V4`~Ke;b(6}Q=_ncFm8??1-92wBbgsAaL+ z`{);xEdDSG+ciR#9JofVJ}Rq2(v8r26Cc6#+->b58)dj zJBil0;`;|Hu_*7v)>4M~nQI91=%d2w&KDt7mCCOUolE0AOY{U{b(U==M|tw4nP^o# zYTRhtkK7Xtmx^QM?W?+)J6<$BCGs-(l*Yotb)l{9EPK>}io~MKm^zQ*L6($Jl1n`h zQTW&Wskpt%2r$j4@%{@nR~V>o>!R0$KjWhX%BzS`n-uYo=F-SBz^^co-6SI-Icecy zsq;9JE*>1_hj9#yf57E)y{GI(|IfrSdX3(1I)nstjEqUFLeajJ)D4Ezt$~v_qQ_q^ zcONWg7*E{vmlh8`?Qe}IyPRe}QDhs}-TlVB*w8z<)RGA;kc$)Qj)uiG6=4!B`|1t0 zdk?=pXVd_c7cOiN$s=OM7FzIFg(JxUxuls_O`qTi z`QpX3-;jj7&bzYjMwDC97?;Uf$$;lFcW{5>E3OmbNYj=I4G&s&sH}Aa^0c$G{P)uv#pjFVFfUgH$@pa|@|c#3APp|Rkf1!;M55)bu}QQ{uv#=2{?LQ&5$CrRSEC#*Y!?N{vb7<~qUu5U;VQTHsoH ztl_$XwP|k6VGU)R4yo?a0(^$&9r?!<%6Bs;EiSd5M(_uUbYyzCOx}L@mA5nCxe6B= z(H5o3o;2}TWAi}d#joRrHcR#sh_I!!W77kHep-YDDe>rTdr|K6!4VH6p}w0aLYkl@ z>p`25@1-|8vgh!D0ot?GcLJ!I9p8OJYcMOopA?~8x6=B<8sj+H$SeP}IJTZc%p|yo zmUY{2?QVm-tfp%yNUgGuHHs*m4-fU*fMR=)@fuh~rs#1>0j-h7TrHJ0p8alaPnOwX zA8A-3us)k9d{nej)rr_$X#7N#K#r%#Yv8znTrKADsHUZ?F!mTm6K>5U9#%-+u#ae| zqJ;z_&@sUDJZX$~A?Xd4;`Lms;>~*Vq-~B|6Q92moN=}(HUYFhyR&+3-xtAt67TBu zSHF*(s>shzCDH_LZ!dpb_ajWlAMy(xA77T~qUT?Bq`Fajlc6teOiG~5Vm+h%u-4mC zm8L}&2y;lnNHHXiJ|e4jV&%4}9C139@Z#jJtXUV8kVG61O&@$1vbk?}-4FD?RL;b1>gQb**y8^SNIX>DG#Zsg|}D~B0%oRMf%zk%Z=+j5)zVPc;& zLNLlM@sbx#i6o#hn3FF4(j;L8swf~wA9J5Ks%8znQ_jhY9208ZXB!`-!?}$Qzca7F(OXFK=|D#d1LE!`Rr@;Kg1J-{*gLH@&J- zf+jqKOAsvn5VM!RvTHUCrUJRYf3%@!&o5EjaT~kcXD=k$rC9atqiPUjxRmx9W-$T_ zGW58Rj3oASLITQI1+gM|p->=T37zpA-xRXP2~`Bn0tisWfMA%RR?8iw{-cG|KTFy? zuDW1G@gbR#nT|dyvxwjDXx9_b3xSdlHEGWoqj(|2t2{{-G5m3ULv*Zn;_z%)d(BxI zN&hGBS|@aB$5QhW26&Z+V2!dUx_EZy$J>s8(#A0|SJwnnD29b-l<$xZ7-$eK5B{va z$xVk!pkNt$Hp$CX^fza`AA7QvB>%KnS zsf8FN1DqLxsdX$m170Xa*T@5$3P=Zv&LEmtK+pgwkTZ|Sn)7r;#c=7i(rS$H%YD=A z!-G=U{Gahuw&j*+cf$ijSTH{3dJBn>L-`!^Y!6l@-3&GIG$`I7#FH!t0~y?+e;bR+XglAR+GDKHi1BA-8j=2U7Q^OjeQLVe21 zRqm>xjfNB#*QY^MN&~;uoM1>lt?_=A=C(6=V+;`%Pk3c2ZPElAyVMO%|5^0%;zDdZ zcQ$>Es=Y1d^vXH6HY$_}UVN%4L_Mz{lJ9nN-{DV{X|bxaS2zV|CFRC%#1J+;{iU^; z(YcnKm%q4|@O6AeYSS*q5)@1w;{JFkjBo?98pkcyEV~bzR~I_a5KGPs*X8FEwgqTn zzxLL(EL1Jb9)_Nr@R9yD;nnv{oJqnuQfeA)p<%^z((P7#X_!(%Ggenigf$r%{V5mmtkZ%+Y{l)^QWc3l8oRAsS|&Q56HJo%!VdjL&p=3h z_WA2}J5UD>6p$n^5_kU)J8qvRIR^p%`bELqRtDgQRKMI*!KZp7u4N52%OZ?)zUB+Y zdTT}7(BBQOnLSFCV|keAw~SATg4+iu@*#~op)titKiQ9C8=pOQO5QZ!Ij+bNY=UVlykrQL~#~;!;85?rvUbL8}8!!tZ{YU&8m$Sjq`B9;Is&{beS# zk+|cYwT-liqG5b!eRev2XDnT~l?x`Rjh&k)8I^X>xT| zvcjY8P(RQ%&9r=y7hVo zF_F;VDCf4LZT8-U6W^IHBJ>ZPr9kX3?b)N4o4rzFaO_tuEQS^1CtDzM?2Kj>JJe=Fr`1P|kmQZ0a6S6nw&XRt}XSE=LBRt1^7NX>~-U+ z9hmER94W_LvsiyN4Q~x3P%{Ad?ruzaGQLmfZ+Xp}@SS?zQ3;8&{uWGc`z|l2T=qGCOL6A`Iw#GSCyerz2tgWRD(b^H}UzY5!s2d*8AqbyGY%L*sA{4uu_$`Wc`7x zDU>>(jMBYbx7Q7f*X?0MHzdE~>AmyaDSWA^#?L&WjXuu7qg9 z^18PEMl;4cNRPA7>?I%nGVkaXQn4fYwBz0N@t`!I$3W2^@Y1Nm!2Ray)vk+|wvEEU z*srgf;by=9Y;IQtvmHV(%+$X(Pfh-rM_26lpxoyO(>=SHgl6a+Voa5v*mg0Q&#|iD z6sD-K)agSp=O1(x;W?mgA9pS;yeiZ;>h_4!TN5M&ukWhgdbhTrSBov{ zsnFGKI2?Kva~Ssb`}cRRl;O{kzoMIbJu&kzi`@tqwmj z8V(lQ1Nd6y2Rso7{$~93j`w!`fJRFw1+6~t;0Ct-x|9Y=Q9pY4=|pKiOV~}0NAava zBm~*(C%sx5JIrr~=guCJIg{Fs>(`ekW-A+yxpOK0a)jG;8GRS|zmBKp(PA%JRvBS+o_m)}*%T#Elc!Wzh z51&2R@fAN!@vRC&2XI#P5_uB69;i3G1JBzT98@e>8uzow<>?7*lCAa8u`)75o^JuQ zk2dA!u!YihTqhtZjEndK=-$NsCB^D?t>Y^{-?u{ zY>j#@_d;YD5|>uUcD5&*d5;EoIjqjzw5}WpAV+a73MWA5018TN<3ZjoZ0SMr03}p; zobd8ZXsx>+@wydhFxTR#r*7U$?exg2w>HPj;G6LMLLM_Z{K8;gsBR*R^0pi6;$@>~ zf4Fxyz=|5CfNqx_+zTG(RWbHx?xI^FSZft}poDS}nQ*A(zh_-TTRuv*_*i8OWCzIoA9)Q|Z)4mE-yI^;(aO&2X7-HSmWL-xJ}zO^Uc+mF_R{TV61k#%=BU_$=428oe8|J_auU813~OH~JUHY#fj$ zalQ-&)`ZfhlUViQ1;&v$w7th!|Ec82OO{)g!J!mh%p@RQ#rvvVOj>)C-@clZsEb&Z zzcbGe|A~mV!7S`yH~$f^U*L%30`V8|Yy!)^482ieO&G%PuuZGJn+cZIEoxKH%XiBbv_t*O2w?4Y#M32-YVcHBB+q33!*R?BR+VZWmp*`CVH^7#<+Ggqrkl55o z;B{2?e#cW2KFj^nd?yIze$aj*3$cLmh#S_Z^N<$*{ufs$GowWgMWKKTNF4jV(|5dY z2GB3E;Hl^KnLQ?J1#OpN!^SwjD&Ln<@uR49MkR1s%uG`$uE?)0hQTg&nOl@#v z^Ll0v7a7qmva4>8+Ep3PdYljoA}pUHEBe-m9!hN86lZxjJ?L(m{@p0J6}mjPv@;1+ zKT)_mDur3lBc04~7L>_GQJbXPJ%RAwh0J!zUnhEW@b3NowXiw#3*Vc+xFLEyJ32ou z^~v4{poABzOB$EABri9KA#&4{OG5pn@^qNlFii^uEU$jaLe{Y<3h(~88uxn3MMYLl-^s=HjNYtd+!f;n0s6xb^N-Cu)CFOA_cbR&<24h;*sR_7X^C>;U;^c>U`R<^yY!KuLhk^ zM6V_Eq)Gs_?8Nn-@(c3z#WDMLQxac=bfp4lIs=sNQ^UtU^>9UR!rm8QSg z-Jfcs`@JsaH$K8h3uCxe-Kf+wxn!F_u*{w0>O^5=0Ii>KYpO>Zj^3%|HAs zZ9Qzrb2(X6X%i%NpCO`tB6_@ziBp~iSAC4kN%!tpmDH$DLj@D3iUBLB&rfWn)7Lvx z++#z0o%E{owS>FHO3uc1w@9#MEAem*e$u!!^^2xkQ*+|tHx82KCKBrt22?Q-YUF;j zqh(}wUCuWjB+hw?#J%v1;DJfHCRF>8N5vv>efpCm6@{{>+g6wPIWp z_*i*#i2nh$phoz>&-vq*uU~0{_!VxwD-&LU%pYKD69)sx^@6)hHz9cho)xkpxqmJi z4b_9+KRPV%i|4l=4?aus*2on1&*<2{UZ~k#A!BWj6u2C5vb8V`QB-dC8VfEUIxOt` zlP7AX7_M3vht9amQiX@;&Xxf~R-)@LXGAp0*`uJy0N1}{>F>{y5j>^00GWue> zBHEOcqdV+9yr5Jq9B9#&xLR(c8hrZs+I-K=-Pw4< zXW*#x+?*FEF6Jt0G^-2!?crND#6Au`;ME}v6JdLGfz3ejg_)_gtYc%&ZtWMRUHtHX zP!aze(GA_qt86vzS=A3~Kc#_JUTe5VEO?a{q#fxOI~Dg1J`zKJZtsXLPmmPF!>FjH zNS6qZD9I5c)d{m46SRk-i)>utAe+*6OIl$z8ePGo&gi1H>*t%Fiu!dW3whU?O1c~?dIfVMRU2vmzFB66gwj{^cX@IDJ?h-9OnXq00mW9ZvW#A}w#WbF=u z7SEIhum}HHcv8lHd451O+?fVuk5gFVZM~Z~KTobGT9LQ7R9}`H%ge2mQs6?)?F*mw z0ILK^j!*rn*X58>36+Nl4n2u}S8g>fMby-EYPD9&l)efko!O?maB|`Q7`qVz{7?xq zNkkL=Q<){!F)}vXWO`IT()^%i8!6lWhO`+>#ED#!lLS66M(BXoIm1|DXulO9-V9LVqdBL`G5^DDwHV>^D*6NGgvBp{VJP)xA&;+5 z_&nliLJ6|%4SnZ(H1`7Tm)g_5gKU>`I(PV24yE(f;pngl=v{$6*A$B7v8@CO9%cMg zO~zaG-L(R)7GCAh$MG-I9vXv1+aLbHMr@w|$udarUAAyXj$hZ&`qgN5N6DBAw?~;< z5(WW#$O;#veBt5TNJvWy>e%=5Sv*$JcQAI^tbaZG&V~dI#Pgd|z4rb!=Q1x4WJ{cL zB7D-QvXkdZ%O75O9+mK8TrOQ*Y^wf^IC@1TUd@_!R1?EbtIhUj6cFpiq?ZNRM6T^=>qk8aoyAL^ zlOl60IXj-($E(Y(s!^vP(%Z+4XFzfF!aH6R&A>-q_g$Zwu__cS zd!Ucb4E!j7x7JXWP`*ABB?io%&0w4M5(Lg5qlLUVC|E3EWplj20l2s6{bPK1HB(@e zYmewQLEM*av14}NOlOXTX>VUd@JCOOJlm3Cj4(5qJdlF?U)t>@eGVm>K^+)vZWY(0UBzSB8xo6+h3CM-oK`w|`kNOv7*x%ngkOOX2qN}B_6 z{Vz^3Pc^{1@t*;e;0cP~lF=y17Zk|a(}1XoX54DdEn=|9@O7Ork~djOx8G1VO_#Wn z(P@mDleU4tDRio2e#Bla?Di6bS`~Shnx2-r4_>@B&L*YN4286DC#)-7_J9nop!cR- z3Y_hD*VJjsl|#b^(u|3j0Fmaj%ugWU)BAKHJtVFPMegIBAipFq-4oX zNLfl9LP8iyA!E&MnBhp2wWMrAkv%3RWEmrhvhQPG8cYnv7-KMI=DnxR`Tyg5dq2K! z&j)GDJkNb!_qF`4>;7H$d}DUs0wM|n-X8EW%pS-208|Y&6CS4TJOjSzQCVE=7tdFk zMLzsI5cI6Df)1!~Noa3H{e^ko{#Q5%`8I@|NnmFi($ogMtf~hZjr(tbZEV04QCJ#s z_mL9)ViwZ5>&0wZ7uWM9kxnI0JLugpw8uS7K=;?%Epf(WpaBh1lMjdom%9#;%9lOt z0T(?2hfr!Lb%nYC{`x9oG%vNjU5(xX6z95X+%-~N#p}Ghr_@yzebO^p18k1_8xX2` z;~I`O+3jYK29Qq?<<48T29av-aQ90CjV>`o5hA+WpTqdh(|~M2)$aDL9T1z6N{;?U z=4nJU;3a++{Pmfe^CSJ5<@6#&>))UA))ddk?NgfX*|v&GsWK3U>7S#!}uqaDV~{bAefM zib37jh^v4{14sxXXS!U*h`sb!*5ay%3C5L0BmG&VkTG_M2usTV-mcS-p}#s{Y*P3BgJ zZ#JnYSm$aT=rL`Q0jGz6#!uZ;xYSJ1Utdd^U@Y0IfWXMHAVwxA5rG75cVO$qX{A`1 zZ7m{SDbYjU*vlLS_6bmzrxK{Dp+!3us=WE}v;=@C%qj}N=?|cO6Z4=t542?Luk(fV zTRKPyy5FTkJG~m9>eMWlvZe2)k1Bvy(> zJ{A1exfQ{Je(O0u26&?d*DlS}500!0Z4b31eg<2ioibOnCem-C>^XYf)H~_;m@e@d z-Q=%uJjp3y_@Br!=~*~iL;?LMtc7eXR}m)#A+QS-&=R6g#@t92Kux{7 zNPOnLqt4C`$~zWf-WmZ_JP1%2sH~g{78>?5wC>UFN(Vd_31XsVON6Gial}sVLF&V= zyNv)!oYoNf2%u+^pf4a+Ib82{N99^7TlLkfT?7^Rv15(oS^w=FSHKVgKh=l40q1fk z6~e)W*nV$r*{|D-6(ZEDLdQGHMZRc+6;?@rGawG3c|gRuG)GIP2!0j3ge-t7fSU)% zBa@`8ggZ&LNGT0r@C68`a)oHYE|_{%Tbm9g{_TDz-YgXN%`PQe9Kn2C5&pnrfsI*f z&{;<-dqpY}TSI^%C#NA9-*EIZjC=h2VN}aweXB~WXKAtPE6>kM198>%8dklGRp#(z zl`?L{o>`(M>_R&@u;IR3a#Zlmyo*zsQsl1b5;2r@{i&VFlYVMJymrb`YyG!4J53-3 zl76OSWgHQnO-1`z88fC!@iBjkDU#4A2Wl9pqUgLluvzemJn03B?_>3#ITNs-f$z}* zGUk-6jF!D(TACQ1{*hVQ+C@KIhReG!?|rm+o-bq-v&s^IaQZRENoF$hRnz=QYLVD# z&XEdh*q5M)1L`m!27r|UyxuQ<*kM4^m^!&!?%U_?@mSe+XzJwQk!WYDhv|C?ciGfP zpn0l#L98MHR8-oXbD88n*67_P_l3lzG5))^C8smq#vGJ=Ku!5&m3OPjx8woPBK--H zAm%P4M6_d0yXd+@6q7-Vq3g?5GCz2DVRCJpj}iB9-u@^&XJZI7Zu?dHAzoYa1EW=S z=1YqB+IsYopkH5A7l^3IDgCMXX;H#XR$0_2(N z`-375hgq(PukQi6wOrc_ODNDqIY#>v6F4`^yW!M*%7Ws=ES@^b>UGUMQ%?kc*H$ zl`I$itEOlhL@9a6wZ&Ov32br1)h2YjHGZ(xolyP8_9y%Pn#@;qxgDHXw& z@wT9%^}-1`Rjnztx8o1g$btMyssun9R69+`+i4ZrzMl-JNU#M8a;EH6d61>@PxjV| zoOGz(GM4p`%zsAS{M%tYJGb6ZGG8KbePdX{WI3A|Hs)W$xb#ubS}3QfhBIDZrU3j} zcClfHRZMx-eo*<=tR}ld^WzlM*6-T^&gkIKZX5Tl%07`)pTgr0(K5h|f%db)7!P=} z5)~ecp7eh8^P2Cr8uNA}jL;l{XlPgSITPDK9ZFAAwfow4wv(ws{Y_dl!tKujlFXDg zPjduk<-wNZA|_Y@(Dicm$8(x2(-eh8_km;%;0ZvAUb?~^4?OLFL^!){MEHHF*QnnX z_Mdy6h%Fk;+{`nJP`+@N&w{7UW$r={U-mDLe>+>;Qu=O7gtk2o+&LSbv_&>SjqE*O z>tpxu!kR{*KuryhD;5a0a3SLvnko^*MtGwFne7TDKNTHA3JW& zb0v@wOLgg&PF>D4dO!}OOVRm7w!{|eW$s0?P`GeW=E^77UBwFoS2kmG_CRb0Q%!ol znm$Z!7{smE<3K!CdJ1+*|8q%SWiMgM=**E%pFTA&CyxfmRo($-Z*7?W_y3WZFd5JnsD)!x4!6B8@@>($A4y(#!4DYB1ESNEF9 zuN282wV(V`A2CUN9n&HlQ<+w@^}zj*LfuuGGb5>dFbOxTv5rPYHpGa!I+II#t5>3) zef|(8^#P8n;!6uyycn?f30*d`vQ`>q&Rq3jUE<`RO5Q# zfgW-&_7yr_?*pgRCHmC&9X~sJ@Y|i5lTz08E~~#7S411-?zF7SHMS1Cd441=+I)gO z(pHpum5r$1YjfZsG-erNH=li907o&(N>m|Vq^B{5(!7gDWzICi54r_Jtl+8?0uv*Cl_KcDvfxZP%%{2!KG zs)!etbTn(Ydm`r&Me^QI#Gl=vx#1cWYJ_fN~XZVauS^?ojH$`0Ho-h;ODqdFv zC5*qX-64SA_4lPSWr|yS20k47rXdEYF|&7fC}8g~*WEq3)VA21#jz&v8It2ys+bYT zXrz10@gY2JnFijzvqMx-QP-;W#e&clNVNLzg0EY$=L~eMw$zxFQ`oMN637ld8uwQ!BD*b3P@hTuA@(bSaoRu|Hamtu_$ zf+t>B>xj{{;;MPKx{C{BEJ(7ffLp@xQbmH*MS^2Z=tuDY3G3^z)PNTCzapI1YsIxvQP45RB4I zobwNKlnaGOdm2Pld^b?euR%BN$n~Bcq^*7G;NMcy{x3Kf{jyi*sLfWgn}?>)7v3|x zFum@hf-*CQ&h=ZP4YbRRL^QR{Tc-TqC|p-#*xO}iTs;x>Je_r2sK7x14`0SRilwU< z3TtW;KCHYfl6-l^R*SuQ6_uk?P+Hdh06}WZA>M>#{5sdN-0Pitb%07&4!_#!x7{o2 zF79F9>WIciudV#&HzvG?xWVHrkwhK4QIcy_DS4`Q*-jO~!j#D}pa@##x#X>tE#bUR z)uZ*ZF$B{5Fjkb0kJy?foE-ZX*8laATRsc>F|Do&=vRXETi@qNg*cBRT^H1FZZdXu z*+)KO{F7twaKVD6_`3m&0!7}XazBDE%SR|VJUo7~$LzX)!kvLu{Ph#@pPPp;VIwbx zoCP*hwq4$@mJkLRiEdp4}|JO5{G8R;u$9I?UB5S zf-rc6PdCX}#>26q9T%V6LR%SQS|n1VWBw! zHY!DpOnac<`f|3PqF~JO@E*LwtJ|eux-b3=4pG492J~L>BhNEm$Q6qEp!CHGaSZ5a z_B-D54~ZJ1FRSD9v#EYvs|}R(9nbEwJlFKI_kk&Z?}Aj%t)86hIq#Z;#roPCjPJ2J znHF|2B~ewFBm0}T3FB{L+MbinfwQP9;Yj?R@WYv<-fH5I4ASyvl*78+DbCsz1j4aW zo^9uW!b)0Kd*%f1T=haLn6LXM*H%Sduyx7u#63I^a9Jp-#6hk%{hBHtb%(%?^8Jn_ z`zS-Tp&UtAFo5R01tYK~&Q7&hsBxX#B6p#~c#}>m9RhaSy!=~BpWkYBW!wJltpn4Z zpVw3sx4A40x!m@XFNBttlDftYHe)O4yhqO->7n9457u0T%F9pJ{^0_QdbQJcr8Bfv zu?m0C;bdtNX~t89Bl=;pu<^) z$ab4d;3h@_={g1>tk=MX5{o3_^+NCO&ycC# zH}&~Tpo_tU}q{jXWva54xX;YbLcSG~6XVy5nYg!9auI^@h2bR&(b;}fOApEv^ zIMvZQ9~C|@@c_6(i?kl6LL{_F)IUkGvZVrDwb=PWorbv5^T5%7K=1~Z)GBwVtyy39 z_A|0p~V@Vh`%{Sg`}YBF&3lJbDkrW`1-{1ExXx zrhLQPCuPt|QG&l(bkj;?qdqu*-tQ1a+pT-O_QN^SCHFZ;b!c0_ayivrR$krA|3Gr` zTd;NT0FTEz8adIssj0`hE(?Sr7H>_oU3Jvs%VgQ}8 z=jhac^X0Z?RJ76bB}24`(9Vwx7}`56F$QaU>)iJ)>0;oAn{UdDynC z&D!@Sw+$R4TqZzXIulxzGf=^CLezsCb#`qYo+oO+Rl7Vn#F<@({7>hs`^?U4+qsiO zH9o_ptzDH%CUs1EE?bg-hN(qOgICV5Ycp$SW=&!5?O*H$H%ar|T^TjMN-Y`&aT60; zKf3O}x2TNb0E7UHB2i}w#3WEPN(O7O+tO4cD1*@4z(XFL`Gq~5*Q5WQDrGr9VHQMP8>;fl7dter!6dSkmi&~O zN%En7<;Ez2g5r_Ra%=4+(JtU?m3&yU`-n@8i;f1;=8p*dz}{x!VTpd$g--}TQ3gv& zfuaDjds^Na=AJq(ttP(_9R$_M(waXtdsinSrJlmKK=hZ9;}F59lGLpC*XOjVSoJWt z|6ktaM$v%8o}0~8QqnQwSF8|1N{zVj)3%rXEZ{S~c&c#sr~p6T+Kif4*027w{@b;u zrf|W>Jj!8{ddjKD@y;49)evCC6q{*6b2S*X+D{LkoSgJsjTexOdWX`_cD-^o4;b{4 zg+N8rFg&qg7(az>`s%p18)`*~zp~=9zE?EcYYD8Y&s{i2|0)5HWCv(WU`x$Xmb3jD zvwnR84!3)|jdHK{F;9MzlaiwGH!-b-M#$jY+znnx%VN6Jg7<4j+vi?=XbSxVjhk!n z4tTrLQAn=zlNEZ>g+-p-6zFSYjPg-m?&OWkO%MC6)^~>=pZGMrszY({n14PcAgO~@ zF99cpS>ld;Ih+~5s@zo-@`e6>O|!60%)C*4!W%YpDUQt1So&53|D6I#PPV&Gtj-ss z-0tjm4BpTlMaPD~fJM9u&L$T7Hel7LEznhi%Ltw;lUV{od)%?}Rsra&dKAq2%P;2- zET3_b6S-X)v7(v@=6LW?>(J#%#IGF;EHE<>Ul$XxJdVG%ih=K$)GH^hMAZ*OYYGDs zivi9MBc-AEyY@zuGIl^bUQfnEBe5SJP(>H3B?=jnXt`j!y#%0+T>(6P>Aoy%$hOc} z6SM)%`MIRt3=!!vzf@fqd?Qo{n2VaGBCra2ASyKx?(NX>28frkCWQU~oJWR=VN`$r zbg)Lg3T3j{8zGrFs}y5^^SXhfzO@u@NG!LPWh~N*nHT)#fYR@LQ%F274I*n>wbiIb zV&L4eTf&WxF%~Q;{hx_WBjQE7fZRM-%X!eWMoSHCYZ5RagXb4;uOq?N8GwO+XP$bs z|G=*sF{oQ}ciJa)!+-*cL))%`)$ErBY95O)VMq9- z2kb+17^$}emV`#sWX zlF_6UeyrpK{$8&RsYY|RINFNG`EgoKv};@-2OrxVkJsZ-ksACv{)i8wlUke#jA?N^ z*R84VB(;CKGGz9OZcP_T-`OjB*(Md z)8Qi& ziFCiJaE~n^$Nfc~ot(@8UI#20VQ3XYnJXJP(@r_u39Z!2loI~JT&2NMCb<82xbvqA zH=sH%WfhGptS8S)9@~9DD~`7qz~tSYRftrJx3T5d%6ROZc)P#!dd#o)*TRAf{rtN* z2OaA){M;ZdF9=JV z8<=<(axrBYd{2vZS|o=w%uK04L7DA|>b!vxs_wVmx3Q z01xL^w9po2xM>fm;R;qg{+AAbj6RpQhFS^1OrM&{4r(i8xjb|29*S|_sc7SBq{1c) zT^KQWZ+7U-IO}3k3+=5Bo%M+KexDSAmVe7%^j zxxmYJrSwgErXS*g3$8BL#LT7Dt+=xy;zirsdj}jofPkvXVgMCO^Nnn2@qQ(N-f!O9 zr_@T2jr4lq&|669;y`6s+=qLCUjMa_#gbNlj*dQpQQvjefvktY8U$gkd3)#B&zqO1 z8(^{_fPZ0?U_FT{0{*EABh#KYPtiT;Ak}p6axNX@ahbZ5DIN!HMHYedF?`@%bO+k6 z;^#6~WH*Kkk}xG%x>K9Vn>afUwNJ6(SZQ_Z<2S7iD8TRzz!@e|z>ch8{;xvmkDhTL zv%O0+m3acqYVK|)n(_f?+&sF*v_#UezRW26)@8SsXEuk~4&VUPZX94H6##9%Y<#o8 zJH1_}@_}P%5hh#*$Yl9|xLmo2DHz>}$=Q-}^BUjX8GaQd9S=FK+Z8c>Ges5Y-Nwbo z7lxM(>;tiK0w3C2FS6pjl*Y|dpAzTyHZ#lH>Ki=ZCISS3p=e;Qmp8y#?D z7BK;9RdhV9p2EI4DU=K_0JkV6+~e^x*N>8>jSNSBsq_bdhlJ^rPv{*jc4X|GE1Vz% z;(0^QN&II{<$>E;2rT>Kv?JQ=g1wLGzad7Dn}+A;2Pk7uwF61K^#DV2!dZAYComq1 z%>}~X70^&w61-uyd92sa2Dg*G0JCd0u2Mzm8yMSm82F&^26m+uLIvFNS*41DYVyRo za|c9$fES|(ATJKC$8=4DYUr?R0AS-F7bvL@g7px9H9Q3OgdGjs8=|d`US;1eEghO`T(_iiGzO_zN_@z z`H4?&DzQI+IJp!_1h$l@GpBjRY|VF+EUZN|K>9C6+y#J(xBGp{V|S4>@Q^Z==@Z~3 z^7i#KS2J4)AeX#UK9Dsd#v34o@s5fKSUA^l!`kW}!>8vXhzOkRz=%@=NXu-$rD^-| zqveJU3H1PEtGy6wJ7xJL7Y9PR2eHj=dAJg;(Z6uCPk&PZ!GmU>b$T$$`Q5>mhW`5Q z!>MOR45}ZX!Mc&iLkCurIIvufjY@=G?E?p8lO@IO_}0;cuC3X(0*Z zwO3Dk0JWH2k5`AATTsy)OQTs~@16qXrHsYZ@_B`2kgu++vXLowW&>HFmx>lY&0NEH z0T-8VTBwahoMshZ8T1E7ummMm%CEy$-~QraCSaF5d}@oNX$7M7WpcQSA|PUK9L^@xTLQqs~+7>7i<*-??=y2)dt zXk%Y*dD4l-OWRnybzh*j|-0m`}N)>3*O`bH!haIsqwq*Oa45yxq5plje zbUEP73%Y|9DpKz9;@Ef#s=)Bfr&E|8+$;)$cakhljLCf&s2C3?-KNNoVfujsQ6W>bUaZrykVq;u(44VI9 z0{E0dnS#rDHF9Br6|cZ2g_aOT$3fA?bhCZ(?i#I&U{#&pT;Bm!bfDTmxGi)PK_L~F zmlzIS&i3<`C)~1m@g##JU663KwnE~lz4NguC^)7q1$0YI+B5z@L#x&ISzNcUW`1F; zT^yMEAS*lPgj3$FsQEZeoZf@>5sCZF@#oF@~8n?VeRnL$^6#T*^kp;p}yMra~P@g-Xlm zr=tspvBi~)<=WNj1);_3O_@b4of$27Ffd7=5cN||Gl-NPD(BYAVRd&GI67itVgCN_a^@V3-_BD01I?iZpYtmwWSO~9%g4zZaN{x2w;G2=| zsf$@nU`o@wijQ=SbO)wVr#uQ`ng>>u{ap3o_wNzU)kfx4BbHnGu&>KYWcJ72(QA}9 zNbu;jM(bZv%3fff-ApkFml+a$icSmk2(UCUS!IeM@MBt#=7$!4a%jHaUvB11md)(j zL6V%@FA$8*zwT31Mt7Ng>*ezzQ4^A&e0b9#*JtmIvtI9{hcz^qn8aVZq{SU{W zAf>&B=DY-xwg#F1v6*S6)i(%N^ge?GCvooFQgeClW?qclh#S)EKBJC6$jj5K#P)Hf zA;`ChC}J~3V}ukDJ}hJHwsG0mJ@}5Q_;s$bu0Hg+K6ldmx$|)l>3nr?4AXc+)`nxq zIqwT1z3o~0UN~QWceC0&B?#pGzRlx={Fb^ACU8DW+32u1FNKS3mH_1Jna%ToKtBI# z4v;+tn->QXSox16zW)0I@oo^u|LZ(q1j)q*=T06y SqP)xz%0+E`t-^CQfBg^r?(&-e literal 0 HcmV?d00001 diff --git a/website/index.qmd b/website/index.qmd new file mode 100644 index 0000000..2f36ab1 --- /dev/null +++ b/website/index.qmd @@ -0,0 +1,48 @@ +--- +title: "Ibis analytics" +about: + template: solana + links: + - icon: github + text: github + href: https://github.com/lostmygithubaccount/ibis-analytics +--- + +***Ibis analytics with Ibis.*** + +![Source: [Voltron Data Composable Codex](https://voltrondata.com/codex)](img/layers.png) + +This project uses: + +1. **User interface**: [Ibis](https://github.com/ibis-project/ibis) (Python dataframe code and/or SQL) +2. **Execution engine**: [DuckDB](https://github.com/duckdb/duckdb) (local) and [ClickHouse](https://github.com/clickhouse/clickhouse) (remote) +3. **Data storage**: [Delta Lake](https://github.com/delta-io/delta) tables (local or cloud object storage) + +You can mix and match these components as needed. + +## Setup + +Install [`gh`](https://github.com/cli/cli) and [`just`](https://github.com/casey/just), then: + +```bash +gh repo clone lostmygithubaccount/ibis-analytics +cd ibis-analytics +just setup +. .venv/bin/activate +``` + +## Usage + +Use the CLI: + +```bash +ia +``` + +## Development + +Format your code: + +```bash +just fmt +```

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 djG2WR^DxuQ%5 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