From 2fdd348a1576350053ec59d2725a2ac28aeba2e6 Mon Sep 17 00:00:00 2001 From: Vladyslav Fedoriuk Date: Sat, 28 Oct 2023 21:39:02 +0200 Subject: [PATCH] Web App (#25) * Set up the web project dependencies - Add linters, pre-commit, and GitHub Actions - Add a Makefile - Add a pyproject.toml * Fix pyupgrade job - Remove continue_on_error everywhere * Remove old code * Rename a GithubActions job * Change README * Adjust pre-commit and GitHub actions * Add tables and set up alembic * Set up tests * Extend tests * Add coverage config * Adjust the GithubActions workflow * Fix GithubActions workflow * Try fixing pyproject-fmt config * Fix formatting of pyproject.toml * Fix formatting of pyproject.toml * Add coverage report * Test listing the repositories * Add a working prototype of SourceGraph client * Add parsing of the SourceGraph SSE data * Fix tests * Ged rid of packages replaced by ruff * Fix waits in the SourceGraph client * Refactor the models and add a mapper - A new mapper allows to create database repositories from the SourceGraph data * Add mypy * Try fixing mypy action * Remove redundant configs * Exclude tests from type checking * Fix mypy pre-commit and GitHub action * Ignore factories * Make upserting possible for source graph data * Add logic for parsing the dependencies and populating the database * Add a database and a cron GitHub Action job * Try manually trigger a workflow * Bring back the old config * Add ReadTimeout for errors to retry for in SourceGraph client * Add typer * Adjust the docstrings * Update the database * Refactor and optimize scraping and dependencies parsing * Make scraping run on push for now * Add a unique constraint for the repo url and source graph repo id * Change the index columns in on_conflict statement for repo creation * Optimize dependencies parsing - Do not parse dependencies for a repo when revision did not change * Scraped repositories from Source Graph * Refactor scraping * Set up frontend * Scraped repositories from Source Graph * Add TODOs * Skip scraping when testing * Fix a test with updating the repos * Scraped repositories from Source Graph * Add some more TODOs * Scraped repositories from Source Graph * Add some more TODO comments * Add chadcn/ui * Scraped repositories from Source Graph * Create index.json * Scraped repositories from Source Graph * Add a draft of data table and display all the repos * Scraped repositories from Source Graph * Implement stars badges and description with overflow * Format the links to Github repos * Fix link clicking * Scraped repositories from Source Graph * Add simple pagination and stars column sorting * Scraped repositories from Source Graph * Implement basic searching * Scraped repositories from Source Graph * Implement a multiselect for dependencies * Scraped repositories from Source Graph * Implement actual filtering by dependencies * Scraped repositories from Source Graph * Add a workflow to deploy nextjs on github pages * Try fixing the deployment job * Enable static exports for app router * Fix uploading arifacts for nextjs job * Set base path to properly load JS and CSS * Fix the base path * Scraped repositories from Source Graph * Add header * Remove language version * Scraped repositories from Source Graph * Add some more TODOs * Scraped repositories from Source Graph * Adjust the pre-commit config * Fix pipelines * Scraped repositories from Source Graph * Add a footer * Create the indexes * Scraped repositories from Source Graph * Add more TODOs * Introduce minor footer adjustments * Adjust the scraping actions * Scraped repositories from Source Graph, parsed the dependencies, and generated the indexes * Implement query params state * Scraped repositories from Source Graph, parsed the dependencies, and generated the indexes * Do not commit query state on unmount * Scraped repositories from Source Graph, parsed the dependencies, and generated the indexes * Hopefully fix query states and multiselect input * Scraped repositories from Source Graph, parsed the dependencies, and generated the indexes * Extend the Makefile * Resolve most of TODOs * Resolve the conflicts with anyio version, bring back httpx * Adjust the Makefile and README.md * Fix a typo in README.md * Adjust readme * Fix the Makefile * Fix some stuff * Make some adjustments * Possibly fix failing scraping jobs * Load the repo project URL from env --------- Co-authored-by: vladfedoriuk Co-authored-by: Vladyslav Fedoriuk --- .github/workflows/app.yaml | 68 + .github/workflows/frontend.yaml | 120 + .github/workflows/scraping.yaml | 51 + .gitignore | 166 +- .gitlint | 2 + .node-version | 1 + .pre-commit-config.yaml | 53 + Makefile | 139 + README.md | 591 +- alembic.ini | 107 + app/__init__.py | 1 + app/conftest.py | 105 + app/database.py | 107 + app/dependencies.py | 149 + app/factories.py | 12 + app/index.py | 104 + app/models.py | 38 + app/scrape.py | 243 + app/source_graph/__init__.py | 1 + app/source_graph/client.py | 123 + app/source_graph/factories.py | 12 + app/source_graph/mapper.py | 46 + app/source_graph/models.py | 39 + app/source_graph/tests/__init__.py | 1 + app/source_graph/tests/test_client.py | 120 + app/source_graph/tests/test_mapper.py | 65 + app/tests/__init__.py | 1 + app/tests/test_database.py | 103 + app/types.py | 6 + app/uow.py | 27 + db.sqlite3 | Bin 0 -> 913408 bytes dependencies_index.json | 19180 ++++ dependency.md | 533 - env | 2 - frontend/.env | 1 + frontend/.eslintrc.json | 3 + frontend/.gitignore | 35 + frontend/.prettierignore | 3 + frontend/.prettierrc | 19 + frontend/README.md | 34 + frontend/components.json | 16 + frontend/next.config.js | 22 + frontend/package.json | 47 + frontend/pnpm-lock.yaml | 4475 + frontend/postcss.config.js | 6 + frontend/public/next.svg | 1 + frontend/public/vercel.svg | 1 + frontend/src/app/columns.tsx | 94 + frontend/src/app/data-table.tsx | 118 + .../src/app/dependencies-search-provider.tsx | 31 + frontend/src/app/favicon.ico | Bin 0 -> 25931 bytes frontend/src/app/globals.css | 59 + frontend/src/app/layout.tsx | 147 + frontend/src/app/page.tsx | 22 + frontend/src/app/repos-search-provider.tsx | 31 + frontend/src/app/repos-table.tsx | 82 + frontend/src/app/search-form.tsx | 125 + frontend/src/app/search-provider.tsx | 38 + frontend/src/components/ui/badge.tsx | 36 + frontend/src/components/ui/button.tsx | 56 + frontend/src/components/ui/card.tsx | 86 + frontend/src/components/ui/command.tsx | 155 + frontend/src/components/ui/dialog.tsx | 123 + frontend/src/components/ui/form.tsx | 177 + frontend/src/components/ui/icons.tsx | 97 + frontend/src/components/ui/input.tsx | 25 + frontend/src/components/ui/label.tsx | 26 + frontend/src/components/ui/multiselect.tsx | 194 + frontend/src/components/ui/table.tsx | 114 + frontend/src/lib/hooks.ts | 77 + frontend/src/lib/indexes.ts | 69 + frontend/src/lib/query-params.ts | 67 + frontend/src/lib/schemas.ts | 29 + frontend/src/lib/search.ts | 88 + frontend/src/lib/utils.ts | 10 + frontend/tailwind.config.ts | 75 + frontend/tsconfig.json | 27 + generate_table.py | 40 - migrations/README | 1 + migrations/__init__.py | 0 migrations/env.py | 90 + migrations/script.py.mako | 24 + .../90eb9d1f9267_set_up_the_database.py | 73 + migrations/versions/__init__.py | 0 ...9d70_add_a_last_checked_revision_column.py | 29 + pyproject.toml | 138 + repos_index.json | 81834 ++++++++++++++++ requirements/base.txt | 89 + requirements/dev.txt | 185 + requirements/test.txt | 123 + results.json | 15385 --- scripts/clone_all.py | 21 - scripts/delete_duplicates.py | 13 - scripts/extract.py | 29 - scripts/list_imports.sh | 4 - scripts/query.py | 57 - scripts/unique_imports.py | 22 - 97 files changed, 110761 insertions(+), 16653 deletions(-) create mode 100644 .github/workflows/app.yaml create mode 100644 .github/workflows/frontend.yaml create mode 100644 .github/workflows/scraping.yaml create mode 100644 .gitlint create mode 100644 .node-version create mode 100644 .pre-commit-config.yaml create mode 100644 Makefile create mode 100644 alembic.ini create mode 100644 app/__init__.py create mode 100644 app/conftest.py create mode 100644 app/database.py create mode 100644 app/dependencies.py create mode 100644 app/factories.py create mode 100644 app/index.py create mode 100644 app/models.py create mode 100644 app/scrape.py create mode 100644 app/source_graph/__init__.py create mode 100644 app/source_graph/client.py create mode 100644 app/source_graph/factories.py create mode 100644 app/source_graph/mapper.py create mode 100644 app/source_graph/models.py create mode 100644 app/source_graph/tests/__init__.py create mode 100644 app/source_graph/tests/test_client.py create mode 100644 app/source_graph/tests/test_mapper.py create mode 100644 app/tests/__init__.py create mode 100644 app/tests/test_database.py create mode 100644 app/types.py create mode 100644 app/uow.py create mode 100644 db.sqlite3 create mode 100644 dependencies_index.json delete mode 100644 dependency.md delete mode 100644 env create mode 100644 frontend/.env create mode 100644 frontend/.eslintrc.json create mode 100644 frontend/.gitignore create mode 100644 frontend/.prettierignore create mode 100644 frontend/.prettierrc create mode 100644 frontend/README.md create mode 100644 frontend/components.json create mode 100644 frontend/next.config.js create mode 100644 frontend/package.json create mode 100644 frontend/pnpm-lock.yaml create mode 100644 frontend/postcss.config.js create mode 100644 frontend/public/next.svg create mode 100644 frontend/public/vercel.svg create mode 100644 frontend/src/app/columns.tsx create mode 100644 frontend/src/app/data-table.tsx create mode 100644 frontend/src/app/dependencies-search-provider.tsx create mode 100644 frontend/src/app/favicon.ico create mode 100644 frontend/src/app/globals.css create mode 100644 frontend/src/app/layout.tsx create mode 100644 frontend/src/app/page.tsx create mode 100644 frontend/src/app/repos-search-provider.tsx create mode 100644 frontend/src/app/repos-table.tsx create mode 100644 frontend/src/app/search-form.tsx create mode 100644 frontend/src/app/search-provider.tsx create mode 100644 frontend/src/components/ui/badge.tsx create mode 100644 frontend/src/components/ui/button.tsx create mode 100644 frontend/src/components/ui/card.tsx create mode 100644 frontend/src/components/ui/command.tsx create mode 100644 frontend/src/components/ui/dialog.tsx create mode 100644 frontend/src/components/ui/form.tsx create mode 100644 frontend/src/components/ui/icons.tsx create mode 100644 frontend/src/components/ui/input.tsx create mode 100644 frontend/src/components/ui/label.tsx create mode 100644 frontend/src/components/ui/multiselect.tsx create mode 100644 frontend/src/components/ui/table.tsx create mode 100644 frontend/src/lib/hooks.ts create mode 100644 frontend/src/lib/indexes.ts create mode 100644 frontend/src/lib/query-params.ts create mode 100644 frontend/src/lib/schemas.ts create mode 100644 frontend/src/lib/search.ts create mode 100644 frontend/src/lib/utils.ts create mode 100644 frontend/tailwind.config.ts create mode 100644 frontend/tsconfig.json delete mode 100644 generate_table.py create mode 100644 migrations/README create mode 100644 migrations/__init__.py create mode 100644 migrations/env.py create mode 100644 migrations/script.py.mako create mode 100644 migrations/versions/90eb9d1f9267_set_up_the_database.py create mode 100644 migrations/versions/__init__.py create mode 100644 migrations/versions/ac7c35039d70_add_a_last_checked_revision_column.py create mode 100644 pyproject.toml create mode 100644 repos_index.json create mode 100644 requirements/base.txt create mode 100644 requirements/dev.txt create mode 100644 requirements/test.txt delete mode 100644 results.json delete mode 100644 scripts/clone_all.py delete mode 100644 scripts/delete_duplicates.py delete mode 100644 scripts/extract.py delete mode 100644 scripts/list_imports.sh delete mode 100644 scripts/query.py delete mode 100644 scripts/unique_imports.py diff --git a/.github/workflows/app.yaml b/.github/workflows/app.yaml new file mode 100644 index 0000000..a5c4fe9 --- /dev/null +++ b/.github/workflows/app.yaml @@ -0,0 +1,68 @@ +name: Python App Quality and Testing + +on: [push] + + +jobs: + quality: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [3.11] + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: # https://github.com/actions/setup-python/blob/main/docs/advanced-usage.md#caching-packages + python-version: ${{ matrix.python-version }} + cache: "pip" + cache-dependency-path: "requirements/dev.txt" + - name: Install dev dependencies + run: | + python -m pip install --upgrade pip + python -m pip install -r requirements/dev.txt + - name: Lint with ruff + run: | + python -m ruff check --verbose --format=github . + - name: Lint with mypy + run: | + python -m mypy --show-error-codes --pretty --show-column-numbers --show-error-context . + - name: Lint with black + run: | + python -m black --check --verbose . + - name: Lint with pyproject-fmt + run: | + python -m pyproject_fmt --check --indent=4 . + test: + needs: [quality] + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [3.11] + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: # https://github.com/actions/setup-python/blob/main/docs/advanced-usage.md#caching-packages + python-version: ${{ matrix.python-version }} + cache: "pip" + cache-dependency-path: "requirements/test.txt" + - name: Install test dependencies + run: | + python -m pip install --upgrade pip + python -m pip install -r requirements/test.txt + - name: Test with pytest + run: | + python -m pytest -v -s --failed-first --cov=app --cov-report=xml --cov-branch + - name: Generate Coverage Report + run: | + python -m coverage report -m + - name: Upload coverage to Codecov + env: + CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} + if: ${{ env.CODECOV_TOKEN }} + uses: codecov/codecov-action@v1 + with: + token: ${{ secrets.CODECOV_TOKEN }} + file: coverage.xml + name: python ${{ matrix.python-version }} diff --git a/.github/workflows/frontend.yaml b/.github/workflows/frontend.yaml new file mode 100644 index 0000000..c47fcc2 --- /dev/null +++ b/.github/workflows/frontend.yaml @@ -0,0 +1,120 @@ +# Sample workflow for building and deploying a Next.js site to GitHub Pages +# +# To get started with Next.js see: https://nextjs.org/docs/getting-started +# +name: Build and Deploy Next.js to GitHub Pages + +on: + # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_run + workflow_run: + workflows: + - "Scraping the repositories from Source Graph" + - "Python App Quality and Testing" + branches: [main] + types: + - completed + # Allows you to run this workflow manually from the Actions tab + # https://docs.github.com/en/actions/using-workflows/manually-running-a-workflow + # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch + workflow_dispatch: + +# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages +permissions: + contents: read + pages: write + id-token: write + +# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. +# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. +concurrency: + group: "pages" + cancel-in-progress: false + +jobs: + # Build job + build: + runs-on: ubuntu-latest + # Use ``frontend`` as the working directory + # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_iddefaultsrun + defaults: + run: + working-directory: ./frontend + strategy: + matrix: + node-version: [18.17.1] + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Set up pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: "pnpm" + cache-dependency-path: "./frontend/pnpm-lock.yaml" + - name: Install dependencies + run: pnpm install + - name: Setup Pages + uses: actions/configure-pages@v3 + with: + # Automatically inject basePath in your Next.js configuration file and disable + # server side image optimization (https://nextjs.org/docs/api-reference/next/image#unoptimized). + # + # You may remove this line if you want to manage the configuration yourself. + static_site_generator: next + - name: Build with Next.js + run: pnpm next build + - name: Static HTML export with Next.js + run: pnpm next export + - name: Upload artifact + if: ${{ !env.ACT }} # skip during local actions testing + uses: actions/upload-pages-artifact@v2 + with: + path: ./frontend/out + + # Lint job + lint: + runs-on: ubuntu-latest + # Use ``frontend`` as the working directory + # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_iddefaultsrun + defaults: + run: + working-directory: ./frontend + strategy: + matrix: + node-version: [18.17.1] + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Set up pnpm + uses: pnpm/action-setup@v2 + with: + version: 8 + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: ${{ matrix.node-version }} + cache: "pnpm" + cache-dependency-path: "./frontend/pnpm-lock.yaml" + - name: Install dependencies + run: pnpm install + - name: Lint with ESLint + run: pnpm lint + - name: Lint with Prettier + run: pnpm prettier:lint + + # Deployment job + deploy: + if: ${{ !github.event.act }} # skip during local actions testing + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v2 diff --git a/.github/workflows/scraping.yaml b/.github/workflows/scraping.yaml new file mode 100644 index 0000000..92672ce --- /dev/null +++ b/.github/workflows/scraping.yaml @@ -0,0 +1,51 @@ +name: Scraping the repositories from Source Graph + +on: + schedule: + # Trigger every day at midnight + # https://crontab.guru/#0_0_*_*_* + - cron: '0 0 * * *' + # Allows you to run this workflow manually from the Actions tab + # https://docs.github.com/en/actions/using-workflows/manually-running-a-workflow + # https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#workflow_dispatch + workflow_dispatch: + +concurrency: # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#concurrency + group: "scraping" + cancel-in-progress: false + +jobs: + scraping: + if: ${{ !github.event.act }} # skip during local actions testing + runs-on: ubuntu-latest + strategy: + matrix: + python-version: [3.11] + steps: + - uses: actions/checkout@v3 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + cache: "pip" + cache-dependency-path: "requirements/base.txt" + - name: Install dependencies + run: | + python -m pip install --upgrade pip + python -m pip install -r requirements/base.txt + - name: Scrape the repositories + run: | + python -m app.scrape scrape-repos + - name: Parse the dependencies + run: | + python -m app.scrape parse-dependencies + - name: Generate the repositories index + run: | + python -m app.index index-repos + - name: Generate the dependencies index + run: | + python -m app.index index-dependencies + - name: Commit the changes + uses: stefanzweifel/git-auto-commit-action@v4 + with: + commit_message: "Scraped repositories from Source Graph, parsed the dependencies, and generated the indexes" diff --git a/.gitignore b/.gitignore index 4604d67..8a5a660 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,162 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +*.py,cover +.hypothesis/ +.pytest_cache/ +cover/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 +db.sqlite3-journal + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +.pybuilder/ +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# IPython +profile_default/ +ipython_config.py + +# pyenv +# For a library or package, you might want to ignore these files since the code is +# intended to run in multiple environments; otherwise, check them in: +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# poetry +# Similar to Pipfile.lock, it is generally recommended to include poetry.lock in version control. +# This is especially recommended for binary packages to ensure reproducibility, and is more +# commonly ignored for libraries. +# https://python-poetry.org/docs/basic-usage/#commit-your-poetrylock-file-to-version-control +#poetry.lock + +# pdm +# Similar to Pipfile.lock, it is generally recommended to include pdm.lock in version control. +#pdm.lock +# pdm stores project-wide configurations in .pdm.toml, but it is recommended to not include it +# in version control. +# https://pdm.fming.dev/#use-with-ide +.pdm.toml + +# PEP 582; used by e.g. github.com/David-OConnor/pyflow and github.com/pdm-project/pdm +__pypackages__/ + +# Celery stuff +celerybeat-schedule +celerybeat.pid + +# SageMath parsed files +*.sage.py + +# Environments .env -links.txt -unique_links.txt -imports.txt -reps/ -.vscode +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# pytype static type analyzer +.pytype/ + +# Cython debug symbols +cython_debug/ + +# PyCharm +# JetBrains specific template is maintained in a separate JetBrains.gitignore that can +# be found at https://github.com/github/gitignore/blob/main/Global/JetBrains.gitignore +# and can be added to the global gitignore or merged into this file. For a more nuclear +# option (not recommended) you can uncomment the following to ignore the entire idea folder. +.idea/ + +# Ruff cache +.ruff_cache/ diff --git a/.gitlint b/.gitlint new file mode 100644 index 0000000..86c71b6 --- /dev/null +++ b/.gitlint @@ -0,0 +1,2 @@ +[general] +ignore=body-is-missing diff --git a/.node-version b/.node-version new file mode 100644 index 0000000..6aab9b4 --- /dev/null +++ b/.node-version @@ -0,0 +1 @@ +v18.18.0 diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml new file mode 100644 index 0000000..a303334 --- /dev/null +++ b/.pre-commit-config.yaml @@ -0,0 +1,53 @@ +--- +default_language_version: + python: python3.11 +default_install_hook_types: [pre-commit, commit-msg] +default_stages: [commit] +fail_fast: false +minimum_pre_commit_version: 3.3.3 +repos: + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.4.0 + hooks: + - id: trailing-whitespace + - id: end-of-file-fixer + - id: mixed-line-ending + args: ["--fix=lf"] + - id: check-added-large-files + - id: check-toml + - id: check-yaml + - repo: https://github.com/charliermarsh/ruff-pre-commit + rev: v0.0.280 + hooks: + - id: ruff + args: [--fix, --exit-non-zero-on-fix] + - repo: local + hooks: + - id: mypy + name: mypy + entry: | + python -m mypy . + types: [python] + language: system + require_serial: true + pass_filenames: false + - repo: https://github.com/ambv/black + rev: 23.7.0 + hooks: + - id: black + - repo: https://github.com/tox-dev/pyproject-fmt + rev: "0.13.0" + hooks: + - id: pyproject-fmt + args: ["--indent=4"] + - repo: https://github.com/pre-commit/mirrors-prettier + rev: "v3.0.3" + hooks: + - id: prettier + entry: prettier --write --list-different --ignore-unknown --config frontend/.prettierrc --ignore-path frontend/.prettierignore + files: ^frontend/ + language_version: 18.18.0 + - repo: https://github.com/jorisroovers/gitlint + rev: "v0.19.1" + hooks: + - id: gitlint diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..451403d --- /dev/null +++ b/Makefile @@ -0,0 +1,139 @@ + # we want bash behaviour in all shell invocations +SHELL := bash +# Run each target in a separate shell +.ONESHELL: + # Fail on error inside any functions or subshells +.SHELLFLAGS := -eu -o pipefail -c + # Remove partially created files on error +.DELETE_ON_ERROR: + # Warn when an undefined variable is referenced +MAKEFLAGS += --warn-undefined-variables +# Disable built-in rules +MAKEFLAGS += --no-builtin-rules +# A catalog of requirements files +REQUIREMENTS?=requirements + +help: # Show this help + @echo "Usage: make [target]" + @echo "" + @echo "Targets:" + @echo " help Show this help" + @echo " requirements-base Compile base requirements" + @echo " requirements-test Compile test requirements" + @echo " requirements-dev Compile dev requirements" + @echo " requirements Compile all requirements" + @echo " install Install the app locally" + @echo " install-front Install frontend" + @echo " install-test Install the app locally with test dependencies" + @echo " install-dev Install the app locally with dev dependencies" + @echo " install-test-dev Install the app locally with test and dev dependencies" + @echo " init-test-dev Install the app locally with test and dev dependencies. Also install pre-commit hooks." + @echo " reinit-test-dev Reinstall pre-commit hooks" + @echo " lint Run linters" + @echo " test Run tests" + @echo " migrate Run migrations" + @echo " revision Create a new migration" + @echo " front Run frontend" + @echo " scrape-repos Scrape repos" + @echo " parse-dependencies Scrape dependencies" + @echo " index-repos Index repos" + @echo " index-dependencies Index dependencies" + +requirements-base: # Compile base requirements + python -m piptools compile \ + --output-file=requirements/base.txt \ + -v \ + pyproject.toml + +requirements-test: requirements-base # Compile test requirements + python -m piptools compile \ + --extra=test \ + --output-file=requirements/test.txt \ + -v \ + pyproject.toml + +requirements-dev: requirements-base # Compile dev requirements + python -m piptools compile \ + --extra=dev \ + --output-file=requirements/dev.txt \ + -v \ + pyproject.toml + +requirements: requirements-base requirements-test requirements-dev # Compile all requirements +.PHONY: requirements + +install: # Install the app locally + python -m pip install -r $(REQUIREMENTS)/base.txt . +.PHONY: install + +install-test: # Install the app locally with test dependencies + python -m pip install \ + -r $(REQUIREMENTS)/base.txt \ + -r $(REQUIREMENTS)/test.txt \ + --editable . +.PHONY: install-test + +install-dev: # Install the app locally with dev dependencies + python -m pip install \ + -r $(REQUIREMENTS)/base.txt \ + -r $(REQUIREMENTS)/dev.txt \ + --editable . +.PHONY: install-dev + +install-test-dev: # Install the app locally with test and dev dependencies + python -m pip install \ + -r $(REQUIREMENTS)/base.txt \ + -r $(REQUIREMENTS)/test.txt \ + -r $(REQUIREMENTS)/dev.txt \ + --editable . +.PHONY: install-test-dev + +install-front: # Install frontend + cd frontend && pnpm install +.PHONY: install-front + +init-test-dev: install-test-dev # Install the app locally with test and dev dependencies. Also install pre-commit hooks. + pre-commit install +.PHONY: init-test-dev + +reinit-test-dev: init-test-dev # Reinstall pre-commit hooks + pre-commit install --install-hooks --overwrite +.PHONY: reinit-test-dev + +lint: # Run linters + pre-commit run --all-files +.PHONY: lint + +test: # Run tests + python -m pytest -vv -s --cov=app --cov-report=xml --cov-branch app +.PHONY: test + +migrate: # Run migrations + python -m alembic upgrade heads +.PHONY: migrate + +revision: # Create a new migration + python -m alembic revision --autogenerate -m "$(message)" +.PHONY: revision + +front: install-front # Run frontend + cd frontend && pnpm dev +.PHONY: front + +scrape-repos: # Scrape repos + python -m app.scrape scrape-repos +.PHONY: scrape-repos + +parse-dependencies: # Scrape dependencies + python -m app.scrape parse-dependencies +.PHONY: parse-dependencies + +index-repos: # Index repos + python -m app.index index-repos +.PHONY: index-repos + +index-dependencies: # Index dependencies + python -m app.index index-dependencies +.PHONY: index-dependencies + +.DEFAULT_GOAL := init-test-dev # Set the default goal to init-dev-test diff --git a/README.md b/README.md index 5e9dbd3..e96db7b 100644 --- a/README.md +++ b/README.md @@ -1,550 +1,57 @@ # Awesome FastAPI Projects -> **Warning** -> If you want to help me to maintain this project, please send a message on https://github.com/Kludex/awesome-fastapi-projects/issues/16. -> I'll happily onboard you. +View the website: https://Kludex.github.io/awesome-fastapi-projects/ -The aim of this repository is to have an organized list of projects that use FastAPI. +## Local Development -If you're looking for FastAPI content, you might want to check [Awesome FastAPI](https://github.com/mjhea0/awesome-fastapi). +### Setup -## Table +#### Python and Virtual Environment -| Project | Dependencies | -|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -|[2020_slowdelivery_take](https://github.com/zekaio/2020_slowdelivery_take ) |aiohttp, pytest, tortoise | -|[AI-Service](https://github.com/eHelply/AI-Service ) |kombu, setuptools, pymongo, redis, sentry_asgi, sentry_sdk, pymlconf, socketio, src | -|[African_Wildlife_Classifier](https://github.com/peterbacalso/African_Wildlife_Classifier ) |aiohttp, fastai, torch | -|[Auth-Service](https://github.com/eHelply/Auth-Service ) |kombu, requests, setuptools, passlib, pymongo, redis, sentry_asgi, sentry_sdk, pymlconf, jwt, socketio, src, bson | -|[BenchmarkRoundOne](https://github.com/peterdeme/BenchmarkRoundOne ) |aiohttp | -|[Benchmarker](https://github.com/vutran1710/Benchmarker ) |apis | -|[Blog](https://github.com/elbruno/Blog ) |face_recognition, imutils, PIL, flask, cv2 | -|[CCTO](https://github.com/SnarferX/CCTO ) |sets, SimpleHTTPSErver, requests, dircache, ovm_lib, jarray, pip, httplib, urllib3, SockerServer, ansible, hello, java, ovmclient | -|[CFE_30D.PY](https://github.com/torredefarol24/CFE_30D.PY ) |formatting, flask, scrape, logger, requests, pandas, download_util, requests_html | -|[COVID-19API](https://github.com/zeroday0619/COVID-19API ) |aiohttp, ujson, async_lru, API, scrapy, fastapi_plugins, aioredis, bs4 | -|[COVID-QA](https://github.com/deepset-ai/COVID-QA ) |elasticapm, eval, sentence_transformers, sklearn, elasticsearch, tqdm, scrapy, requests, backend, nltk, haystack, preprocess, farm, langid, datasources, torch, tfidf_train, covid_nlp | -|[CUCM-Phone-Info](https://github.com/jsteinberg1/CUCM-Phone-Info ) |rq, cryptography, zeep, requests, redis, lxml, lib, apscheduler, api, OpenSSL, sqlalchemy, jwt, bs4 | -|[Chatbot](https://github.com/aramakus/Chatbot ) |nltk, chatterbot, sklearn, requests, tqdm, chatbot | -|[ChatiChatou](https://github.com/auredentan/ChatiChatou ) |chat, aioredis | -|[CheckersAI](https://github.com/HuiiBuh/CheckersAI ) |pytest, aiohttp, game, api, conftest, checkers | -|[Cloud_APS1](https://github.com/ehrhardt98/Cloud_APS1 ) |pymongo, requests | -|[CryptoViz](https://github.com/MohanVashist1/CryptoViz ) |bs4, requests, pyti, pymongo, lib, binance, dateutil, cryptocalculator, channelfinder, dotenv, flask, boto3, click, fastapi_users | -|[DS-API](https://github.com/BW-Post-Here-06-2020/DS-API ) |dotenv, praw | -|[Daft](https://github.com/mpalka31/DaftAcademyCourse ) |main, queries, schemas, pytest, jose, database, crud | -|[Daims_FastAPI](https://github.com/GeorgeMiao219/Daims_FastAPI ) |auth, dns, dataset, config, url, utils, database | -|[Data-Engineering](https://github.com/De-Dash/Data-Engineering ) |nltk, aiohttp, api | -|[Docker-Builder](https://github.com/Javier162380/Docker-Builder ) |rq, pytest, endpoints, requests, redis, builder, docker, settings, docker_builder, models, worker, middlewares, router | -|[Dispatch](https://github.com/Netflix/dispatch ) |SQLAlchemy-Searchable, aiofiles, alembic‚ arrow‚ bcrypt, cachetools, click, email-validator, emails, fastapi_permissions, google-api-python-client, google-auth-oauthlib, h11, httpx, jinja2, jira, joblib, numpy, oauth2client, pandas, pdpyras, psycopg2-binary, pyparsing, python-dateutil, python-jose, python-multipart, pytz, requests, rsa, schedule, sentry-asgi, sentry-sdk, sh, slackclient, spacy, sqlalchemy, sqlalchemy-filters, statsmodels, tabulate, tenacity, uvicorn | -|[DockerImageResNet50](https://github.com/OrenLeung/DockerImageResNet50 ) |redis, PIL, locust, keras | -|[Downotifier](https://github.com/herbzhao/Downotifier ) |twilio, bs4, requests, URLChecker, TwilioWhatsapp | -|[ExcelTools](https://github.com/xx2life/ExcelTools ) |motor, databases | -|[ExpenseAPI](https://github.com/MushroomMaula/ExpenseAPI ) |pytest, faker, sqlalchemy, myapp, fastapi_login, alembic, dotenv | -|[FAAS](https://github.com/jacksonhenry3/FAAS ) |flask | -|[Fast-API-Starter](https://github.com/khaman1/Fast-API-Starter ) |shared, urls | -|[Fast-Project](https://github.com/alex-2201/Fast-Project ) |redis, conn, cassandra, apis, pymysql, logzero, models, utils, middlewares | -|[FastAPI-Auth](https://github.com/Madpilot0/FastAPI-Auth ) |bcrypt, lib, routes, yaml, jwt, MySQLdb | -|[FastAPI-CRUD](https://github.com/Mr-Manna/FastAPI-CRUD ) |databases, sqlalchemy, post, config | -|[FastAPI-Demo](https://github.com/JPMike/FastAPI-Demo ) |requests | -|[FastAPI-Example](https://github.com/gauravgola96/FastAPI-Example ) |botocore, aiobotocore, dotenv, s3_events, boto3, utils | -|[FastAPI-Learning-Example](https://github.com/oinsd/FastAPI-Learning-Example ) |main, main_b, jwt, routers, sqlalchemy, database, passlib | -|[FastAPI-React-PostgreSQL_Full-Stack](https://github.com/scionoftech/FastAPI-React-PostgreSQL_Full-Stack ) |db, setuptools, logs, passlib, utils, sqlalchemy, conf, routes, auth, jwt | -|[FastAPITutorial](https://github.com/HeywoodKing/FastAPITutorial ) |invoke, config | -|[FastAPI_Tortoise_template](https://github.com/GoddessEyes/FastAPI_Tortoise_template ) |celery, jwt, tortoise, template, passlib, emails | -|[FastAPI_Vue](https://github.com/quietking0312/FastAPI_Vue ) |pymongo, apps | -|[FastAPI_app1](https://github.com/Sai-Vamsi-Ogety/FastAPI_app1 ) |spacy | -|[FastAPI_proto](https://github.com/bartomo/FastAPI_proto ) |controllers, urls, sqlalchemy, db, models | -|[FastAdmin](https://github.com/CoderCharm/FastAdmin ) |passlib, loguru, sqlalchemy, myapp, jose, alembic | -|[Fastapi](https://github.com/xyz25/Fastapi ) |router_app, sqlalchemy | -|[FastapiLearn](https://github.com/xuqm/FastapiLearn ) |part4, part11, part7, part8, part15, part2, part10, application, part14, part12, part9, part13, part3, part16, part1, part5, part6 | -|[Fusion-Vision](https://github.com/sdhnshu/Fusion-Vision ) |wandb, pytest, sklearn, requests, tqdm, torch, text_classification | -|[GET_POST](https://github.com/mitsumushibayama/GET_POST ) |MySQLdb | -|[GraphQLAPI](https://github.com/webjunkie01/GraphQLAPI ) |graphene, cryptacular, pytest, graphene_sqlalchemy, sqlalchemy | -|[Gringotts](https://github.com/cning112/Gringotts ) |werkzeug, requests, flask_restplus, typing_extensions, apis, flask_cors, libs, flask, routers, models | -|[HjwzwApi](https://github.com/k1dave6412/HjwzwApi ) |backend, requests, aiohttp, asyncpg, loguru, sqlalchemy, myapp, alembic, databases, bs4 | -|[Image-Diff-back](https://github.com/filipe-guerra/Image-Diff-back ) |imutils, skimage, imageDiff, cv2 | -|[Item-Xref](https://github.com/Roselingit/Item-Xref ) |psycopg2 | -|[KOARCH](https://github.com/janstrohschein/KOARCH ) |classes, emotion_recognition_master, pydash, sklearn, requests, tweepy, scipy, kafka, yaml, psycopg2, emotion_predictor, avro, keras | -|[Logging-Service](https://github.com/eHelply/Logging-Service ) |kombu, setuptools, pymongo, redis, sentry_asgi, sentry_sdk, pymlconf, socketio, src | -|[MLServer](https://github.com/SeldonIO/MLServer ) |orjson, grpc, click, pytest, mlserver, google, setuptools | -|[MallAPI](https://github.com/CoderCharm/MallAPI ) |alembic, loguru, sqlalchemy, extensions, setting, myapp, api, utils | -|[MealCare](https://github.com/hack4impact-mcgill/MealCare ) |pony, passlib, config, tests, sqlalchemy, psycopg2, jwt | -|[MetodoClasificacionTexto](https://github.com/talend-Erick/MetodoClasificacionTexto ) |gensim, nltk, spacy, src, pandas | -|[MyChild](https://github.com/YunusovSamat/MyChild ) |passlib, asyncpg, tortoise, sqlalchemy, alembic, databases, jwt | -|[MyNotes](https://github.com/wq758511990/MyNotes ) |serial, werkzeug, flask_sqlalchemy, flask_httpauth, sqlalchemy, wtforms, pytz, webapp, flask, itsdangerous | -|[NIMSPARQL](https://github.com/Ningensei848/NIMSPARQL ) |elasticapm, sqlalchemy, elasticsearch, db, api | -|[NT118](https://github.com/maivanhung33/NT118 ) |request, kombu, common, elasticsearch, geopy, requests, injector, pymongo, redis, consul, boltons, cachetools, controller, elasticsearch_dsl, sqlalchemy, service, pytz, response | -|[News-Summarizer](https://github.com/CYBINT-IN/News-Summarizer ) |scipy, sentence_transformers, flask, sklearn, torch, requests, transformers, pyLDAvis, bs4 | -|[Notification-Service](https://github.com/eHelply/Notification-Service ) |kombu, setuptools, pymongo, redis, sentry_asgi, sentry_sdk, pymlconf, socketio, src | -|[Pycharm](https://github.com/godori004/Pycharm ) |urllib3, flask_restful, flask, src, pandas, google | -|[Python-example](https://github.com/hzjsea/Python-example ) |netmiko, static_files, requests, basedb, sqlalchemy, ansible, zabbix_info | -|[Python3Test](https://github.com/hjslovehr/Python3Test ) |requests, redis, openpyxl, sqlhelper, pymssql, md5_helper, flask, helpers, bs4 | -|[PythonFastApi](https://github.com/kbeaugrand/PythonFastApi ) |win32service, win32event, servicemanager, win32serviceutil, yaml | -|[RemoteVP-Npc](https://github.com/viccom/RemoteVP-Npc ) |win32serviceutil, serial, requests, apps, pythoncom, cores, helper, ping3, bases, hbmqtt, conf, Crypto, wmi | -|[RestFramework](https://github.com/rakesh4real/RestFramework ) |django, streamapp, rest_framework, other_app, jwt, senddata, my_app, passlib | -|[SOA](https://github.com/FisnikL/SOA ) |prometheus_client, sqlalchemy, sqlalchemy_utils, database | -|[Semester-Stats](https://github.com/Rushyanth111/Semester-Stats ) |playhouse, faker, setuptools, peewee, mailmerge, docx | -|[Service-Template](https://github.com/eHelply/Service-Template ) |kombu, setuptools, pymongo, redis, sentry_asgi, sentry_sdk, pymlconf, socketio, src | -|[SpotifyAPI](https://github.com/dixneuf19/SpotifyAPI ) |spotipy, dotenv, src | -|[StanleyIpkiss](https://github.com/JimmiBram/StanleyIpkiss ) |tests, sibase | -|[Studium-ds](https://github.com/Lambda-School-Labs/Studium-ds ) |retrieve_definition, gauge_plot, requests, calendar_heatmap, inflect | -|[TT_COVID19_API_site_and_emailer](https://github.com/VSpectrum/TT_COVID19_API_site_and_emailer ) |email_validator, requests, config, emailer | -|[TaskXenter](https://github.com/CoolSpring8/TaskXenter ) |celery, sentry_sdk, loguru, databases, jwt, tortoise, passlib, httpx | -|[Telegram-BusBot-DataManager](https://github.com/David-Lor/Telegram-BusBot-DataManager ) |pymongo, motor, busbot_data_manager | -|[WAM_server_API_template](https://github.com/rl-institut/WAM_server_API_template ) |flask_app, celery, flask, pytest, worker, sphinx_rtd_theme | -|[WEB](https://github.com/maivanhung33/WEB ) |request, kombu, common, elasticsearch, geopy, requests, injector, pymongo, redis, consul, boltons, cachetools, controller, elasticsearch_dsl, sqlalchemy, service, pytz, response | -|[WFM](https://github.com/unegade/WFM ) |pika, aio_pika, BSSAPI, locust | -|[WebApp-PhoneClassifier](https://github.com/minh-dg/WebApp-PhoneClassifier ) |fastai | -|[WitnessMe](https://github.com/byt3bl33d3r/WitnessMe ) |xmltodict, imgcat, pytest, pyppeteer, jinja2, terminaltables, prompt_toolkit, pkg_resources, aiosqlite, yaml, witnessme | -|[Words_record](https://github.com/LMFrank/Words_record ) |databases, pytest, pymysql, sqlalchemy, requests | -|[Workspace](https://github.com/AYCHSPACE/Workspace ) |tqdm, jupyter_core, setuptools, tornado, crontab, pip, psutil, IPython, git, notebook | -|[YoutubeBackup](https://github.com/FratStar/YoutubeBackup ) |google_auth_oauthlib, zeep, googleapiclient, spyne, google | -|[Zulu](https://github.com/OSS-team-zulu/Zulu ) |requests, passlib, pymongo, geojson, tests, zulu, dynaconf, jwt, bson, pytest | -|[ai-dungeon](https://github.com/AntonNeld/ai-dungeon ) |errors, test_utils, typing_extensions, pytest, models, api, dungeon | -|[aioprometheus](https://github.com/claws/aioprometheus ) |setuptools, aiohttp, alabaster, quart, psutil, asynctest, sphinx, aioprometheus, quantile, prometheus_metrics_proto | -|[aita](https://github.com/logan-connolly/aita ) |pytest, requests, tqdm, aiohttp, asyncpg, aita, loguru, orm, typer, sqlalchemy, databases, praw | -|[alda-online](https://github.com/JesseChua94/alda-online ) |models, alda | -|[alg_interface_fastapi_project](https://github.com/wuzaipei/alg_interface_fastapi_project ) |system_file, pymysql, sqlalchemy, data_model | -|[alice-yamaha-skill](https://github.com/toshka/alice-yamaha-skill ) |exceptions, auth, yaml, capabilities, routers, rxv, config, httpx | -|[allay-ds](https://github.com/Lambda-School-Labs/allay-ds ) |wandb, spacy, sklearn, requests, scrapy, process_data, fastapi_app, tensorflow, numpy, indeed, en_core_web_sm, dotenv | -|[allure_reporter](https://github.com/penguinlav/allure_reporter ) |jinja2, requests, allure_reporter, loguru, aiofiles, async_generator, pytest | -|[andrewhou-zonar](https://github.com/amhou/andrewhou-zonar ) |main, requests, util | -|[apex-tracker](https://github.com/Timzan/apex-tracker ) |routers, requests, config | -|[api](https://github.com/wuzaipei/alg_interface_fastapi_project ) |pyazo_api, alembic, dotenv, jwt, sqlalchemy, passlib | -|[api-ocr](https://github.com/dzakyputra/api-ocr ) |tesserocr, PIL, cv2, modules | -|[api-poc](https://github.com/igorfarias30/fastapi-poc ) |sklearn | -|[api.authentication](https://github.com/jrhuerta/api.authentication ) |api_authentication | -|[api_works](https://github.com/omrylcn/api_works ) |PIL, requests | -|[apiestas](https://github.com/franloza/apiestas ) |crawling, scrapy, fuzzywuzzy, loguru, slugify, api, js2xml, dateparser, typer, twisted, pytz, motor | -|[apitoolbox](https://github.com/zuarbase/apitoolbox ) |pytest, setuptools, passlib, sqlalchemy_filters, tests, sqlalchemy, ordered_uuid, tzlocal, pytz, jwt, apitoolbox, itsdangerous | -|[arcas](https://github.com/maialogic/arcas ) |graphene, snapshottest | -|[asgi-server-timing-middleware](https://github.com/sm-Fifteen/asgi-server-timing-middleware ) |yappi, asgi_server_timing, setuptools | -|[asu-schedule](https://github.com/skhortiuk/asu-schedule ) |aiohttp, src, validators, bs4 | -|[async_django_session](https://github.com/imbolc/async_django_session ) |setuptools, aiohttp, asyncpg, async_django_session, cfg, django, databases | -|[authal-poc](https://github.com/michal-nakoneczny/authal-poc ) |authal, asynctest, pytest, bson, requests, tests, httpx | -|[auto_populate](https://github.com/NealWhitlock/auto_populate ) |psycopg2, getter | -|[autoloadtest](https://github.com/hkiang01/autoloadtest ) |locust, hypothesis | -|[automagic_hashtag](https://github.com/MarianMalvin/automagic_hashtag ) |utils, google | -|[b0mb3r](https://github.com/crinny/b0mb3r ) |setuptools, sentry_sdk, loguru, pkg_resources, b0mb3r, phonenumbers, click, httpx | -|[b2blue-challenge](https://github.com/lfvilella/b2blue-challenge ) |pydantic_sqlalchemy, sqlalchemy | -|[b3ta](https://github.com/nm17/b3ta ) |setuptools, sentry_sdk, loguru, pkg_resources, service, b0mb3r, phonenumbers, click, httpx | -|[backend](https://github.com/ElusiveSpirit/fbd-backend ) |asynctest, transliterate | -|[backend-skeleton](https://github.com/dmontagu/backend-skeleton ) |pytest, requests, typing_extensions, sqlalchemy_utils, tests, sqlalchemy, myapp, alembic, tenacity | -|[balikobot_tmp_2](https://github.com/Horac-Bouthon/balikobot_tmp_2 ) |logger_wrapper, databases, schemas, sqlalchemy, conf, routers, sql_factory | -|[base-fastapi-postgresql](https://github.com/alldevic/base-fastapi-postgresql ) |alembic, arq, sqlalchemy, sqlalchemy_utils, gino | -|[basic-python-postgis-docker](https://github.com/stephenhillier/basic-python-postgis-docker ) |alembic, tenacity, sqlalchemy, myapp | -|[bc_rates](https://github.com/MRobalinho/bc_rates ) |bc | -|[belajar-fastapi](https://github.com/aansubarkah/belajar-fastapi ) |yfinance, sqlalchemy, models, config, tutorial, database | -|[bench-rest-api-frameworks](https://github.com/py4mac/bench-rest-api-frameworks ) |sanic, locust, aiohttp, tornado, api, main, core | -|[biomedical-computing-project-backend](https://github.com/SinaKhalili/biomedical-computing-project-backend ) |extra, xlrd, CoronaAnalysis | -|[blog](https://github.com/deagle-z/blog ) |blog, loguru, jwt, sqlalchemy | -|[blog-posts](https://github.com/tiangolo/blog-posts ) |pytest, sqlalchemy, jose, passlib | -|[bluesky](https://github.com/paulorodriguesxv/bluesky ) |pytest, passlib, aiohttp, decouple, sqlalchemy_utils, sqlalchemy, myapp, alembic, jwt | -|[boilerplate](https://github.com/pmcarlos/fast-api-boilerplate ) |utils, config | -|[book-graphics](https://github.com/kamartem/book-graphics ) |alembic, sentry_sdk, asyncpg, loguru, sqlalchemy, gino | -|[bplustogether](https://github.com/wborbajr/bplustogether ) |dynaconf, databases, loguru, sqlalchemy, bpapi | -|[bracket_install](https://github.com/mobjack/bracket_install ) |six, flask, requests, colorama | -|[bread-app](https://github.com/aidan-mcbride/bread-app ) |pyArango, pytest, jwt, routers, api, tests, passlib | -|[bridgeapp](https://github.com/jasujm/bridgeapp ) |click, orjson, bridgeapp, click_log, pytest, zmq | -|[budget-blocks-ds](https://github.com/Lambda-School-Labs/budget-blocks-ds ) |DB, geopy, transactionhist, mainhelp, census, main, psycopg2, dotenv, routers | -|[bullshit-website](https://github.com/kaylynn234/bullshit-website ) |corporate_bullshit | -|[burriking](https://github.com/txemac/burriking ) |infrastructure, dependency_injector, werkzeug, requests, pymongo, freezegun, tests, config, main, user_interface, application, database, flask, bson, pytest, flasgger, domain | -|[bw3_attempt](https://github.com/worldwidekatie/bw3_attempt ) |dotenv, sklearn, requests, joblib | -|[c4p2n](https://github.com/piterpy-meetup/c4p2n ) |c4p2n, fastapi_security_typeform, notion, ppm_telegram_bot_client | -|[cah-v2](https://github.com/Mdellit110/cah-v2 ) |graphene, schema, graphene_sqlalchemy, sqlalchemy, models, config, schema_blackcards, database, schema_whitecards | -|[calculator](https://github.com/ch0c01ate/calculator ) |pymongo, calculator, requests, dbsetup | -|[canvote](https://github.com/alvintangz/canvote ) |jinja2, requests, passlib, sqlalchemy_pagination, humps, sqlalchemy, myapp, pytz, alembic, secure, jwt | -|[cashflow](https://github.com/VSpectrum/cashflow ) |pytest, config | -|[ccrbackend](https://github.com/danieldominguete/ccrbackend ) |six, dotenv, dynamorm, mangum, src, jose, marshmallow | -|[challenge](https://github.com/Creditas/challenge ) |iris_classifier, sklearn | -|[chapushillo](https://github.com/maxipavlovic/chapushillo ) |pusher, dotenv, pusher_client | -|[checkmarx](https://github.com/zetkin/checkmarx ) |scanner, checkmarx, pytest, pyzbar, setuptools | -|[chinook_fastapi](https://github.com/sandervandorsten/chinook_fastapi ) |dotenv, setuptools, chinook_fastapi | -|[cloudrun-fastapi](https://github.com/anthcor/cloudrun-fastapi ) |pytest, actions, passlib, sqlalchemy_utils, config, tests, main, sqlalchemy, myapp, database, google, alembic, schemas, jwt, routers, gunicorn_config, models | -|[cnapp-fastapi](https://github.com/cnapp/cnapp-fastapi ) |sanic, daiquiri, jinja2, prometheus_client, cnapps, starlette_prometheus | -|[code_example_fastapi](https://github.com/d-tamirlan/code_example_fastapi ) |tortoise, src, envparse, fastapi_users | -|[codewars-watchdog](https://github.com/uriyyo/codewars-watchdog ) |git | -|[coding-challenges](https://github.com/fjemi/coding-challenges ) |password_generator, tqdm, jsbeautifier, dateutil, matplotlib, flask_api, word_square_check, flask | -|[concurrency](https://github.com/Jorricks/concurrency ) |PIL, setuptools, redis, dataclasses_json, src, asgiref, click | -|[contact-form](https://github.com/k4ssyi/contact-form ) |dotenv, controllers, urls, settings, utils, request_body | -|[cookiecutter-python](https://github.com/ValentinCalomme/cookiecutter-python ) |typer | -|[cookiecutter-simcore-py-fastapi](https://github.com/pcrespov/cookiecutter-simcore-py-fastapi ) |cryptography, pytest, servicelib, setuptools, simcore_service_catalog, aiohttp, pkg_resources, attr, ptvsd, aiopg, sqlalchemy, tenacity, yarl, httpx | -|[coronavirus-tg-api](https://github.com/egbakou/coronavirus-tg-api ) |aiohttp, invoke, asyncmock, dateparser, async_asgi_testclient, async_generator, dotenv, pytest, bs4 | -|[coursera-ibm-ai-workflow-submission](https://github.com/eightBEC/coursera-ibm-ai-workflow-submission ) |loguru, sklearn, pytest, joblib | -|[coursework](https://github.com/algorithm-ssau/coursework ) |dotenv, databases, motor | -|[covid-19-Chile](https://github.com/RentadroneCL/covid-19-Chile ) |orator, dotenv, routes, pendulum, covid_19_chile, config, database | -|[covid-19-dashboard-api](https://github.com/zeshuaro/covid-19-dashboard-api ) |sortedcontainers, dotenv, jwt, pycountry, requests, google, passlib | -|[covid19-id](https://github.com/anzharip/covid19-id ) |selenium, requests | -|[covidfaq](https://github.com/dialoguemd/covidfaq ) |pytest, spacy, sklearn, tqdm, requests, covidfaq, selenium, bert_reranker, structlog, spacy_langdetect, yaml, html2text, boto3, torch, transformers, bs4 | -|[covidsage](https://github.com/chancey-gardener/covidsage ) |spacy, data_loader, requests, backends, nlu_client, numpy, matplotlib, plotter, rasa, rasa_sdk, pymysql, discourse | -|[cpython3-fastapi](https://github.com/phongln/cpython3-fastapi ) |blog, admin | -|[custom-actions-app-python](https://github.com/Frameio/custom-actions-app-python ) |pytest, requests, custom_actions | -|[daftacademy-python-levelup](https://github.com/holdenkold/daftacademy-python-levelup ) |main, pytest | -|[daiei-backend](https://github.com/a-nakajima-at-shokuryu/daiei-backend ) |fastapi_server, dotenv, models, utils, dateutil, settings | -|[daizu-online-judge-backend](https://github.com/SoyBeansLab/daizu-online-judge-backend ) |psycopg2, infrastructure, marshmallow_dataclass, interface, marshmallow, domain | -|[dask-remote](https://github.com/octoenergy/dask-remote ) |distributed, typing_extensions, pytest, requests, dask_remote, setuptools | -|[datarepo](https://github.com/PUG-PB-Traducao/datarepo ) |bcrypt, dotenv, fastapi_sqlalchemy, sqlalchemy | -|[debitcard](https://github.com/xpnewmedia/debitcard ) |debitcard | -|[debts](https://github.com/afonasev/debts ) |pytest, locust, factory, passlib, sentry_asgi, sentry_sdk, contextvars_executor, server, context_logging, sqlalchemy, alembic, jwt | -|[decentralized-news-publishing](https://github.com/teddymarkov/decentralized-news-publishing ) |ariadne | -|[demo-dms](https://github.com/gucharbon/demo-dms ) |urllib3, typer, pytest, minio, backend | -|[deploy](https://github.com/pcmalves/codeploy-teste ) |main | -|[devops-assignment](https://github.com/fokinpv/devops-assignment ) |asynctest, pytest, service, pulp | -|[devs-conn-api](https://github.com/txemac/devs-conn-api ) |github, pytest, sqlalchemy, sqlalchemy_utils, data, twitter, tests | -|[dfstore](https://github.com/Exhor/dfstore ) |requests, src, tests, feather | -|[dig-bioindex](https://github.com/broadinstitute/dig-bioindex ) |requests, colorama, orjson, lib, enlighten, sqlalchemy, dotenv, boto3, click | -|[django-fastapi-example](https://github.com/jordaneremieff/django-fastapi-example ) |django, api | -|[docker-fastapi-demo](https://github.com/pylixm/docker-fastapi-demo ) |alembic, loguru, databases, core, sqlalchemy, service, myapp, api | -|[docker-workshop](https://github.com/blairdrummond/docker-workshop ) |scipy, PIL, dash, flask, inference, sklearn, requests, numpy, joblib, flask_caching | -|[downloads_statistics](https://github.com/mmidu/downloads_statistics ) |redis, main, seeds, controllers, DownloadSeeder, requests, models, config, utils, DownloadsController | -|[dreamcatcher](https://github.com/sbathgate/dreamcatcher ) |pytest, passlib, sqlalchemy, myapp, jose, alembic, celery, tenacity, raven, emails | -|[duke](https://github.com/jamescurtin/duke ) |duke, PIL, pytest | -|[eXchangeAPI-PY](https://github.com/wborbajr/eXchangeAPI-PY ) |pymongo, dynaconf, exchangeapi, motor | -|[educator_api](https://github.com/wycliffogembo87/educator_api ) |pony, requests, passlib, loguru, api, settings, schemas, core, models, util | -|[effortless_fast_api](https://github.com/davideasaf/effortless_fast_api ) |requests, passlib, invoke, config, utils, main, sqlalchemy, schemas, jwt, models, services, pytest | -|[embl_python_software_engineer_test](https://github.com/yusra-haider/embl_python_software_engineer_test ) |sqlalchemy, requests | -|[eml_analyzer](https://github.com/ninoseki/eml_analyzer ) |async_timeout, pytest, eml_parser, compressed_rtf, arrow, compoundfiles, olefile, loguru, fastapi_utils, tests, dateparser, asynctest, magic, aiospamc, ioc_finder, respx, httpx | -|[entroprise-api](https://github.com/peterdeepsix/entroprise-api ) |simpletransformers, service, models, api | -|[eu-taxation-customs-api](https://github.com/aditya-08/eu-taxation-customs-api ) |main, zeep, requests | -|[events-api](https://github.com/txemac/events-api ) |pytz, xmltodict, pytest, sqlalchemy, sqlalchemy_utils, apscheduler, data, requests, tests | -|[example-fastapi-sqlachemy-pytest](https://github.com/timhughes/example-fastapi-sqlachemy-pytest ) |example, pytest, sqlalchemy | -|[excerpt-formatter](https://github.com/cmckillop/excerpt-formatter ) |text_formatter, slack_manager, requests, models | -|[fake-news-game](https://github.com/jsandovalc/fake-news-game ) |databases | -|[fantasy-fencing](https://github.com/Innoviox/fantasy-fencing ) |colorlog, selenium, click, scrape, requests, logs, bs4 | -|[fapi](https://github.com/glebofff/fapi ) |api, sqlalchemy, myapp, alembic, fastapi_sqlalchemy, core, models, click | -|[fast](https://github.com/foobar8675/fastai-bite ) |routers, user | -|[fast-api-asyncdb](https://github.com/tsadimas/fast-api-asyncdb ) |dotenv, databases, sqlalchemy, settings, fastapi_users | -|[fast-api-boilerplate](https://github.com/pmcarlos/fast-api-boilerplate ) |alembic, dotenv, fastapi_sqlalchemy, core, sqlalchemy, myapp | -|[fast-api-rest](https://github.com/javier-lopez/fast-api-rest ) |config, bjoern | -|[fast-api-sql-template](https://github.com/Jonatha-Varjao/fast-api-sql-template ) |pytest, googletrans, requests, passlib, sqlalchemy_utils, sqlalchemy, alembic, jwt, emails | -|[fast-elm](https://github.com/yuzebin/fast-elm ) |bcrypt, fmmodel, requests, fmsecurity, passlib, fmdb, slugify, fmcrud, fmapi, databases, motor, jwt, fmtoken, bson | -|[fastAPI-be](https://github.com/BonneC/fastAPI-be ) |alembic, dotenv, sqlalchemy, models, api, config, myapp, crud | -|[fastApi](https://github.com/fionasummer/fastApiSelf ) |my_super_project, graphene, projetStage, sqlalchemy | -|[fastApiSelf](https://github.com/fionasummer/fastApiSelf ) |pytest, rr, sqlalchemy, websocket, fackApi, app1 | -|[fastApiSimple](https://github.com/marirs/fastApiSimple ) |pymongo, geoip2, motor, server | -|[fastAppAppointment](https://github.com/EdvinaNakos/fastAppAppointment ) |main, controller, databases, sqlalchemy, db, service | -|[fast_api](https://github.com/davideasaf/effortless_fast_api ) |app_utils, bcrypt, schemas, jwt, sqlalchemy, models, database, crud | -|[fast_api_camelcase_example](https://github.com/ahmednafies/fast_api_camelcase_example ) |humps, models | -|[fast_api_self_study](https://github.com/cuongld2/fast_api_self_study ) |bcrypt, jwt, sqlalchemy, sql_app | -|[fastaaps](https://github.com/sergio-chumacero/fastaaps ) |pymongo, celery, motor | -|[fastai-bite](https://github.com/foobar8675/fastai-bite ) |PIL, graphene, my_utils, fastai2, cv2, httpx | -|[fastapi-GraphQL-full-stack-docker-github-actions-graphene-test-client-template](https://github.com/gaylonalfano/fastapi-GraphQL-full-stack-docker-github-actions-graphene-test-client-template )|graphene, pytest, sqlalchemy, graphql, snapshottest | -|[fastapi-GraphQL-full-stack-docker-travisci-starlette-test-client-template](https://github.com/gaylonalfano/fastapi-GraphQL-full-stack-docker-travisci-starlette-test-client-template ) |graphene, pytest | -|[fastapi-admin](https://github.com/long2ice/fastapi-admin ) |colorama, passlib, fastapi_admin, prompt_toolkit, tortoise, module, xlsxwriter, jwt | -|[fastapi-auth](https://github.com/dmontagu/fastapi-auth ) |argon2, bcrypt, pytest, requests, typing_extensions, fastapi_auth, tests, sqlalchemy, jwt | -|[fastapi-backend](https://github.com/dev-courses/fastapi-backend ) |bcrypt, pytest, passlib, asyncpg, loguru, slugify, tests, asgi_lifespan, sqlalchemy, docker, alembic, psycopg2, databases, jwt, httpx | -|[fastapi-boilerplate](https://github.com/teamhide/fastapi-boilerplate ) |alembic, jwt, sqlalchemy, core, myapp | -|[fastapi-celery](https://github.com/GregaVrbancic/fastapi-celery ) |worker, celery | -|[fastapi-celery-redis-rabbitmq](https://github.com/karthikasasanka/fastapi-celery-redis-rabbitmq ) |redis, celery, shopping | -|[fastapi-cool](https://github.com/genchsusu/fastapi-cool ) |kombu, aiosmtplib, tortoise, yaml, settings, celery, jwt, ldap3 | -|[fastapi-crud](https://github.com/sophiabrandt/fastapi-crud ) |databases, pytest, sqlalchemy, db | -|[fastapi-crud-sync](https://github.com/testdrivenio/fastapi-crud-sync ) |pytest, sqlalchemy | -|[fastapi-demo](https://github.com/sonhal/fastapi-demo ) |rethinkdb, fastapi_demo | -|[fastapi-discovery](https://github.com/DenisOH/fastapi-discovery ) |sqlalchemy, fastapi_discovery | -|[fastapi-docs-cn](https://github.com/apachecn/fastapi-docs-cn ) |graphene, passlib, peewee, couchbase, sqlalchemy, flask, databases, jwt | -|[fastapi-esf-demo](https://github.com/hightfly/fastapi-esf-demo ) |databases, sqlalchemy, sqlalchemy_utils | -|[fastapi-etag](https://github.com/steinitzu/fastapi-etag ) |pytest, requests, fastapi_etag | -|[fastapi-exploring](https://github.com/manjurulhoque/fastapi-exploring ) |alembic, dotenv, fastapi_sqlalchemy, sqlalchemy, myapp | -|[fastapi-for-firebase](https://github.com/attakei/fastapi-for-firebase ) |fastapi_for_firebase, pytest | -|[fastapi-fullstack](https://github.com/lfvilella/fastapi-fullstack ) |pytest, sqlalchemy, validate_docbr | -|[fastapi-healthcheck](https://github.com/jeffsiver/fastapi-healthcheck ) |healthcheck, setuptools | -|[fastapi-helloworld](https://github.com/yashwanthl/fastapi-helloworld ) |nltk, sklearn, modules | -|[fastapi-hero](https://github.com/Hedde/fastapi-heroku-test ) |dotenv, motor, core, db, bson, models, api | -|[fastapi-hex-boilerplate](https://github.com/GArmane/fastapi-hex-boilerplate ) |factory, toolz, tests, sqlalchemy, myapp, alembic, dotenv, databases, pytest | -|[fastapi-jsonrpc](https://github.com/smagafurov/fastapi-jsonrpc ) |fastapi_jsonrpc, aiojobs, pytest, setuptools | -|[fastapi-jwt](https://github.com/carminati-marco/fastapi-jwt ) |ms_auth, auth, jwt, passlib | -|[fastapi-layered-architecture](https://github.com/teamhide/fastapi-layered-architecture ) |alembic, pythondi, jwt, sqlalchemy, core, myapp | -|[fastapi-login](https://github.com/parsd/fastapi-login ) |pytest, requests, setuptools, fastapi_login, assertpy | -|[fastapi-mako](https://github.com/LouisYZK/fastapi-mako ) |mako, setuptools | -|[fastapi-mangum-example](https://github.com/chgangaraju/fastapi-mangum-example ) |mangum | -|[fastapi-microblog](https://github.com/vkhnychenko/fastapi-microblog ) |alembic, core, sqlalchemy, microblog, myapp, user | -|[fastapi-ml-scaffolding](https://github.com/jmeisele/fastapi-ml-scaffolding ) |loguru, pytest, fastapi_scaffolding, joblib | -|[fastapi-ml-skeleton](https://github.com/eightBEC/fastapi-ml-skeleton ) |loguru, pytest, fastapi_skeleton, joblib | -|[fastapi-mount](https://github.com/Midnighter/fastapi-mount ) |mount_demo | -|[fastapi-nuxt-blog](https://github.com/tokusumi/fastapi-nuxt-blog ) |PIL, passlib, sqlalchemy_utils, sqlalchemy, myapp, sendgrid, pytz, alembic, jwt, boto3, pytest | -|[fastapi-permissions](https://github.com/holgi/fastapi-permissions ) |pytest, jwt, fastapi_permissions, passlib | -|[fastapi-playground](https://github.com/FlorianBorn/fastapi-playground ) |PIL, fastai | -|[fastapi-plugins](https://github.com/madkote/fastapi-plugins ) |fastapi_plugins, setuptools, aioredis, tenacity, aiojobs, pytest | -|[fastapi-poc](https://github.com/igorfarias30/fastapi-poc ) |main, data, models, todo | -|[fastapi-postgres-aws-lambda](https://github.com/KurtKline/fastapi-postgres-aws-lambda ) |mangum, sqlalchemy | -|[fastapi-realworld-example-app-mysql](https://github.com/xiaozl/fastapi-realworld-example-app-mysql ) |bcrypt, passlib, asyncpg, loguru, aiomysql, tests, asgi_lifespan, docker, psycopg2, databases, jwt, pytest, httpx | -|[fastapi-route](https://github.com/franodos/fastapi-route ) |response, setuptools | -|[fastapi-satella-metrics](https://github.com/piotrmaslanka/fastapi-satella-metrics ) |fastapi_satella_metrics, requests, setuptools, satella | -|[fastapi-scaffold](https://github.com/ibegyourpardon/fastapi-scaffold ) |xuan | -|[fastapi-simple-cachecontrol](https://github.com/attakei/fastapi-simple-cachecontrol ) |fastapi_simple_cachecontrol, pytest | -|[fastapi-simple-template](https://github.com/MushroomMaula/fastapi-simple-template ) |alembic, dotenv, pytest, faker, sqlalchemy, myapp, fastapi_login | -|[fastapi-snippets](https://github.com/hhatto/fastapi-snippets ) |caches, fastapi_plugins, aioredis | -|[fastapi-sqlalchemy](https://github.com/zuarbase/fastapi-sqlalchemy-example ) |pytest, setuptools, passlib, sqlalchemy_filters, tests, sqlalchemy, ordered_uuid, tzlocal, pytz, fastapi_sqlalchemy, jwt, itsdangerous | -|[fastapi-sqlalchemy-example](https://github.com/zuarbase/fastapi-sqlalchemy-example ) |alembic, itsdangerous, fastapi_sqlalchemy, pytest, fastapi_sqlalchemy_example, sqlalchemy, myapp, click, setuptools | -|[fastapi-starter-kit](https://github.com/Shinichi-Nakagawa/fastapi-starter-kit ) |book, pytest, sqlalchemy, db | -|[fastapi-tdd-docker](https://github.com/pmcarlos/fastapi-tdd-docker ) |pytest, tortoise | -|[fastapi-template](https://github.com/jefmud/fastapi-templates ) |pytest, setuptools, passlib, sentry_sdk, sqlalchemy_utils, gino, sqlalchemy, jose, alembic, fastapi_template, migrations | -|[fastapi-test](https://github.com/jrwalk/fastapi-test ) |pytest, pandas | -|[fastapi-tools](https://github.com/so1n/fastapi-tools ) |fastapi_tools, prometheus_client, httpx | -|[fastapi-tortoise](https://github.com/prostomarkeloff/fastapi-tortoise ) |loguru, pytest, tortoise, requests, tests | -|[fastapi-users](https://github.com/frankie567/fastapi-users ) |passlib, tortoise, tests, asynctest, asgi_lifespan, sqlalchemy, httpx_oauth, makefun, databases, motor, jwt, fastapi_users, pytest, httpx | -|[fastapi-utils](https://github.com/dmontagu/fastapi-utils ) |pytest, fastapi_utils, tests, sqlalchemy | -|[fastapi-uvicorn-gunicorn-nginx-supervisor-boilerplate](https://github.com/sumitsk20/fastapi-uvicorn-gunicorn-nginx-supervisor-boilerplate ) |orjson, motor, core, server, bson, apps, utils | -|[fastapi-versioning](https://github.com/DeanWay/fastapi-versioning ) |example, typing_extensions, fastapi_versioning, setuptools | -|[fastapi-vue-test](https://github.com/abreumatheus/fastapi-vue-test ) |PIL, sqlalchemy, myapp, pytz, alembic, boto3 | -|[fastapi-websockets](https://github.com/natanael-silvamt/fastapi-websockets ) |api | -|[fastapi-whisper-rest-api](https://github.com/BolajiOlajide/fastapi-whisper-rest-api ) |api | -|[fastapi_admin](https://github.com/Chise1/fastapi_admin ) |apps, setuptools, passlib, fastapi_admin, sqlalchemy, settings, databases, pymysql, jwt | -|[fastapi_catchup](https://github.com/Kamihara/fastapi_catchup ) |intro | -|[fastapi_douyin](https://github.com/bigdataboy2020/fastapi_douyin ) |routers, requests, settings, exceptions, spiders | -|[fastapi_gino](https://github.com/pengyejun/fastapi_gino ) |gino_starlette, pytest, gino_fastapi_demo, sqlalchemy, myapp, aioredis, alembic, poetry, urllib2 | -|[fastapi_microblog](https://github.com/mrworksome/fastapi_microblog ) |alembic, databases, core, sqlalchemy, microblog, myapp, user, passlib, fastapi_users | -|[fastapi_mock](https://github.com/superxuu/fastapi_mock ) |apis, yaml, common | -|[fastapi_model](https://github.com/Nathanlauga/fastapi_model ) |loguru, joblib | -|[fastapi_playground](https://github.com/Rurson/fastapi_playground ) |pony, db | -|[fastapi_preset](https://github.com/cln-m4rie/fastapi_preset ) |setuptools | -|[fastapi_router](https://github.com/christopherzimmerman/fastapi_router ) |fastapi_router, trimport, setuptools | -|[fastapi_serviceutils](https://github.com/skallfass/fastapi_serviceutils_template ) |pytest, requests, setuptools, toolz, loguru, fastapi_serviceutils, yaml, cookiecutter, sqlalchemy, databases | -|[fastapi_serviceutils_template](https://github.com/skallfass/fastapi_serviceutils_template ) |fastapi_serviceutils | -|[fastapi_stu](https://github.com/Thousandhack/fastapi_stu ) |aliyunsdkcore, jwt, sqlalchemy, passlib | -|[fastapi_template](https://github.com/ytxfate/fastapi_template ) |pymongo, redis, jwt, minio, project | -|[fastapi_todo_hex](https://github.com/josemlp91/fastapi_todo_hex ) |factory, toolz, pytest_factoryboy, tests, sqlalchemy, myapp, alembic, dotenv, databases, pytest, todolist | -|[fastbroker](https://github.com/cetanu/fastbroker ) |pkg_resources, ujson, fastbroker, jsonschema, setuptools | -|[fastrf](https://github.com/iancleary/fastrf ) |asgi_lifespan, pytest, fastrf, httpx | -|[fbd-backend](https://github.com/ElusiveSpirit/fbd-backend ) |redis, pytest_mock, celery, loguru, ujson, pytest, tests | -|[finance-api](https://github.com/rennerocha/finance-api ) |finance_api, dynaconf, pytest, requests | -|[first_fastapi](https://github.com/vittorduartte/first_fastapi ) |routes, ext, schemas, sqlalchemy, rules, models | -|[firstderm_demo](https://github.com/polyrand/firstderm_demo ) |requests | -|[foreign-subs](https://github.com/joe-eklund/foreign-subs ) |fsubs, setuptools, pymongo, typer, jwt, bson | -|[frontapp](https://github.com/Blasterai/frontapp ) |decorator, frontapp, requests, envparse, attr | -|[fullasync](https://github.com/lipengsh/fullasync ) |celery, tasks, core, api | -|[fullstack-fastapi-elasticsearch](https://github.com/cleobulo/fullstack-fastapi-elasticsearch ) |core, elasticsearch, db, models, api | -|[fuzzy-octo-funicular](https://github.com/mattkatz/fuzzy-octo-funicular ) |main | -|[gaia-fastapi-demo](https://github.com/muslax/gaia-fastapi-demo ) |email_validator, passlib, pymongo, sentry_sdk, motor, jwt, bson, emails | -|[gaki-server](https://github.com/shitangdama/gaki-server ) |alembic, jwt, sqlalchemy, myapp, passlib | -|[galicea-odoo-addons-ecosystem](https://github.com/galicea/galicea-odoo-addons-ecosystem ) |cryptography, werkzeug, jwcrypto, odoo, git | -|[game](https://github.com/jsandovalc/fake-news-game ) |basegame | -|[gateway-microservice](https://github.com/anforaProject/gateway-microservice ) |aiohttp, v1 | -|[gerenciador-tarefas](https://github.com/matheuspsouza/gerenciador-tarefas ) |gerenciador_tarefas | -|[gfw-tile-cache](https://github.com/wri/gfw-tile-cache ) |gino_starlette, mercantile, pytest, pendulum, async_lru, requests, shapely, cachetools, sqlalchemy, aenum | -|[gifter_api](https://github.com/zhanymkanov/gifter_api ) |pytest, jwt, sqlalchemy, tests, passlib | -|[gigscovery_backend](https://github.com/martijnboers/gigscovery_backend ) |functions, sklearn, bandsintown, spotipy | -|[gino-admin](https://github.com/xnuinside/gino-admin ) |sanic, pytest, click, jinja2, db, requests, passlib, expiring_dict, gino_admin, asyncpg, dsnparse, sqlalchemy_utils, gino, urllib3, aiofiles, yaml, sqlalchemy, sanic_jwt, sanic_jinja2 | -|[gino-starlette](https://github.com/python-gino/gino-starlette ) |requests, gino_fastapi_demo, asyncpg, gino, urllib3, importlib_metadata, sqlalchemy, alembic, pytest, click | -|[girandole](https://github.com/bartkl/girandole ) |beets, plugin, girandole, yaml | -|[girias.json](https://github.com/kvnol/girias.json ) |tinydb | -|[gitea-dispatcher](https://github.com/Trim21/gitea-dispatcher ) |httpx | -|[gke-cicd-sandbox](https://github.com/mana-ysh/gke-cicd-sandbox ) |exampleapp, pytest | -|[glittr-fastapi](https://github.com/kellischeuble/glittr-fastapi ) |glittr, sqlalchemy | -|[graph-server](https://github.com/ZettaAI/graph-server ) |pychunkedgraph, numpy | -|[graphql-python-server](https://github.com/apoveda25/graphql-python-server ) |env, gql, dotenv, schemas, ariadne, models, database, arango | -|[graphql-tutorial](https://github.com/jcremona/graphql-tutorial ) |schema, graphene | -|[grocery-stores-home-delivery](https://github.com/dz-experts/grocery-stores-home-delivery ) |db, app_factory, setuptools, crud, api, typer, sqlalchemy, myapp, alembic, constans, schemas, core, models | -|[guid_tracker](https://github.com/nwcell/guid_tracker ) |alembic, databases, aiocache, guid, pytest, sqlalchemy, sqlalchemy_utils, myapp | -|[hackaton-berlin-legal-tech-2020](https://github.com/jjanczur/hackaton-berlin-legal-tech-2020 ) |pytest, sklearn, joblib, nltk, loguru, cleaner, config, fastapi_skeleton, bs4 | -|[hello-world-fastapi](https://github.com/benhid/hello-world-fastapi ) |fastapp, setuptools, rich | -|[henry](https://github.com/jacksonhenry3/FAAS ) |infrastructure, interface, sqlalchemy | -|[heroku-google-translate-api](https://github.com/fawazahmed0/heroku-google-translate-api ) |googletrans | -|[hh_parser](https://github.com/Kuzyashin/hh_parser ) |passlib, aiohttp, tortoise, template, celery, jwt, emails | -|[home_recruiters](https://github.com/Mohamed-Kaizen/home_recruiters ) |users, pendulum, passlib, jobs, tortoise, typer, usernames, jwt, core, confusable_homoglyphs, username | -|[http-battle](https://github.com/MihaiAnei/http-battle ) |flask_restful, flask, python_flask | -|[hvilkenfisk](https://github.com/David-IL/hvilkenfisk ) |imutils, fish_utils, sklearn, h5py, cv2, keras, img_preprocess, model_utils | -|[iam_working](https://github.com/carlosporta/iam_working ) |iam_working | -|[iem-web-services](https://github.com/akrherz/iem-web-services ) |setuptools, pyiem, shapely, metpy, pytz, pygrib, pyproj, pandas, geopandas, pytest | -|[ihan-productizer-example](https://github.com/digitalliving/ihan-productizer-example ) |aiohttp, ujson, settings_local, settings | -|[image_capabilities_backend](https://github.com/alejgo06/image_capabilities_backend ) |PIL, cv2 | -|[image_classifier_backend](https://github.com/alejgo06/image_classifier_backend ) |PIL, cv2 | -|[image_detector_backend](https://github.com/alejgo06/image_detector_backend ) |PIL, torch, utils, torchvision, pycocotools, models, cv2 | -|[img-filter-api](https://github.com/RaRhAeu/img-filter-api ) |aiohttp, cv2, api, requests, pytest | -|[ingaia_app](https://github.com/higaooliveira/ingaia_app ) |pytest, sqlalchemy, resources, requests, config, spotipy, domain | -|[innovativeproject-photographers-portfolio](https://github.com/nokia-wroclaw/innovativeproject-photographers-portfolio ) |fastapi_mail, jwt, sqlalchemy, src, database, passlib | -|[inpainting_backen](https://github.com/kaikai03/inpainting_backen ) |tinydb | -|[introduction-to-async-await](https://github.com/ci42/introduction-to-async-await ) |unsync, unsyncable, colorama | -|[iter8-analytics](https://github.com/iter8-tools/iter8-analytics ) |analytics_namespace, requests, flask_restplus, setuptools, experiment_namespace, yaml, jsonschema, iter8_analytics, django, flask, requests_mock | -|[jjs](https://github.com/jjs-dev/jjs ) |bcrypt, pytest, api_models, pymongo, db_models, routes, auth, db_connect | -|[jobsearch_statistics](https://github.com/JobtechSwe/jobsearch_statistics ) |certifi, searchstatistics, elasticsearch | -|[json-fastapi](https://github.com/stocky37/json-fastapi ) |json_fastapi, tinydb, slugify, link_header, util | -|[juice-box](https://github.com/dannytannertantrum/juice-box ) |tests | -|[jupyter_fastapi](https://github.com/Zsailer/jupyter_fastapi ) |jupyter_server, tornado, hypothesis, pytest, jupyter_fastapi, hypothesis_jsonschema, setuptools | -|[k8s-traefik-example](https://github.com/Hedde/k8s-traefik-example ) |flask | -|[kartu-beckend](https://github.com/AntonKristiono/kartu-beckend ) |PIL, config, yaml, autocrop, routes, motor, bson, cv2 | -|[koalachat](https://github.com/therumbler/koalachat ) |koalachat, aiofiles | -|[koalastream](https://github.com/therumbler/koalastream ) |aiofiles, koalastream | -|[kritika](https://github.com/Egnod/kritika ) |alembic, sitri, slugify, sqlalchemy, myapp, kritika | -|[kubeflow-containers-desktop](https://github.com/StatCan/kubeflow-containers-desktop ) |tqdm, jupyter_core, setuptools, tornado, crontab, pip, psutil, IPython, git, notebook | -|[kubernetes-experiments](https://github.com/richard-to/kubernetes-experiments ) |redis, alembic, sqlalchemy, myapp, passlib | -|[kuma](https://github.com/deepalikumar/sync_async_compare ) |bcrypt, docstring_parser, passlib, orjson, loguru, sqlalchemy, myapp, jupyter_client, alembic, databases, jwt, nbformat | -|[kvmail](https://github.com/la9ran9e/kvmail ) |tarantool, dotenv, settings | -|[lab_monitor](https://github.com/nutanix-japan/lab_monitor ) |pymongo, requests, schedule, client | -|[lagom](https://github.com/meadsteve/lagom ) |sybil, pytest, lagom, typing_extensions, tests, django, flask | -|[lang-python](https://github.com/tim-barnes/lang-python ) |submod2, worker_a, etcd3, rabbit, worker_b, optmod1, psutil, mongoengine, pika, test_pb2, grpc, google, optmod2, submod1, celery, flask, models, pytest | -|[league-manager](https://github.com/Project-SRC/league-manager ) |jwt, src, environs, passlib | -|[learn-kubernetes](https://github.com/quan-vu/learn-kubernetes ) |flask, flask_restful | -|[lgbsttracker_api](https://github.com/py4mac/lgbsttracker_api ) |lgbsttracker, lgbsttracker_api | -|[lightgbm-project-demo](https://github.com/raywu60kg/lightgbm-project-demo ) |psycopg2, sklearn, src, tests, ray | -|[linkalong-pre-inteview-task](https://github.com/pydevd/linkalong-pre-inteview-task ) |decouple, linkalong | -|[love-alarm](https://github.com/dl-eric/love-alarm ) |pymongo, redis, nexmo, jwt, boto3, bson, passlib | -|[maale-map-bot](https://github.com/kudanai/maale-map-bot ) |pyngrok, dotenv, discord, bots, viberbot, models, settings, fuzzywuzzy, telegram | -|[manageme-api](https://github.com/managemeapp/manageme-api ) |mangum, today_app, setuptools | -|[mangum-fastapi-aws-test](https://github.com/dan-danciu/mangum-fastapi-aws-test ) |mangum | -|[mars-rover](https://github.com/rSkogeby/mars-rover ) |models, views | -|[memefly-ds](https://github.com/Lambda-School-Labs/memefly-ds ) |wandb, memefly, requests, pymongo, decouple, api, tensorflow, dotenv, boto3, click | -|[metabot](https://github.com/vasyukvv42/metabot ) |metabot, requests, fastapi_metabot, setuptools, aiohttp, pymongo, help, typing_extensions, feedback, aioredis, vacations, slackers, motor, mockaioredis, bson, slack, pytest, httpx | -|[micro-data-lake](https://github.com/abxda/micro-data-lake ) |sklearn, newspaper, altair, airflow, sqlalchemy, IPython, minio, setproctitle | -|[microservices](https://github.com/hugosteixeira/microservices ) |requests | -|[mironov_blog_pwa](https://github.com/yuriymironov96/mironov_blog_pwa ) |alembic, dotenv, sqlalchemy, myapp, apps | -|[ml-project-template](https://github.com/raywu60kg/ml-project-template ) |psycopg2, src, tests, ray | -|[ml-workspace](https://github.com/DennisRasey/ml-workspace ) |jupyter_core, tqdm, setuptools, tornado, crontab, pip, psutil, IPython, git, notebook | -|[modelo-fast-api](https://github.com/knienkotter/modelo-fast-api ) |pytest, gerenciador_tarefas | -|[moneyTransfer](https://github.com/williamsyb/moneyTransfer ) |faker, db, app_factory, passlib, apis, config, utils, main, sqlalchemy, auth, schemas, jwt, pytest | -|[mongodb_admin](https://github.com/ArtemZaitsev1994/mongodb_admin ) |trafaret_config, envparse, pymongo, base, motor, jwt, bson | -|[mri_image_reconstruction](https://github.com/Pradhy729/mri_image_reconstruction ) |utils, config | -|[msys2-web](https://github.com/msys2/msys2-web ) |pytest, pgpdump, jinja2, fastapi_etag, respx, httpx | -|[musixfy_service](https://github.com/divyam234/musixfy_service ) |requests, Cryptodome | -|[mv-backend](https://github.com/Sreerajta/mv-backend ) |cassandra, requests, passlib, redis, fnc, global_config, sqlalchemy, jwt, greenstalk | -|[mvp-metric](https://github.com/DjaPy/mvp-metric ) |databases, sqlalchemy, dateutil | -|[mvs_eland_api](https://github.com/rl-institut/mvs_eland_api ) |celery, pytest, worker, mvs_eland_tool, sphinx_rtd_theme | -|[my-notes-app](https://github.com/jgabriel1/my-notes-app ) |databases, pytest, jwt, sqlalchemy, passlib | -|[mychef](https://github.com/logan-connolly/mychef ) |spacy, requests, scrapy, tqdm, aiohttp, asyncpg, loguru, orm, reddit, scraper, sqlalchemy, databases, praw, pytest, jsonlines, bs4 | -|[nasa_neo](https://github.com/cmmarti/nasa_neo ) |repo, requests | -|[nereid](https://github.com/Geosyntec/nereid ) |nereid, pytest, redis, typing_extensions, numpy, matplotlib, scipy, yaml, pint, celery, pandas | -|[ners](https://github.com/cedricconol/ners ) |utils, config | -|[netpalm](https://github.com/tbotnz/netpalm ) |xmltodict, rq, netmiko, pytest, jinja2, backend, netpalm_pinned_worker, requests, jinja2schema, redis, lxml, tests, jsonschema, ncclient, routers, napalm | -|[next-word-sentence-pred-api](https://github.com/rakesh4real/next-word-sentence-pred-api ) |tree, sqlalchemy, models, database | -|[nile-api](https://github.com/mattgeiger/nile-api ) |alembic, bcrypt, databases, jwt, sqlalchemy, api | -|[nlp_api](https://github.com/rdenadai/nlp_api ) |nltk, decouple, spacy, utils | -|[nmdc-server](https://github.com/microbiomedata/nmdc-server ) |pytest, faker, factory, requests, setuptools, pkg_resources, sqlalchemy, alembic, nmdc_server | -|[nomine](https://github.com/gzzo/nomine ) |graphql_sqlalchemy, ariadne, sqlalchemy, nomine, graphql | -|[nurse-schedule](https://github.com/csabex94/nurse-schedule ) |spital_routes, mongoengine, nurse_routes, jwt, models, utils, passlib | -|[oasis](https://github.com/instedd/oasis ) |users, bcrypt, pytest, stories, requests, mysql, flask_cors, sqlalchemy, myapp, sigfig, database, jenkspy, alembic, flask, auth, jwt, router, emails | -|[ocfapi](https://github.com/nikhiljha/ocfapi ) |ocflib | -|[oreMeet](https://github.com/mfortini/oreMeet ) |ics, worker | -|[owi_Result-Collector](https://github.com/JensGe/owi_Result-Collector ) |sqlalchemy, tests | -|[page-visitor-counter](https://github.com/trapflag/page-visitor-counter ) |redis | -|[paste.bin](https://github.com/magiskboy/paste.bin ) |pymongo, redis, gridfs, bson | -| |PIL, PyPDF4 | -|[perfume-ai](https://github.com/gurutaka/perfume-ai ) |PIL, torchvision, predict, cv2, torch | -|[persistent-identifier-service](https://github.com/OpertusMundi/persistent-identifier-service ) |ompid, yaml, sqlalchemy | -|[personal-learning](https://github.com/hoangthienan95/personal-learning ) |pyimagesearch, sklearn, calculator, cv2, keras | -|[pi-camera-hardware-server](https://github.com/NSnietol/pi-camera-hardware-server ) |loguru, picamera, requests, src | -|[piccolo_api](https://github.com/piccolo-orm/piccolo_api ) |setuptools, asyncpg, test_session, piccolo, livereload, jwt, piccolo_api, asgiref | -|[plarin_task](https://github.com/jjoskey/plarin_task ) |pymongo, main, employees, pytest, faker, bson, settings | -|[plonkowski.b-gmail.com](https://github.com/Raroog/plonkowski.b-gmail.com ) |main | -|[plotly-graphene](https://github.com/mdpham/plotly-graphene ) |pymongo, mutation, graphene, schema, minio, loompy, bson, query, minio_client | -|[pneumoniadetection](https://github.com/aalikadic/pneumoniadetection ) |kaggle, PIL, classifier, keras | -|[pol](https://github.com/RedHatInsights/policies-notifications ) |pytest, requests, aioresponses, etc, orjson, aiohttp, redis, sentry_sdk, tests, sqlalchemy, myapp, aioredis, pytz, alembic, databases, aiologger | -|[policies-notifications](https://github.com/RedHatInsights/policies-notifications ) |pytest, jinja2, aiokafka, aiohttp, asyncpg, prometheus_client, apscheduler, gino, tests, sqlalchemy, myapp, starlette_prometheus, alembic | -|[poll-app](https://github.com/jgabriel1/poll-app ) |pymongo, dotenv, selenium, pytest, flask_testing, tests, config | -|[ppm-telegram-bot](https://github.com/piterpy-meetup/ppm-telegram-bot ) |pip, aiogram, fastapi_security_telegram_webhook, ppm_telegram_bot | -|[ppr](https://github.com/bcgov/ppr ) |pytest, endpoints, requests, setuptools, sentry_sdk, freezegun, config, main, repository, sqlalchemy, myapp, datedelta, pytz, alembic, dotenv, schemas, models | -|[practical-python](https://github.com/sudharsan2020/practical-python ) |redis, celery_with_fastapi, celery | -|[programs](https://github.com/deta/programs ) |deta, jinja2, colors, svgs, passlib | -|[projects](https://github.com/hungd25/projects ) |sklearn, lrsgd, utils, numpy, matplotlib, nose, models_partc, src, phonenumbers | -|[property-prediction](https://github.com/solanyn/property-prediction ) |botocore, psycopg2, pytest, catboost, sklearn, hello_world, boto3, requests | -|[proxmox-slack-bot](https://github.com/PlenusPyramis/proxmox-slack-bot ) |slack_model, requests, slack | -|[proxy-checker](https://github.com/infaticaio/proxy-checker ) |aiohttp, main, checker, aiosocks | -|[py-cidemia-security](https://github.com/cidemia/py-cidemia-security ) |werkzeug, requests, setuptools, passlib, yaml, cidemiasecurity, jwt | -|[pyBets](https://github.com/GabrielCappelli/pyBets ) |error_messages, db_models, views, sqlalchemy, application, database, app_logging, models, services, pytest | -|[pyapi](https://github.com/srghosh29/pyapi ) |apis | -|[pycon2020-FastAPI](https://github.com/gloriasky/pycon2020-FastAPI ) |schemas, sqlalchemy, models, api, database | -|[pyctuator](https://github.com/SolarEdgeTech/pyctuator ) |werkzeug, multidict, requests, aiohttp, redis, tests, psutil, pyctuator, sqlalchemy, flask, pytest | -|[pydantic-ddd-exploration](https://github.com/allgreed/pydantic-ddd-exploration ) |sqlalchemy, src | -|[pyml](https://github.com/dockerian/pyml ) |PIL, pytest, setuptools, gevent, h5py, tests, numpy, dateutil, matplotlib, scipy, mock, connexion, yaml, google, jsonpickle, flask, ml, asgiref | -|[pypis](https://github.com/jurelou/pypis ) |packaging, setuptools, asyncpg, loguru, pkg_resources, sqlalchemy, stdlib_list, dynaconf, pypis, httpx | -|[python](https://github.com/jijinggang/test_python ) |requests, requests_html, unidecode, lxml, openpyxl, send_mail, download_util, formatting, settings, templates, flask | -|[python-api-template](https://github.com/mana-ysh/python-api-template ) |pytest | -|[python-asyncio-crud](https://github.com/aleimu/python-asyncio-crud ) |sanic, six, uvloop, muggle_ocr, redis, flask_sqlalchemy, aiomysql, sqlalchemy, aioredis, flask | -|[python-crash-course](https://github.com/cyberinsane/python-crash-course ) |tinydb, schema, pandas, requests | -|[python-deployment-samples](https://github.com/edisga/python-deployment-samples ) |aiohttp, webtest, django, pyramidsite, flask, pyramid, flask_cors, my_app, setuptools, other_app | -|[python-fastapi-hex-todo](https://github.com/GArmane/python-fastapi-hex-todo ) |pytest, faker, factory, passlib, toolz, asyncpg, pytest_factoryboy, tests, sqlalchemy, myapp, alembic, dotenv, databases, jwt, todolist | -|[python-graphql](https://github.com/tsungchih/python-graphql ) |graphene, aiohttp, loguru, ujson, psutil, graphql | -|[python-ml-service-template](https://github.com/paramoshin/python-ml-service-template ) |yaml, joblib, starlette_prometheus | -|[python-playground](https://github.com/tgmti/python-playground ) |flask_restful, flask, sqlalchemy | -|[python-poetry-docker-example](https://github.com/michael0liver/python-poetry-docker-example ) |pytest | -|[python-private-service-layout](https://github.com/U-Company/python-private-service-layout ) |fire, loguru, prometheus_client, pytest, vault_client, info, clients, tests, setuptools | -|[python_benchmark](https://github.com/T4D3K/python_benchmark ) |fastapi_frm, locust, sqlalchemy, tortoise, falcon, gino, falcon_frm | -|[python_common_tools](https://github.com/CheungChan/python_common_tools ) |requests, setuptools, redis, python_common_tools, paramiko, stackprinter, DBUtils, pymysql | -|[python_fastapi](https://github.com/playwhyyza/python_fastapi ) |jwt, passlib | -|[qa-api](https://github.com/venuraja79/qa-api ) |elasticapm, controller, haystack, config | -|[qhub-home](https://github.com/Quansight/qhub-home ) |toml, flit, setuptools | -|[qr-generator](https://github.com/gosha20777/qr-generator ) |qrcode | -|[rakm](https://github.com/emanuelaguna/rakm ) |pytest, requests, aiohttp, asyncache, invoke, asyncmock, tests, dateutil, cachetools, async_asgi_testclient, async_generator, dotenv | -|[random_projects](https://github.com/thepartisan101/random_projects ) |flask_restful, graphene, extraction, selenium, flask, flask_graphql, schema, sqlalchemy, requests | -|[recommender_fastapi](https://github.com/gjorgjinac/recommender_fastapi ) |repository, pybreaker, helper, sqlalchemy, default_ad_listener, requests, web, defaults | -|[recommender_server](https://github.com/gjorgjinac/recommender_server ) |repository, pybreaker, helper, sqlalchemy, default_ad_listener, requests, web, defaults | -|[ref-final-project-backend](https://github.com/Reyvel/ref-final-project-backend ) |faust, kafka, msgpack, settings, utils | -|[repost-fastapi](https://github.com/pckv/repost-fastapi ) |dotenv, jwt, sqlalchemy, repost, passlib | -|[responsive-layout-part](https://github.com/lmacchiavelli/responsive-layout-part ) |PIL | -|[rest_api_docker_mongo_aws](https://github.com/RodrigoMachado9/rest_api_docker_mongo_aws ) |pymongo, six, bottle_resource, beartype, bottle, spacy, passlib | -|[restbot](https://github.com/cwerner/restbot ) |restbot, loguru, pytest, joblib | -|[reternal-backend](https://github.com/d3vzer0/reternal-backend ) |pymongo, redis, flask_restful, flask_jwt_extended, sigma, workers, mongoengine, yaml, environment, database, pytz, flask_socketio, celery, flask, jwt, bson | -|[reverse-geocoder](https://github.com/claws/reverse-geocoder ) |databases, sqlalchemy, geoalchemy2 | -|[rjgtoys-xc](https://github.com/bobgautier/rjgtoys-xc ) |pytest, jinja2, requests, rjgtoys, apierrors, sphinx, sphinx_autodoc_typehints | -|[rn-fastapi-app](https://github.com/cloudeyes/rn-fastapi-app ) |sample, psycopg2, fastapi_login, MySQLdb, sqlalchemy, fastalchemy, passlib | -|[runn](https://github.com/alex-2201/runn ) |requests, passlib, tests, utils, sqlalchemy, jwt, logzero, pytest, emails | -|[sauti-fastapi](https://github.com/taycurran/sauti-fastapi ) |dotenv, pstgres, sqlalchemy | -|[sauti-monitor-ds-api](https://github.com/taycurran/sauti-monitor-ds-api ) |dotenv, sqlalchemy | -|[scaling-spoon](https://github.com/bloomingmath/scaling-spoon ) |email_validator, pony, bcrypt, pytest, extensions, passlib, pymongo, selenium, blinker, main, async_asgi_testclient, dotenv, motor, schemas, routers, bson, models | -|[sensehat-fastapi](https://github.com/cmlccie/sensehat-fastapi ) |sense_hat, senseapi | -|[server-open-alpr](https://github.com/NSnietol/server-open-alpr ) |openalpr, loguru, src | -|[serverless-fastapi-cdk](https://github.com/jaehyeon-kim/serverless-fastapi-cdk ) |mangum, resources, src, aws_cdk | -|[show-tell-api](https://github.com/team-eyespace/show-tell-api ) |nltk, PIL, TensorBoardCaption, NIC, evaluate, flask, jwt, preprocessing, keras, utils | -|[signal-cli-rest-api](https://github.com/SebastianLuebke/signal-cli-rest-api ) |pyqrcode, requests, signal_cli_rest_api | -|[simple-kp](https://github.com/ranking-agent/simple-kp ) |aiosqlite, pytest, simple_kp, reasoner_pydantic, data, setuptools | -|[simple-messenger](https://github.com/IvanDubrowin/simple-messenger ) |server | -|[simple-report-data-table-vuetify](https://github.com/shizidushu/simple-report-data-table-vuetify ) |bcrypt, dotenv, mongoengine, jwt, pypandoc, bson, casbin, passlib | -|[simpleapp-aws-fargate](https://github.com/kbaafi/simpleapp-aws-fargate ) |controllers, databases, sqlalchemy, boto3, data, config, services, settings, requests | -|[siso-library](https://github.com/nfowl/siso-library ) |databases, sqlalchemy | -|[sklearn-docker-api](https://github.com/crocopie/sklearn-docker-api ) |sklearn, service, joblib | -|[slowapi](https://github.com/laurentS/slowapi ) |limits, redis, slowapi, tests, hiro, mock | -|[smart-social-distancing](https://github.com/neuralet/smart-social-distancing ) |openvino, tflite_runtime, invoke, ui, tools, wget, scipy, libs | -|[sms_gateway](https://github.com/arxell/sms_gateway ) |passlib, aiohttp, sentry_sdk, aiopg, sqlalchemy, myapp, grpc, google, alembic, psycopg2, jwt, click, grpclib | -|[social-insights](https://github.com/dsc-umass/social-insights ) |sklearn, requests, joblib, nltk, tweepy, numpy, firebase_admin, twitter_credentials, scipy, spellchecker, get_tweets, google, flask, keras, xgboost, suggest | -|[sociallyhigh](https://github.com/NikhilSharmay/sociallyhigh ) |pkg_resources, sociallyhigh | -|[sparky](https://github.com/perfecto25/sparky ) |sparky, config | -|[speechRecognition_api](https://github.com/X-CCS/speechRecognition_api ) |librosa, sklearn, aukit, aip, Django_jianlong, videototextapp, videoaddsubtitleapp, myapp, IPython, my_app, other_app, djcelery, django, celery, video2audio_noiseReduction, keras | -|[start-fastapi](https://github.com/utmhikari/start-fastapi ) |model, middleware, controller, service, application, dotenv | -|[startapp](https://github.com/marlin-dev/startapp ) |extensions, marshmallow, setuptools, passlib, flask_env, flask_jwt_extended, sentry_sdk, flask_sqlalchemy, sqlalchemy_utils, gino, sqlalchemy, flask_marshmallow, takeaway, settings, flask_migrate, starlette_prometheus, flask, app_init, core| -|[statsfy](https://github.com/skmatz/statsfy ) |spotifier | -|[stock-tracker](https://github.com/jgabriel1/stock-tracker ) |pymongo, aiohttp, dotenv, pytest, jwt, server, requests, passlib | -|[stores](https://github.com/dz-experts/grocery-stores-home-delivery ) |stores, pytest, api, util | -|[storyboard_renderer](https://github.com/Weltii/storyboard_renderer ) |render_job, layouts, bridge, statics, layout_bridge, utils | -|[summaries](https://github.com/bradstimpson/summaries ) |nltk, newspaper, pytest, tortoise | -|[summarize-api](https://github.com/gary23w/summarize-api ) |nltk, newspaper, pytest, tortoise | -|[surfacescan](https://github.com/vbogretsov/surfacescan ) |networkx, pytest, faker, atomiclong, locust, surfacescan, pkg_resources, tests | -|[sweetHome](https://github.com/zkity/sweetHome ) |serial, lib | -|[sync_async_compare](https://github.com/deepalikumar/sync_async_compare ) |blog, faker, marshmallow, flask_sqlalchemy, sqlalchemy_utils, flask_apispec, commands, sqlalchemy, myapp, resources, settings, flask_migrate, alembic, dotenv, flask, databases, pytest | -|[takeAction-Backend](https://github.com/AndyKChen/takeAction-Backend ) |ml_controller, googlesearch, sklearn, getURL, bs4, keras, utils, numpy | -|[tariffengineapi](https://github.com/SofieneEnnaoui/tariffengineapi ) |memory_profiler, redis, numba, tariffs_modules, tests, api_fastapi, memory | -|[task_manager](https://github.com/VladOsiichuk/task_manager ) |passlib, gino, sqlalchemy, myapp, alembic, jwt | -|[taskriptor-web](https://github.com/nasuka/taskriptor-web ) |alembic, sqlalchemy, myapp | -|[tdd-fastapi-template](https://github.com/markusntz/tdd-fastapi-template ) |fastapi_tdd_docker, pytest, tortoise | -|[teached](https://github.com/Mohamed-Kaizen/teached ) |pytest, pendulum, requests, passlib, loguru, tortoise, teached, typer, importlib_metadata, nox, usernames, dropbox, jwt, confusable_homoglyphs, username | -|[techsoulai_backend](https://github.com/zhanymkanov/techsoulai_backend ) |pytest, jamspell, jwt, sqlalchemy, pymystem3, passlib | -|[temperature-web](https://github.com/sj175/temperature-web ) |board, dotenv, adafruit_dht, boto3, requests | -|[test_fastapi](https://github.com/leblancfg/test_fastapi ) |PIL, magic, fastapi_versioning, autocrop, cv2, requests, google | -|[test_shop](https://github.com/Ayaks7/test_shop ) |requests, passlib, peewee, user_orders, my_app, other_app, django, yoyo, catalog, auth, jwt, pytest, peewee_async, tastypie | -|[testfastapi](https://github.com/18438655078/testfastapi ) |tortoise, boto3 | -|[todo-list-fastapi](https://github.com/mcauto/todo-list-fastapi ) |aiofiles, pytest, jwt, sqlalchemy, src, passlib | -|[todoapp](https://github.com/prashunchitkr/todoapp ) |alembic, jwt, sqlalchemy, myapp, passlib | -|[trainee_mi](https://github.com/goncharov-roman/trainee_mi ) |pymongo | -|[transactions_api](https://github.com/txemac/transactions_api ) |pytest, sqlalchemy, sqlalchemy_utils, database | -|[transformers](https://github.com/raphtlw/transformers ) |aitextgen | -|[translator](https://github.com/eightytwo/translator ) |translator, schemas, api, httpx | -|[try-fast-api](https://github.com/kayshcache/try-fast-api ) |dotenv | -|[users-service](https://github.com/falled10/users-service ) |werkzeug, pytest, oauth2client, sqlalchemy_utils, api, config, main, repository, humps, sqlalchemy, myapp, alembic, jwt, routers, authlib, services | -|[uvicorn-gunicorn-fastapi](https://github.com/dshadow/uvicorn-gunicorn-fastapi-docker ) |test_utils, docker, requests, pytest | -|[vollmacht](https://github.com/ogeller/vollmacht ) |fitz | -|[volunteer-database](https://github.com/crowdsourcemedical/volunteer-database ) |alembic, pytest, jwt, sqlalchemy, myapp, passlib | -|[wamedex2](https://github.com/gwf-uwaterloo/wamedex2 ) |pytest, pyserini, hnswlib, pkg_resources, helper, freezegun, dateparser | -|[wazo-router-calld](https://github.com/wazo-platform/wazo-router-calld ) |wazo_router_calld, consul, click, sqlalchemy, setuptools | -|[web-api](https://github.com/aroio/web-api ) |exceptions, yaml, auth, jwt, routers, models, data | -|[web-avatarify](https://github.com/charlielito/web-avatarify ) |PIL, afy, skimage, moviepy, requests, imageio, tqdm, animate, sync_batchnorm, ffmpeg, torch, matplotlib, scipy, face_alignment, yaml, python_path, cv2, modules | -|[web-frameworks-benchmark](https://github.com/kesha1225/web-frameworks-benchmark ) |muffin, sanic, pyramid, falcon, requests, bottle, aiohttp, bobo, quart, hug, japronto, request_bench, my_app, other_app, django, flask, cherrypy, kumquat, freezy | -|[web_speedtest](https://github.com/Kulikovpavel/web_speedtest ) |flask | -|[weblink-downloader](https://github.com/cortexin/weblink-downloader ) |passlib, asyncpg, tests, link_downloader, databases, pytest, httpx | -|[xo_back](https://github.com/octomen/xo_back ) |pytest, api | -|[xpublish](https://github.com/xarray-contrib/xpublish ) |xarray, pytest, cachey, xpublish, setuptools, pkg_resources, h5py, netCDF4, numcodecs, dask, zarr | -|[xraysink](https://github.com/garyd203/xraysink ) |aiohttp, jsonpickle, xraysink, async_asgi_testclient, aws_xray_sdk, requests, pytest | -|[yappfm-backend](https://github.com/yappfm/yappfm-backend ) |alembic, sqlalchemy, myapp, yappfm, gino | -|[yatsm](https://github.com/danielmartins/yatsm ) |dramatiq, walrus, pytest, pendulum, passlib, apscheduler, typer, assertpy, pytz, jwt, yatsm | -|[yumemi_intern_API](https://github.com/tkrk1209/yumemi_intern_API ) |aiohttp, sqlalchemy, myapp, google, alembic | -|[zo](https://github.com/wazo-platform/wazo-router-calld ) |PIL, requests, ssdb, setuptools, loguru, urllib3, zo, munch | +The instructions below assume you have [pyenv](https://github.com/pyenv/pyenv) installed. +If you don't, use any other method to create a virtual environment +and install Python 3.11.4. -## Contributing +- Install Python 3.11.4 -Pull requests are welcome. +```shell +pyenv install 3.11.4 +``` + +- Create a virtual environment + +```shell +pyenv virtualenv 3.11.4 awesome-fastapi-projects +``` + +- Activate the virtual environment + +```shell +pyenv local awesome-fastapi-projects +``` + +#### Install dependencies and pre-commit hooks + +There is a `Makefile` with some useful commands to help you get started. +For available commands, run `make help`. To install dependencies and pre-commit hooks, run: + +```shell +make +``` + +#### Frontend + +The frontend is built with [React](https://reactjs.org/) and [Next.js](https://nextjs.org/). +It is being statically built and served on GitHub Pages: https://Kludex.github.io/awesome-fastapi-projects/ + +To run the frontend locally, you need to install [Node.js](https://nodejs.org/en/) and [pnpm](https://pnpm.io/). +The node version is specified in the `.node-version` file. +To easily manage the node version, you can use [fnm](https://github.com/Schniz/fnm). +Then, run the following commands: + +```shell +make front +``` + +This will install the dependencies and start the development server. +The frontend will be available at http://localhost:3000. diff --git a/alembic.ini b/alembic.ini new file mode 100644 index 0000000..c396e5b --- /dev/null +++ b/alembic.ini @@ -0,0 +1,107 @@ +# A generic, single database configuration. +[alembic] +# path to migration scripts +script_location = migrations + +# template used to generate migration file names; The default value is %%(rev)s_%%(slug)s +# Uncomment the line below if you want the files to be prepended with date and time +# file_template = %%(year)d_%%(month).2d_%%(day).2d_%%(hour).2d%%(minute).2d-%%(rev)s_%%(slug)s + +# sys.path path, will be prepended to sys.path if present. +# defaults to the current working directory. +prepend_sys_path = . + +# timezone to use when rendering the date within the migration file +# as well as the filename. +# If specified, requires the python-dateutil library that can be +# installed by adding `alembic[tz]` to the pip requirements +# string value is passed to dateutil.tz.gettz() +# leave blank for localtime +# timezone = + +# max length of characters to apply to the +# "slug" field +# truncate_slug_length = 40 + +# set to 'true' to run the environment during +# the 'revision' command, regardless of autogenerate +# revision_environment = false + +# set to 'true' to allow .pyc and .pyo files without +# a source .py file to be detected as revisions in the +# versions/ directory +# sourceless = false + +# version location specification; This defaults +# to migrations/versions. When using multiple version +# directories, initial revisions must be specified with --version-path. +# The path separator used here should be the separator specified by "version_path_separator" below. +# version_locations = %(here)s/bar:%(here)s/bat:migrations/versions + +# version path separator; As mentioned above, this is the character used to split +# version_locations. The default within new alembic.ini files is "os", which uses os.pathsep. +# If this key is omitted entirely, it falls back to the legacy behavior of splitting on spaces and/or commas. +# Valid values for version_path_separator are: +# +# version_path_separator = : +# version_path_separator = ; +# version_path_separator = space +version_path_separator = os # Use os.pathsep. Default configuration used for new projects. + +# set to 'true' to search source files recursively +# in each "version_locations" directory +# new in Alembic version 1.10 +# recursive_version_locations = false + +# the output encoding used when revision files +# are written from script.py.mako +# output_encoding = utf-8 + +sqlalchemy.url = sqlite+aiosqlite:///db.sqlite3 + + +[post_write_hooks] +# post_write_hooks defines scripts or Python functions that are run +# on newly generated revision scripts. See the documentation for further +# detail and examples + +# format using "black" - use the console_scripts runner, against the "black" entrypoint +# hooks = black +# black.type = console_scripts +# black.entrypoint = black +# black.options = -l 79 REVISION_SCRIPT_FILENAME + +# Logging configuration +[loggers] +keys = root,sqlalchemy,alembic + +[handlers] +keys = console + +[formatters] +keys = generic + +[logger_root] +level = WARN +handlers = console +qualname = + +[logger_sqlalchemy] +level = WARN +handlers = +qualname = sqlalchemy.engine + +[logger_alembic] +level = INFO +handlers = +qualname = alembic + +[handler_console] +class = StreamHandler +args = (sys.stderr,) +level = NOTSET +formatter = generic + +[formatter_generic] +format = %(levelname)-5.5s [%(name)s] %(message)s +datefmt = %H:%M:%S diff --git a/app/__init__.py b/app/__init__.py new file mode 100644 index 0000000..752c57c --- /dev/null +++ b/app/__init__.py @@ -0,0 +1 @@ +"""A web application for indexing the projects using FastAPI.""" diff --git a/app/conftest.py b/app/conftest.py new file mode 100644 index 0000000..9f5ba2c --- /dev/null +++ b/app/conftest.py @@ -0,0 +1,105 @@ +"""The application-level conftest.""" +import asyncio +import contextlib +from collections.abc import AsyncGenerator, Generator +from typing import Literal + +import pytest +import stamina +from dirty_equals import IsList +from pytest_mock import MockerFixture +from sqlalchemy.ext.asyncio import AsyncConnection, AsyncSession + +from app.database import Dependency, Repo +from app.factories import DependencyCreateDataFactory +from app.source_graph.factories import SourceGraphRepoDataFactory +from app.source_graph.models import SourceGraphRepoData + + +@pytest.fixture(autouse=True, scope="session") +def anyio_backend() -> Literal["asyncio"]: + """Use asyncio as the async backend.""" + return "asyncio" + + +@pytest.fixture(autouse=True, scope="session") +def _deactivate_retries() -> None: + """Deactivate stamina retries.""" + stamina.set_active(False) + + +@pytest.fixture(autouse=True) +def _test_db(mocker: MockerFixture) -> None: + """Use the in-memory database for tests.""" + mocker.patch("app.database.DB_PATH", "") + + +@pytest.fixture(scope="session") +def event_loop( + request: pytest.FixtureRequest, +) -> Generator[asyncio.AbstractEventLoop, None, None]: + """ + Create an instance of the default event loop for a session. + + An event loop is destroyed at the end of the test session. + https://docs.pytest.org/en/6.2.x/fixture.html#fixture-scopes + """ + with contextlib.closing(loop := asyncio.get_event_loop_policy().get_event_loop()): + yield loop + + +@pytest.fixture(scope="session") +async def test_db_connection() -> AsyncGenerator[AsyncConnection, None]: + """Use the in-memory database for tests.""" + from app.database import Base, engine + + try: + async with engine.begin() as conn: + await conn.run_sync(Base.metadata.drop_all) + await conn.run_sync(Base.metadata.create_all) + yield conn + finally: + # for AsyncEngine created in function scope, close and + # clean-up pooled connections + await engine.dispose() + + +@pytest.fixture() +async def test_db_session( + test_db_connection: AsyncConnection, +) -> AsyncGenerator[AsyncSession, None]: + """Use the in-memory database for tests.""" + from app.uow import async_session_uow + + async with async_session_uow() as session: + yield session + + +@pytest.fixture() +async def some_repos( + test_db_session: AsyncSession, + source_graph_repo_data_factory: SourceGraphRepoDataFactory, + dependency_create_data_factory: DependencyCreateDataFactory, +) -> list[Repo]: + """Create some repos.""" + source_graph_repos_data: list[ + SourceGraphRepoData + ] = source_graph_repo_data_factory.batch(10) + assert source_graph_repos_data == IsList(length=10) + repos = [ + Repo( + url=str(source_graph_repo_data.repo_url), + description=source_graph_repo_data.description, + stars=source_graph_repo_data.stars, + source_graph_repo_id=source_graph_repo_data.repo_id, + dependencies=[ + Dependency(**dependency_create_data.model_dump()) + for dependency_create_data in dependency_create_data_factory.batch(5) + ], + ) + for source_graph_repo_data in source_graph_repos_data + ] + test_db_session.add_all(repos) + await test_db_session.flush() + await asyncio.gather(*[test_db_session.refresh(repo) for repo in repos]) + return repos diff --git a/app/database.py b/app/database.py new file mode 100644 index 0000000..c555d35 --- /dev/null +++ b/app/database.py @@ -0,0 +1,107 @@ +""" +Database models and session. + +The database is a SQLite database, and is stored in the root +of the project as `db.sqlite3`. + +The database is managed using Alembic, and migrations +are stored in the `migrations/` directory. + +The module defines the following models: + +- `Repo`: A repository that is being tracked. +- `Dependency`: A dependency of a repository. +- `RepoDependency`: A relationship between a repository and a dependency. + +The database is accessed asynchronously using SQLAlchemy's async API. +""" +from collections.abc import AsyncGenerator +from pathlib import PurePath +from typing import Final + +from sqlalchemy import BigInteger, ForeignKey, MetaData, String, Text, UniqueConstraint +from sqlalchemy.ext.asyncio import ( + AsyncAttrs, + AsyncEngine, + AsyncSession, + async_sessionmaker, + create_async_engine, +) +from sqlalchemy.orm import ( + Mapped, + declarative_base, + mapped_column, + relationship, +) + +DB_PATH: Final[PurePath] = PurePath(__file__).parent.parent / "db.sqlite3" + +SQLALCHEMY_DATABASE_URL: Final[str] = f"sqlite+aiosqlite:///{DB_PATH}" + +engine: Final[AsyncEngine] = create_async_engine(SQLALCHEMY_DATABASE_URL) + +async_session_maker: Final[async_sessionmaker[AsyncSession]] = async_sessionmaker( + engine, expire_on_commit=False, autoflush=False, autocommit=False +) + +metadata = MetaData( + naming_convention={ + "ix": "ix_%(table_name)s_%(column_0_N_name)s ", + "uq": "uq_%(table_name)s_%(column_0_N_name)s ", + "ck": "ck_%(table_name)s_%(constraint_name)s ", + "fk": "fk_%(table_name)s_%(column_0_N_name)s_%(referred_table_name)s", + "pk": "pk_%(table_name)s", + } +) + + +async def get_async_session() -> AsyncGenerator[AsyncSession, None]: + """Get an async session.""" + async with async_session_maker() as session: + yield session + + +Base = declarative_base(metadata=metadata, cls=AsyncAttrs) + + +class Repo(Base): + """A repository that is being tracked.""" + + __tablename__ = "repo" + id: Mapped[int] = mapped_column(primary_key=True) + url: Mapped[str] = mapped_column(nullable=False, unique=True) + description: Mapped[str] = mapped_column(Text, nullable=False) + stars: Mapped[int] = mapped_column(BigInteger, nullable=False) + source_graph_repo_id: Mapped[int | None] = mapped_column( + BigInteger, nullable=True, unique=True + ) + dependencies: Mapped[list["Dependency"]] = relationship( + "Dependency", secondary="repo_dependency", back_populates="repos" + ) + last_checked_revision: Mapped[str | None] = mapped_column( + String(255), nullable=True + ) + __table_args__ = (UniqueConstraint("url", "source_graph_repo_id"),) + + +class Dependency(Base): + """A dependency of a repository.""" + + __tablename__ = "dependency" + id: Mapped[int] = mapped_column(primary_key=True) + name: Mapped[str] = mapped_column(String(255), nullable=False, unique=True) + repos: Mapped[list["Repo"]] = relationship( + "Repo", secondary="repo_dependency", back_populates="dependencies" + ) + + +class RepoDependency(Base): + """A relationship between a repository and a dependency.""" + + __tablename__ = "repo_dependency" + repo_id: Mapped[int] = mapped_column( + ForeignKey(Repo.id, ondelete="CASCADE"), primary_key=True + ) + dependency_id: Mapped[int] = mapped_column( + ForeignKey(Dependency.id, ondelete="CASCADE"), primary_key=True + ) diff --git a/app/dependencies.py b/app/dependencies.py new file mode 100644 index 0000000..8d159ac --- /dev/null +++ b/app/dependencies.py @@ -0,0 +1,149 @@ +"""Dependencies parsing.""" +import asyncio +import subprocess +from collections.abc import Sequence + +import aiofiles.tempfile +import stamina +from loguru import logger + +from app.database import Repo +from app.models import DependencyCreateData +from app.types import RevisionHash + + +async def run_command(*cmd: str, cwd: str | None = None) -> str: + """ + Run the given command in a subprocess and return the stdout as plain text. + + :param cmd: The command to run. + :param cwd: The working directory to run the command in. + :return: The stdout result + """ + process = await asyncio.create_subprocess_exec( + *cmd, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + cwd=cwd, + ) + + stdout, stderr = await process.communicate() + + if process.returncode != 0: + raise RuntimeError( + f"Command '{cmd}' failed with exit code '{process.returncode}':\n" + f"[stdout]: '{stdout.decode()}'\n" + f"[stderr]: '{stderr.decode()}'" + ) + + return stdout.decode() + + +async def acquire_dependencies_data_for_repository( + repo: Repo, +) -> tuple[RevisionHash, list[DependencyCreateData]]: + """ + Acquire dependencies for the given repository. + + The function will use the "third-party-imports" tool to + parse the third-party dependencies of the repository. + + Since this tool has been written in Rust and is basically + a CLI tool, the parsing will happen is a subprocess. + + :param repo: A repository for which to return the dependencies. + :return: The dependencies data required to create the dependencies in the DB. + """ + logger.info( + "Acquiring the dependencies data for the repo with id {repo_id}.", + repo_id=repo.id, + enqueue=True, + ) + async with aiofiles.tempfile.TemporaryDirectory() as directory: + # Clone the repository + logger.info( + "Cloning the repo with id {repo_id} into the directory {directory}.", + repo_id=repo.id, + directory=directory, + enqueue=True, + ) + await run_command( + "git", + "clone", + "--depth", + "1", + repo.url, + directory, + ) + + # Get the latest commit hash + logger.info( + "Getting the latest commit hash for the repo with id {repo_id}.", + repo_id=repo.id, + enqueue=True, + ) + revision: str = await run_command( + "git", + "rev-parse", + "HEAD", + cwd=directory, + ) + + if repo.last_checked_revision == revision: + # Assume there are no new dependencies to return + # since all the repo dependencies have already + # been parsed. + logger.info( + "The repo with id {repo_id} has already been updated.", + repo_id=repo.id, + enqueue=True, + ) + return RevisionHash(revision), [] + + # Parse the dependencies + async for attempt in stamina.retry_context(on=RuntimeError, attempts=3): + with attempt: + logger.info( + "Parsing the dependencies for the repo with id {repo_id}.", + repo_id=repo.id, + enqueue=True, + ) + dependencies: str = await run_command( + "third-party-imports", + directory, + ) + if dependencies: + logger.info( + "Successfully parsed the dependencies for the repo with id {repo_id}.", + repo_id=repo.id, + enqueue=True, + ) + # Split the dependencies by new line + dependencies_list: Sequence[str] = dependencies.split("\n") + # Drop the first two lines (the info lines) + dependencies_list = ( + dependencies_list[2:] if len(dependencies_list) > 2 else [] + ) + logger.info( + "Found {count} dependencies for the repo with id {repo_id}.", + count=len(dependencies_list), + repo_id=repo.id, + enqueue=True, + ) + else: + logger.info( + "No dependencies found for the repo with id {repo_id}.", + repo_id=repo.id, + enqueue=True, + ) + dependencies_list = [] + return ( + RevisionHash(revision), + [ + DependencyCreateData( + name=dependency.strip(), + ) + for dependency in dependencies_list + if dependency.strip() + ], + ) diff --git a/app/factories.py b/app/factories.py new file mode 100644 index 0000000..9a8b48f --- /dev/null +++ b/app/factories.py @@ -0,0 +1,12 @@ +"""Factories for creating models for testing.""" +from polyfactory.factories.pydantic_factory import ModelFactory +from polyfactory.pytest_plugin import register_fixture + +from app.models import DependencyCreateData + + +@register_fixture +class DependencyCreateDataFactory(ModelFactory[DependencyCreateData]): + """Factory for creating DependencyCreateData.""" + + __model__ = DependencyCreateData diff --git a/app/index.py b/app/index.py new file mode 100644 index 0000000..6b4a6cd --- /dev/null +++ b/app/index.py @@ -0,0 +1,104 @@ +""" +Create repos and dependencies indexes. + +This script creates can create two indexes: + +- ``repos_index.json``: Contains all the repositories and their dependencies. +- ``dependencies_index.json``: Contains all the dependencies and the + repositories that depend on them. + +The indexes are used by the frontend to display the data and perform searches. +""" +import asyncio +import json +from pathlib import Path +from typing import Final + +import aiofiles +import sqlalchemy.orm +import typer + +from app.database import Dependency, Repo +from app.models import DependencyDetail, RepoDetail +from app.uow import async_session_uow + +#: The path to the repos index file. +REPOS_INDEX_PATH: Final[Path] = Path(__file__).parent.parent / "repos_index.json" +#: The path to the dependencies index file. +DEPENDENCIES_INDEX_PATH: Final[Path] = ( + Path(__file__).parent.parent / "dependencies_index.json" +) + +app = typer.Typer() + + +async def create_repos_index() -> None: + """ + Create repos_index.json file from database. + + :return: None + """ + async with async_session_uow() as session, aiofiles.open( + REPOS_INDEX_PATH, "w" + ) as index_file: + await index_file.write( + json.dumps( + { + "repos": [ + RepoDetail.model_validate(repo).model_dump() + async for repo in ( + await session.stream_scalars( + sqlalchemy.select(Repo) + .order_by(Repo.id) + .options(sqlalchemy.orm.selectinload(Repo.dependencies)) + ) + ) + ], + }, + indent=4, + ) + ) + + +async def create_dependencies_index() -> None: + """ + Create dependencies_index.json file from database. + + :return: None + """ + async with async_session_uow() as session, aiofiles.open( + DEPENDENCIES_INDEX_PATH, "w" + ) as index_file: + dependencies = [ + DependencyDetail.model_validate(dependency).model_dump() + async for dependency in ( + await session.stream_scalars( + sqlalchemy.select(Dependency).order_by(Dependency.id) + ) + ) + if dependency.name + ] + await index_file.write( + json.dumps( + { + "dependencies": dependencies, + }, + indent=4, + ) + ) + + +@app.command() +def index_repos() -> None: + """Create ``repos_index.json``.""" + asyncio.run(create_repos_index()) + + +@app.command() +def index_dependencies() -> None: + """Create ``dependencies_index.json``.""" + asyncio.run(create_dependencies_index()) + + +if __name__ == "__main__": + app() diff --git a/app/models.py b/app/models.py new file mode 100644 index 0000000..4b118b1 --- /dev/null +++ b/app/models.py @@ -0,0 +1,38 @@ +"""Module contains the models for the application.""" + +from pydantic import BaseModel, ConfigDict, NonNegativeInt + +from app.types import DependencyId, RepoId, RevisionHash + + +class DependencyCreateData(BaseModel): + """A dependency of a repository.""" + + name: str + + +class DependencyDetail(BaseModel): + """A dependency of a repository.""" + + model_config = ConfigDict( + from_attributes=True, + ) + + id: DependencyId + name: str + + +class RepoDetail(BaseModel): + """A repository that is being tracked.""" + + model_config = ConfigDict( + from_attributes=True, + ) + + id: RepoId + url: str + description: str + stars: NonNegativeInt + source_graph_repo_id: int + dependencies: list[DependencyDetail] + last_checked_revision: RevisionHash | None diff --git a/app/scrape.py b/app/scrape.py new file mode 100644 index 0000000..e64d15f --- /dev/null +++ b/app/scrape.py @@ -0,0 +1,243 @@ +"""The logic for scraping the source graph data processing it.""" +import asyncio + +import sqlalchemy.dialects.sqlite +import typer +from loguru import logger +from sqlalchemy.ext.asyncio import AsyncSession + +from app.database import Dependency, Repo, RepoDependency +from app.dependencies import acquire_dependencies_data_for_repository +from app.source_graph.client import AsyncSourceGraphSSEClient +from app.source_graph.mapper import create_or_update_repos_from_source_graph_repos_data +from app.types import RepoId +from app.uow import async_session_uow + + +async def _create_dependencies_for_repo(session: AsyncSession, repo: Repo) -> None: + """ + Create dependencies for a repo. + + For each parsed dependency, creates a new record in the database, if such a + dependency does not exist. + Then, assigns the dependencies to the given repo. + + :param session: An asynchronous session object + :param repo: A repo for which to create and assign the dependencies + """ + # Acquire the dependencies data for the repo + logger.info( + "Acquiring the dependencies data for the repo with id {repo_id}.", + repo_id=repo.id, + enqueue=True, + ) + try: + ( + revision, + dependencies_create_data, + ) = await acquire_dependencies_data_for_repository(repo) + except RuntimeError: + # If the parsing fails, + # just skip creating the dependencies + logger.error( + "Failed to acquire the dependencies data for the repo with id {repo_id}.", + repo_id=repo.id, + enqueue=True, + ) + return + if repo.last_checked_revision == revision: + # If the repo has already been updated, + # just skip creating the dependencies + logger.info( + "The repo with id {repo_id} has fresh dependencies.", + repo_id=repo.id, + enqueue=True, + ) + return + if not dependencies_create_data: + # If there are no dependencies, + # just skip creating the dependencies + logger.info( + "The repo with id {repo_id} has no dependencies.", + repo_id=repo.id, + enqueue=True, + ) + return + # Update the repo with the revision hash + logger.info( + "Updating the repo with id {repo_id} with the revision hash {revision}.", + repo_id=repo.id, + revision=revision, + enqueue=True, + ) + update_repo_statement = ( + sqlalchemy.update(Repo) + .where(Repo.id == repo.id) + .values(last_checked_revision=revision) + ) + await session.execute(update_repo_statement) + # Create dependencies - on conflict do nothing. + # This is to avoid creating duplicate dependencies. + logger.info( + "Creating the dependencies for the repo with id {repo_id}.", + repo_id=repo.id, + enqueue=True, + ) + insert_dependencies_statement = sqlalchemy.dialects.sqlite.insert( + Dependency + ).on_conflict_do_nothing(index_elements=[Dependency.name]) + await session.execute( + insert_dependencies_statement.returning(Dependency), + [ + { + "name": dependency_data.name, + } + for dependency_data in dependencies_create_data + ], + ) + # Re-fetch the dependencies from the database + dependencies = ( + await session.scalars( + sqlalchemy.select(Dependency).where( + Dependency.name.in_( + [ + dependency_data.name + for dependency_data in dependencies_create_data + ] + ) + ) + ) + ).all() + # Add the dependencies to the repo + insert_repo_dependencies_statement = sqlalchemy.dialects.sqlite.insert( + RepoDependency + ).on_conflict_do_nothing([RepoDependency.repo_id, RepoDependency.dependency_id]) + await session.execute( + insert_repo_dependencies_statement, + [ + { + "repo_id": repo.id, + "dependency_id": dependency.id, + } + for dependency in dependencies + ], + ) + + +async def scrape_source_graph_repos() -> None: + """ + Iterate over the source graph repos and create or update them in the database. + + :return: None + """ + async with AsyncSourceGraphSSEClient() as sg_client: + async with async_session_uow() as session: + async with asyncio.TaskGroup() as tg: + logger.info( + "Creating or updating repos from source graph repos data.", + enqueue=True, + ) + async for sg_repos_data in sg_client.aiter_fastapi_repos(): + logger.info( + "Received {count} repos.", + count=len(sg_repos_data), + enqueue=True, + ) + tg.create_task( + create_or_update_repos_from_source_graph_repos_data( + session=session, + source_graph_repos_data=sg_repos_data, + ) + ) + await session.commit() + + +async def parse_dependencies_for_repo( + semaphore: asyncio.Semaphore, repo_id: RepoId +) -> None: + """ + Parse the dependencies for a given repo and create them in the database. + + :param semaphore: A semaphore to limit the number of concurrent requests + :param repo_id: The id of the repo for which to parse the dependencies + :return: None + """ + async with async_session_uow() as session, semaphore: + # Fetch the repo from the database + logger.info( + "Fetching the repo with id {repo_id}.", repo_id=repo_id, enqueue=True + ) + repo = ( + await session.scalars(sqlalchemy.select(Repo).where(Repo.id == repo_id)) + ).one() + # Create the dependencies for the repo + logger.info( + "Creating the dependencies for the repo with id {repo_id}.", + repo_id=repo_id, + enqueue=True, + ) + await _create_dependencies_for_repo(session=session, repo=repo) + await session.commit() + + +async def parse_dependencies_for_repos() -> None: + """ + Parse the dependencies for all the repos in the database. + + :return: None. + """ + logger.info("Fetching the repos from the database.", enqueue=True) + async with async_session_uow() as session: + repo_ids = ( + await session.scalars( + sqlalchemy.select(Repo.id).order_by( + Repo.last_checked_revision.is_(None).desc() + ) + ) + ).all() + logger.info("Fetched {count} repos.", count=len(repo_ids), enqueue=True) + logger.info("Parsing the dependencies for the repos.", enqueue=True) + semaphore = asyncio.Semaphore(10) + async with asyncio.TaskGroup() as tg: + for repo_id in repo_ids: + logger.info( + "Parsing the dependencies for repo {repo_id}.", + repo_id=repo_id, + enqueue=True, + ) + tg.create_task( + parse_dependencies_for_repo( + semaphore=semaphore, repo_id=RepoId(repo_id) + ) + ) + + +app = typer.Typer() + + +@app.command() +def scrape_repos() -> None: + """ + Scrape the FastAPI-related repositories utilizing the source graph API. + + :return: None + """ + logger.info("Scraping the source graph repos.", enqueue=True) + asyncio.run(scrape_source_graph_repos()) + + +@app.command() +def parse_dependencies() -> None: + """ + Parse the dependencies for all the repos in the database. + + :return: None. + """ + logger.info( + "Parsing the dependencies for all the repos in the database.", enqueue=True + ) + asyncio.run(parse_dependencies_for_repos()) + + +if __name__ == "__main__": + app() diff --git a/app/source_graph/__init__.py b/app/source_graph/__init__.py new file mode 100644 index 0000000..d698baa --- /dev/null +++ b/app/source_graph/__init__.py @@ -0,0 +1 @@ +"""Scraping module for the application.""" diff --git a/app/source_graph/client.py b/app/source_graph/client.py new file mode 100644 index 0000000..ea2054f --- /dev/null +++ b/app/source_graph/client.py @@ -0,0 +1,123 @@ +"""The client for the SourceGraph API.""" +import asyncio +from collections.abc import AsyncGenerator, Mapping, MutableMapping +from contextlib import asynccontextmanager +from datetime import timedelta +from types import TracebackType +from typing import Any, Final, Self +from urllib.parse import quote + +import httpx +import stamina +from httpx_sse import EventSource, ServerSentEvent, aconnect_sse +from loguru import logger + +from app.source_graph.models import SourceGraphRepoData, SourceGraphRepoDataListAdapter + +#: The URL of the SourceGraph SSE API. +SOURCE_GRAPH_STREAM_API_URL: Final[str] = "https://sourcegraph.com/.api/search/stream" + + +#: The query parameters for the SourceGraph SSE API. +FASTAPI_REPOS_QUERY_PARAMS: Final[Mapping[str, str]] = { + "q": quote( + " ".join( + [ + "repo:has.content(from fastapi import FastApi)", + "type:repo", + "visibility:public", + "archived:no", + "fork:no", + ] + ) + ), +} + + +class AsyncSourceGraphSSEClient: + """ + A client for the SourceGraph SSE API. + + To learn more about the underlying API, see the ``SourceGraph SSE API`` + https://docs.sourcegraph.com/api/stream_api#sourcegraph-stream-api + """ + + def __init__(self: Self) -> None: + """Initialize the client.""" + self._last_event_id: str | None = None + self._reconnection_delay: float = 0.0 + self._aclient: httpx.AsyncClient = httpx.AsyncClient() + + async def __aenter__(self: Self) -> Self: + """Enter the async context manager.""" + await self._aclient.__aenter__() + return self + + async def __aexit__( + self: Self, + exc_type: type[BaseException] | None = None, + exc_val: BaseException | None = None, + exc_tb: TracebackType | None = None, + ) -> None: + """Exit the async context manager.""" + return await self._aclient.__aexit__(exc_type, exc_val, exc_tb) + + @asynccontextmanager + async def _aconnect_sse( + self: Self, **kwargs: MutableMapping[str, Any] + ) -> AsyncGenerator[EventSource, None]: + """Connect to the SourceGraph SSE API.""" + headers = kwargs.pop("headers", {}) + if self._last_event_id is not None: + headers["Last-Event-ID"] = self._last_event_id + async with aconnect_sse( + client=self._aclient, + url=str(SOURCE_GRAPH_STREAM_API_URL), + method="GET", + headers=headers, + **kwargs, + ) as event_source: + yield event_source + + async def _aiter_sse( + self: Self, **kwargs: MutableMapping[str, Any] + ) -> AsyncGenerator[ServerSentEvent, None]: + """Iterate over the SourceGraph SSE API.""" + async with self._aconnect_sse(**kwargs) as event_source: + async for event in event_source.aiter_sse(): + yield event + + async def _aiter_sse_with_retries( + self: Self, **kwargs: MutableMapping[str, Any] + ) -> AsyncGenerator[ServerSentEvent, None]: + """Iterate over the SourceGraph SSE API with retries.""" + async for attempt in stamina.retry_context( + on=(httpx.ReadError, httpx.ReadTimeout) + ): + with attempt: + await asyncio.sleep(self._reconnection_delay) + async for event in self._aiter_sse(**kwargs): + self._last_event_id = event.id + if event.retry is not None: + logger.error( + "Received a retry event from the SourceGraph SSE API. " + "Schedule a reconnection in {retry} milliseconds.", + retry=event.retry, + enqueue=True, + ) + self._reconnection_delay = timedelta( + milliseconds=event.retry + ).total_seconds() + else: + self._reconnection_delay = 0.0 + yield event + + async def aiter_fastapi_repos( + self: Self, + ) -> AsyncGenerator[list[SourceGraphRepoData], None]: + """Iterate over the SourceGraph SSE API with retries.""" + async for event in self._aiter_sse_with_retries( + params=dict(FASTAPI_REPOS_QUERY_PARAMS) + ): + if event.event == "matches": + yield SourceGraphRepoDataListAdapter.validate_python(event.json()) diff --git a/app/source_graph/factories.py b/app/source_graph/factories.py new file mode 100644 index 0000000..de13a39 --- /dev/null +++ b/app/source_graph/factories.py @@ -0,0 +1,12 @@ +"""Factories for creating test data.""" +from polyfactory.factories.pydantic_factory import ModelFactory +from polyfactory.pytest_plugin import register_fixture + +from app.source_graph.models import SourceGraphRepoData + + +@register_fixture +class SourceGraphRepoDataFactory(ModelFactory[SourceGraphRepoData]): + """Factory for creating RepoCreateData.""" + + __model__ = SourceGraphRepoData diff --git a/app/source_graph/mapper.py b/app/source_graph/mapper.py new file mode 100644 index 0000000..45015df --- /dev/null +++ b/app/source_graph/mapper.py @@ -0,0 +1,46 @@ +"""Mapper for source graph models to the database objects.""" +from collections.abc import Sequence + +import sqlalchemy.dialects.sqlite +from sqlalchemy.ext.asyncio import AsyncSession + +from app import database +from app.source_graph.models import SourceGraphRepoData + + +async def create_or_update_repos_from_source_graph_repos_data( + session: AsyncSession, source_graph_repos_data: Sequence[SourceGraphRepoData] +) -> Sequence[database.Repo]: + """ + Create repos from source graph repos data. + + If any repos already exist, update them. + + :param session: The database session. + :param source_graph_repos_data: The source graph repos data. + """ + insert_statement = sqlalchemy.dialects.sqlite.insert(database.Repo) + update_statement = insert_statement.on_conflict_do_update( + index_elements=[database.Repo.source_graph_repo_id], + set_={ + "url": insert_statement.excluded.url, + "description": insert_statement.excluded.description, + "stars": insert_statement.excluded.stars, + "source_graph_repo_id": insert_statement.excluded.source_graph_repo_id, + }, + ) + + return ( + await session.scalars( + update_statement.returning(database.Repo), + [ + { + "url": str(repo_data.repo_url), + "description": repo_data.description, + "stars": repo_data.stars, + "source_graph_repo_id": repo_data.repo_id, + } + for repo_data in source_graph_repos_data + ], + ) + ).all() diff --git a/app/source_graph/models.py b/app/source_graph/models.py new file mode 100644 index 0000000..07c99b8 --- /dev/null +++ b/app/source_graph/models.py @@ -0,0 +1,39 @@ +"""The models for the Source Graph data.""" +import datetime +from typing import Literal, NewType, Self + +from pydantic import ( + BaseModel, + Field, + HttpUrl, + NonNegativeInt, + TypeAdapter, + computed_field, +) + +#: The ID of a repository from the SourceGraph API. +SourceGraphRepoId = NewType("SourceGraphRepoId", int) + + +class SourceGraphRepoData(BaseModel): + """The data of a repository.""" + + type: Literal["repo"] + repo_id: SourceGraphRepoId = Field(..., alias="repositoryID") + repo_handle: str = Field(..., alias="repository") + stars: NonNegativeInt = Field(..., alias="repoStars") + last_fetched_at: datetime.datetime = Field(..., alias="repoLastFetched") + description: str = Field(default="") + + @computed_field # type: ignore[misc] + @property + def repo_url(self: Self) -> HttpUrl: + """The URL of the repository.""" + return TypeAdapter(HttpUrl).validate_python(f"https://{self.repo_handle}") + + +#: The type adapter for the SourceGraphRepoData. +SourceGraphRepoDataAdapter = TypeAdapter(SourceGraphRepoData) + +#: The type adapter for the SourceGraphRepoData list. +SourceGraphRepoDataListAdapter = TypeAdapter(list[SourceGraphRepoData]) diff --git a/app/source_graph/tests/__init__.py b/app/source_graph/tests/__init__.py new file mode 100644 index 0000000..2ca8733 --- /dev/null +++ b/app/source_graph/tests/__init__.py @@ -0,0 +1 @@ +"""Test the scraping of the SourceGraph API.""" diff --git a/app/source_graph/tests/test_client.py b/app/source_graph/tests/test_client.py new file mode 100644 index 0000000..f5ef974 --- /dev/null +++ b/app/source_graph/tests/test_client.py @@ -0,0 +1,120 @@ +"""Test the client module for the source graph.""" +from typing import Any + +import pytest +from dirty_equals import HasLen, IsDatetime, IsInstance, IsPositiveInt +from pydantic import Json, TypeAdapter + +from app.source_graph.models import SourceGraphRepoData + + +@pytest.fixture() +def source_graph_matched_repos_data() -> Json[Any]: + """Return the sample data of the matched repositories.""" + return [ + { + "type": "repo", + "repositoryID": 55636527, + "repository": "github.com/tiangolo/sqlmodel", + "repoStars": 10277, + "repoLastFetched": "2023-07-31T18:47:22.875731Z", + "description": ( + "SQL databases in Python, designed " + "for simplicity, compatibility, " + "and robustness." + ), + "metadata": { + "fastapi": "null", + "json": "null", + "json-schema": "null", + "pydantic": "null", + "python": "null", + "sql": "null", + "sqlalchemy": "null", + }, + }, + { + "type": "repo", + "repositoryID": 59434622, + "repository": "github.com/reflex-dev/reflex", + "repoStars": 10061, + "repoLastFetched": "2023-07-31T08:58:42.692906Z", + "description": "(Previously Pynecone) 🕸 Web apps in pure Python 🐍", + }, + { + "type": "repo", + "repositoryID": 42982149, + "repository": "github.com/PaddlePaddle/PaddleNLP", + "repoStars": 9804, + "repoLastFetched": "2023-07-31T16:48:08.839209Z", + "description": ( + "👑 Easy-to-use and powerful NLP library with 🤗 " + "Awesome model zoo, supporting wide-range of NLP tasks " + "from research to industrial applications, including" + " 🗂Text Classification, 🔍 Neural Search, ❓ Question " + "Answering, ℹ️ Information Extraction, " + "📄 Document Intelligence, 💌 Sentiment Analysis etc." + ), + "metadata": { + "bert": "null", + "embedding": "null", + "ernie": "null", + "information-extraction": "null", + "neural-search": "null", + "nlp": "null", + "paddlenlp": "null", + "pretrained-models": "null", + "question-answering": "null", + "search-engine": "null", + "semantic-analysis": "null", + "sentiment-analysis": "null", + "seq2seq": "null", + "transformer": "null", + "transformers": "null", + "uie": "null", + }, + }, + { + "type": "repo", + "repositoryID": 36246068, + "repository": "github.com/realpython/materials", + "repoStars": 4359, + "repoLastFetched": "2023-07-31T05:15:16.993896Z", + }, + ] + + +def test_source_graph_repo_data(source_graph_matched_repos_data: Json[Any]) -> None: + """Test the SourceGraphRepoData deserialization.""" + assert source_graph_matched_repos_data == HasLen(4) + _SourceGraphRepoDataListValidator = TypeAdapter(list[SourceGraphRepoData]) + repos_parsed = _SourceGraphRepoDataListValidator.validate_python( + source_graph_matched_repos_data + ) + assert repos_parsed == HasLen(4) + assert all(repo == IsInstance[SourceGraphRepoData] for repo in repos_parsed) + assert all( + repo.repo_id == repo_data["repositoryID"] + for repo, repo_data in zip( + repos_parsed, source_graph_matched_repos_data, strict=True + ) + ) + assert all( + repo.repo_handle == repo_data["repository"] + for repo, repo_data in zip( + repos_parsed, source_graph_matched_repos_data, strict=True + ) + ) + assert all( + repo.stars == IsPositiveInt and repo.stars == repo_data["repoStars"] + for repo, repo_data in zip( + repos_parsed, source_graph_matched_repos_data, strict=True + ) + ) + assert all( + str(repo.repo_url) == f"https://{repo_data['repository']}" + for repo, repo_data in zip( + repos_parsed, source_graph_matched_repos_data, strict=True + ) + ) + assert all(repo.last_fetched_at == IsDatetime for repo in repos_parsed) diff --git a/app/source_graph/tests/test_mapper.py b/app/source_graph/tests/test_mapper.py new file mode 100644 index 0000000..89cd224 --- /dev/null +++ b/app/source_graph/tests/test_mapper.py @@ -0,0 +1,65 @@ +"""The tests for the source graph mapper to the database objects.""" + +import pytest +import sqlalchemy +from dirty_equals import IsInstance, IsList +from sqlalchemy.ext.asyncio import AsyncSession + +from app import database +from app.source_graph.factories import SourceGraphRepoDataFactory +from app.source_graph.mapper import create_or_update_repos_from_source_graph_repos_data +from app.source_graph.models import SourceGraphRepoData + +pytestmark = pytest.mark.anyio + + +async def test_create_or_update_repos_from_source_graph_repos_data( + test_db_session: AsyncSession, + source_graph_repo_data_factory: SourceGraphRepoDataFactory, +) -> None: + """Test creating repos from source graph repos data.""" + source_graph_repo_data: list[ + SourceGraphRepoData + ] = source_graph_repo_data_factory.batch(5) + repos = await create_or_update_repos_from_source_graph_repos_data( + test_db_session, source_graph_repo_data + ) + assert repos == IsList(length=5) + assert all(repo == IsInstance[database.Repo] for repo in repos) + assert all(repo.id is not None for repo in repos) + + +async def test_create_or_update_repos_from_source_graph_repos_data_update( + some_repos: list[database.Repo], + test_db_session: AsyncSession, + source_graph_repo_data_factory: SourceGraphRepoDataFactory, +) -> None: + """Test updating repos from source graph repos data.""" + assert ( + await test_db_session.execute( + sqlalchemy.select(sqlalchemy.func.count(database.Repo.id)) + ) + ).scalar() == len(some_repos) + source_graph_repos_data: list[ + SourceGraphRepoData + ] = source_graph_repo_data_factory.batch(len(some_repos)) + source_graph_repos_data = [ + SourceGraphRepoData( + **( + repo_data.model_dump(by_alias=True) + | {"repositoryID": repo.source_graph_repo_id} + ) + ) + for repo, repo_data in zip(some_repos, source_graph_repos_data, strict=True) + ] + repos = await create_or_update_repos_from_source_graph_repos_data( + test_db_session, source_graph_repos_data + ) + assert repos == IsList(length=len(some_repos)) + assert all(repo == IsInstance[database.Repo] for repo in repos) + assert all(repo.id is not None for repo in repos) + assert ( + await test_db_session.execute( + sqlalchemy.select(sqlalchemy.func.count(database.Repo.id)) + ) + ).scalar() == len(some_repos) diff --git a/app/tests/__init__.py b/app/tests/__init__.py new file mode 100644 index 0000000..69f3eac --- /dev/null +++ b/app/tests/__init__.py @@ -0,0 +1 @@ +"""The application tests.""" diff --git a/app/tests/test_database.py b/app/tests/test_database.py new file mode 100644 index 0000000..e986cd0 --- /dev/null +++ b/app/tests/test_database.py @@ -0,0 +1,103 @@ +"""Test the operations on the database models.""" +import pytest +import sqlalchemy as sa +import sqlalchemy.orm +from dirty_equals import IsList +from sqlalchemy.ext.asyncio import AsyncSession + +from app import database +from app.factories import DependencyCreateDataFactory +from app.models import DependencyCreateData +from app.source_graph.factories import SourceGraphRepoDataFactory +from app.source_graph.models import SourceGraphRepoData + +pytestmark = pytest.mark.anyio + + +def _assert_repo_properties( + repo: database.Repo, source_graph_repo_data: SourceGraphRepoData +) -> bool: + """Assert that the repo has the expected properties.""" + assert repo.id is not None + assert repo.url == str(source_graph_repo_data.repo_url) + assert repo.description == source_graph_repo_data.description + assert repo.stars == source_graph_repo_data.stars + assert repo.source_graph_repo_id == source_graph_repo_data.repo_id + return True + + +async def test_create_repo_no_dependencies( + test_db_session: AsyncSession, + source_graph_repo_data_factory: SourceGraphRepoDataFactory, +) -> None: + """Test creating a repo.""" + source_graph_repo_data: SourceGraphRepoData = source_graph_repo_data_factory.build() + repo = database.Repo( + url=str(source_graph_repo_data.repo_url), + description=source_graph_repo_data.description, + stars=source_graph_repo_data.stars, + source_graph_repo_id=source_graph_repo_data.repo_id, + ) + test_db_session.add(repo) + await test_db_session.flush() + await test_db_session.refresh(repo) + _assert_repo_properties(repo, source_graph_repo_data) + assert (await repo.awaitable_attrs.dependencies) == IsList(length=0) + + +async def test_create_repo_with_dependencies( + test_db_session: AsyncSession, + source_graph_repo_data_factory: SourceGraphRepoDataFactory, + dependency_create_data_factory: DependencyCreateDataFactory, +) -> None: + """Test creating a repo with dependencies.""" + source_graph_repo_data: SourceGraphRepoData = source_graph_repo_data_factory.build() + dependencies_create_data: list[ + DependencyCreateData + ] = dependency_create_data_factory.batch(5) + repo = database.Repo( + url=str(source_graph_repo_data.repo_url), + description=source_graph_repo_data.description, + stars=source_graph_repo_data.stars, + source_graph_repo_id=source_graph_repo_data.repo_id, + dependencies=[ + database.Dependency(**dependency_create_data.model_dump()) + for dependency_create_data in dependencies_create_data + ], + ) + test_db_session.add(repo) + await test_db_session.flush() + await test_db_session.refresh(repo) + _assert_repo_properties(repo, source_graph_repo_data) + repo_dependencies = await repo.awaitable_attrs.dependencies + assert repo_dependencies == IsList(length=5) + assert all( + repo_dependency.name == dependency.name + for repo_dependency, dependency in zip( + repo_dependencies, dependencies_create_data, strict=True + ) + ) + + +async def test_list_repositories( + test_db_session: AsyncSession, + some_repos: list[database.Repo], +) -> None: + """Test listing repositories.""" + repos_from_db_result = await test_db_session.execute( + sa.select(database.Repo).options( + sqlalchemy.orm.joinedload(database.Repo.dependencies) + ) + ) + repos_from_db = repos_from_db_result.scalars().unique().all() + assert repos_from_db == IsList(length=10) + assert all( + repo.id == repo_data.id + and all( + repo_dependency.name == dependency.name + for repo_dependency, dependency in zip( + repo.dependencies, repo_data.dependencies, strict=True + ) + ) + for repo, repo_data in zip(repos_from_db, some_repos, strict=True) + ) diff --git a/app/types.py b/app/types.py new file mode 100644 index 0000000..207f825 --- /dev/null +++ b/app/types.py @@ -0,0 +1,6 @@ +"""Type definitions for the application.""" +from typing import NewType + +RepoId = NewType("RepoId", int) +DependencyId = NewType("DependencyId", int) +RevisionHash = NewType("RevisionHash", str) diff --git a/app/uow.py b/app/uow.py new file mode 100644 index 0000000..89c4492 --- /dev/null +++ b/app/uow.py @@ -0,0 +1,27 @@ +""" +The Unit of Work pattern implementation. + +To learn more about the UoW, see: +https://www.cosmicpython.com/book/chapter_06_uow.html +""" +from collections.abc import AsyncGenerator +from contextlib import asynccontextmanager + +from sqlalchemy.ext.asyncio import AsyncSession + +from app.database import async_session_maker + + +@asynccontextmanager +async def async_session_uow() -> AsyncGenerator[AsyncSession, None]: + """ + Provide a transactional scope around a series of operations. + + :return: a UoW instance + """ + async with async_session_maker() as session: + async with session.begin(): + try: + yield session + finally: + await session.rollback() diff --git a/db.sqlite3 b/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..1cd7654a5473194ec9062c31c0515b34ed524a6d GIT binary patch literal 913408 zcmeFa34B!Lxj%lE$u`N%xFL0^9$XM4li4?L8+c5m%++iN#lApzRnR=sU+d%OL<&p9($;2iX}_kTb4e?JrD z%$zf4dC&8{@3Vg2=jmMB8p|m{G?ht+Il;r6#;`1NjUX^g-F}8)-on4qUj@FHN;~*u z$9*^WihDFHn{TQ86=SZR!PqRem#kIRf32Qj`I+Sf%f^~_YCmakVfk>G0%Z!6DNv?B znF3`B{O_Q^(Cmt;$&)6rxA)}4NLinQLOQ(6X?r zd2Vxuu&}*LSh%FMwO%mSB-%Atae_#5Erw#ZmCz1`V<*Iu8L*p=Ea9kbNhVLsX>kH z3p=|y!gS|!pL!2rQAbN#xMR7npn174Ehe9M+C}-5+Ox8HPrpc5van_Gl4fC=-p_{j z0$sZGE)d4m`=(}~wlH%}i5)l^NMF@wE*`e-M1%Su{F%1TliP-!@}Yd)!K z$DK>PT%x&NSC8F>dPVPylW9Nx_7l3H_@H`W!d*{%^QhK?W4N<1+|+!+7}9A$vFX~_8voSd z57Wm#kB%8U$vpi^bLHg4Ggu~u&RU&a8HeKDE#`A6bzd8kst?iHO&i@^p zq}&Q!3S3rQIeFHkQ}(ZiI<@Aqs`ow7O(#}gR{6dss>7tJu#m5sJY@_=ey(dopaW|YW^Yt0<*xB9cL&n%7?SjvFOqG-8PBEh8xXWE* z-zy5!S(P~s)~L);j4O#qOzK{xWJq?Lu**%L#|b|YQHqy!C-aF>B6!@>jc9Pf9lFzf z(nL`-?tXZ|E4foKgA;G&I^h710a#6g(1L%g?HvaHm;cHXC{v(JfieZk6ev@mOo1{5 z$`mM5piF@>110iRYR7iT&ehmWhmzPfKUj-x3#P*JaoS*3ZV)dq*d>?sa|G zx^5%G-&weovotbi*S$Csd+nAzbw9SaEPu96vrMu4t98)w<+|gxsn%axM9b-xUt2mY zyk)5FMav`Bq?MKpl>f>UC{v(JfieZk6ev@mOo1{5$`mM5piF`PAqvdDkPmakd>8{_ zZz|OtjU~k-@`0o?F-cL=mpN+qNu0PUld5XqTq-R}eRW>T{mhvY&!xS2b^Li;HW`aXV<~>W?`gRfW73n$WYQJxrO#d;~v9oPgF}AC0 z8C&y&N8tCx=kftAfkZUD2{9f|^>@o+PLz;jCd=-(t$yEU+YT|dL$tBko?z(zXP8UJ zo@($7Cx4T%9mmHP=s)K43Fq1H%W?I{RTGZ?mv(5Noo~B=uK8EneYQW_K4$xa?Oofi zZ6mgy+kRv#*uHPuWc!xwD|r4PTiW(n+dkVW+a0!NY>(R>wLNUR(I(q&uwDCKdSv1^zElpi+IAZ{9|+@-Gdo!S)M76nnpT z@EUAi8BAkq4PtX{feiR*Lp9ibxS(KLcNR9U4lTphKGcY9{SY}?E*~Pt$Yp~R<$rB( z0k%^H9oT+u@H}i^9wdaog@skvo>%C=_MCzn+s_vWA#iq~7TZbv*qkL}Vf>UC{v(JfieZk6ev@mOo1{5 z$`mM5piF@>1^!tISf?-)3jP3pr(JF8H*vkWTsk|`;pmCwdh?M6DV1=vDv4Bbao#?+ zrOVOSE9U05w%Pr&?aj%aSW;0kv1AXwyTn3#0T zUDV~acjgnoxesueODox5SgqE7XU;Kd=lM?4a@`yErX>;ODWzUVa}uj8Qps=&pMNRH zW^kv|uQX+KFA{qbN-l--9sRwrY+A|K#camjuSBpoVHK8i@OOl2SpxYBMvukyq8)2O z;*K_a>!bp;eCkj0*_3S~L;rt6-Oe+9p&3SZ&L^n?V9cJ%W*un}1voPzCx7e+vt^7l z6nFoh|C?+?Ou}O&fYJ^`*OXRRKBM-%gf=L*f?jsg{idsgw|7h z!?w;=Yx#+_-TH0o+5ht|Qhs8Y0%Z!6DNv?BnF3`BlqpcAK$!w%3X~~OrocZzfe-ok zgr4(2ma=xFCx8_T^DybaZui(O8^sf+d-*=SE3>^~e=-t!Z&p1cz8fnx-( z-Qz&hds9g`3#2{;G~lL?34G=>zEkg7F_yK%G2xI>slEvQvCrB1Y<-Mfw*h(wZEpZ^ z|1ZqBdcUd1&S*3hs`MV+8tduJCE=&BFG@w0tj66DCm%fjKe7a@LNVI2@t<^Tic8zVO&1-A0O|xBOJKuJ; z?KGR&X0rax`bX<~)?ZnVSbu8$0Xz#|v3_2A+^Jes{;f=bG6l*MC{v(JfieZk6ev@m zOo1{5$`mM5piF^r6!>xBzNOgxLE+-}0}7l6d%E=&A?48^iYgH^{jD_&29uyZLLB zfq&DNDbe1BFW!pnonH{Jz5P``wnK-=3sQKAG6LNCVimSGe}?XM)2C?t{+d0s(!c*% zN(_+QO_~2!KFMO6+C}HYchFnhxQz(WyCsEf^kKS#^Z?OByqB^~c5kNbij9QwzkWSA zA(r3%A#AT5I+v^cDe_(Jb71eMmLJuA%eL9ZA=Ce6%hWpA@|?Rz#?tr6?9mSfhl>o!|QY=`UCTKv{e*g}?c-Adbew)vK|)=R9Fb=$3rEfGsoT~nRU zGP!P#b))5=?Y+8ATh#K6+E?p7RJ+f%&3eF6UH3=S7r5NoSa(@nb?u*Oe~Da!UqU;| ze`N}kDNv?BnF3`BlqpcAK$!w%3X~}@MuB_GSiH-z+iPcD^j#diP21hbf9qVbbe7ea zSdOdZ&gNgMtNX^p4DR1iPvt63f1+s!r+!Qdxd7^0qY-ZbnzWpJJwt_C4{}D>d6(h*ZpKcCbZ|?Uc3C_y8!Ed zbK;F3(SCia!gS7lx>H(f)ux&&CG0(~{rZ!-UB2&Fi5wqQZ#}E(oHG;H`;_+Bw=Gla zvG=5Q^6%O2UxWwYK%aW@s*2aG5$wg(y*T$X>sPR+sC(C&l$z_YcZ+%{8?5V?HV3=k z*Y5NRvvY=rp8BSG@-3!I>t3VX2errUvrb9UZbbbx%zVN81*FVBZQ}dgtG&-w^TnUT zsduTT&gHjP{uO(B)VQvCav_WZBeR{M70(BoR`eo%MGW&5!E>0;|@ zyfY@*r~zxWXMEdwSsU#RsDnQ6k+aAVF{oXetay>Eb|$Yra)Iffxz~2kc5vJ%y-xk* zH1@4YWUjxZUAC+8Lw+B2W%b9!?1~zib>pu3k$N6?zG-^Pbo}ry+OCa#an65Y_i3$R zyZE{lblE30x^-T7#X(EuI_50qO2#%|eb;KUTwiyfZi>0S=Ar6sRllgRFJbIEtwqGSZD1i?=kMGz%P$!24bxWe3-;IF?v;dVvDU`P@peveP_yMr#DB1b}s z(fsp9+_(Un-Q(Wdk!&%i#cVRlG+qNWK#Zq8x~bfuJ+s z@<)RazZ{H&qTYZnn@T8ltW%=WB4KS; zXi|R_8nvTBR!pShN;di$*ZZ@#6@SDfy8}L7)Ey1DMUUSTl{{X*;&aQA;&Mu&qy)Ww zDQGTSaz-`NS(u{VfQ(8A*%9tRZ5AwNdT0CN4+`OIR!N|1>ID=`i2?_d!B^@!jY@); z$FieTB9+e)nbb?OLM$l^r1BXdl1cSr0a8QE&u{<8Tdsf<@6Ch>r7iby8TYkCxt??I~2idD1L7+6p1*aisFhoy%Cp763vBM zPQyD5F6Vf?X_OHM>_s4$1K&Hu0U?$ZL;*{uqA^7tH%#g6vXU65cL2fZtrn?pEI~}C z<1tAErDgFVxCMGF8_QzQrlPo)L~~8XekK;l=Wx?ZKADRpF#m855roRodAMh5ERqp3 zF(s=KfM#c01-s#iZLI=LmN-Cc*@omLm8bnW5RqN7M|4Kqk{FF*W;*>L#qExIyt2>d z#k38`(MUx0o0GOG=6aX@>-Q*1AB}f3E0c9-@6$F=da>r!+F(yz!F*+!=#srbx64a& zOZLeiyi0K_ZcyFl5fyJlmSl|gfX`fzt<}u(!SnP7QACUkWK$VO8>SUVIXjk--`T!p zZMbFRuI+U+f<@S-m-C&P6eti4$!!LdI=>6MA?!4#7!Gj~W zZ9ca5IXZ|l_q-%D#({JLEmx(mfX<@YNAMRA9MZqm?pj|!Fl z#a{}pT4FsReKFECZ%I?zxTTn5i!x^lnBeU+!Dq*4(C5Xt&=eEnDIgMs*3$HCBM~Ef zOc*}2cI3c4!88ir*86ctb9yGvtE^^1CFT7qia~R^MM!&4_~rZEp>?v@f(nED~ky z;PGG!Vlqd2qdOW0lEC!r5wJw?h|+074hO-Tu#%H5qtT6uT3Lt)F^REEZzbh~eozBv zVrJRXVkU>dJ^;C&z-h#AG79*RvWjL2acz}t3GzTvOn`^Q;{z(~QbIP>z-*Yw-}A!O zfD=3wJl3N)J+kC?ixJ7?3WnT1r_Amu_qQSr;NUx@^q=Ald#hSKfR^@maf)z>lucEEi51{^)PSOIw*OLk#FW_fkb3Sb z&?o80{d-3?7LMKV%OPd!`QG@$$$6`$jh3d*t9}M^Dul zH8jY^88ePPxBmFfmyUj7&+z&OM;^UrDsDr1?i(lb|vvVUcb|!HN_;m7^4pNV#pUiW~%B8t;Eh?z~Q~2IIDUG zW*JR8C|2q`gY?Gm9O&;=G79tUyZA?gn?j;1Bn7-q1?pbVr$G8bb`X1uLNZ4^Zg4!6 zXP65YRFK|WrQa}8itx->k{UO<^Y)gV!t8u3E|calo;7I`9Sx-hs_UbnYLMN# z?{Ovb*L(R5M^}UtDH3pdouU_dvfHUhAvxd)MLfYkK=eU(^*b?X+!1gum+2JJB8T<% zFpg3VvLsMVk5s|%qLwi&sb1)Xx-X2Ix%C3nI+dxYs=sE05RZ`{IWQm;Q65m$oiRqt z{PAiobpN+JQPJxa#Rz1v$M2TCey`ID4ixeQzkdJk$=zGZTBKlsyQDI37yRDKReDj!3fifME6=%>Hba^qqLa-9t zL60xs_W6}y6k49o3&qb|FtJsP(yrf*8&NAVn#n72QIE7kINF=UfoxGtwhK5g{P@#H z4&FWT;J%UdcMadU4@UFw{yVv8r*YFwBF3N(!!dwy>G4RgJwXJ;10_F-W3uE9ir$b{ zaRtp5ZV7V+^D)MDGxISvWI1AKtzBZCUGrkiWz{!TU0!*2#kVRPraAmg-0!Vl|L@k! z3Nz2HW|kBd=xev6Lc~&b%u&`Yb zG+e)je{9_!;Q(+sA=90bI~pM)$pfzE3q}-w$QAN9gI?^peL>M|sbO~fcMq2T&ifVk zORJbZ0~bbHtS=9yA9rMB$~}^g!HWT9D-};Fxn)XZNsEArs|t)#(3cF^M(x*yO3pi( ze>igmTsw*{fN|rMT_N}}AX42h9=(uYZirYV>WV0e>6To1K6g5NDcEh{G<$58d=2Izp zKp-@r=8}$&bRj}Imd2z?Dp~h+-0XfHdOB?4fS)vkpb~P+kbORMK7@vhE{`f6biLmP zJ2iT7HFIlWK>t<7L|r}}w?o=VefFZ%vqQw@dNN9OWqb~P6x1I{(}7x^R5|N7DP1x? zQ<(-~i8_vpLKCA{yG`d}SR7gPT}a)pFM6E73E<%&{ag~}b#*Q3RA&(R?HW72&h>C>hUB`CB)AGyvzDEJJL-H{%gK zlE>qMX&3Ur9VWS*Xq(UP^kVjz3s+95W_k)&>-WPzLdwTrpi&1b_SROhEo=|RQI}XG z_v(Xps7I!1M<7kcTb(mB^|W!(666S4a%|6YM-L7iAKHENV7h5)kzErxjd?I-0fr-dZ}~ucDVdZopk0oV)=4RrhR&E%;23LrZ6`*#B6yr+0Av-&I=2tjdIp0Z zUWQe#Jtr$E7zeLCFUNZ5COw%ve1UXRh>ZrJNqs;T{>~^YV0e#{xl~r@B~27AZ$Toi zpf(6sKt(6LbT(!!-hljZ0?jSD8F&UR8xRs`4y432?fk7@J=^JayOap#jK}G6Iir|J zUT?q)PnzTw{TRJ|w=duUM==+sUqBvGy8%ICQYMv6MRN}L595hel96_D8Y&Q>@u*!D zohTsN;)G&N4F*pW~_R5wpaTb=63mlQIDjA{9?qbI2Er8ww)4$3MazN6N1CQ<(2$FXphzBS267= z{q~?6GjPOZdmWj4Gz!-f1Xe~#C~!y++by{y!RWz&>V^JHEC+!`no>tTn`@YB=7$d5 z5QMhuazg)cIYWNt7cMzEA-o z9q>^kVd~h6PQ+BE_-je;fi#8626uaj)02!Pe=f$KR&8CtD&?YIcUouDf^p|f*WBco zVcA?hg8oJ*B2NQb^UA0yQ_=ZfJW>(~s;8z0T$pT8)lEmw>r5+>Fl`kq>s6lV&98FP zHf)uN8eVw9LoP82``Ht8J0o5(=#wH*$ptkL{^OumQp`iHbE}zU>jL^Di6vL1`V_KD zThwpimeQvt+hN?P_9@LmRXBiMkaA1P2J}kAF~%7mn$I5w)0of)ONmk}iqt_G_n92| z&+!Gb7xaLGCWcX5PU6x_sTvfzO4Gj42qlB)AfAWS;iIOv zC^WW0`J@J`Vi30?yPQZs>`HwGQ6rI$=VAyUk*%J9A`O>n$qAWln7@M`%&c?=y&@Qn zU8>i z`{BZG_ixr*5!zdzAJKRy{p0kVtft>f@l;;67Zn9nL7M-cT=K3rLy`}|KN<}L6*v>! zJ~<+Jy%8^Dl|ST!3)m~lctaV^#2Y?T&8#f+>kmhDQpOx47~s9J7k!%GAL)1=9Ehib8#Fk}}sBskv#w@3l_u3%t`J~*)CsHpg&qT3Ih0wU2ZxfD5o5F-2m z<^nURidnuyzh9ymWhMBytT;x$&B-XxX{p07*HqV0(EvUWx-O<1r3rW9SQx`s~3Qh^4 zyh_Bh8x6mJaUkz!Z%W3aV!6w}Wk^tE^N36#=#1N|uSe6PBRsc$l=DEmWHmFHG=~H< zYgmU_guM{U#6?W6+)C1HjnocyJNeciT9ui7`3$-_dH7VEvMTtvf=#L@JmjSO;NV%drsi7~po>K{U zk&84yCl#ePiPiBv4>BjEcwXf=?`(f)5aEyBz6jsF;{olUrC6b3N;gjI&_0R*w+6C2R>hS52B8xWn}&K%_2X{>?4tl5;)5Fz zenT070Keo@$Z;kS`-dk!;DJ0-%!P}+uqO+X^v6WMJ=F)NqeG3t+aa9MTbaW{&m10n z?C{XDhX-FhJoxzGp&f^Zw$hiumktjV4i7$ccpads~E8+`8cRnZ%%hMK1Pd zVULSzD3K0kNJ0eo$F3Bi4n@cV_1=BL{Cs)EAocf=p@xDf3+FF-My)Aa`dnJaBj#mOz-IS|b)(xR%G?<_0DXhc$E zLiMGo+ze(HUPD!K2oOcc3c$z|Fe%Nyb1`?;ejAz*f(Hs(f*;yWGzjNTAQ%dI6c>h3 zAc{~E3{hVcv5Pu?6|*A2aeDBZINS^g=;972%JW1xj|iaFY{&D-3drUoGCW|^79uG^ z)X-Z-PlI!+y|ZOumvBk9&w&s@1n~l|6LJ<{sqh+%iJl3}Srb31+o)bhYJ3AOSJEJh#!CusmLVNk z>-eev!d)eV;FWa3BTX&zxC6lmjb0dI0Z%X(bO$0)x1=cOboiELxX9gV;BFZ8QNk0c z-kw~E)Q{xrQ2S4F=@9mTzz{{zl8phv7LyPmBy3qC4RN6b47HJ)Nkt%3;cm+|T)v)P z^q#{R48nAVy&;Mor|5=e>kmeKE~vJlU=)U=7uszE?7>{HIpLxf^+_9vL$br2nTf3q zIAW=6cP1ZKy0cOymd+spH}XQ^*i*L+-}wl_ZpZJ~gqS)0*NzNt-f--;EpX<+|J4xZ zR<9J*0EZvO5m^pyNH14ViAtgv5)~&j*GSOoa|S~$aDs~+M86N~H)#U+#f?Pds?E^a zMql;dFZ8pjQoJAD#rqcj5(xFdiHKOMKj$eep^tiGb*|JtSw6E`Me_+1=i(U-HIR9zEean5%a>Y0I?B*7c&C?3|xdY_0>#l&_JQ@g2>Hc$iq@?PlGY%vyM)R z|AgnZT!HX11mIOd=>R5V7$a>}5z#ST<(~*v)bx_kDb*k}C!xQQl*iQ?Dg>-HrRhL$ ztcyup0Vgd*-l0^GDlzVc>fN$Xkz!IG%sJu|83Y7y$AJb{AOG09=SAF@Y;c9cJtak8 z+eE!Sm^a`DZeU&E*F|&;9zO}ujk9L}D|f4YPuwVqeSN94m=&QmI>PY8G_Rzs=AsA2 zR!$>18+hePxFVpDY8F4KCu9rd!Dk0ZQAtB~C|SGA*`L4F<@E>r{s2Ivu0T`)SRm?m zOWq(n<%s%9@bRJ9O2`AbyW(s-`0!_B;SpEeGh~jEXYcJ#+(+68`4ZKbi;8MQ z9EjK#9mH7HAh$)vpn`^=G$Y}j>PzMXh47Fx}=#9n{hYgvT7^AT@n%-Fy!K1tv0)$*s7$XpO zrOP4Ja5Yea*#_^K{LZ!&05igS4v-hz5DLPCQJ)V{Bn%x_5L&SZj>RZMoZ^HlcpA0Y zK$4KyZEb56BaXKA&QAC98s-cm7}yS3(f{H~f=)yu2C zP&K8pz2e*YhU{STY_PwfHUrAQlo?G~=zw=+Y!6lr6qlUfvco$g^_AvD(IFX8z@cI) zr^=}60F61-C|uN7RQ@Pbto z0!8-@L^3g12!nZ{1z|t{`yC7OiA4iK6SSB)v_wE+cK54tR-oeV{P%i0S+%7q#)cKN`Tq^Q>e zn3>n>_J|T-0)R;c5dQ`^2hlar1xGAU^5(f!OsZ4=O+iX~1iZc%g`EpO36GQMWS4=hKn+A5&95MfQp64 zSO^wk6r3^O_la(I0P+Xk!U${==>O({mMTUx2k1MRdJUvbdZ2~eAh7?W z9PyJJg?6-lKW`70X}bW*6V@ugc}nK6(;EOD72plYsQ{fF@wou!2*73T@{nV-f+?JT zH5sZ^`eY$qjD-fs=cqV||1kl`wtLc6x% z!W{RLuU+nz0p|+1L=qU0XhihML1_1(NKkaaXvGXdGrizu=37ElOf0P5I2bwb(jsLl zw1@$O4k&U#pblAFb^PI1kKeKJ$bpX^{lvqh12%=13L{%L4R6?a(OLYWyMKy>0Dx%# zNF^c?7K+Lu^x`1UEglIgmUfndjlZ} z@kXb|1C%(BuwD_?2YgIo(24os0oQ7+Vpb~p?W4Fw3TkA0jRSL`m%`*F8^nI2xVlYU zazFrucpSilalfkO(ERYVD&6LZz(h^{9(P~QfE-Awi{-!yi%6Sr$&U<3o_fo3JY2(R zSt!y`$pi2+UIa_u;KPM;*X4GS!16{BM?tI?aVZ!Qljf5mSffvQdMdg-CZS%`0C-_4 zOQ3sI--nwW0$W@CCTNVC^bKfx32nJj@tBJ8MF)Q9H{1mqVC%XRkQT}UaGX)u4bLK! z1)nUz`4J?XB9Qxv;7RZvA#4M3+L7Ks5xoN%4f8i4m%!3&2#255Or-6hw5H z9Q=qg(`9f7L-Qy40){c_W`~jh(-Ph0fL#Qio&t9i*`c^Qf)d$=bMN6U>KF-n5t9<7 zh#$;Ua(Y2kERh7b$_bzxIEn->Q#9grf|Xp*jB$OFK3}ET(yWEN9jb0aZXz%?O;^Zv zYSA$=&}dAIJ6jk%TNpc?s898=&O6FHz7Zx?2*@89_y!<&fwyqFgKj_|fNca647e*9 z&ZcMt7Va5M5X=UwE|M8Qhys|OB%soy1;$VUEi(Y_s_m3?Lxj#X$&BDbNgsu31>LKt zb)NqUzwZ8mAF2Rw@p8mX(NJK_!5x56K_C=PVz{>@uLy}4gp1JB2p8e?`c%77bHbv6 zoMY^38wJrRz(9H&Va`-F@g#rk`CnpQ>2u0}aRnr-UkhQeiYp3qF=Qz~U0%Qd1B%b< z3b_>ci_G~jT44~S>Ky2a#qCY-!f4+he3!JG1Z*HpZb{3Bf65R3@F#d@fGglJlkmD= zGjQL+T*Gq#WOs{@O_CH6qr?lVuBu{|8Sp|0@YaL~A7loJ+|}YwwX0WC6NxZ0PaNwlT-@Cdxwck}6 z3uYN)XA*23&nLe=A(TgBO+u%-CaWHD%F#jt zL=-XE7KX!(t!_9N!4hCYG$AH|2pX{44Hwp!4NXAwMu#@G+|O$wG6p>q&hCCDzZ43arhc5|CvegR8%fwv4{4Y%ULFonc| z@~lW$@#6#-z%MGmBRJs>Gn<(|G0n^?6}DGw8*DAMYU``kxOJAb&hiV(vz8kzSJb^z zx6`cDT~lYReY18)?Mjxfond~@d~fyBW=GB6Yrau)e@$1-Y1MC5^;WN{_Er5y)z_=G zvfWki!d8C0a!2Kjm7a<}RP3#YS6o$LGQDYf%Cy=v+f>PahjsD~@z?UxxnFai=N@8S z;kvl#?C;sv*az4p%-bjV7tDWSD0Rk(e=|)9-Aa-R$U+s9t$7K{8r6BNV%>njgbK#* ze&_F;Q2j(HdqTZwvF=S8dlh)u`@k#IPpd^T7LJy&Fp)2Q>X4#a5hQ`ib3=_FkVoFl7IAtbJ!y; z(+Xa#2ORb;mwgmvA0GfOjAi-lAH9$bPsh{rTDSlc zh%`b+hnVZ-mOd)wjoLLo1$Fn@E=PE7?Ak7V$KqYg!7EHFb=x&R)tl^u!w4S6tOMTP zOrJd&PutbVQ*SEG1%B7do@3PU^8ud38f@)@mP_!DK0TTF{8gsB{<9>k_K4A1TXn^X zy~HQ&kb-s?URf@3{s#6wqk^sKFiVS&)(&#p6ZO(?KIag0&GC2r%)-9uMc?X;hL$1{ zubC`jM7sdT97x16{6}7_XLrsrrHn2DA|#p5&PMRIv{KD}V?Q7!dC>osA0A@Y`Amv# zSG6=XhwY7x3tJs?0AS4aD#-|3l=jv(e#O4K*BFr#tIA?r=w%XGbN z1Luirpj>N+1z0#rrccaq|MtXYHfS_1=FI{3%{d(urd!RY#iy8mHzM}jjM5`6&7j#* zOd5TAHIu*q*SL!Np+a}E>)j(g4hUMpyJgR+_A?I|%>>*y)Zhxwh*=jUSCR{dt2|6tmHyd^1T&x&f zg|**6G$^b1t+(5mZAK%1ZpYH)P0dRkoeklJu7)KI9Su$Rww&MfsTy{bVGo8|I_!YP zpxXgtO2zr7D?iVEBVg*$eRTrnA-qnrvxH1>fEQesO7YuoKgc{#{e%(AZ6-qrOM0(u zQo~@~v&oI0i1FEKLZ->6>(7yBeThGeOFtzJ9PLbPMX`TEW`ogXG z?$ykYQPJS$)oCc^&H(A9zz?sAW%5~a8jy<$OYvfy^uiO&H?J|>q}#CORk65J%87AD zQz}0YOLlj~`npnm-AzzfDBVUkfYtnppB_jV&HiQpi=hq1?JY^k(IiH5{JJmfW-l>+ zi7`1q482hY=Rqu=AooieEhHcr|I|%unI9O9(&pAqdqd34;je7!Ycgw)*mv5j4F0FQB+mQLayX`;R67Z%l1R1>lQPK zfo_a}gvdX0-D~XcjYe6Mf~g5VD>=IfMh_lAepBdxT({{7_Aa++g?`&%fde@q#$^W? z=+;;9fqenEx)exx?c0>U+>w|sRlaF!NM*q&;P7faM9EtJK{7g*MFfNco=iBl~}qep?9#_Eyu@}tz)-zR1`j}D>uRs z8Ge4THyn>*4&JCrLi?g#m=#&*-*(M6G`is4t}Q;`Kfd|cl6e({D*Z-$fR+4+%O@f| z{MKte!N!b4+6T!9K1JGXEE2fx! zXL{ZAi0MX?pZ_!eW%vPPzMlIn_bT@Q7vnq}%YGeR0GXv44gX*K;f=#%_jQAT>5+Xj zM;>WTYS2m*v`Cb9mXRt#3fb(o*;?*7c&M@pzw<8_u$@jA=z5P3d!S?WrsB{j(uDrN zBv3M}cgrFpuYnlpjlq!W>w^LTOB#9hAX--UMEL95o@57%uDY%>+>&rC1^g)02W~7}iS+IzBH#r#>wsmoL|8*~Wu95Y>WDcS{7|4#rSm?rU-ZejF)D>!T zNmt6I@!lE0-njH%*Rq?944*EnuZ3>r_8=XKBbSdM%}GNFQaGvD;m;JgzO%1jI|9%g z^!gE!p%hd*5!gqNxq2gwrYn`~xe;b)B;|n0k@G@Lkb3##)s?JZ_+F_+Hgh-kV9|tD4Xl@(a z$9QZTmTO}nG&oJ(lw+SavSu{o=u#Dmg8Wdxi}H{C_GdR6>5N67DLkEX73Eqtzx$Wh zGJEXs%IWsZ_>^n}MI|h$qaNPVyr$|sR{$N^AG9I7&$xF6cK!bo93FhWix zTiP9Mt(v^!*4%uA-Df1CJH_OU3b3|ay|DqYhcpnx>`F$K=EC5wi`>NCV8r=40paav zvGWM)k1B>EryX4>5`9{vQ4k%Tb99VJ;OK4%e#Ron`(ZKD1=_o^{sh{nQ9o)u|4>5l+V$X~F347_F z5Bt(q{@KcP{_*fj60TMss*^_*#3|-UVjiXw5InbJsla7(2~~xJAdc zy{&yATCHv&FqAm=rK&Xhf{`NwD|2$W0RSwZgUb$}1+gex=_U+rs++JDYHfc26 zaP`FGE0hi85+jO^oeiMcsul{9&}9%46ir(z%3| zg>kX%Z*>`23lpwc0CP^saI0JAvrCOw)`Sb@fPFLpXqFn_2ZY};PcN=0oTEE77r}*< zTa*Vho($$5XuGoYQ8u+~*w~-KF8);{493 zKV-i>!_=uORO$4#aZ87=>?d$J9Cmtgh|V3uI}!Fgwp#(|O}oM+Tu?MXGIP=-(k z7~G^&(RcpbXWXpUXi6=_ILJZC0lFcbLokLD|NJxdOGb*+!Wd3OghD*a@A%`Vm;*+#v@M?nh#{3| z69LaHiK}kP$B^WD{;aSM2TgsteR-+`SCqi&QX{sF3z0I$ks-h$ayszx@84k78@*Cn zDSr#rZ6d0+GEUe>M7O^E2x~D?EZTa)l+G#x-`nb3Hz1-2SawSo0q7|1mJh$j`iz*O zYTT+h)$E<~yOucGS{5R?|KjhnKZB(=W6at+l z_7dWH^o{TO#kS-E9v<_}#lMWxj9dw-_@!iwhLsBtF4iQ1Vx=U-BILCnG7N zbDvQo7OPUkY%jNYQWx{OxneytkNs$s^*^~MEwi{E*d*&swt&@RSyT0ImL0XT>#nGK zm;GGbi)J%>tZu0K&y_!_{bubWwSCpwfCxC-T46qH-VHB6!1kS*pVvHI(^u2PXRKeX z{z`SOx~cjCZcf#~s-dcDfE|9f@`=h@D?2KuRs2WA=PK@DKU&dMajxwt(|*&vd>gyL z)MaYm`b`Y~Lw+mwA^r^Z5A2uO?Q9<#V16{N)8>x*KK7M+i&X696Ra5j(#^_e4GH2(#}}zD@7!2^bLeBUkb_>z?&N;2&(*;29I}9L&K0 zzf$iR?*rvv$^%!v_uwlc)$b)NuPbV>jRd!Lu@)4Nig^9I-r_RX4087kXqFi#E8 z8|+R$pVEI8!qJAn4R)Qugf+x$tTEtYC&4w?L_L4KUW@dQ8f?&@vnPNwn144Q=&A4- z>>&frcmk@6tuPp^dVq?PKpE_XvrR}StTX5JF4x6lFb^3F@C>*=o@1h5@9ALHA4mUohJY#;gJEf?Z`a1y6unu-~|xU#9nlCx`r*AGrA*y;F^W z8O#F)LmDhqjlYftVwp{KBg}=Tkn~gecHL)Bz+EsyK|ZT@+WSE+m~R?Lvk!u{NEy83 zNk9ws5`%fG7y4zsXfXB+!4=Gpui|gjd;1TDt6&Zp$inxBRItA{7#hZC3ihrUD0ihZ zsr671`wd3(i9uj?xq+zF#Wk=ud-#}M6Hb9rU=CknDzLg2eK3Fm8!%{MlODQ*GtDs- zEP9WlIQ+?xd4o_od$!S=8Y3K7=#SmHPu4{pu!k*gjaGGQF%{0#y;Qf+#&7~wnZ*z2 z-RJ`ZeA%g13uC}rC&cC1#|<9x0YC%nPp#`2>k8%rgi(#UeH1J-4mZU9!GNWlgc4v! zz%wr}=9_J%!iV)V;eQAXu*AtrdcC2l)jB|H_Pr~R)Lv(fe~{2Q`>Fwh2%ijnV7D}y zuy$7GNgu=-(I5(J%z)-6fsdKb8(3BbIKv(@uQ2nu#wzXs(-u?CG}m+nf0#eW-@&_h z&h}l)+15vFofYTVF1G%g^$XT$ZNhpLZ~rngiT7O~0y%)-=?xTx0c{)%&XNtiGYzQT4~FuU0); zm9Dz7s-p5ol`mA@UAdytS@Cz&8`xRVYui@QWJ#F5&WYUl>``_fdkfpix==9TXUvPm z0mc8ycx07-`Nt^0iOl66>`ML}hRRW@e+B~Z!~iLGvB8Na2Bet37#KCDcC0bqHyPLo zr;1mye>M;$`Yu`KfPu6+g*TRcxF*6}RHBytr-$#;V}+-3)m~~~;GE#4W!4+KpuU5a zwHOfbRK8i(XP`Xlxn0*9?UgrUfi8u#Rb>NF+p!|!yNL`7j2$EX>+5^N5QqyKALjf(tL?#{f;(C6C z?#=bELyHWApb>6}9Wc1S2r|Te#h|10&_e7KgS#66g;<+GPfo-LvF952*(Sh)Vg|`bP$&jC$4Vc*pXdhuAvWwB1L~cGu32Hgd`|+_u=@-Qln;QZ zVQ(B*nhNLW4Zwc@_QHO~pqVsGCm>$fZyV5w&KwVR2^hHGjL|FX zHiIFz@C4ijJIg>u(!D2wvDr=^pE8<%#^4sC(5V5g1(+87keV(?g?%0N!1?+%0mB%m z;s6XHi6hnuk739NKCLd8;LbLBydElr1QiTxIRgYnPhu zW8<*kZ?F18)k3C#)%;T`ZZrLY|C>=`|H0#h-frYf7`#kBQ%0|tqRhPZcr1?vmEzLy z^$U?1xCIrwkgvfbv}1kN3PHmT3xLV0X)}Q161q?{D5)mC$2G#VRy8#Zmd|S`5|N{( z2>7DX@LJj6>007N2BJ>8~O@2pUCJH?uRS?qn z%2CCMf)7rlj{^P&S&~rP+K2p$IEFkS$m=)xI+TSm$}hJ@1VS;hM#=X$lFQyyyRV;a=lS#%*~Pi&a<9zX8|iyTERdLLDNL<3Oy z!H+D%NP6dt2GA@d4V42?WJY!)S<_`pDaq9o{Z3dz*%a2~pc+z{SEPCERXUNXQcakz z?rE7&sZ^ja2Mc*n_Z@9Sx(iC~rnZqNuf|o>EF9`m$L<))VXbZu&iW7j(G43!WK}_$ zzK9fYBJDWp(E38r0ID#d8W&OmA=?%5Rfr+V@WL)e;Uj~*$jA|b)moG_)sai*JAmN? zrdh3cj9QUeE=O9+t0h@d*INr+i?&YHqq{Jn=mPCwEgyZr%_Jwnb5B;1jaq(}zw zkX#kHe~@1oIRlZ+zc9Chs3qwq*~zXEkt-YZRb7sGNaC7lUDPqW{lJj}caOaIso?`p z4nOzgk(YKHfA-;#wNIfknO1r2*vn5IU5|R-x1;#6FptWd4@J0;D<*_`_kPiX zCB*tQ$i@b|P=S zTR}y|s5gpS{opp!KM=<$2oe?LF&Nt8ZS-&~K^ga+72aNZKNW0O#^t@4O7#=QN_D0n zTt-s`jb-o6X$z$rPJ5n<9YR(lXE1`~l1LLRi4iJg91xMy9SN`~U9=sc>nO*Yd5|9$RH&rCUIA4Q8I;v_eeH8RZD#a{y_<@wG_}w=CrHS zb%A~)d<=yYrl7t-;#-BQSj@&u?Eh@4zrA5!6gi7_9oX8I{lC8OhQUxVeS1BpHn2;&l1 z63Ioe_#mz3RoWjZ7arIn+^*{CG1)s6)^FO$os&)mls z{_RlV(i^A*(IkCh#q)hAJOrewigBbe;@8>%z)#0kyOHZ*X0fKF2zk~;vj}N02yjqL z1V%HD(qU_j0E0~-_cZRH_Ho0RU*+!m?pv-v5IKI4qz+k$+=__I%Shsn3U=m)nJ0j$L&iDV?+>nK&Em`1Dw2cSctij0~lPnj~k0R;(=2pJiUi}j$8*CU}O z%GOAs6=TsP3Lc`SomNYSQ`s2+ZBY$G9qW_{uvk`XdNDyTk}+tN-CC&jZL#!ixK#0$ zikIY(2NJKP<^@A~sbck-dI4!>$uC#TDCH((Dl$!xGC*sNQD_hc+?tUwj!b90LJL$- zNCARBi2U>@$mIklqXc&%GN_{vSx}5fQOSpjh+br#wSJ_?hxLXoj4(ouYiaB8P0QS= z(i#*+mT^iiDGQAqOPWro(?Y@*OCM+`K{o=f0crTa<4#oudFCDbvbVmw=6d82U93Nh zqhO3VHH*IbZ4Q(a%2d{gVgyQ) zUkYJ{yCU8oJ|H>Gg=>}*F$}Vp!ZC^@*Aj4V4)tqT?ekHkNL5AXS4!_y94hKE3CJp~ zuDhyzG)U=mNm&_7z*)YK5pYMpjd>^AHlzp~&zuB4$j#DM<)q;F%r8PxrAG zcMrex{P5;|C0;yyXmI4YCyo_1pxF4x)&s+j>^^effL3l*a6ow;Kq3JwVx<&jYB4@6 zT-VZs@z1yJ-2rOZ%W zp>|0PQ~2=U#rp5^4~31x)Wez4yu`>XoA1FY91Iq)cPeLtJgCU|T^tQq?1wZOP{}n& zwlJE`yu_nXUIiMDpju+IbiK%ZN=XQ$2^p^_Hz|^7Q*M={3`O{9TG0;8+~vhYh$ulA z5lAzP#E+666+%!(8vMhnAkn8M>PPlbPZxv zAQre%!AA+dj}>rI#a?Edim7H_1(!hyzwtLe^V77t2MO{$kT`y1riIyqs#k899Z-Ui z{XgQ1pavZjAY|1Ing=bNNU=R=kUSrY%w!RTiQABB0N;*3bnw_Kul)AVmLvPu9@+m4 zjvw1MboBn>5Jd%(qo3F_vg3{;`wtwy_s-$HFCAU~((s-wNAKP{{MgXZEw_=5{lJ~W zx33%C^O9Bo7!`tt@7Xx=&}WaW9Xj^N$8k@L=HYucLJ1$q^R#%KfG=?u08rxVR-NDIN|t1dyYT$ z@T9H$w(or(iGoqJPM>f!qM;1}#2*yZM^oXc&tat*b@Z@(QlWEZF z_XjCKq+0*)Om;nEyV?4lHE!8am#y83tp8ihlTiI{eRXT)mWr=e2&O0b{{%e!xeugq zmrwdfC@?rBRn6QqnAM-p9|Y@1>Guz>-DsS8>G0Z3BMhGK%b38YUq|Vn zVCj3EZl@RdqhYhUJxC7h^Sh9}(uERbsCFILtznYN>jruf7Un zRXa*$?BK8ntNFDx9jSB}ytnB0(O5keUs5px=u{;2do?xmWUW&iE032Jp%q#>`GHbLzt0B6~C&A8Cak{-SM<2QX^7IPzi}s ziaS_T9PJZ}>HQl^N0Hrs0Ua-iXBJ-Spkf-+nqMWa@Nk1}{` z!lhJVqNE)(SoTozMpp&r+LR@K8Ucrs2@R)toS z*^8?-@Ohnv;EEH5jf+nb7c%akNN*>vw*?}Jh1k^EX5UeZsmCx-BMtn|p zC<2Nouw$dq2x#l&ZgUSbMn*|N1%%{|FrFsJJPk$cyAcwKmj03ZfLJ&xa~) zsJ{T8pAIp=+!_j#Y^ zx8Tc-3#}h#nN$*2QhYzT4mjLIk@k1zSFe-rukmfiX-$gjtbJ*3>G4AJ)~FHMRk?yK ziihDlbtv+dG$U7Pa*R5rWx)UjgDVR79;w7GNFz|5P0aHY3#ky_<%K4MF1_hK6kn3w zp)1xcSruL0-x_PU!gWjUUnN6yn?jU$g7I*onF4+=7);>T&Ub6Y*@%JPj39j=3MELQ+emPr~@1~}vt7HmJ-1PM5El-h9j^1|9;r)+|-FH{1G$C^S z#hvQKgVLgs1(o34PAxSzpgi^n^U646iqtw5wOfkwNNDPlUwkknl2g6ONfBHnKIQRv ze)`~3o_T%Ajl6k1HIzn1PL#iD0jBxgS~=+ zMAuwZ5N%&DY2&SuNP7|s{15>%hQykVxfiWj$p4n`zc&82n&~2{|H(vC!=0`Vo#RR- zahRi1gGnucC5R70B1J+Uj!|y*g=r>G9Y`p@SgRAmj1K4fzL3!GAcQNWlY%BL_DF2G z?VCUG`oZy?Puu$rHW8@h##8=O3OhBNjFUKz;n2~H5kjnmaFQSyr`;6}BjQg7u_{$* z#5I0R81*4t821)_+5?5`dqoOoYnmIyt7@-cDzYrJKVrYN;Ty)Gf5HJGng~R(7NZ6i zPDMjOYB%(S2^y@WOms}a*%i=8G?J8AuX4U1{lgTqL65E+CcL(zVdvW#Gs^3w0S;ZI2e^=gJ_LpU6SdY5?$#tSq3MaS& z&UX#t`#7S@@uJ!F87Y*4E?S>iCjZDfEbT(cpDCPr3O4h_g}7h`;OMvBqNR(qc_g@Cmmj!@*d%6{m4rZLpPWCS`Z$&$~wYkQ!H>?yk%_`KI!diZDSA zgNSrb#;(w*Qa{E=VzL*L#G%R4VTUj|ajACOE1G&A+tM7;%{`MIh}0N!l6Ba50%=1g zg_=oUvZ2a~pPeAsw8U|{#N!J;FTAExNxa4)(IBoDxSQ}R_O{^`HjL-yYozbJ!g;** z_OL6+NKpzwoMCoYnd~oiKYcw=j4WLPKJE$Yx31Z ziA$W%`6#siG9_zt>;hrU9#L*-rQJ)ZB}{MvF3=+0tSw=zu5gxPDZ*1H7@`56BuJf| zuM%_CInF1rDcQ%JCr+scR{;E4%I5X{9rHYPn@aW|GLhy^$u!uuMH9p1C9+TNX9Fjr zk*QbAHq@cen{TQ;#dYh$-;Q&3zLpdzMWh*AfZrDkM|^-oa2tz|Ew$izlWGn|7@_aW zS4vIeWam?5+r`~NghBj8C5)6x8Im8JWj7QFvY7JpCdCm#MGm{t zTHERJe*MD~Sfb%bb3*p5V&)0Dg6>w7ljNKvmt+34wzklUsn1tb8kcLDuCc*Bu>l+y z_S%ma{lD1#fVe_4w8-++1d=HsBN8BpILKpLrgnx2+~8REJ*U@3T$_J;C=p5pTjOy~ zioTR2mv|zRat1<)L>Tj$IItuV4oNW2%a`Lcn%BT-rl4140uVLqH4vZ1jI^WW_nuit zHt#z8>dm9uwom|{Z3m;XWHX|6IMjz!A)sVWYiFV|7T9Ll?SwW`6gIguVF|NMr$j|N z4p+`*=0Y^)j|0TP>9Hk@J$W?D_P~$*Q=qv8#1I1l_q%)Y zqMXBuz-D}yCXd*mWU{D-6<#9F$V+nH9q;yY*1x_#j;oH3CJbIcKqf$aCF1@-1o%XN zvIfqGWF2_*VZyd0l((2QH!O4>ib{&Vq{*+IvB1bxPSNNkc*=z2k3#|k>oFaF*+Z+m8S0ToiJ%;s=Lr-{gI zXevYq`DSb{nFrXw4p6k=&{0M{SQE^%qJ{_jfaH$qip!RG#(j}5sA5kpP8~O%Y^p_{@YyrOZ7moMN|A-q7>ig7c!4k= zqEr~KO)^NjZb<^7`?@^T$PP`z{AiH2>|5;6OqQXRRw+spJQkJvjb~kExb7>WVn`vI z8jn93$F4gOr_Bw7qy^Jey4_gECRLDOI!4H3^T?N6qVb(e4EIH)qU|j{kV1C4b5P2# z3+5X)u6ua%+@t_@Qet*rvedSeTLWtk^|)-IH_k; zY7*0mw($adN2R#xEsRR4v+Bv&a67-fN zFEA{`~x_jIG95mF*(4;6Y z7*eW}96CuwBoIva=m;gr4amJ{g*R-%jc-I_R;X3tIm%3F*63&RkE|b})^YvEorgCIn`m2k zWnhBgD*UjE{Uy8iLe#}KR!wVWu*_Up!*a?bP;G@0vZ)(jtrb+*^f9Hf)IyaV;FP$l z^G39Mho&LFRT8KoHi-rPI8aB4EH|w26wG1T>Vt_ zK=u6UcT_Y~Jy+FVbx!3!R=!%9LI2OJc%$Opid03|e5(A1<@b~)%OhoPmpxy0O<7yn zyR8Z9pmmG2#QK2iP1hUdcU)cOcJmzLE#pfkRz~>j&{5Qjpc0>#}EWG*6vfw!~2{H`bK_D4QG-iE7tn`A?g-)$|#4 zrLUq>^NnGIMPeyUo&u~D3#a%?WywaxgBPEM9hUYZ7txY$oVblrHb zWnQ5Z_KoKt9|!~%Z@{c8-S`j2cXdkFRQ0KVsXdbYP#k4Hu01eeCn_u7!b{thS`XcM ztvN@hP|niL-eC}HE}Wfc`Eg;vVo*t^d^c=8^o>uO&*;Ql3m;X8*WzRAvCG?y+qLdJ z#kWyeD7vptlB06TP8nZ~Y;F``!Pl+6^FlSwf^Y1bDV>M+t`f@SdiS(=0ajG;E#Lf4}idT|AGc#hn06{>0kC!zt75_7_ezzM`A8LS4yH{*yU3 zFwD5J>&ITKAQO$9ndpGk|A(c_5`7`~PBsSp^cvSOV6;Xw+#INk?%e$WbjJZZPs+_I$Witti%scvvPRP>}eXWXch&)0ayi~suq?Rnw&#atNh0su*H z-4e>Bv3cIGIbMUgpXMvahT+MffgkTCnp}|1Cae_?-C3{Gl8$ADvFsh()J3J11f1l1 z?R@5WyOian&?lD4jcHeX%`B1$r)xZwWhKn0xK5fpCfj8~Q#L&m_LBat&0>kP*6wb( zhSo=YI*Wr?ntXY5bJuD=}wb6K#AeUw(k6l$c2Zv{;^TG!Y6kCrM1DAme)|m4L zPFbN#5n{=7wh`}FYGJtbu&h4(dfu$o#X;$~0E<%VDv*|3&ieGvPcbj6d!I44ltUfo zfzBO(?GNR<#$1;-JD5sYTVDI*2XtPS(TxM$eUqhtcy=(sZi4&e+P0>{_;;Ovd30k= zoj5<)-S)=7WJ^IyY4LNf*Hk}ku8rWl?Q}``43jCkiDD~0C@eE#99m#}pP4^tc*h9~$Lrh~0GUQpNohL7Wl)wD z5ia7B-)uE*)0$#M*Yzd3vtIV5lst#6JrB$=&(kf5P@4$>QE9;x9$IbY&yC%>U>T*V zixC`4LvK$Jk6H4%w#=~0Bw2L!A18srs;39Mftp>zuKriy%JNS31AVWT9mxP zFybX^-5bxF{o1d@JEA?&B-;1ud+hhec0OSILHmASzwr2!!8yZ^XIAeSmByXApc(Dy zk$s0$!nx~(XRga0o@X3lQl9V()m|pMq2U!6F+;lBy7|yE#@okxcgL!Q%0kuZd+k)? zhdS2>%E;0zX-tq@H5P7z7hANpj#bw7ul~xVHK>oK1+s-DbDx)a2@%YC_6H-bTDNPX zvB+h6sBu->Y_sG+UqC$;y~AFjH(uDgCieO29G)$OglxcZzrf9*fj ze!1$mW#_o|xnHPlaNpqmWX;tzA@{#k?X9eGdtK+a&FVL*A99)HA8`G5D`hn{ywmkN z*Bh=qE?j|J??C(Skhu*nz;n%N-DMKmW-80_BS)G&UiQU01%1-VFb zw4)0k=BXN$m4r-`u4un^)xu>f)|R;S<{KKJ9f>7{A|5tgDhf4!=mwa`3H>Ct;J4h z#AH_PIm^1(@g381w-uT{dUV=mR%^b;jEv2^>~w3P(^xLml+1UYV_oieZqXSDcD+V1 zTbrU8|E>|cI(Bwut_@kePUm#Y#H>{#f`39eneiiyVwEl(GoI7jgBh8a`IE{WQ>u;{ z{jBL3@dq?wL;7UQxUF)BF1k%Ec$srFT0=8aFk`nybL^Pem-*eQzcxhLg8ww*`REkP zyhkSzbd2oF?ALvf8Htzi2i;p|-cR~u*A*YOztYNE14w4;hr=9g>Y8ZE<_g`RUYDwfledh(AF| z%u0@1dN#hJxo4B5<|$QY^9qe(+>9#n$Ln_*H8r`+lNZq&r5nU!MW zmzq#{tRk`TmHOwWrK*~lcHDBY@mIP?cC6y1@uF^=I+S_MGj%6-yb7=RGwqE(!Q!sD zMt9Fu#$37t?3$a*fn{yzH{- zZ&sI8T~!;ae5legB53rVS)M7KZ$6jzRvFzo;lAPC_+Wa{{%~n@SzBYluQp&KNRad6 zwE!5~;_D^c$>IICjXk*g$lg~Gc<{{e_*<4teBp*8J6}KiicrVL?zzbZx_D+4;X^Zz zCD;y-g*H`%&?N`)^kBFyS~v>xZ&RXXpHyZ&mHjrLps3*8Q=z!81u&Tp#5;&nm@UZ| z!Xz-1;W9AHMaLgdqI($|Mu<#Q4^1mBtqqid5b;@eJR>)XjYjkvMKnChh=x}n`j4F; zx4nauQ8Tm(JJEJj4~l>{Tfk?5*pg;#B^H|waf$tb0+FMpnB z*<_msEPKyzBl2xK<11<+d}<{mjYKMOMO zh=xRJ(>*e&0WU*sfWCKQYH$;T3bD86nV`A^pp{Bz;iiLE8Au8~Uw*63Ox`S$S_<~+ zR?1zFmbT4&7S@IQT6Kvh0rN#H6-Q2IO9!(FZ#0z^wYu2wRoG7mX=z*Sa~Sd*LWhh4 zJ`5eZ2*Piw`k$^FpIZn97DQwOrd0y!2Jk|9CcsvMfFoOd09E0(BXO02OmSvDAbh?v zH8(Xa^k?epROl0ZNxPRnEmEWfGbU&T`F=%x0XZA)Q2_>)0~vARcUshOliG4?5=}R0$z{hPx4UU|9+BA8@E5t;iz^ zsW6C;4m8|w4DmE%!0#d3(WJhd6v;!_pHnSF_huCOy-#ophQkd-siEE6l{<) z&wJjn!g}gwmxTa`GHF@>oWhI^pxK4!BFI$6j1SHj-x_H#h*$3X$MTKBsBd#VGhKZ} zgkTU~6S>;Kew#S5I6ZLTU`(cS3Y3Xx8YFr}GynqJG$^oikY$()!Ba-q(iQX7^g|;T zh}r2?k4P&GtqzzE0r*xyaD*rhB6Z>mCWGi3h2WaB`eH3GTT@Ui&&baqN5CP`@ygoU z92*><;35odrCiw=)tkpjVw&suTzsw6$IVG#um z%=T3M#uYp1qyTba311MMHbCo8bbwO(;D)gvAw40SHe{&~a7($3{QUemLTuBZma~KC z4~u`ZSN%(qIo4L1lh9xat2*l)Q&3J-QV$j#P8`(+31c8Vds!h^EgKsJARa47NUG~E z;kaG2a3$n`8ba2wAeLLb*ShzDwh)vokoLY*ERY0wA7f@9QHy3?EEy18nN%1_4IiS8 zBYpYVP#3O0+xcp*MDw91Y5%K0v@l1=CSh2dzPHzfyK^naxOTrIwE)txA<_xf0 zwfq%Zo$7?_mnK<0#4h2wG*zE!4SU{7fI&&L_#qD_phl!%j70g-l1PP!MbL?ZaEV)y z@p6xxmOopl?C*EJ;?oRmezE(BCp;?#XgC53E}RqD8Ii)y(WL&YfXTu$M4E+4TxZ5J zYfAbkOxA2p20VjKZp<>)ER=wXZ=Q{cgpfn+!z^oG);_6fB)JGa@)VZArt0rod%IrsCHw(Dz-`o}QzG4hzEB(u zKOpY#tPwW=ecTM++Aqrpw70pH#+8~xAUBX9fsyD!LwbmOg_9^KqNt?;M$t5-Q8}?J zi@u`6p`4*6TlKrFhYnre3=0H?HEaqPxJfzWNeGfN&y& zU@_v11o{*Vb)eU+J_wB=#3fjbeJF;9Q1g3d{tRI*TFxV>TdnY3`$xwBH;Fi{_(UCQ z=~p7D5HH*NijvnWi#m)9mn9-B-Ul8fSN$W`1%LNdG{9Se=xGThFdRUg!4FS75%$4` zYDR9$A3@+HKqz*@L_lk(74Jb@`B_g}0mbHNM-Vb2N)<6t zC_Q=y#3TXXj&ehS1Ook(Wi}da{ver-aA=#Ve<(OORv1r}k*|w8UpE;o&pJssHIk3@xk)d?(-^lRG(~|S=H-$(%Mq- zbi*liuT*wbHI-d|ZN3!|=&j3~ud=)pG)x3e=JZs5MoBQ$NbW=miO?Nbylgg%NWC^Ge=Q_N}!}gr`^vVYxN+&I$m8JjX_IPi+j^suWcRM zddJ}d&yH>t#rE+7yG2xQ|BZ)V`RwSv+u*^pFIsKuy6ZswPx zpS^MPvj<0a?1Km--$4EO@dsWRz2U{NTQ-k9xbMgVH^Lv9c>RH~haQI-RJF`{=(iSJ zAVN_jf{b^(*^hJ{Tv{R$d}cHi;KT(}&8Zl?M|b|R{Jbh-ZC(?zoz41|CzoYBiw6mn zEQ_fAi-_6uf{euWZUkNn0|PxSQO1&Z&LWA1Pj9c9{Ur3oW01Ycb+uP(!iy})MS7aO zp=PTbu=f1sg(zZX3CR2i9usWiEv?7^5);TIkmZNYmp~YTN91jp{6~rXI^NSXB|sc;fr{LOUX7`v?AIHyI;anDefx;TQJK?K%4J1Nf@GPG-U!7sv|0$llfI-B@Kws zD9Y{eL6u`i6|on^TlvChBDYT|4KQJQslKXZk>)1%HV*Hjg@_FViZWNbFuXzQ~D ziKOsA2vJLE4kBm(Yc_)7R5SEdh-dD~F5{D=CjXoM%P-7_gr}(qm&LNxQP?nk20i3siD7R+F%b{*@?Psf~nMsj{BIw3Iz_{b0aV$!h^G2{K~#|aTXjBIY4mnDhkfU2eF1gN-66qe z&q#2FK}%x70AaNkM7Kvlx|^!rCD7~$n@F@jBgo{E86_h~)+Y!HErCdY{aGRvfqjgO zCGIKn@*k@*uG2X=oS2dL1({5CkX^+vLvJ8Ty35S5N4y&45(lQ)@{(T9$N(s`c`j+M z`ha!w(!Y*ECP!Qsk|%qyR*`~1Cl9TwKrH&m(?oO`|9VW>;g%=mtzat_kwMin~iQcQhbk%0-=DRmR z?qvs%K+P>4PoWFtZ;gkkT%yO{5|1Y$z8Er5NnaQhkq_j<TSnfUZzi+dqM@X3Ae!Z(-bEx?QV+WzGeq;| z@PRKND|}@0onyNnY#hDq_0ik6kn?ZhwYE zYi!TUXbu;DyHyVESvVv;i=1aZ`&4#14E;7V?T33sn0_V5A5})e*FtqJq}VXmBcEeI zS}HXC)lnfrl#a5%UVnzw7*p?i>$RJ!F1K!Pxf3oezAnwE7NW1ky%MVp#95Pmlc) zFMLXQM%bQL_GfvWif8FKwwDAij_tVp@Sz6~_&ajfp^2CGam>-@?nU5n;>kxxZ+uZU zNPD-kZx}uF{NdO4jvsmqTYw@?g_SVZw0^x3r{uAB!KD}WbayNq*l_7(m(EWtT$J%t zJ|XD-7O{~+Su`09`bC})!D;yLY}S2|plsbyhd}mIb{n1fkBcdtrb|QZ31SK$`cAJD zO_wfP$_}12lss#YqGquwIZO6%vq^&}1k0`y+Zgq3JAH>MP9B0qL@|j~!GT@g}|Yv$}d^lo_jMD3DA3O^&!3( zNhUD=YQ>!{6b&T;0aD>8%ZWdUNMqPtSN%=;|A&l*)%8!*y#!kSV>KJhkGZdR`;9}@ zjg?=o{8+{A@`17^tsh#mLFEVkYt6N*^B2;W(ln0O4Gnd6^}}-8kWQ`?ExqM!9iva* ziJZmg{<~}$NygVWvKY7DXe&upZ?YbH^}1GsOzD9|#k~P%EW};|=z_#>Y@jvkLkA@; z778)s=t7CEuKZ3=SgLu}HzdK1yd#?_7`S zR!~AgkO^H5d$v*;Kr40pnSEm~<;Qp4F!B2B6MJu~wya0)-Hum8ij8UneK2HNaUMYv zkdhH5TWnRsLD?rHVkmF9*X37L8iRGtU;4O+!-}NP-ThHC$yzAQveTdjDF#*a#eL{{ zrKJAIikcveZbj6*JdfdDbdB?0qpp*aG;A1hvivA8O;?j?mDI`#mD!F3OVkYOP;W$B zuHq`!Ih%K*BP8;GNy+08BF9=Ro@5)unw~%kh72C>i~wzIcix*{DHU41I!SL2C2Y_i zy*&ik?KDf+@Q~(_u=h`DdD+GO;uKd?nXDv%=cM$6BzmZFrz&sTrdA#$l_kiE7b<#O zi4UD0@uAL#Tn*w!=&0a=MvIFx4^xMaBQ=Aza)Jh;jL*gS6;d?0()r>Ebv)Xmc4=NY zNzs1FB_~VB^t}WpB3IIuP+7e4l1AkcpRnJfD9w|C zn)wv*?us9|ZqL>FQ}{Z>Lou$rA3Z+;GMRY@@h)i|@RYQis~<;Ssy)BF${5VIJAakq zqVL+c4eW80vKqyZ4TC-6C(LOC4*S6G0;ip*~hlV-6Ln`msJ_LEt-Zix$J`E z1|MP+8BR%bq@hqVVg%kI>|Q!ah>dyBNt42;EC#A*FzaKq&3wJAID*|!8xHx5EEux$ z=U1Y~mZEHcdUio(p!ieJ19lg3GHpz8`R4YB!V|(ra5WwCKvsRzq7iV)S zmKd!_N}>{;^b?bD#*|H?-#rq|UnG`(?{&UXOM7~kphxbN=3+FB@a-zt_UH&h1!a5y z7!8vl7u2~FQ6_-3p=-F7tqkboSYJTs%R4(Zxb^{eI2~D2)O8Bo-ew0_A zIAlA7skhwwsAq8|lb}|p;CBL%DB#Z2uWvixLHg?~EJ9_N%ct+YO$}tb!6h$jf6UXi z2|$zg(lk12o@?;2+wM6}{rQ(|>_sEdHQM7@Cpll&rNHzCBq46Rq|YutdwWVRrBL7Q zy4-dTr6NkthRWk2HL^ilNN=2B#h545m+XB=#--9v^2EF+!wQw~u-&ps0Dhv{TCvZyJ+p%Ev>_7#@AZy5cTcV}7YvN)82`RNS;vVtL zn^}Yv0OKX?l~-GcxP--6P4qFNF$^|a!Is8@IO7nhF*(Co5`lUOehpBFZOux&jOB4Uruq-|HRLv-4k{Uwax7rHks8Sk zk1tv{TANya04%L+qs<9i0Wb)z2D2-hUH82A$0@{RQP{+Y6bC6~Lk*}3Tm@}r4BJ}$ z)Rn|t9JIi>`8F{`(iG+|V!=k!~J>>Gdbz}REk#-F?2fE84_a*6BGMqiY1j~%!V z@D=8pK9J0G`-3smCV~WD{QXj(KLY@<^0V^iiRq?JW}IeN7nz(yNqMwL{fq1LU6R#- zV3lAsx70pY@G=>OL?zNq7BM>;pVs*&s}U_0+Ci1)S-so7(b5_UCsUY{#$`tnjA7FQ zz*tavaa8}Yl)_^(z$`}pugSQ`c-t`EZun-y?G1^BQ2pEWU#q{jK3?ywH|qYf?%tZE zb@S@#YQJCmc{i^EARrgeN zRZ%>t{PW5OE7wFhg<{M@lm_y+|Td*Qn zw)WVEnMU-mp7ZZ>ebD_G_$NB$F9FzKIwQ8UtoAO?#P5xN@|9ibD3j9F58i12BWUk@ zpzX+n^t82GS6v@+PsUxa%(;MGoNvnPIO4xPioormL6FmV@>>elI>@DcHzD{Ozfo$GsCu?_2uH+A2a_otASK^2{(9ixe)Yumw>=IO>o@!hc` z+!pKM;U`@uALGElH^~6|y?ly?u9b^UfA>Y@`5MQm)|tt4;)c$`DVPD`9-@Wdyd?e= z@L&KD3(#5D#UEd8yrt8cv5!RNS(18>ri%g6b;H%)HvbL{D93STf6^-(9oF}#b<2Cq zOLU4}h4&&#Bd4WeuIp33A2M&zsdL&4N;dL|B=@B09l0es5w^~Bw#U}FLdi>lxoG*3 zp%!usR54e5;z#Cby4a^Fgh_?V`1YK#4o9WKqd#PP`CC=qvMV+3O?FG8T-2j-c+!Z- zpz-xt4Z2C#$uc%H42ni_P_O;W72A5i_`UYxMlsb0LXYuwCx-_>1`Z9lzSw`z{Gu+R zAQ!h@%{*`Ek!$v$+fLEVTfM!9*l`%Q=;C^+XLul)$##0x1J~sp?dCu0#^JFb?E*?S zp3%*+R8O*Cs?GyzL+G34FLkqwwm^n)&W#{fk(uKS!GZ zIOW*PTYDEhZ~j83$CpZ@!p4fGDh3PMmN%~C&k3~&(}Kno9o8dPe#!W?_Pb2o2Fec4 zctfXtWT!xr$&e&3#_Kx4Hr_qedR}bhuhb5Y=-`mD&|x1{cw}9-?Neuj%hHZ$^4xz)GMP^0iqU_ zW^%48cm2XNbP{mW-k(T!ijt)=nRF#KTxovEUv`z_#V8rdk)@U%i_6=(^N>w-;&-2b z)dv0<#`U_{DG1HJR)4GCTMYe0?71uUo^8fGHSab~SeWblvSG*dh6|lVm1~$8AkID; z5Kc??qEnacPB-Q% z>4 z`}_rjHpj10G>9lUMPLA7Y}PFqi4Eio4CuoAS=!#wW_{+tUUR-~HY5g#oVn;=HbV(% zLlU2o!liOu`|bCeC+j4q6GVo1H#ggUU}gUBRnxCMDZBvHT~G?B>XG&I$Ns^5i`~Zw zk6>LePe@B(Q)?@!o829M*G*6khm zNHm*`4hz;yJ+R`ZecgCiH<}W7O@gPJtXWYP>B+g)e)U!32ingtK7f^pFf&1>7l%AS z)mry9KVg1Pw_MwlTTgOdhRp{5C4IEab4{!<78vK(QtYFXX<`ZS616o^IT1%`~2#4 zRbQ`st8!&UO?kfTE!S@I&&)>N_NV`sZ_Ou#3$f6-1~(i}umFe?Nn>GQorl8$yR3Ph z`Agd;$vBG$dDL^7Jd2UQmYN)G3<2&JUKez-s(#W^h-Kuat3qjkmM77PvZ%*X{;KQK z5B^+CreNg60BVNueXa_-lBOOqhBhj-YJpl2KHm0180;CiG z)vBOeK*AT_>=7U=3nnZ^`ngf{l*Zm9GiDXkJBrd9(ow$Eq!+cS-Byi*E!CBHfQ{c5`>$soM_ zzJkhvdRtNBp+s&MexF*W86g7bl?utQv?{RXwQJClPfArn&cApx=>T{<5IO*O2~Pz+ z$?pA!_iy(Uzr6=k%Gk}H8GT`=07&kA3i=0VEU5|axPAPw{S*7Pc}I6_8@>IG(({Q! zca7fgIM^*dY12wT)f{>HHUVfozh&&!$Au;Gz~{#w`256^BT_GZZ9mm#-fVwxeCKWO zSw?T!4OxUgDIZbjFDNuNF309*%LljLIJ)C=6VHEk^x#e?EMs?nVdCB$6rJtQ^5-hP zWj%6U7L-Q3H5hM!dxs5CAiIZ-pjNruzztk6lj98KX6lC_RoX=<-cNU|3}3Gy3C#eaaGON zwvNTq?8$TG2VC)aLqLh?A0{Dcwx;NdfOCdm9tdH91|ty{K)^Q?f)lim+wyDaDs0iv zphY~Ta}c!bx-|L(-RT5lY2x!wVE<>2tFdPf6=+1euD2Oc6Z@YzeBdA!K@9(<*pJ%MCS$IJK+*KTCNAA3t|7TboevPKa zE*nc|6O$NIeD>mtJ)J0I_s>Hv2Gy75kguiuGp>$5{|Wxpu*M0+F&|eC&oxjBksxeI ze=L*;#)9ZPKw*k9z}}z#q;&SGox$VcKY{-W3iqN{u7F#)`BNTyx{^J3VlvO;-Qe>H z84_5Us$9$LZ&J-htz;jks>!OQ&3oF z^IyU$q|$2E6T1_kf&-YCdp#Ep+R{T5>}hOG{-t8?Rqky0zgeF+?U|MsPGtd52N(b& zRs+r;AmBJ(2pNR{(8w?(Hqw%WJD<*9fp&rpD%+nMhQ%9Kn1I4#x!Rng4G?2ULjfyX zZs}r6yRzh_CxfLU8tqVNUxDUNp%$Z5<^)keT?dt4u}e`bn8H|FZa3!(pd&l;!u}W* z9H`qVf4gF#b@zR#7UEx|wM7yt$w&g?5!b4qi2)4w5^ykL5d@-I+{_#BJ{k;~^A>0o zR!CCM_Q-~a6o9UKl>!V8$JZ1W=Pf`Rb!hJT|jh+ad)GVgCR016q*QR*o(7G(d6}& zh%*7vP=e8XB-%4f*BUws8`Kz4pM{QDYCFQ&@EH-AIi17Zc>qwxmx+4s(V%O zQPQg6iVg&g>>W^p=`AISnLR$j6`dBMAm{A}zbMvdKjEpY8BkDjLzoKw~&oNK76(G)Z``(3ZQ|gTS(TFbk0z0Ifc}OnbpREm1n>uumvQGmobM2<$(ha< zewu9hrD=AqvdF834qp5?Y2H^EHx7~4L_*8$V@cst#5D0*8gL} z`x+M1XWdoxb#G>hg8>+<{U8W{{WUk$EU7uo{d4!1TnpXX+*i20 z=9j8}T=lE!C#yG9FROg8`aM;TS7oafSG~XT&B`yE_gAi~^i}-0vaI6HimNJ4Eq}BA z@$#>g?<(&pzo`7wvNy}VWKNXbQ`S{>LD_q(Be(%xZ=K=#N7u`^01W;yQKx*75&mP| zUwCiX&kX;Ge~c^kN4%TkYGg-`RcJC^J=^MV><%A=c(2mPqaW2Nxl$uOddx1ntD^iK zjo|*YO7Phl9equM!~C62Y_!YHPvmn`6QNvV3`eY9cJzhB#(Y?#eLwX8Qy#BHvdJvd z=&4V6pI4Gm@*;6}wR6;j@r!6#e!f%H{XZ*o8sF0>r%qx-7P15E%=ERjo7sx}Q*_zp zSXVlYk;xBEf=lW&vZl^igYh>Sh2a^H65|Dpa{4qhiE)!gCe;y0V%(+C)h{7OCNU(- zHTt+tAQ01~k*}VC|5&Thkk>;$%)G|QU=sDw+i0zIx?LnQ4uFqtjjl28J__q$ys7zG zymdOvW1jwv(_tI$URai|aT@f03}VB0OB48x1=cYCPGf&@6i&mur0OqDK;m5!zNXOJ@o0^$54Jly$QWFF^lQRJu4VuZ~1lBNq zue&TWaT?|qH50Z3%$S5|oT8apdUS?yi$+F%Ixxfh=h`0_XB~eT*Im`Am<8hv&Cop- zzQcG%GreZuH7?W`X6T?A<}WmY*~dX?7{AuINF0s2FkaVO;_0nx<5AsxE+Q-@u@+|p zth7_KD>OiyTM1(Xh zMIX0spl5j9N3CI}ka+^Y2;+Lqq|k#RjC(Y9Y&r_n_$S?29Ulr|Zr0pw2mHgb+8=1% z?9dbqc&)hOWi8+s3K$5xt4};kX{JjND{(aL!TejIKz-zR?i!km$Qc-6{7N&PkAZZ! zK$Aqx067?&HL=zK;9$}!8}>Bq#gxpF#Wo-n2BgG->Uzn@s6p%RugHCZrGb| zYHp?u*KPsVSaZLf>vqNubT{v4V1)6oCa-fwU7V~t z4M#MD`8`eApn*1+*Yd5asF#$UTTRNzHEKcai zmZ!!Key;RUbicXi@%}-4SO>kd=_hX4H-7U?rQfewu&k~01muP=3B3a}T!-kh71;5D zAnI2l$^g1;(uN>?KxAz|E>_s{-CjXVp)^W+FH^cD#2}KvEP!V{z() zttcRbV}6u`0<`Rsp(xrCDRj>2@;#MCyN2@IO<}cbJrL<+|7uY=pdAWyaWG3m2UKGg zVyumx5zLd_H=NW4EH+xIer(-$;OQj2=}=Sz>RZBS64F*f#lDqJA>?OhXRV1uL{z5} z?rZa%mBtzk*Nn~{#EGo%F}>Jj^re$+(vax_rlz!)6j0o=V!<+17Df}HGqd1=^1pH2 zwRJH>DhiRIBt5-m;kJe;SjJ7zNXRz+`Ozi(|V`Upx))CXj%YEQ@N@N>w~3S`foU8oXV^jd}{Q z>}{%)KG%~01Di#7pwRE4j^4v+gRps1`5Uh5|KV5g&_!f9+Uk!+6O?cf18)XB13|f! z|A#(LbB?lqi+f~gegm+XEgIO25L&4(C;X9CpBEnqguiXH5`1q?lN$ZR&HF}Q-$F6G z*vcK-dH?uRw=zWpxN-X(M;`bBAd>ODn@6`kL`Xz4bo}|vWA|+zyYH^Cn?@!-7xaJ= zIRd0ay?J8aAr2xSkq4jR@(m8n*^us~xhnDSmIubS?;Cw&3nh8}%Hads$6mTYFeWd* zU_a&fD4+20(fvF4i=$gVJAUwv@dFQzZ+&*+{%7QvJN6+{1bcDx_N^0lJ%kDo0bRsP zpMMx+ihc00yS5!Z_#kgC&sdkAx-$irK0<%9H5Ez)TVd)7=`w)zi$9bSnV^bOx)@@XTZv zaUydWV5=qC+Q(e6eEDUbRkrX*Q~BerYk&HCWOtBcK`WveImlQz7NhY`S2_@)J=q+I zq;OGbP159Z=a=UPq(h{^udK=dejAuib+(Hx5Rfa?;x^h)*IGhaO~4tg6m zCPiUUds5;dHeyd1tat{7`$;B17pZQufLC!Gk>epYl1q1r+JN-Jm|r5IBBI0P7g!gE zo=l*5nF^te*c?P!hu$yX3W()W*flhi)CW@M4u^TC$kpHO_LLte%kJ`7CX0jewBz_N(mIf=n0qO(2CX2we1}XzfLsQ!FAe)aX&d@HeMeuYw^#gM2c- zUOKubInS+`-f$NR=UfGA@F!8B)_B@i;?n?J#}=?wRx(Yt?~FZ@ z5)UIBMhB5jEPQV0#K@vVTEVS-ET2Iez9xUF^Ev!6mEvh;AGyACe?LVNdu-aW@00pT zLZwr)YITt*=qX6Umw!|!f(Zn>z}tz~C*o%^&Crt~pvMzf6@>viB*`~``??47ePlHn zXO)>n_O_DQPGO33u))e``JT_umLGYr}xJ@Qfk?;&erj6WB|%IfkzWkY-Rv zfB|Ce{6Ib}(^sRl)tm0wfFu$^4Q!kS;uys&KzczYlZ_|?Uoj}_4+sV1Vr>0}$<+@l z0H!xEAdzU{vI_Nz#Yg#$6rc5G0JSNBpyDesjX^z^;2H(LZ*b0n&Fjk{kXsP3W}#ia z6x?ERAl_7dpX<_|uOsM?WFE&5^8rJMiHk^ewYK8@1+)#RGt^v=pH2GR{rN63|Ao%? zgD=R~7d}RAse0%Ejmbiz&Y+mL5l1d@#qNEenMBb~Bt(7}QK}YvZX$8PYk>wpnk0|{ z2|$<$gy{dDWL#vP|=_516uuU~~9;G1<{uDhe|6Lp^2H){{p z-dX#}^7h)dmTGs;;iOxazFR zw=4gma&P5e<;Upzf4gFDMXq8&MOpdZls{RXwT8;yUH0R$7t6MmtthLozGv+lxQ3*9zAM%~9u!>yPWbbBsUk1F7=-d`I%we^$R&P%p;!K3bM>{wq^j;4{0? z5}}P>SXmuwX9h-Bu&c(8bu6u379KJ&NcKJHVK7wK|0M-TkCKA5a{G@WI(A^MOgAyr zP)tI0UGmhmZE^qlbGVyMrCl)T>*0k9w1@}R^=p4Otm97!d_B`ha+!?vcym26#9fyh zT5KL^F6(rp%#m%v$KJ@H)z3z|?k4Ui?|h_tk&Z~oZjiK^2^GUws!=L1uJvm#F|Vun zOQHS+;nFyLkDkHqsK61(s-Yl>iqmC{=w-X^`p%C(Ik&7s^O?lPbf*fXgYw9At|!tw ztE}De{!f|ZGLMZ39eYY{bpR!*=i*nt#ygUVz{PnHPne4;{St#EQMA&v;-~*%HUQ zUtC7zr>pPQAG}vb)52;n(>YYSoyCamy6xi6ngQKp>4EZsb7PUQ&=l|Qw;n$&V17`0 zk&^wgC<@XAIgXg?L+7}<&MVvKeDi7a3__ReE1eYgoLQV*-&pYCbX|PgF7wAtWosPC zoIOIcWI*S zmAo*D;tG|SY_qpT$AO$oW2WXb)-B^#mFvRew2zSQ44~##$c3!Cx7~lWcCZ)UCG$+} z9t+~VnXI+<+HaX7+M5%Ni5{OC!a^$EHU83&c4COosQN1W6j@N?Te=I|J-87y2FaJ~ zN3MHrKGQs3$4czxKFO{g9h(G0cKh#tZSK>Z#57+jv6eC(naw`S6Q(C_;2Yn_R29e`#K$9T-6IF_B@J zrNRTe)QbOu+dQZ}JO$=vf25gUL$L>y&}iD))fhBew4(#j!k$5IxBB5)?OtPkN=I+) zhMW=a8tjTrt`H&s5>RQk^-%kbX00ygnIZEm8qUVobzJUsLw!A7Ri0vdz=VAKCx0;K zX^)Nf9D_-s{W|r~^{Ic{U{?9cu5!#o)(uidO=e}Gn|x>->YlGlLe@d}V;%3!WEitb zui1Lwp&uIe>6Wc^xGD5?hP)Io2ALDor6eqM_76aU`&aW_B)hYnljfsd)va%ibTc85 z89&i2TgCOQ6dLVqqU`sKpXt)5;)mEv_cxMI$iTpdC9X9pQPjqgp{=!U)3CWURF*8OE{fFKkh3PZ_uh5D{8QOM+DUc= zp%EGHMsWgh%`S`Ta<_HSXm>ZlgbV;8oRn`Cu6H%Qc-ku&IL=W z@4CeNy)Krgk^b5cWs>3o=*6jxu1mIw1;Kh|`DXK9baOThGbG-nG^p%{*1AuOns4hu zKl=+x-9r$AitEkVg6xv(($$xkSL^;v7scOfVu(ex@W^_uX2A7M-AwPI`kU_ClOD-I2O0Yky#l)=bo-*xQGyZ$KN~Wu95N#g(nN+gMrF?fRYTTJy_% zNb_I*;t|Z0*XA{LpU%6M(n2p=7~38}m8vP4s$Go|xaP*gFUj>of-IaX zBXi-bh!gYtCcw@7uWA_<;k>TroBD2ley;N6f-+NU|SMO!M*d&tNTp|Pt+w(B})tW40F zFdkx`1Ha#&Kn&aO_ff|5g`mUGoDH=?;*E&{Ww<2*h1b{YE>9RA*4&KZ%lYb&Gq7OQ z)Ep6hLEHq<-dLumC>?_lSy3ZdO4o`O?dgy=+9f~06qMWS@MUduefoW~p+VxaMq#Tt z7=a@bfRY{IjHzAIQ;Slqr-DqKi~e@)$Xp1|Y3C}Jx?2Qc?pY&{f7Vlk##Y1x!AD!E zzn?#AcZ#HI!BwWevZ{203+J=iy6VOI@O=%&qg2tw;ymRKQfh1tU~z^!4?3zSKI1eN zfdS^uUpj(qa<@)9p+Aj89cg^J5sh)%19G@gU5{ke<`ESL@cVBRg-+Y-kp79VMYkNJ zxe0w9Kci9$1-aCTn?G0NzVEUT6k{&~^4Md)S=dPX4vg)*;qd-jM{oIzaNoD>x#SD!<9k-(W-k42*1%$I-BaXpA@?vTds~*XGN%tABT7{nk8LDT#Z?8( z*HE|xBVHK0csRD;aZ8uq2P0~5#4A)$T~$}KyV+sIa^CfLZemQ(*XEJ*Mn)V;!8}lL zFplc3R6SL}mMVNnc9#;b>N)1ncaU*987&n5I9lra+bltQ7||eO1DT^*1nXL~A|^vj z&eJEZg`5-si$3KF$qGc}r^#x!_I%+6G}&R$gHnJGPW?8F=zo$n9yV}v_JDQZ@hHaK z5qH%pV`p(H{+IcgKXv4TVtTG2V>%QT=FgcUJuH$5R?I@LH|3F1%VHccTP~p7Uw9I* zpUD(egx<2dr6_?RV<_I-idrt%4w#uZ#bIq8OVYT*0W<(-y#=^QoPp9kg6)0B2(H6U z25f_UurXCX&O0dRh*im6@e!so9#1AHAz%X519Ohy-0T~YW;dmI(YES~+f4c}uL_fd zmt$1#H>MLXi5Xvg#cl=uiN&ueQEt`3j@5j(i#k>;Z(Ox2UEU=lb7XZH zbpE=Cd&E^EX5po6ORtd3Rb9Kp^b(j*Z@%pzlaSEK7hEPaV4Z+QLxoL-CATlbmz6$d&8wgWxJ(0BBCw0 z5@1Xh@nad?OsuC%i6R1D$z8j_c;UayC_j-Cxo%`urE#&wB<13^%NpAnX*TwHmkzEO z9N+)Qk^6QR&@9g%8oTFU2?A#$&g?jEwYkoJ{E>JB#U2nj4DJ-Yejfr1s0p>iQsflD zL>SMLX6XzPsOOB}BY$z;?>qufX~Q7Xn@JE7Nu4{Sr!Q?Mg|t%Gs#%2tg|Q#b7Tu%-f5qf-f);(8jV>y0(0KZWzN7!gvr+P%F$O!*FsCZ*lJe;&N{rX5R=lQpTZV-dK`=v!4SSDVl22a~Mq9 zBUUBf6n>`2>ev=o*5%gC`E_WfgrIKI^7ldSj)YJyi3aGWiA`uk=36u%SO9Xi>X9?` zIS+XzKJJ)pAp{x}3!_iE}s>jZ{F7aLqsh;44X3k88>Pg2wb#A`=h znOusL_SB?iN6vc0>N~H(=fg8MiW`W?yQ5&?qmhn|8PfC^L*ZzOCJ7KDOo#F-NARHk zbY3$87Aq-cC5uv&Kk?EhrwGUN0OTYCFV~@dfG-1sApxj}UA7TuEI_=SBzP{XDVBGA z2`NzVgT$SggYrgEV_;J91F)F=mqA`-1{2o*u#DNrr!+^SDZ11M)~5vhg0qrXS^*;h z>c}@n(J30iyl&*Yk<)O6+S2TNmyb)zTa4&(2l*t@U2CK~fz<~I%@on)!d|qCy&T>$ zWQvWlfmI?zjdlY`(hkrfy(qlVDU+t7CpP?x-B0eFa_mKu`V_LG6}fBVSGYt7`1B;O zSi*@&6d!CuAQ~pv2#Qk^XT(65f*w^#uv*7~u17b}?^Lmgg9@f$m?KX&4o1|a{qJn4)=d^ z54hXh@2LKp>KDxmt5ek}1O~s#A+*h%_ zVhI`m-vtLSRKC3Ytg>I1{YBZXvc9ql%ieEISg%<(kwKm5dfWA9uKUa{yUusL*F0i2 zn1{^!&Gly6pAZv{`O${&8y_>c8vhXif$D7ovF2Xz89$1Gvhkz^Cu^V?)sR7ZrN$G>WGDNhD8ol>TOIQb z4cC^1HrfMHK1*AR%T3!Qn=tOs{RQ5f8fO0~x+$~>q!`i&LXn7-Gry^!Ysp`bEo+Z= z8IL+pdQ6%b4SVev2#|<|{OAb&SbwIq!fCWl$9)Xz&Uhx|!#v`*I-QTGLwhXJ+|ijx z5A(VvE9!J`4ZP!%8ZnL@h3Am`(SFpd;f&3IuCrjg$Nq`oseR{keHw@08Yw7Pn#kK@%~G zC=J!bD?TwE_^{RPc>GC_oiU*anHr#m8PJSwhf<39LEUAT4$tVCM{(8ZG8`9~Vg6V* z8)kws&ed=?j|OCzx{yHrG82o@qM=1jHVS3l6zdb^ngCULgW9DLlqWG5SL+68@tE?F z>F^74M0ee%BQJ*B&zy*qfaba#jkhq**R0Xgp%&&o_kYt2%P9~5%@sVR@aQsq}G)=`?T%(z$ z4(JK<8r>Z}3OHdN)E#stX2NXI1WFqxQGiRBpVBBc9TO>G)@oLu86XMc>l#w{QTPaR zp6-Z8LnF*8O~Nn)(1Ib%cah5xz%eW|0sNe zCW~=`Hq6n4%;~5GbHQwDjZ-X{321nq<_>DG495S|j1NZ`gZX<++|)rB%zx1g{~53X z*E=;4Ru5b-uO2P*&u#vt zAs6BQi~oj3=Fv{jFmI2Fu7VASrb|lgpdF-hC6}RVkYazX>`B3=0lK5c8%)6=p?U)! zi>5DxRWwaw@sQ99?OkxJ) zD@gg0&40n1L6nI_uv&xq2rutQfh7Wr8Z( z+2Z;9$tkKBsz7NgC@U^JmAwLoQ#uP2vu&x^CMzsbhVDwHvoc#z9ak>4s-BBV zU8YYiW|LLzx*?x{S(Fm(Q=gxXW-=iFi(m}xYh(mk!?55|0h<4?S>5^8k!FEdX!={r zI@@HZWWB3_e6Gz=0gn%?jYs=2XpO?&9^d|1^jJrqyBC|;Bb!COoqu_1KN!39Gd$o| z6Hh(?&l{=v@jU=2ZXDhE41`tN>7Y114r=}^_^oB*%6W+WuB4qb64!|N4&N$RyWKX4cH zeq{`Qc>iOE_ut9L7~A{kk%5(7kfpgRi3`0(fTP$s3P6 za)+(oGWy_WM<3e!)@!@0u<$FO9YV0Bf$e8iLGC+^OO>jR4pq)Wdg*ohQI~_BnPw(fV%pWFe*R>(Q^??O-=>^ z3k-cZk>cNycL?Cnc8C`k@FZQdEuD=4>c;Rp2E>pPUM&3^&q6$5;x-CK0w*etf+s21 z=&&di>|Q39CxMI&*e&i=P?ra=rq66-je|j&NQmorAIVU0_2ZhQvpC*zro;BBa-d8> z)IM%o(b(&kisP)3BF9~bEtru215i#8og&pne4(8rUl=18d>e#h(}S3U+?N#mtqg{v zo%XTmIrZ_iGSJ`UGETObRHq80OmdzlI$OcS#CEOd7L)*iqbSqhdhG+nW@CBIIZOO& zm(H4COvv=`fskIZrvs!G_XwDRCqBE_0$iEtSDf3`c=6<1KM|TrD3rjGiS{2zOne{W zafJF2<%nRclERz={y!?psSxeWca7k=y&_-k9DSne`V!q)DK}AS9xg7&llcl4*Ty&& zE+x04;HrQjfrLmj&Q+YwS@Wzt56p=s{ml?~qwsj6FubEQfB_*Ol^>$z9!ZFCRJ<7& zfcuJ(bD^2nIlF<(BuKfw4@HXhIc_cCV9<|eM=%f#hHxGC2QeUtwFIJ}IE?ZDqVKKl zx}~Pl`ue{hy8KCBA#aU*w9@E^I^X-{>14M}ki!{@4Tl1$tz5149+UIaMzqSDkO4}5 zD5!>yTf2TaH=IC|ga4z~-^+F1_qF{0|Iv5+ z&tKds+KN$AI&4En8+=PVMDl{5uzK2d^S-14*^dZZ&MqLc14%iJa`lS6YAg_;II%(% zF$iI>sl|XH;f*2_9dj#U-U@;51VE`)OIs0QGjvFpu87QR8P`SWSP!!M+6YivG>T|# zxex70YxrqE&F2MHq(M`X(E9Ly8{|*!TZ+((Fnrwrmr4L1BwXahs0-3QK#FAlvB2OK|K@?H=HU@!yI1QER8?+NmH3tOF4Ib9AKPB%PaILl(~iXspZ#n5 z&+SX?6YYa+U$}3zt*|A;SexJa59_b3>#R-I5!O>IpIUxlnQOsD#r%SKrRzI$oq4e7 zYtyp^w<%%rBLAOo|C7cd!}sv|-(jdVTp~-#d&;A79`gVD%OA@Td71Mi@ws^RM-B)7 zk36sEw4xsI$4id)q#tvg9-lpMB;9EfHkJ6m$v4y}G?gkF*w(CSI}z zR5!>>BLJi-?NQ>Awnn}DnZ_2)j}5Q3CMfB>!{pdkUyL3C6 zL@$-LCs2Un6y%93XARIhx3LBLWx)Jp|H=tT{i$AtTyH|7bflU>8)LP~rs#apUoRW2 z_a#}GScjzF8FbmxsmYHH5>VI^NEO(|LN zp?tF5ko%#e4@$uhgLE4^iEN%a%EGNLXw+o6d3GOR*1ez_@fopNkPB(i9WeLEV_)qn zVtQG%h+M>Uj88!_V4b}34ITmGe)&u5;=hus*Hitl$P(WGfPkDCBBj63RFd1#83tNTYD|(@c|BTr``b1 zi6%+li&Cc^P6GCe{~I_(0vnXR()%jVzSn@jHdcTXSY>X-m*Q!?flKxo!~-IIkjbSr zQU3i)7hI;7-bhyfx-wapYJzc;ugd;ZHveO)?9|I_r|T##8Xk9yFKqUJ|3OIsc^IV7 zzslP6*YzK1Y_;a>cXV+c;0uu{(geC$`q}-f3u%(V8d^aQV2E}&iTqT&rGUQ<%VCrD@N;m zcK!5vU;^>KO60bmi;;Q>%Jp>!JtpW8L^LA&4{is%4f4y!Jbaearl-Q{@h)lucx#$w z^2g^j0Zt729_8*aZ;H3{Fcj)DDK(y&rbV(K7ErnSr{9Yidc(0k-4clwz+{mmD^62h z9LZ&z^_fxPmu?Zi)EoHqm`zn0z*hjWCY4vtbA@u#izl9;mvCI4%0!Ye!gk=KI8=o) zf5cL;#L=PQgX_K_@L+4FM~>Jr=VfZJKvLHHG9lfk*VAB*Iy!xilH^2zUOqp(6*MsD z50d?qd&;gIG{{hvGd;b&j?8;FmHxjV;(i1GVIC5j4PsARGT z_QVCta~~NlZPJ^Qd#Z;PGO!v0UnL{YxjiO^>&^eTL@)GL*_6Si)mkxYcG~AssfHdxmAR^(U5ZZIu?qQeipE{ug_P`F!hF)?e9F)7gds z+j7Sc^Xt}|?JwKkuq?G+Z+XmqmH98$&8AWI_iRtuUboeo>n$5>=NT8-rrAT*x6G5Q zA2`O_uCYC0ooIELifr$~CXlj@ww{DMft&1)*iW%OZuyDzXU4lN3G4Tk3(PAlCpd%F z-PW|xW=-0z1mnQPwy#Vz)(h;@Z3pc4nwD9182#p9=I5OW=ZWS6#<(S5{LJcc%I4X& ze_4&DxlV`SIcvb!X?)Utw!PK4#P*4Kn*C|hUB;`7dkv484AxbSq+z+?ZNpc#ezsE$ zrH)ai56u0nhn-j0o-tlx9&OrUUSPk%SZ?ZX{+(&CWtFkP(qj6^bc6E_(?;7}h9=W? z({-l5S*~ziW3d|tSl+N)ZQE!*%|6!jz2RquDb~A`??ROeqFh6eg8jp9*bUtieXO0<$*j{vwv(2-aO)kSud!D_oqso*v+;5m* z`i0$Mdd2Y%>u;PJj4O?sE$>;ESlZDhx7!X_oyIo9sm6ceNgGWD+fBx}t=M{(wZu5U zT4j3Em303v(+3vS8g^7!wpr&|zHvY9>}NjD`Fs1bmJ>|ZIme)$U$A~5|JLxfYlr=S zIg0O^W!i3k*HCJdY!4XBmV0c??z>%!%=>KTn$B|n(pc{Ji{WE;zV&^j!g-E)nlat>)(ciEj?lI^B0$v&w|a-7;F*(Xa@?GgX%DzeVW7TI6! zDze|zCE5PfCE0K2l6uN|Ne8-*)*ma`y5}a4=8*Pum-R?1y32A% zRv1+^bVLimfe?rr7xA>f5>K-%MP6Pg=CHI#eMq#j#6WJEM5}$4c#X}{thaUx;EdoA z@XL!rmVWmA46%SEM*Cukf$&(WGTbK?vV`af;bm!3>y2U&OALX?5^Fe?nl9Zema)|M z-E6T`J4#@JEY%HuPb_B%S-WB&OGthLBQ~&f(+PhS>shKj@e(nPByDrbWlO%>Do$Z3 z{I?o$vQ|cDY%EQBc&<2!rE9NTBTi(AF^*W8dE)``C`+^UpDK=HY0|@^ML(7%NY9HW zS(;ILrI^4Hc&Md!SepCjRl>zm^tC&M)5L9FHCSxtve<+{!fvvd6@!)Fin#2Ce)Y23 zM&}*(>^9lNWo-0dNu4@J>|km5l2?S0CB~j%DgM)yVkb)zSKlvWmd0#Pi`^_;eb;9~ z($1T9H5g{8mqh37lD^lu-Md%(o+VztvBZ#{+MSEvja9Ry*g}?gn`pU*t~K@fxDS`bw%sSaYNev%x4Xk8 zXdd7@(of6Ack=j_<(Hp%A`64|E;@mQp`#BT&qB=~{-kyLr6*KM&uec$@SA++^k4Q# z&+(lJoz2P@kcF6qfeY50$^vaP`1A>RUg=pby8NvBJX|zs-9^$~{?d($hV!8rQzKsO zGJtZiFfcRkd=?1SjD;c7m2+6QZ0#dwQ)8H?4VRv_lcX%@4^B(!QcK@823Yvn=6XLr zY|4Sr(v$Qs0<`54-hS{&1SU(@i;J(59_5n7d$wJ~g6GDK7i+@TsUp5C+PAOtkgYGb zsR-Ux&PR)fo_z@)3W$z~mK6KW&&MT;Zd;#>H$8Ua6Oyna27KE;3A-_*%l=cD-n4~p)@}9e< zaY_7!1JYf5QgZ$KSe&AI&i?HkWBEpwkhF?ViuPYDt>j~5is57A9pI8d{elq|2rrI> ztIFDEu`tZ{dWMAw>tf9;5P~ra3*LUdo`r&Mme=t!CRdCUUuehbe=~&zf=*?Dc2q1x z*ZSiuBzOB_^d1av#@DkMlqI&;ury|nSu|*OZ~mvqXy=7L5l!~LOWG)#{q0_9u68b2 zE?6pf;cV#^macm4*U}P}X1;!z)J_jnzB*N!LxN$?Mrk%xCHZZrfW18|^l6mOaAc%W zyngx5|Dk)b|BBxv@|Sakru@!4CoO4H_`-GjrFndm(G#67NjLxJkNpqtz^}twI+hsf zjipJ6e~BAeV(3hk8t1BF7E7}{%SD2vOEMn{O+PoEw^m%kWzplDLYocdu2RHRT$V6@ zF3MSAt3FFj=@&(mr8(z(A+BVJ4PPu>6)qK}EX4`4lqI&=vBbMxmNM5$qKu`wwNHu5 zB}oqbhn4bwFaJNT2CzR87b*Xc4C4$-;EjLS@QmR_!|R4l!)Jzn8V$x}#$Om;F@9jO znEIJ6GEFi?Ob?hIGY@iq<^I_Hq5B=frS8`dHL%y{oO9N(X`9;jq7vQLDze(H_Z2#-Z8gW&v(6KsWQH4 zS#7l<2H`2!!>$dkJFH_|OAL+RBA97C&eiBjxUR9>>Z&k5%vIzr!2(OGT$$a$@^!a367cK*~EHvQe1=RDhavbo(@>Fnb)IlguL)p6MI zf#XfbtLFEtlO4}Fb~+xlob7nPvDWmO<2LgNj``Np9XFYuaWp&XtUgD~G1)Q3G2D2a z<6?*3G0-uG zZU4*misdb{-S!LfZ!IU=cG$LBZn52GTW$V{sn)jKHqWxd@}=!2TeBf(tF=Y210N06 zhKp=I%YC-$8?inn{}W041;Wa9`>0h z%-k88_>q5g7)>iW>gTp++aDg#ooo=mH{$Xl14mO=c2KKkG(W8_m=+Hn4tGVe|`Pr7#Pn|PHbJ6{M zFOmC_L|lT>LG2)D7`TYt;(QuM254my&Jn9MiSW-^TK7z=u(GuN!YSfSl9Ww(N!i5` zdq`P&_?*)RP8R| z1v2l;l!r<$k$JDH+4}kDn0Ldnw%27}f%Y_FBVg&FJwF%UvBbE7P{j&-2cRugg#y#R$mVRY!6x;Z` z&0mfdUun`+zZ74x#Q3|~dBkPHWt&=V6n|xDTJUA@IX4G6ruj5PrWefk{6z{M!wtSm-nLwh#L~LL@#5Dk zt)ID5JkJvQ{8(D@*!AKUEVa$^h-X;Z^x1N;mnFt!XNkSoEODR!OLz41i>Fv>HZ+MR zSi1ZAKa0m$x^3GPVhc;@_iM$&EUkUF%dyiN!2U^;yJxmKaEzC5|Ct>FQ@66zwcAn*vKSZn;Iw){d6lFIre)Pb^E* z23;YhvvlucRxypGdtMTvnWg3(MIz18lwWTVjVz_UzEY%ETD5hAsAnl&a=oZy>5d!v ziCUI8&WfcqKV2=7EH%t|QPi+>+aEp<)hyi{+a}^HJ-G87>1It@Q!j?HwCSTslGa9> z?mbu1`Wkzww4>?$(pF8PI5Qer%BKEnujQf#UM`XrY0~wxr8oKD{Wrc*z(ovhuSrA- z!V;t7Ytr2-rI$5n@tA8zDh8~zfM7HdUYX56F|J=`p5 z-E70ECDO07gE#*}Q}`RM{<*}8MMJ08F1Rc${fVV}z8xSc_=0<0TFd(w<(`@y(gRu% zyup0d-T!z@+Nnw8OxC2;7mCaHw7YNqZlG2)_Fie1RusOdN-N5XOW84f`dvbsw3v5- zkFMYUTS?Oq>*wy0w4S(r&RLSypV$BF3{k?jTYt^_{rCc=x6z~rPm+Gl2iGlFFhLVQ zHKQH7Op#i(A_RJ9!U_G)_5qIG(fnw_#{G8f*xWox8>(w= zvPqiaT757khVW75AcVh{`@PaK$%uJ#c5qXa$<$(%7SZ(`%GzvCbdox=V?;uTheZp=DjdU z()9E#&ux?Lp%>t;6^UM3}`w`|j&b(}a`W3bN4l&LLS7-uius zCal^rL=%AF&qC`byMM+4MT}^|;-8(x!mM*HjPg@&{P+YhNt0fARcPJ0#q+83AfMKJ z)A4B*G9O%`X|zmXjr40iKjXVZC@e9_0G~#|q+HbauTtqZniP3J`hq1S+zOv2QIwM= zo$v>tt)?1wpCtXB%YbhvJS^2Oeo@jU#d;u_FXu9jhh?cYxm?nwr1+Qnr1|^;#Hhjt zV*_50*0B^_v0D0n=C!T z=U;s_T$;3AyefLVxQ-=`T-79s_hSjv-_oD?f{E|HevMXS-7GX61*ASPfXhG&EB#HA zEH6rTYLfAB5#~$F|61VF1hBHPFlOy?7oRlxZySW0i>}z_yo!sMvWBG+@v*d?4|>1p zqfJ;K8I?ZggUBuwL8m+j`2WKt(**ev*RRD!_Y~zx=g%F#vd=S)wM~`2kq=n+NW+aC zmX8e!%^#R6RUqhY4dhOuh#@Z;tQtf#*CQekEnBF8EFw%hkyPVI zu|u?A7Yr*R9XZ^C^5O`2l@isoRB_6hMGi>s%&dI*ZW(qrV!RB+LJ=fRgRBPNwLx&k zhQM%+>@09&6I4Jn5)L9^_1w0JNc~Wnb0=rT@WRA0$xM>nkk?uSrFKXQCoSRR!VJ=U zyQt8#)blQ&bRa?^2R=rx-konIuYegm67fZYs#;hCxZ0w^Vt=t;4JN!GWePbFLh@Dc}zYZ>_R;ZWFyMnCT8WpMgLE$$?S4q^}qN2yx`Q0E8DPtY9K20(NoSi=ucWNI5=}0Kcn)uT8MX2=U<{ zL~w>?GL+1d;a3DCClcc+i82}41z&1g690FJ} z7^?yO91I|d+UE@+nGxu)VW4gr-;*vqsxtqLpRE;bV=Yp$Ri{JzKrZ#jmtUe#s{oC{jo{iT89bpnV zAfC$+yxWkWyxK}iP?qn7pAaC=-Y7s%B0hjC#6eU7T4+#22ZJihmLEKBkgpEdn%vH-?euiv#+&rL7bbLR(4hM_P}fq*QL86$1mmE(uz9Ft;Z`IV3+O z!zbepBw~q}zc}CxMPpF_vc!D;xEJ95m{W>@@{gGXJHB_Vc7G{u`g(>TR1$creAezo=v; zmIJ_pX{H4H1k{OVXej{BkLTQqWYc{k;9LWG40IA@M)NWQ zB&jqCyC*{MHN(DGjQnVy3T&prqJ$bm*NcK`x;O&H`XZp|6np&L zqN9z>54 z#}N$%#*7wN-$Q%Q`_}Sm8KF-qlInrQfYl%p`NL=>K-2>)-{%9u6j&}mO@eV0j}_Wn zyQQA^!v99g9dnPi;zt3+NF(mqA2NQ|NwO*a@0 zj2=PbL}QK6pxgmdh3O1c*^Qi}t;dlPiC){a!suF14g}OhW>CIupaRoaC|Dc_c!NHF zw6F*u14!RyMT@0)A|AnVqc{lScr2T2t<&4a0U)StQ0{N91pEoWJN>vKjAci1Mzflq zY9O4UJS?#zUD&cm94Vk91)dTQfJ%_bfP_+_eWI*0`qJ_F75SbCIKxu{f;9jrFuWFU z0h)k0f=N6BtN_p94Ra3ey#L_dB^}$>9(-gkP?hJDR^B*=)|RUt>|FKK;Z;v! zNqKPI!-wvC2oo&=Ap<_FF^URf;5zdMV(}o+SYT~~9C_e1fd&A`^>HjViYc_$o*hVl zq#JFK#uH3aF3O-|@{Go_PD3%bZHlQZB2myWK)GQoU=Pa32U-WtfEt?iQ*}UPfnLmB zm65l|2-*N71V}A{ScL&Mst|xz3Ggj|{md7~`WD&*sw7ef{0>`dzqWF-RIft^F)o>E z8iBr+LGIKvwT@l@Nq5*5L6c?ZpofooFkZEzp5d`nR>KWx21yZC_8?nnsFv@M5pv@9 zCjfikjiH~YU;{x{!YUD{O~pVm0)Yyq?4rVOBowqcMN&Fhx>9l{Tz__5CwGd)&X=Vt zor4@r_Jj6uwly|`b*l9=%OmFf<|)!HWr^v2(oBQ!^S}Ef_UK*#$Z0I z@nbRAfI-Y%oZj_vs$~7sJfw!?FlOCy8*p zxDWs#k)n9W<~a1fha_$7)7A`hIh}pojOffv6S1BZ5I_#CbMq=%kc-sPaUXc*HenQv zR;PQ0kP^ZYvSZ7J&UsHCd}u2{X)Ra}F1iD|S9NT>YnHrJf$IaXXT@G`u|Ec$kWew% z8zM2iYLMNCjOPZ8JvAB0+8i## znm$XY3PP?jw0Rx+FzxfXPQibYj$pZu86d0rv(^D(!{C#MrLk$tmuJf@;ZKN_CkAdFUr`JoK_G=o z#EYTGpe#TJrh>f1=Lhtl4}>O4yTKx5+Ah<1&m=ab$SyC)(y!-L!)gZVqK3RUWp$@P z|Ac>m+lMZzK~0SZtuBsdyD@Q-ct&Ke;ju?NXnD{zylf!CzhgEZ-7TZtu=lx)t*wzW zL<0|d-T5ttdl76!b|gx?OMLRtE zp4hi{->!XoQLuO4?e+3Z=eV}_(BkZ`C~;uw2A|14)BQ~FIXJIL4bS$S_;T>V6*bHn`wSKDR+%9 z%0h3%g>r&j(AI|CHdNAIy^X81hz5r@&#qv~K`L@;f67f|963Dy$WDXFs)r?nvF#$*Gf#PYbJ zWcy~$98D;2b2GUl`1gQK3bQblbI}C$Sl&b^0{k&>w1s?FBY8tu4^Ch*r!_J4umm7a z8;Gt%Tk=Dr(l%PVfIf`ylh`88J?s)0Swcmyr-h;sU?4^PDrO`vfQv%mFqZmQ{>8|u zyF(w#DpCdmBE}LaK~HT%D!VrY zMneiqV%W6gD=CMn)!jDBEJbvT5ZT2a&5aoqtk+FI`oNnH0eE0sn{iUp8$9E%3c)aq zw=_gx?1gd%KPnMFQZoTVA|sc{2wBFy8@zoX;M)3vDh%Xd>>R+)3Y#ldCP8${Fi=}n zT1Xw=b|Z+&T5{`_p{Pc@j#^TX0QO2PCWz|hBm;7(*xY4mfsS>gxr*n)%jw*LVNli8 zsV)GAGv!NVgjf4itc$RggVoH7W&nn4F_w1GFl~2&UKMnz=*ZwAw85=(1DOiKxnC>? zU_Z7cpw3ESjmNX|C^eqWq9#&*&C-zN5%wx@4yrwkpn;>Ukk&gf5Ms63g#cznci~pZ z_sAnpOPWDxcrbot!qbdaMF+t9klYxuKo6JziY;uCGtE*=2lq`6yrqH+rI-wOv_lCdn(MmkVp*(7O$Er~3Ff63 z@Wq9pc%&Fp8rZZksG+VRJ^&|!{23s5e()p$1TJoy+SY=1$;;iUktj^DHEL~b8d|!x zInCN|Ms;-3h#@J!7I`kDl}2+zM7~nFy6pZy0047AALdIe_@D)g;@(6!777C?(jSXr z+5&Df)`KzHEBVfAnTT$ASoODJ3I&+Z~VE zi{#7o3ZljeLs2k%2Cx87v3>ISqQ0oAf`}WQ5lmNws2Tv(lUcm=#I~sxX=JNAcSZDq za~Z7?23D7iA&;Ds_-3>THOsUVv^y$AqpSvRV0QOJ^KKU;fE*=67#QaZ;T8=Rg@E;k zmcg1WT$u1jir^;=!B&eN+2Aa4S{-jVHaX@vsvKd5+kO~WfD7!y?JnE9wk_bhyvBB>^$Y7W)|J)< z>rbpFT7GYN%Cf+6on?^uTl1^t`^?vy$C=MHeP?>rbdM=xDm9&D{Mz`saV^jQgGQ&} zkA}w$a}ARW7aA1hcgo|+&0qn{M{?0y@+SFud6ay*_>0&jmWpddVb=DbLveI0LWXo$ zhcu@*pp^8K4kgM_*dNm4I&@%|eqpG_GOh^@d5DvBh)Xg6JI6AJXvZ@Jy?;p0>M(q; z@jKE8z9azhXeL*&LWdUu)^9kqs4sV|)(WUop+NjyhjlCynKC63hoh_@)|3D|GT1t& zsTrY1!k39en@LG`ue7m~s1wU|2sSc-bP~XT*?9}FP@1=2xO5mwGT!=lU|K;YPJXfG zWL`RzY80R7yg97QK#z&k!z`}GC{}}(<{4ShsmGqv`J%j<=BTt;rx#%}4_j55ZU}}} zaC@rKLA~3i>cJBbEJ)T@W2M?e0R_^Xy0?v{7|o{JupytMQxkxi0cv(Vkfwll0(W*E zERW(joz9nLGj&`ua>Jz7Z=fogI85TBsPdo#^8(T)| zHCd!3FS|D>NJGZJl26ki2czS?&h4W^*4XPSFLv0sPuNpCwPX6iL0LN9v3V2aIpgYzg9R%xk@R`~(+ zOL3>p_{#}=DRt^FQ2y^RFQu<^)?B^eF2&P2osg_g8t_&x2(AG-1CdVFurN71Qxh-K zSs&5Kxe+mCrw%hAUGf89nEi(tz=hT2O6|o~O4t2J987V)4hP#0Ltu&*b-L71=$B%b z&X766E-U8htObt7yqu_e9_&$M!py>5nsmBAZ=_3cnhxn@uU(Ots-qop;9H7OI;!f2 zpe@CHI=VAAs-^Ur4m%@OXg`4ReU6UG$5mL=_kzI`qjl<}7XqdjsWaWx>mbEV*HKq` zxR>HB9W`{ctwYSv8EX1ym*ST?LpdkV0>c2#S*<&(S@~??$ha8IS?&H!8uA< zt|i712$iSn)!R|vl;RQ{+Q%cIG4*EAULdDkD3j7colRJ;b9)1#N^MSTrH>b_5_0$5 zF4ei;8E|ZnpLX=IUt?Qk{m>e<{MmAnSv3WX*D6(_)o@vM=ly^G{I_bL&EI|+g1Pmm z_h!KCO5r*)0mBW#30Qgk9P;EKtC(6xF&*i_9{R&K@u*F)d`~tqeB%Q|%C&AGh5PIRvDfU5WlIpB(7EKk zj-~f1YZN4mA`1flAp;@c3nR7|{2f8W92fc!Uqg|maEu0GQG~w2q2Jzz80DbK}2>Kfd|*LpK6gt zwdtftOoy?rVMa6JCYoA4TfbyJDg{AOor_uz?t0|VGmjkDbuTJQt3IuoI=3x6v~@+t zjwd>nK8nDO&WAS~dS*$-#s@mKJcZbf&ZW!1_1COIJhlnla zP#_KUHyFURUa2CA0%qRwbaEQD`y3C*p+cU4B`|rW0b?FRwB8NM6|d$`flrU@+gv#?S+TF`Xy;V{g>I0; z5j6-y6{r@bVoWwQ*OSQz439L_$(&ENrVPc`)L@Z;{08)Ca1$O8lbA2t7363mX^LVo z5Pnbu!XxrvBfh;j5>EsX#S|@!`C`Qgv_VXHTVDIgq_R%WJ@|fL^Pzp7hZF|+;o;6I zhm|JZGrS>!XiLhWLe3S8U7k3)02CR1lUEKzZa@p>A&Wtbz-9Wl2m*xQugm&8**7q( zqLk|ly{P9_*yi)h@@4iRZy|stpwX*lhml>y#;?Rl_ zx>5+YTgVS5bs`j{6eJM+fHe@zWkq3dA|c+pHNU+-CG4D$yTZzvGw9r@`mzY<&$^7N zRY-S9Hgs7{OX&yl$T;#e)fK8rX-Y{7^nj0!zX`ri1TaFcv->qqyDFYi5r|}!fny2I zBQIFV5{1ZK@FP;au*etk!M6m4v2ZjJ@FIo)w4Ft8+?2PUgg~U$$+_PcFVX~tv~Ck7 z{OuH*MZ6Duq`ak)|7sB^nlHHPQ|bV*kN$|x2=^dSjUpVqS6r=j;rR$W?uin^r)PUk z?@-!&`78y10*JWxClG`eh{4kW9yT~YF+dSI6GZM`yb#}*fHTA!v^BM#2i2>O54nx#aA@F=7f$MU7zAZ8#147ek0%OK9ZD%`09aR>i1x66>8G(1$z*yYYD5}Q z*|=9vT`I*+LOxAvKeReVZ&&UNoy-l4E3zR)`LaU>W-9UwQNPFpL&^wZJ43}F!775! z8d0jjU?k*2plTq2tT2i?JkBCD>t!}viFFHzxeCf6a8)3bxtkdRKFhokPz&ZsZjVit$rNtKLw0$l&3XKw4%aKc^%l(NJAZt7- z%M64w6xoq+#5oK`)OlSklAD@9LR7=i3dbIm`^tc~1>3DZ1b-hXET}0&)qsx-qb2Ca z^p03FuU}1gLtcarx!U`hrP`|8ulz%J;w5p=-SR+IDVo2ej=Wsp`OYpZQNvjcARkB2 z<8YEqEjNg4YOS!5Gh8I6|(6NoCHTQCVMz@Pic1{+dyyadF-aN#6yW29<47?r!4K| zw;kTa1>woMen)46(ks&l7r@!_bwu2N28>2dk-8Q*NICD3R0|ka>yQkoja@j!v5X_1H$oUWMxK^9 zs4^`BhC&)S);J@dA_EyZ?hk`HGk{<@#4I4U03iX;Gn5;i@FPAOi9VG1>_gkS+U*G5 z(V-?B1~(w}wS+cE^Rnw0)EW)ho?pCx$ewgeM6GXw zuOAuRQ3RP%_6)u`f}BA=##h8V%oa;HK>hd|4xo)#P?s&&C+H!{ZujXeR z56X8Khr6QYMRLOQis??1YRWTy>n>NGH#RGSj3*m93{O~}mH%!(TYk|IcHiO<%2n1| z%)KM_)mUc3jZ6Ycb$qhy|PRG&;H_0BmT2H@YQ-m8@YV_8XTA&wF+E$N4wgUv4ohR z#|VSzv;kYBI4s2l@l0cj!gw;eFO-hfqzlHWv;|J*x@@VcBj!kH4Y-XJ0e8c3N?2wt62=T)f$LlM&q6K@<((-Wx z53R?pm6;AcD0l_Z+H?eQJN#E+Y&bnum}5goG^|2Bx|Sa@ zTanpGEGsp(x^uDuHPy6K!)5}uC)!Ep#gmBy%zfCSp#l*^gUwVEs{7n1@$Pya>pIX49Ks?1(Y-Rh?clwxgM*LP6U$7L!6|}$zl$4n^z+%xGW*}JC@^Z3szDzLrdfl`sgHY{M0UTxNR1};1eC+RJW>wIu zrk<#!-a$^v!-OWO_mo_*Lvoz>67)Xe=l~*xpwIFQ<8uzvW1@(Z1%!d6fA1q>i4?{{ z(qn~d!hg+;&5Z@qXVj>5P%nyxqt`6yy-s%nP;xY-jVXkf6f&qe$BJ&w8s(IU`MR$a zN!2$`p@19M0!in~%;cfh0!&Z>GeR+ua( zBfF&`mdCh9SvEH+P#9)VcMR9Vs>+u@@1nI}^HLZS@+XE&&Pve?H~Jl4L>G@juPTTlb#Bs1oRpN$#<`@qbW*&pd=<$X54f=#gH?!OkprD-EZz1w>tTB zl(Z)1=xV(zAujt+>gubgi)-0%${K>*)8jzHJPT~8rh4e-7yz-Nz&7BtPKBYu^a$v< zVj>N-Ddf1|UkyWdh~cK3!?SxlAYva3gTztXozU17wKTO(CKd|4w*>2X3*sNOKg4fX zSI?$og;7Z_F-*j(YG8~E9_2<~5<0%z}9M&6_ z=qAUYQW2VzDASwqo51$jFtY%S3&P!cIZ1>t&O0U7_dl9c@B+iwoXe=*5rdG4_#|M6 z^;T-iXHSKyl)+Tq9gwMEHbV&?lgEC9V#d4VtXd!e zG}LCA3SvkPPs6`hi_AhM*3p}DdWU%*5%VoiAaWVK-g@MC0&Enf9c3*cgkElJ1^8f& zprh`we~eP=GFxcL!ZK64IBhQh|8KQ$*SKDB6*}*AH<4YRJWd~E4s`rb6z__pD9 z2D7q2{yL$`_!BItSRrX6O(C6eJzj)r**A3C{7^W%p z$8>1+1o5IAefIB2xr@S8T?kix%!@2Jm=}RX;Rkw708tfQ*B#$ z4Pr4(J&`>~u#Uuu-W~%Bx9+(IT$m082UeN-es5tT#Im?bzLRYtzcPapjSK|@nOBci4;Ek$4 z4e=xI6?xmm!1@XU?F%6yfaw7^o~`xF_CaLxKRb8z1DY(J^c5DsL{dKvu5Zsk{0sja zwh(H1kmfgr=^~5XMfCG256;cNF~+C#*0-$5M~)aa1i8A30vvnf<^mWL0U8Nt13-Bp z6)s$ekew*-gV5SSHDP?*P%f@3c zLH~{byjdguj!RLD1T_i8xnm;h?r0ePEr?Ko6Bjwz@HNpKhHx*`WxjZy$T&h_@`1y* z5I}1Mil7?NkAOMhkNAN(OHi+bHW7gXWK#S2fRk#~$xlCWJ#x(YejE~ZG{C5y8HxH( z1@8lZB9*mD0hz;_UsQw)MogFuv6g)3Epne=)~?LvhYj{LOuHPxZwM!=#NsNI9*0;h za>~|}5F;}+O1}7#HWY=($40132fOeG+A2kA~uYgIj8I2~sk*6&AHULl{R00RRAjbg-* zg@Z_723lt^GHBt=1BhY}Q$g#6?dMW-n-1E?4+Sz~h9Y3UuHYsuIIt_w3b>eEE{E)y}C4@MULO*==1P@%KdI6=3Dn(#J!t3_~b^@uS2yc z4zg7V@F1E}0dK)fgdbgn|6K%Rv8)vMBJe70%6eaizD?nM2W0F(^-)ISBhJ2YCoHnW#e<}ibygIFcn@zXhs`a zGgPqoCX2&DN}e+4>7z-Vbiq+&yGqY&Nh1bE+d5vI;Y3)&(=Z?*YKtdV06ehvqrfOy zzp?rQDiYSTS#uGVbV!j#7*Gjfu@HC(fq=O4aj2Vxd`uDSiG!>i{W+BWCF&Ibk`obwbyOSQX} zj~S|6Gq_s<=o|tdv-ewc%fX#HaKFxl57G%sm(#l~+12YBF4BHe0Kx9I&PVR+T)6`= z1X^K!$Na?zV?BJ!EjT=_S?ydfyK~Lf!CG*uR*JBw8Z3UOr^BqC4-YUbhtUuLxM0Z| z1S|qD&It4*ScnkIm=|CqQQ%0URf2xR!noScL|(rRpv1_AIAVFzEyID-39X0>$$}On zEKe>QIS#v+Y>%MeMc`jxIs+_=h9F1kisHy7`}Zo$&fXLnn%RsFYAU$uI<1 z1PW9pa0G%{&PL;0-nDGZmv2zOF%$5GfD{FIGM|e0p%@Q$1U#uK>c<}d`h}_@G=iYY z`nR7!AW1qKr|BueDx>u!`IV3xO8=vtxqjz?olANjJ+OUe$IcZUkF`^h3 zXU8MUvOy!q$)Ilz0p=BzfH(E3HmA}7TlABXv&ON{aiU$7p0sVVT`DK6o2*8Q z1J;jH<2S~+hWFet*E6I>4euSPOwCV7n~yB{pa0dK-yTBuyIDsKO+y_4zY+iru+em_ z+5t*_VEbLbEC=vp$L^hogC^av<*oxe=4*rgh!T!dKca+#)KQYXUl3whGCl>i1px3J z+;vCC>b-QdF47!VAsoDOZ^zF2J6GP)@k~3^*r83cQOJ0__l4(@!W^Y*O=cHKcYd0_dW z`Hy$b-_p7Jb~?Ic9rW6vXVxKd9R2ms*0l%s+i+Di+>l8sz0m8=* zcviKj5O@~=BqvxOm;sbY$#0}rWt5N_*-UbP>+oJ6{ie`E~_R$;Iq6EG;G*Tq6JOE&H%e7 z1{9FTGqoP^2-!R%{E2|l0lH%l0g6C3LEtxGNWlQ1B3g|JCBlfEJE8qj0NXU@9^!bV zoCbA7dS1@E&Acr1;b0DRO2%OMprt}3sRQiT=u0Uol)@Xa8-y7?5Gz*kGNIyV5HKGx z?0A487{=y?7$p3NOT;n_fIM*<2IC|+N zkV8xHqK4*5Z1y}bRPwSqyPYm86>lq`LIYY<070%rUO+P=?SgVdqF!J~1&HDU6@YkP zz@G-7bkA)sA?(V&xmyG%Pj$fN!tRdd!DKZ>3&sEmmHBM_;wP{JXPJ8)MYLjNP3M51 z1h|jnSHTXBo#{N2MH(7XS|l1-t?I;6a(vp=m>G(I5#^#_W5SPv8z z6=!980J?3~-NcOK=iEPNPw zEja&h>usckwlD73xc<}K>ksU?`_MCYKusOkbzhGXdwN&Lg1Zmiz73DS(?8w4`p{E1 z<0jf8x|Lh^g`IppZbb`C=(lBa=_PkObzuALhiA8SESq;=*RIYvOS@BT4zFF;v3+~? z(4IB4L_p5X&PO`-Ja+ib4PBp|{n}Q%+`%OecFukPF9D5-TO-v5Z*yqt{hjSMA8gyv zamy|!<%4S$B0opmtAO+m;dod_APlh(ah|~L1!Q~>z|Vj-LSg}Mvl0NA1&>JF<_bxZ z|3`*zYjgW0*mkz*1d5MHtJRSS=_tYb#k#Dec`}e6!hyV}vdJ#_ylND@*Fh^r7#k>ewB^c!5fFBFTGukhvvM z9^D+POGbtbfnfsAMZ6c@qQ~lz0uCxoJ=oY%akmB|RZcr|;*ufTn)r7WG#m=5;8O|}Cy-K6gqON3H`fWN^kJ#$f_OZS)Vhk0EGmkps=K!P zCFNxvzzafwi5;S9FnBCth)zX}YACKE!3^_jaR7m4u$TZjHx>#;0k#Bf;l`<#)DQ(Lx}568baYa`M(h+dE;N zAcB~TcvS)YW(f042+IM?v%nX_vIm?)=xv3_1Os+87&AbXf+%AEEatTrTBMksEfk8B zf~xb%#*8M0A^NuzG0Al-VRrC|&)rcqk6@c_5ew`wI(WXj(R=$KkQ@g<;-7noKbo-qspw4`R1+@=dwB8bDuyore%^)NvjeCi0L9MA?_xDcl5f3PpKSGqCLu$uGMpEMF~3*MP*uSU!~`V!D_P|K~R??WK#0Ayle9E)AV$OF$W7DQGc z!sdbe3yPZroTD-1H^JZ>ptF)u#WV1Vis6GjlPiXm3=(@45ch)P3&^Ulqx-;a5(gti9PpQM6>$I2;z$(O zp#ESC>rz-tPHrDUO|SEg)P#8mb!F&ZIA3D5nO+7HPXl$v-kJzdC&<6%Y#(I)XuB7< znb4u(xrGM5UjdhJ5g{N36Tt}9Z)!1oLNNXZF!YhG45-LhB1#D($aJ&W!*ePtK$0srj! zz3U~{4%Z{DwXR!T3tTf?Q@|iF$W`eY>I%5daP@cDk$q9?{Kolb=K<%t&expJJ9juY zIafQEJ8yALcU~ulouiyXfGU{pJlA=W)8Y8W@www8#~&RpJ9ar9cdT+Oa?En19dXBG z$7n~1Jkk+#obMRmINo8je{KKR{s;T(_LuB??VIiE>`U!8+Ux8Q`*{16_RH)+`#}4t zcAM=h+efxP+Fq7#kzcj#vOQv3ZChl!(N<%dWV_TBvgO&%wDq@HfO4?U`n2^S;9Tfk>vx+YnERqcPMj#X}Hm{#ZbB$7OzD_AOk2GIqE;J7^ z50J;39cE$r($r~s-SoU^mua(UxpJDR-IOw2Z5p9mYr5E!XFAQ)$7C>mW&FhWN8=mv z9^>=I?Z&OfdyKak+l)=XO`L2TZY(mMYdpnhH+*OK)bOEUzhRGIvthYmu2Nu_VMrpD zW`v>GFxYUW!42BrY09U{hsqnuWy-IVZOQ{^{3HIeD<{jaaKNF_?-ZAEhTNSw*Y9Mf za=JVW@efdunSLkrRnC>Wr&idX`khFZl9I2>^gH1MB~OlIm1-4G11J%!pQ(>>wmiIt z3ZNNdUVLPf;Y52TgcuDuW zhHi(6qM@lO>vZf_p*=B$`4*u>(SBp;nI6=Kwx6t;lId4KwclOR?*gZChM?z6C1A&svX^J- zo9Hc!x6sLS6g(x7I`g#b&-8SK?HQAeQEZ(`WC#C@|WY33+eqdr+AhXr|S&LJGZOZ zm#UAEN5VKJd$5)~6ShyXub51yUh9A=p{9*nvvq+O?uI^v+4snL`KLwF8I#Di5y~=f+ZtD7>oHbi z_%!=it_j;|*)D`2Lj)Y9RbzSfFckz$S7m=yH708#CeYHN2PGT&_ScH*;ZTUx+V0K% zLdDl+Z0odltEao!9?+_`zN$HCyHC5iUTo6NuZ~sCOr?xT?UY0ynA6M6RPOq}4 zzp6Uj7*i&3z4Nt=QNMCJw|{ka4oDShFp;e8dlSD+PkGf<(#&)t2T* zsF^C*MA9uxO5xbbkAUkDNusr?vyo57ydJA@wD4WjhUR*?mAg)y9BEkop$4pH^TBvs zA|qeN*8n#p)+GLDRZf6@i!``i$VzqA?~hk56z-JZ7`Sl4X^WG zpW){w#Vtofh)${E3<%p)x_8xdfcrNl`#wis1K7MsEh6HKuTkw*HM65KnKE6>Kbw#i zL@RkQhJWHCXkVNv1a+kU<9&ZgwN+IgFEn1u=RqUF zHf-mb0>T0%y2xMfThvD2Z%tt7-**GQ#S{SfBji_JLW8C%nUb~7L^B{F5FgT)?-%3m zH1(rShn`vw-H4G&?_&2-^P#MZd^A%PiN=hd@~hLDFP53b55nYt!TOLI>=tPzy}NY*pT3znEn;Ix5+uyxCs~$P?gkMnut&)Qqa>+H{xc>n2q-fy@k- zL&afl-RLeP47OgIfhvT&fnqORg&~LT#}O=+C#Vi8Q&+Y$Hv#^!+I%*BHFisG9xIiT z%R#s#hH_zLMV}ICnMz-u?@v|=<%;PDMJY+w1M;EUZ`IdB_k-OKwN(vhfIi>Q@SxvA zny31s2P|u)wKJs)a(_+KA37i{792(SE#-!V6i{~ zUD8s-k6?2XnH3xrRNu(lL)VHS3RCl{o2%%Z$CW4h7^(WkHb>G;Gy58;xyoC#M~@gk z5}s)LJnA~V%ItHffvF&_hU`|lTKi!+m9#>6%h;xnwSSjbXdKcd1}*%k@|N;pmj~U& zG>x$AFVvnu6hg?AfQEdSzOcMy7~YrmbLkfM5UPT5ErcVT>9doc3QKrnQ{NT*&dJzF zBKOh4vmD$d%EyfX8JnAw1XWlUF^_36eGqLeDk@5i20jfx zMwD8t^wcr+uOTOv>(Xvk4Kdk_(!r~ zSjq6A&NrwI%96t(74B$#n~# z9w@cHMmnv`@FIO&DMElvbE!E>DQ+TD)1)RFtPj%jOVvsBDR&LM7#m(N7?cy~9&o+% zUB(xWEE_I=&C;-namG{lV98K<5e>ajAc@0vO*3k_-=<+o?VW~`J(ccWO)GQg-A6WH znUz-47~AXU(cH4OGwFUKE5pYQ0pp0Ymwq*oh;Cd_DGZLFlap-yeOonD9b*F!7q z|Dr0T9zd~a_6gMWhYdl0YtXD2eV(Q#4io3oB||x0LVQY38cLIR3j98*;m>@Gf6MLk zRO+tD>Iww8s74RnQ7ahA!^=LIx;5FP5IEb=)OR^G#!x8Up%H8W8oFb9?PKV}ht{a* zp*4oz@iVH*Du)m0JB2=EXyxT`*L&1HL(9ra$M>1fg{33QT{qDi4;8o5W57+(M0%-F z@lv%9Nv3R9QGX;hHf~pr8%(A9+(efTiKOFww(*H2<3v8)XNZ_YPlj_3`n|7#?pe~9 z)M~WPU%P&4A9fvG2{am03)N{!U3Chi)|o!fQ)88|sk0O&W{PQ7`teO!zx2J0FDoBu zpGXfZ5#@^Fw2~?3P1!Gu?;Bq;?pAIwK4DyKTwuJ(m{x`;XDCAc!l=qI`9th9OAQ|x z-Zi{t*kyRgu-nG%=n!HEp=p}7Z4o+61Fa%5DhPstpooS_RVArTRjRtGl1>^?YpyuY zBP!0GgC21>PRDu10Y^lfkMlgwir&xOPgOc{e!si!KX=`=e(N@i?s})^ecosK?%})l zb7k`4e!o;ovR7Yl9aD^mn=Oi@b(+*qisR@h*(K-8%zY!SUX(7jb{<-syhWeVco;`)s%AuDFZt zW86#K2f3%Z$GgMMKb>DX-*j$wKI**Lx!I{Xhn<}Bc;`wi0w+0RPR#y`{VV(X_MP^- zu?D=*zQHco*V&ib54H~4Gxm0S#E!-O9Q(C(rF97!{66d6)&!V182LlwCy{SQJ|Fo= zWWSR=waCzhm znP+&G%Oj`g+fbX$z5~`ytzE8MDG_WCecP0EHnl5@V`&y(Mx^Y^Y{l~M5&hWSRisjJ z;FM>@@-7M6kp)wUlP9eMn+2#uIg6Ms#JtMzLuK~i>>-F`_-?Hz6a~^P4sYleVX%{U zlFIOsN(?BQM+%2xX|2)L23{?tp;)jf+{{_=vjrLdrTKwmZJ6Zi|Hp%JNh*uX?%hx8 zxwY8MeoN;6$CF5>yz+F}4LSaf|Iy=_^-7^aq1+-HChzxlA7?$_Uu&h$?`NyO{qghADt=W^+@O)+9jf@qz$ z?vUj!m7hCGysZrUhc0pH& z0pX~DoY3F zQ-fD&4=)kKU(OEQrZvf}iBkP>y@0fiaO!@ccOV09a99UyuAE+Vza)UhK%7IynoVbx z!oM0rh&e%H_u3?`%XlhRa=)nUm@6{PFj!P(G0}Y6jP?F0>&vE4cE^^DmMhiprK;hr zdgcCTWM`%DCH;fd+>zKWZ8pX!XqHiMSeK=9dmd+Zwu7CGJexoKN%zj+qxAoJuUW>n~|E5_c(4okn z4q3T_!&&3i+=TS#{d)CSWV{djMH?AD{%J$c&{ct-10UD^L8i$q+bWGg+{#rCBL(D# zRD+dc3@E8g;$h}HIFyWm*>d6y=G~l_HKs?_1i;@U3QJsSUdPqs-TJdyEmsDo_1pO= z7KF%Wv>qHq?mpf+Cqe?Rud6!a4hBZ0 zYT6*y&?y2MEkiu2WbId*;;JTwGxiTt8Ny9U>#mC6qHh*+nMh7MQ=)O~lY7rVL4cAI zpr?ayh{qTJ)Gy=w$=uKjH4Hvz+EMJYdOdMSM;{1St+?+pAHeU~oKV_$!MeL*S{A<} z9M$N&xgEcBHaR2eJbQ(R#hRrpn*na%{YtqEArp<5JS?IfH~DYSu~Avx8}2qAwt&Vl zKd73tw9Imr>P4xDtE3sV?otJjJi%e$@1WoWMi^V{18fqj^Ktztp@TlaKt` zd~`aOV=iRf!=|C-P#99~uql;e38_g}yzgwDzy!iRXwEgJh53s35A0HIO6_r>ImXPoUQ$Q{?Q}VuT?p~-w?l5QBENmwFYi-^#n@;9a ziEQtdMQe}wmCgHYbF%~n+AlM|(+jyu^0miUr;3b#S(#V<*r@cY*8>ekC z`3C*ul7tgWWJ%e2yAB^Xfs7mcAgWJ=Z`2NxlOoW_m88L)5__9evhM43#BK?P9=ybq zyBQ$u->EMp`N>Mb{hX*WVo)<;o>?l~XX+=HO4vIq-uJ}(z%38b7GyoHxN%Xq00J4S zv*=*Oc@qTfA7dWW3*;Y@$y37g-vhYt4(&v?#Ytg!ww|Wlk4;UNFkAIALBrL(k(jQ- z{ALo)Vq(@?%tx=*nX8uywBato}J78)+?TOov4& zXFpu~u9RIHc)Mv%S&?Qjaxo?1Pd4qPr{G!_qR%wnp(j$ZqQ;-7HD6vooI|OuIzQ6- z^m2$gFV$hVyq+r_?A>Ns)$3~G;3mWB?5hP9fi_=0J$_I-M1Jp!{=_`f%ZVJhuQ{yb zW)`c3{LrJd4}tEM2pB z?h^OXp6H(;l9iO3%ZVv{xPMj_*Wz;g_hNHQ^-nV5`XT-C^R&MThf4M@wE+sH+4H@3 zXm1wso+{pKms*KEL+e{$X023`Mh+l;Gglr|^A7T7C4QrRg-D_#Wv&c;N&8;~Q~+US)*W-YF!jLUpLV z-MUbOXaf?nDu2zUS7^6he607M;p3*twi=Tan+G2cPKGXD&CJ!4;RT z`hU{qVO`6)pOXCl|BToJ$-gCkk^JxEUCG;%A5Pwqd~vdoTu&}0ABW%np~(l~_urlz zNyZX?O8g@6gT$SQPbWT@cw6EPiJKD7N;DHUBo-3aC9Xh|Kae;zabjXyB8dMZ{u{jh zcg8;(|495D@qdfo9Di=S7B9uK@oVFk#m|rLLzmwcckucD4sHHB;T_?p!uN-74quBn z`kb&4u7x>t`iG#=pBCOboCuSl6Z{gN|7U~$3f>sp96ULw1i9dG!6VV=?;q?9cA(G4 z(dED4e;i-`>;0Ge&r@%I*1z1pz(3R9;~(!2d4KhOiNF6&?{nVAz5nuVCCcFy-gCXD zc^Ivt+t0V3YS-))d&y4O zSKF7^=h*kLr|fv_ZuRWn5xXt+-q@|N*T-HG+raixi7mvgi9IZKcI-5K`^Vth|6BCO z(YvA_#`5yqXg9hVU5Gw1`q1c1bVu}m%0Nt=CyEwVrCNTl3b{*2Aom ztYa)6?f-X?A4R?z`Ap<}Y9DxdWG#}4T*Y?8_mAu%_vvuNc56?v2F3yQ^txAjqBSsq z=u}OuIkg+Dficq2r7A zy{)!p4QOh--um9t;%kSkfj#{K8UL&+3-cL$({3RCHX2A3nZ>uQ43&|@oLMQ zCX*Z4guPmU-)1NEpq94=ruxaGPO2?g1DB)z_jVDR?N@ti;AgSy)(%o`S>iq8wH$3z z#KvJ9cSE&Bn$H|#HW4~&vbJCi>{N%ja8^;R;TKBCr2 z4*al|=G%ylu86C;I#QdXDNQO+kkJ6;cr9fO>^CQ8r7LEOy$H1Xa(k|4 zr}lW-_+YLK!}4+TAfifDq@UV#yiWXKP{|guqqWCc1O045vuv`i#XGfYc{aaR$dA+> zLv;kr@+%^gs*69YJ(@C>vxgaD@G_FMYxsEe&kCEaw7BlpuI6LqCHu!}kFo~X>Kx$( zyrvU+43cfNs~Abdt1Zd@3q@95jQQUNEms5o~c_OSmoQI_w(!z#uYnO3_gu;jOe(h3PMpcJ$C8#}& z<}0lu5W^bqYM0Qkk^x~k6R%xN*+)}$d$oshO<8yqul5kR4_zi(acURIu%>?!wF|9* z9mayD5}RMUKxUCBF{K5&cD^+*N~Qv@b{-EKxtuK7++j!~l=@&UuwOWH#;ctpzd^g@ z1+VrXeL(!4@!HwcioKD0j^}vofimI{RJ4*_@2DnfduZ5P;V{A-J0+Bt{MvoEN-klLbS_@o%_qyunym;jZ?E0k z8n~F;iAY0*9EvzXH3kaQ{@GXS=Z5P$UAhNtXR6ALQ6^vtyHgI9-{GhgzK_SM; z72Y^jJBh(eDf6&Q7JEKd1ahagLq2;Y!}K~)#v0pV%t{*ncx^isLPZkK4i$82C+Lm& zQdpao8)ZXMvF(So<2f{m9x?xTwJGUyO}ih|j-v{wUF;`N&Dym|#!e--7S!&=X|Y<0 z;_1{TD7e7dlc*g_3z?75Mo8AiX;ET@Y4?m6q*&07p;o%XM6U_PXo7<|2%%1Go0cQf zWK`Nk`YNc6@G6{!DT#AvgDIioD zsyXypX=wrbjfqR;18qJK4S?0VOuWspwU|IrW_B@mP?iv;Xc0yU?xXT}Ey~hbfeVo< z&uRr`WgVJboe64|w7c+~E17Jf7NJ=yWLPmXs^ZrMWjZaP055QLfU8ThrUUW7IY97O z^-!kZ1HhBm5`-e)2ms4awZY#}wwCh%-H8(7U2fh3ZzoC>nS2g_JH|#3OEzFTT3IOg zpz9>&0c7y92dGZ4%3_i70ntfV4PwsO28@!C^&Vdl3ZfzhfTE1C06?8u>ye0k5Oq=_ zR2h{4a5~j1sN#XA6L?VBvV0qOD!V}FhC7=>^_YS+u#eeWPR;h8!L(3L#X;Ha#J1** z56}i?NAsD2D>zDCo?OuZM#q@ag%R*`Pd-!G+Tb1lIzgOYwvyQfaqEu(6zxF;IcrIWQ)J%L6(m7UoL~A|K$KEUlxqEEHW(b6nYS0Z2L3+sLAFJYadg znYCgjWtl`nRRO`sNj|ta$&xAdo;aYnUF}pDD4+*`n7f1_C$>CX4ApEB;M{2nGg3eT z#N45sVZs{6fy(`?Oz75}WsLR7DK=m^3VXl>CC8O{78h_d16NGdHrO~y(6tXRPU-;8 z6}`*&(hLD<%d0M^IL_Ssk_}K?6J&0|TjYR> zV+S#uxj^E0Ifa4E1`tP49DTrWlKC#qg#aL&l6_<$I?fD%g1fSyqNuPcV+7zJIBzx< zPk@6vG-n+KJ2s|w1p=XR<|+XQI8|COAnpNy0@N$z6%PoUFeH#97`U_lqBNAXA)s*A zp$wuf_CvLC1OVbxHMgWa?Fc3cPc8rwrwEia{&PTaigr&CB)aYbiQ_2}>SSGja9nL$ z0RT89X(Lc`=K=t5s=upi0QgNo-CE574FTXch3K+2Q(db%Am3Q2R9y>!x9LrTb^yZh z?a4RdEJ(`yXhD{hcX3#^itgL($3!hz+@c*wDw{ffnsLX1GRTme1K~b4joRQ zya#Aan7s&XKx&i>h(3_Ss;$Cw2q4k1z16}3jpFG4gLY(mAo<(mx6u6mGx>((OOqS; z?sLhjk`GCqo!pzecQS7ZA`%mzX@sqyo{l)v0_XF?i zu>EiI-s`>1`#0~E-b=h^c{Oht-T!j$BJXVU|J~kk-iYUT1MctKAG=?1KLy|aKipTj zFL0miu3`sRbRXwF(tW6VfA_w4^gZX#&QH{%|9<#+~cHVvjHh{hMiT1E<#eNg}LF}&B?XeHU-X42(>;~L%`c3tf9*aKsGW4mHgv1H7`2JrLfx1wK;ek}T)=$oRijJ`1XR2Ucw(JP|oMbC`h zJ9=DnB5Q?V6 z5ikQKJ7|bd#D;B0U#`BE!;m8puUsg+hAOX=M48FJ$JnH8Qf?sDM_Tli&v-!@ApHP(3)!`xf#fq)pJlC@uVaHE2F zbFi2D4H1P9l*Br+t${3bsz4Vy6g1(!2HQX|nkY#4C4&RGXe^J^;x&+fCYDe@bF>2z z&?F9a+{Ei{1NmpXfGAT58wftrqTV6Vpj$N%d&Y2uP&WjgDUtihNmvXUNIBE#)mce# zw~&oB5O#(OX|I8(Gcms^>R-@6&H;SqL1y^G4Wu0)sx-}$uMahl zb#?(Eu*G}W?Kco}WF+E_pz0#zkP?IhPGJKnXL=qpvpCYTi3U>64zs-LhzlBsJ5xuB zSJ?@H0_aU0?_&8;CzUjbJxdgoyU&pn)L7Ojt0!$p)g(4nRu+ndzQf*gzbb zE+F4APntPL4RScfOBO1*aqUzndsRS_8X8iippG1BTX^MkdF{x zQIFKS?l%yTCex)ARDhz}Ku8jOF1MU)h>!$bXI2oH44{=n11V|8;z~g*8gsdF#%mxX zVYm||IcOjwp^U8Hvn^)A27=PGzC?-*8X_v;I}jZp?>CT@CRfUN8e*T*KwKI-jBh5< zKwR3frOr+Rk%_4{PvIgj^*_*SATUkLSHz`dH;|V`2|t=>ATJ%*@-zWFePPybAU#bk zlvt!v)zQXI)vQ^MAjk^G?`Xb3PA&5YYIC`dXXURpn<$KWlWH0Y7Hc=G3vP2 zZ6Ixp&lih(`6&VyV=0@DHjucI=SLfeT1h4rLe?1f>>q6)U!9`72eUe87?uaUla)u^ zG9Dg#>`G;6t5^duYdD=AZXjgsmX<_Jgza;HNOBbd3L{32fP^Al_kFpa80Vjy7x4@4qWje#b_O%N-jEeFiIXc!>t!6 zkJ{&pP91EL7C1eugG|#Z&C0?P)`6#KG7uP1H(Cdvk_%oPSen4d!V|GNpfo%;7p((G z$+@r&8ezJ^w#HCj_v=8?ByTIjfgh^_M0<}akW2$Zw5tP4JNTM%26jxjy6)6LC#lXp zzYaD{V&GfkKd%llVd)pKB&Z8C6;Qwhcbq!VG$xc2uMQebWDa8AExL8UNPB*tQwM;g z#50|`zz@I9h}MChsLhw zYUlsI$T#!rVB2J2UDuMZF3^UX*C-x|I?%S`Xil0+v<}84&kgIq+q7}>LLji~;M?e2 ziMG6q@0HJs)q%I+OvbH)ZR28)OeO1J+RiPW){0vP*tE?~bL!xlwA4(r4x}aL-8w*~ z*G`YtL9t}ot%F~B<_xb6a!r_Ul2{$+8ZNC5*TJmag?08%D6^{d`WEn#@prmg2fD_W ziiNqAunuxfOC_Ocm9uso*kT$SN!CHEt&{yUzYb*eCdSORI)HVm26q4rOT-UUJQ{;ey9#s?aD!?D9@TsrVW9sWXi28P)S%+SO=)4DZ{KKZXJ}; z58ZFq!Kcx=Vrg3)a5_~7jxIi8h+-_p>Y&u{Jl_O7Q9|#uT?d~=&pY>#(fTR8Yt60$ zOrzA;t^-J;b8~Zc9XuLkR(W-SB4S3D3#DisC`w)!tph~K3!FNbBaJuX)B&6^QU2UI zATy4vTUi>a12MZyiYyrktVBa~Fy^RpM5aix4%BRI)ETc1)=ZcM!>xle6q~-n_He#Rf>wpc`1!em> zbueZOAKG%P4#Es)<|gW(%K_u1Lv~<{i5JrFj_i6|I-pqf>H;&lN|EFwP92yTtCsU? zejRubhZ!q(W~2_l>=9jQ%g_qz0L?V!x}IgO4&dy-*_0s@pZuMy13Np-%auZ!@#_LV zrFAvv_;uiCvKJ2G*Fhj$LrUhFr~^U=NMcqcL%Q*qYFesU#I@l%xU`#=MnGk`#@35X zw+=*2iJw+bM*ROj9K3TN`8y*2??`?e3&1VOmnEN-d{S~bd42M7mcCPyiDV@4yTo_k z?Y}qi+Qf74_*WCz#AERH?}xd6uY@1}bNrX_Z^yq7e_#B~@mIpxZ^xeiXa9OU{THC` z8*TqLaP~hNzBjy8S^Lef7(N~k|3&EeCx=5Y_J0Cn|6TC)pC7b?DzW@m1Q)4a{}}&n z|405;{r98azubR{U-Z-dH8ArZ;O|7Ucf7m3pL<{PZudUoy#t;86=?KzZwX%h`LOb* zy`=k3_xJAiVC8?({V(^8@baJL9&rn3@mIJPqQ#%=-pdWp;=k{F(fJth`fqYx?mXYQ z!691Td6aVjzWkG&V;v7>{*Uc%*q^uGZ{KRa8h?JruG){YA7-Cx@3T*~C+slxkJztc z-->-H_NmwhWB-mP{~56xiP4{rT^)N!?3CDXF$WF)mqh4)I{JR}_g6%p741Y@X7T7R&L8atTV0qS;ykf|0CY~&qO{D z`OnC!BQJ^E5D}*TC6Tk?`X|{p@h5cVz(BGELhoc+2|8*2kGBq@wxdCaOH0Rs84+;J zTHy7B5jT%*0orGl(D|U^%g8r!iZJhnT44At#W##*q_)mx{1$LNxwu?8%xdGc0QCtt znB?~LS|IuaVrpTfbW96C-`Cq5C)@XcVd6Tj1)`txzkC;FgB804zK^1EBwN7y&aE|f zT3|dY+(OZBf$(BtmoW5WTLAn$E8o+{TOj`Q5yV@JaplZ#3(())!$;vgVRs8!p#PK_ zEfCN~TSx$>=qj+K%61EBV6?ov?6;5yc&|Fmk}X65tze;|E`_qwLKYY!xoIWYx{7O} z$Mi%%&VbuHQKzcnUr&kD-V*RGk;PgK>tPG<#s?#PP)wKI7SN5tiHp&00pFtpqsChR z_jcTp%zF0asm5F2H;XXN0PXCc1&U9}`YgJ8q6L=kFve^3Duk^|Hs62~*J}ai*eT_O zPD}8-P*~iTXo2TDv^W_A*vnfW`y}>9d|;KJ1-4JkkwRx>E}f0HfcWh+hcI5T@yA=> z{C1JgRfVgBEwCPYD?9w;NDZ580r@-O+7sEI2K!Pay9M9_bPHh%yr0%5#o7_Hz^g${;SOFa-r(Cfc{Aaw0!1R3)B}^s~l|UG`EESFpdR#WzKH_`jfpt zMz00f5z_}c>5C^8j`J5>pUbb7v1f!L5I?+N35b%>(3WGlDwGam;Oi#sI z$O7A|`}>jKqb)>&Q)C**o&Cw{w2%J5gE2x__wtX8Q9p@e4mCJORV8g3+Z8(IMZ@?N3{Kd7E;6% z<{n}VGxRz##1zw0N2}jLj+kV#JUj%cpoK6Y%p4XX*w8J+iJhBWt}Tc>F~Jgq;lyhp zN=)P!*g2XSX#%r`jPV(zK1I$UR20;sQC@?bFS( zkrX6mA=yH**ojq2StKe2v=A+JD>DN^jad+fS_l`rR3KD#JX1VuA!1BZmu0-m#bvLB zkTGGxFNa&m7@H;ZnAk03i}94CPH!;OqL%N#4u zVTGx?Z(H*aBY2DL&8%mBvm_r-@S@@rue;GSk=5%bN`>@-2`vAJxn>^DJaWIhc>@SDIi#GFGy zGjW>$^Ejr(O2ume$e53b1E?gM;PK8rrCdnbi6*GbIK?_Z7ZQ2qG=XM#8Th!HVDWTs zuf6qsVH517rI(jx=L$3XN1GrpS;Jss8FRlH@Doi?c*hn?qT2+F$0eYOiU7qEg;MTx z%==BScY?ko#o4hXeO&i`Isi)yzl7a zf;glH%vSs+7!7|Sy@dHDXadjBW*|vrQin#Gp!1%i&&;Jr5a=|)XfdlSCYnI>4s{OB z=-)$4pjyNx`7A?uN;X03onp^ILeQFoP4F56wh-9RE8|T7TX|Vad=j4iCV0K;=sUUP zxF(o=4xvv+&u;CTWD^+2$}0t$mj+GXd}@}_DA^{CX@ccjzFcRh=mVooa2>hFY-S~n zNU2cR1mC9@)(gu}N>&PqCh)!k!|5zU9N{duP4FE~s#`zWn5)CAafna|xE!9e`DvIP=Nz+J4& zDg;1;cbXvl*s8GlnqWK2RXU%U37a4~n9(Em2Tfpo3R>#=g4nv7VEdGU#ab#i+yvft zo5eyGCT!(FQvjZ@wsoxR)vyV`PfLriQe`tv6NDctA6{BbHi7q@tP0{@X1&W-;!Q9f z;#ql#&1N7ig-u{yB{7jJnbF|9u3^3iro51^aW@2yC>!1n1BOTF$xm13r3BvE{6AonjXSX$hd1yt3gMi>- z;%nngu-^C+M3i0|Zi4r_k1j6K07Ff1e^;d-HxSGN=Q0yEL4LC|%&z5AUK8Mlw@5@- z>i8z8f4+?V{880?7XDLzK^h{15jI^wi(Ab0FMbngU=oZMra_{qq5x4qI6iQpv3MW~ zh(8l8KE;Sd9>D6JEA?O)RhkomFNM4Uhu=gfm`odG)^-h&OQ8;NJ&` z>c2Jm8hpwV(I?|oUL$(_It{&ynVf8czb*!B;?hrii*0iNo3bkJ!!RcFC@taDN9fO953@hRfmP2Rho z+F!Rnr(W?}>{r^)iGC~Q+AXx|gZ8!drS=*2N%pZeS?ywfk9{-t{@BZ7Pf7kU`TgWq zlD8$_oxH{RWAf#(`^LtwRMeBDWD2&zLt!hNk~}Us1Y6+`WGDP);`51*!&dnB#0wKo zPdq7cIFTnx;qt_JuoZSCj!XE_PZBWp+xQP*EPOfssrU!uZ;ih${t~PgUHA%z;*XC% zlqiL%csxEB{+z6YpASD2D}-+gZz3<@4Qjn0D`9xwaJxn)M1$W1-w*BxZVNsXye+mK zye@b}@RZ<&pb*Rkmq&jaoFAM8XCXHDcmFR~GlZ}3E;16n62no&U+^FAUqPOM`}rsO z!}Q3XyV@%ru97;r_GmsFV?{;rgu1dHKsnPynXQZ6_(rW{8JbIVxGMJxwHg$ZaK&L$*W3bO3@{{>=@C6{+B%nt^v|)@!#JET&aRY@ zY0+bDl;H8r>sYuEvyP@kcc1&Omyy5=slHvLh;k-DZal3UPgRD;vIeQ!dxc~7 zWc_pyv{+EuL{t+e(D-s9I;*wn_u0^tc`R3sX#C?`b`c7vccxY^n_k>E<9*ZorViPd z#_1A{NrT!QEhr<#J;cx8M(ykj;<|61R!UF|jhd-|-f$%L5D68Wo0}WlBSV~j7qp_O zBVs%kwLYmQ6+pa6sp>3Cpdy1Iy|@{IUcq!tk~)T=P_Pec+cL}0mXaSa zL#J=6i+onwmy2hdZu&hLm=RoF8oEfUmnzTaVoCE7>{Sxc-b;7+8Ex~FIca_0yr!H% zT8-}O6_SZMrrPDfHFGx_GajDc40AWzv!yD5W``2_csWIw;A-+e&5N<}S}!tB8B1T} zW9F%amHc8cFs+9hJ)eAqq^l5(i2;o?O%{Wa*dB&HV7|70e(3YEu;_hs3)JP!6mg$5 zui-{64Bc*8xM%5zJjJ|K^|8p6{UVLWY4G^|lcaUZdWTHS=dyX*Gfj}n2k(=VM{|So zQjAh%i3r7dLL|8GX78tq-I|!h4AVixJ=7ZiQPMT(d4x4+z+$Q$dY+V^T-DOL^;hZQ z9&uG8ZTX#rT(nY1zC~UwbgIGcNd`E>g556jrne?kSR)~AV-1^^j_sXgHmR}E{h4`+ zg>_xmwsaQoE)7L=naQm6rF}mq-<}qA2NV2IS>KvotJ}v!DmRz zq>1I3vEHFK^3%DGG;}(}W|4X9KGt4+fgY;*>OD#eQdeK}p<00aj$STnWSUiov@U26 zCNiQD+o#n@v1K}g%vzLz$4x``HibwozoaJPOhX646kkq77iE#+kQmo3v0l(mQYF#o z9@u-5%dw}K*Ap=8?KGzm+6&f2+9lkMyzhQpn>d9>R?P^k-Vy^ltNkbxYb*`L{AxCO zt0_PXC6Rf_76B_uePpoE%Q^IFU4e%lETdX7pWyQs(`C<3>qDy*6v>r~{zFVj!q^-9 zxr|J;Tj_#f-ENwLZop7K^xVxO%8UKTG(6YD;5?MmQ6MHS_zf_bSSi=Tstnuo;DtK+ z0gJ<_wP;pK5#$i8vR|uf)tY~@)M9RhudN2p*SWJoZi+HWb#R?N&3=NC>*PrSOS-wB zaqpzF$+CQlo{BzRCk%@4;E=@gLzzBCFS5I3%KNb{KHbqE zCe$|q0ieAkzNibR9?#0EWzT9Y^+Zh5s?3$ir%UhC)y|pbX`$v_fXOBnR~Rmn`wu`x z9n(~gl?0AhzQ1=mp^@5j4mul2C*pUSH)13buv*U8d$s~&^CGQHYnCz8Tj;@&BB5YVM)dG4E zn*$`H7$4MljYnwLao)a<7Fw(h#?6n?;EZ`*ym685YlF~x758h}cL+^bdHlyH3b9Wu zRxTyRICq&lIb)rrBdRDw(b780w<%9->Hc4}kOJ#C5&IwS9SB+u5!|&sGFQ;BhElE? ze}R?gkYE_b1_!AN?dczup3@_2_uL1 z8}ndsPUP94qInQk;SE{=lwihw>@stcq3sU-&fJt;@hS;x`{2>Y9Wy9d?b3^}SLl}s z6M3KO>R3AJp&xYggCsr_(J))GUZx);#{-|!=MEMzOIn}SI^@W?gkk47+H#1lYIpR$ zuC2T!ux{XmTFG3Ml;in~{j=VYS_@+DG9?kU41?nsa|t3K<|==O)+I+0o3z9Z4{1hQ z7RiNFrV@VF+zQJPUuW#^=AEoLST_ZelTX#AAQ4NrCjS2)4}NDL`TOJ#i2%4g`BAj% zHzr>}=KmX&0U+`J4@ll8d37HP{CDyHMw5OI zTJ%ffPm8a{7tx^~L6pBA{v-Tt_&wPEpA6qcjQ`EyGs6~H`?BHH`2Tl?K{y!v5&!?U zg3kpXBxm2tgJ%aFbm!$D4d4I5;LPBZV1(HI@A$X*?<7Cp5&tT@|EKypG%w#DydUBJ z|0H?&Zt|Y$Rq_2_?>)jh;GK-!;_L1w-1oZw=Dw6D{iovX>we-`=pj&WT3_b~Tw$42ok`?dJ|pJLx=FWYJR8vA1V zH2Va&`?1(xVn4y_|5>>EZzX>Jg|VmN^)Hi||FN;lW9P*c9zS@&%Y-+7WJ$@TR*n$us&qnYQ5Tej@7kpw6fNtt&6R* ztoy3x|F4ms!rQ+ia$Drxky|1+MV=jLN7f@HWdNKT+0VYB<1hgJGWbh6wD%|IV9C}% zOv&`@b}(gQr)9l$I@qzth-qFM?qIy$jjafG7E7Z_mO%$IHaDQ&Iv*5Y2uAc(iWjRh zbkvSc)JeN|7#Y6|o^N!Tf6hD3k zgY#td2y0&|pXgv~Ha;97cBGevJJ_6e3&%@Z!GzEabuc>b>iGkRO(dmAyo2$1yNRO~ zmqMb0?RkehqMMFmSnr4lnw*Rnmq$C8piePvOPcRqo`IkvmT0m6ic4U$gC)8j)FG@1 zl_0zh7U>D{SOFwX2TSyrD0T4;R_LBTLkPou2Q#!V2~ZN&{SKDsNt3~?;&w1X6H!I} z7r%r3d2$(%p52+k4%TO5K^C3V>0p3{m|xEO9c<6I8x~k!vtCDR&IJ%H%Xq-%OpJLR zhi1GZ24{`z*OlAvU~rz);62<^9qi3;RRmrA4u4?38aF-y}%Sa#hG#^rGg zDMz>qo3fBUV0vbP4%Xx;k!~cHme&zua+Wk;)oReem`pVAGLGx=y4}HYJWBYy+reHu z4&xenbq8xPVR~|1DuStaLfl$Q#drrp@pi@?f)QxOL)eMOp>G{b`5mzk;~raPE3Kd- z7Gl_Y*5PT1ZXrm5!0%3s#}?O1!d`^kaZD$QUl@^0mU$ApX(oM5J_x1xqQn zGe{*68W$*hfWl4eWEw_E`$>EX5U*~`_7k}cbvm^cZ{NsED;RC6=-1ihq4pCP&)g@j zJc&k5Ro(Ut+%1dKy4ya&Pnac3E6MgcUJYTb_S3};x7U~+i~;aF=;Q5W`DUO8EqfrfnKEFX0c&A#{;ZbcoJ7Ksi3{c zhoO?Gg66jusIy)~A8yZ6*5#Txe7v2-`&B_kE{H7!6N*F|iJlU+GnBV^#c8LRh|+yd zdyZcstA*{9)UlV#vEsL{m+>m{Awqt8R@MYi$8SHL(;5(yJ><6^$3e;%3uEo;@X$$@ zJeIm*KEyqeFAcS?l{L+{Zw;H?Z9j&Nr+%r*aQo4;DD_3fV;2eCSz@?-4d*H;c2Y%5 zLP4MGHd2>QvJDKIz!75X358kq+hFjdHeY%*XbT9d zPd%GU#oK`J_RPV2&(0BVgT>paWY1|Cw1MNP%iuPNBIdP0WJm>~Y?&;+u-_6p$Gt}yrWp&)&|~Bg-P9GHmk}`O8qt{zq3*}$UHI|rBAiN`E&0v z1Wd`SdByUvZIJ)Wtu!W?fjWMjHUhvH^JqS31OJ2!6V1-mp*GmROIx?s_-k$({3ntg z?a6I}{_xLWH~DP zP+h2si{ot&eaocZ?10MgZBYIEqg~aHK-#<`-UjNoBYBxzcT^IuW~VnG}1SD{z%C~SlN)0=C9*9QE7rUii3YYX;E7vytJ8|;VsUoGCh4e;M^ zj}fBF0_<%P+0EubhCKV0m<59|NFXc&T(?y6+sFx%IGjanaoR`F(&eQ&_<+~V&0RvC%w3>jZkqaZA;Viax;l<=eRcV#W|ZP ze+g`p{1uY(n0-kWvhlXa8%MWw@Y={5h$g}n4B8@M^x2HbHX??yZu{Kg;WmQCZe>Vr zat+7YNE~~QCe4^7cr{g7fd`4`F=g`n{c@?I# z(?Yx$OI0%YcniToQ-~2pnlG-$S_l=xE4iSBFfrBVj(RPGhzWCt~ zYx0%s_g74&lb4aT|32*W=erNbm;M#^MTt+iU&WXHZ;2P`F#jC)osm!a zr;){f!jF1?cE3lwz_;9k-j}_Pkpu81q6Mnnwcdr^e(&Dy8_43H)Y$*s?lf@$e}&WV z1sDx)c3wzif7wYnk8sX&W+Yp`{dfE4_E)U~_9yJOU>j)L>*V&k%szn5Ubc5wm)oOu zB=-H-o#gg=PwaI>^|#6DcWvyEvGc8aV;9&H8;-fLf#~m|KZv|0`qk*|FfiU2eMRJ( zWcX`E$@v?-I`S9Gj$RNwBYI-wXVGm@*Sg#Kwe?-=OIQfrVo7X3r?2JzAN8+#AOQc| z@(R(=t0S)zGiD}J9nlQT=@s%)jikl=CGcaU`VqBAW>V~ovOMxgy?^Gkku${%mQg!- zxiS(lN7<4{tHVDP)0*(2($(_t_r%=TJHWGoR5AQjwa!-_n$0thE5o0VN@ZB8BqRbB z*zh~W;41=;=C#kyX3))&2||Jh>H z^l$EeHg`tVdneE4lO)rc&|=sg?cMz+<}srupDaFfxrx( zS*R7|mE@!Pl~ib~#7^zE@1~R-%bOQwR!Uj_MpGPoGNkROx}K%iFkKFt>Vl-$$aT9Y zvsW`Rm)$aja!s9KSfK2;id{341#S21gBj2fVdpJcK3V#+xQOg$noA_CNSB8`EQaVz zX7ExSGbF5aCB1BB4jkz3&d}qEhBxUgbJh5T+Q4(HreceV&6vYprm>;>X^C@#$rtQUL<6pP8_m3F__)>>IS_?w zedtrNGk_kVAwxaf5>FrhM87s#lisz#*Y-a`jZhHJU)ZloZ+eP+r+#-S)|_*`C|+MZ z7LAXP0&GQ4B-Z1aPFXL|ewE0Me$$Gw2t(iTQm!@4>2UYTjV!iH|rX@{_ijb-SmGIz~GRooX;DEU`uWu=s6=Jq9jAg#os zvO5&k%H-!wD_0f?uq#53dgZEhWZpV;>tV{una{5*4eEXwV)vzYf>~1{d~j95gGZY7<@hL*IC6$A zBs?)Ixkj0F{rwt(XPNP2=;V<{Zr&#{;MV)DFpCEFv8tNgrM6zyZMLLJktLnG2*P8pLmrnxw7Dtqwh4oad~IGH=61%pzyFMpk!mEhm{ zso3eJ#QEyrE#_5%vtkH6(G-KPJxiiyLDW<#59L3$L!UUkoOfO?F6_*pI_A=_`eE7x znx>iqC>DLcuB)3>^v=!A71x4K>%h{RynmP1rq@X%hRT?6{%#I?tncs=b0;K?vh!u_ zc!<>5s397x&0Y=&aQGX2Xl?c)HPO3o(7}0FS-1Z6{R1=rUz;<1IBzDne~OmAx&}7K zb+~LMkQrpZ%+Wzo)jdQ$FWP!=hb%ljGXm-3Se#I{~rH7oGI zo%*D1`6jsK-A5}_Udgx**DjNw9@5@?Sr?C9h(P3l+Kjvltx_WNdV$YsJ$CP-WDj$( zzs8%MjvCGkmq=;xAnn3(df!aid7*h}YR&qBwxHwz9{8-bZJ87?tRq$bzqL9hmCc|g zoyWeN_?@;A$tcm2NrFXIU+4Yg_N(CZP zD7$u%zD05&rL#d^3un>jQOARKYCSnI_ykj0SsMEh<~I(ka-f16)Q!A&8Jsh;xs}L~ zUJ){%f49s z{Qe_q*Q@wKt}8n*#ZNHD*6;KC2ff+sTqW@U!nC%S9x73F?~_dX%Y#<5_hy2Bk)u<2hU9|tY8|e+L4sJa7!5*;V^0aN z#=oZ5hO!F)zMG7HwHY>SZj50%@qS^5Dz*qINAiu$Nx)nF&KFU4Y-RXuz;s3z-lJj5jhsU4gyufKYPav1x^^uAADb6*{ z!<`2^r$_$boE(3Lb1(bPMC0FOe|qp^#N)rg`VZpaUuVC>ewJ0W8}=#@1lQSDSnswk zv=7*)*e6;qweJ_Wf zbAMlqUGrk2(YvER2|pG6?%E{fbgej`5lpTMQKJ^A*?*R9>wBdup8Ul#t}`X-Eu!(>#r%(|O6g;S%G z$rF+;ww3QB?jWb)&E!*TBvum#6SIkjCC*ITCvkjYI1zzS@uTp)ilN`N>yd8A;v1a&ldrX_2=Nu^wrzLIcpqnITpC|l4&^zib~ z56sVHXob2sZzfYh#m;7jz7d{4owc`(Gdoo(*w^ceNo6Ygg$#W;I-#$|m<>>dM`Q_= zdT8+L&?mwZ z?OpwE#h({{TfflF4A@cSC(F%Z>W@5EM;J%xRrUwzwNk25PTap=Rg3o+h-zp0jszN4iSzLm5Ds)wJzP z2WM8Q>)yAthgOO`o!0w{e34E#YzDfJJGaTmHmB%)Nka7*`4WB|CWW;9B7N6AcQhFI za(|3w=AtwD-s)lZd_4)^rI!*f*E*CBrF;!%$lwuA`H$7^Ezh$@dSxMghK^B=Bt)5q zNCjWEf1v{&y^U1aLIHG?$PNvc?CSIRbqBLP15CW?!C%ylQS#oer;3Lc*S)K>1`s9K zH}eO*-;k2s4H>j15A7!zF2{jcEd=DqAjuFEsU)CoEmBxLa9y5!HAz$i2k{zo0M05hTyJPt?9zu0;2k zA8AMVgc%49%d5^4wGM0{U}PregZizkZy`~EO!ZB7taY*M@n%?$W+rIm@3GZq_;xzOXO&mmlUGh5DY;VZd+)27q=2X(Kf%t0Did@J~W;y3BQJgCyR zSX5@wT-@JiPv%HBgAVs8eO~&c7?=?&zfJIF><8vf-I-+Io7(*38j#ov?+>yr5a_w2 zOtt9V-koAe9Q3tSwuHMzcAC3;Ip_wn+8ep@jPpG6E1!>6%tNHz#~7B*rk3p!%|r7z zju7Ayc+%vJa!3mfyxdeAS9jk1p1G7}V?n%^zOg#6tRX!57no|Nt20~*zh*!ODGtQx z4Z<*^eMUHJaX}@v)fu;|X0cpqVVPbfszim^p6c>P9dHYI3uS>BJij_$aTc`p^GbDA zI=Z950+`hGD0Zb<9>kR?etI?{z$9W4&`j&gv#Y}MGO~lKF&8FB0&3Pw^dj@HgnAib zd_Sdl!WIP!=FsL9-Be7nJS0vqhm^pl~Su zArYImz6XjSL|M((9#=m0){9H4nYnnN7L_ek>+O#tq_Aow{LNea`HBAmo3NzKfefbBG5a#@=>7#D*?oZyeS|GK(C(Vcg`!v(A;Yn%dz z@G@rP(D}4^zxqWPo6$QEI&S*kNS*(mpO#r<_V>sYN8YT%LBJeYPy$lKXuurR9j6~} z+CzjMC_edpC2Hz*xZM~Jx>A>O%UR!MH|D7 zNjVvPmDV*suM24W$1+(kVL>3oomLq-N6VG809X}NZgD>^0^YxDB{7?+cb2!)8)uKdzq7~R9c1@^ulsiQCij`hZdEt!Ugcio9&nFy9U=pM z;e40<{XXiv#d$T}|ED`o#{WN$CE|SY7~GdU1_}EgWcL4_{bl<$`vY(QUTePq>qE)T zvcunH_58zgjMZXmv4gQk#U2U+V3??Y-;fXRE79AqF1(U# zfQO^A(T7LRiSEO;a6H)n2d!UP-?lzw{g?GN>n7`|))TCNmz^5Bd?F}~I z(2?BPB-4m(z@HnQtt2)e%R}eC5Gr=L)dY`m|B2D>~Fx1gL#%ER(m7?Syx`8UE*PK$9C!i<{t>4JdN^dj8PttO{E?Yl003b5m)h z{-v|d28=m&%UUW9Z$OwM-4jL!q0?7|$m484og2$#NX@YURc?nQ8$~4$Z$)AQYTOPa z)Iu+I(Aj_+Hzp^-4QO%GDz(dN6C1GN$f|<~49yrFY}*F3IL%zk-54)>N@Z*Vj@)qS z^l(F{ahr?N$OhE7Jv3vFo~BR*Z2m6xc&dKsP&ep;SES}y9+|Y zm{Pwho6>aPi1qdcT)9z6$hQGaP6%QmnN^$(*l}aZF57?z$2JzAQEF~@ z0~Q>O0O0m_Y^scHz=qrVFHNRZ9p8W#x8DRf_K9Q&lQeR$0Y6SyZbnAlfEl-4q|%;L z(S;GW^{epwjdtP1or20j-FmynQckQ3KW?}>pXkDlBL%ittQGF;E)==Z%O3vlunRSA zS{oo=D(`c$CHHoOHgXqg(x?@dAHkLq9Ac17rpL5nFFj} zD}~{1P8&{Gd_7kN1ugRAW|XtnUEub4GPJP^Uw57l5MqPu?e2H8bhCu>65H!^Gki^9 zraa?y(>#Dm$T|~r=d{}p5@(Brp>B%SLR^$+K9V=ls)_FP^nK3ZaJr2AM#tn4$z!r9-C?Oxq$t$_zX6%-y3 zY{&?rqLJTyOn<=Ri|Rg_DoUB6?1kNH_;@8HNzg~4do|V5vKQH3ue#`TAH{0{gtbKX zDlYXZDypyFy^>PdNJQ4UvF;-o;hcqDEAx+4T|=>A-A6F~<|{$>3f?L!r5J$R?&W+Z zBfVNqbRSN!IvHizoSPZ#UdA{!GubQ=a@Ol!D!oESlP|9OFzIRyCqo<$x|dKiyFATE zZlS>Wn*^mQMZ5O1TX1wNv zphYVH*i-D|w{M1f<6Y32gob#Jp(Egb?t;>ji0HDrK+pxFCB#j8-|d3Z+-Dy3EuCr+1O&Us45=wUymo+%8}}F0Hm6c7baR)`RFm zfNB@8CWD^lqVT$c)kZN6yI}RS7#q||lk5sMvsHGV*~Hujo2MmVi&(v8CcEJC*%DwT zdkM{&I5A8gL}t(yL03SU3tE`d6_CbIw`O+%=~0YyPFInc8-}_d^DZ^+^@D@LF4!#F zgc(a<&;^-^R3tUQ0yzM?pz|c%O_X!l?t;yuY<3%T!Q?5?!6iRr&;^P~IA^G9K^H)t zqFqE`VmyM!isE6TRqK8^;_(Os3)UGobt~s7#hri5R04V0jN|%P<`na{*R?ZC$|mRGm&5 zPdRJ0=o#$-(We}xKbfW6>jKcSC({C{V7q{`gbv_Ot{&S3kIzJGOA$1q-GYvbxB#?< zU0`{7lZi0W1(EkaR^FO0K&%l1qvS32x}fqzb)N*mxUdU|`6NDx6&f_&&W_To#&Aq% zMc{Z`vQB2)F0eZ;p6iO;1#L%>Qi3i>D+z3MJq^1+EDKMMJBfFZ2M(=ppVI|p$7DFh zyCCd#(&Y9mZQHuw?5RB}3FE4l)y?aIxD(|S5uD;(kam0T7D3}K2)n!gh*3JdF4#&A zWp1ZZAgkus6$jREM{u=&x0&(79dLEG?#RrNDzlp8upLl!s=rI~PzP)U6qRA5%~2ld zfUbMY0Pe}F#j@W4Y0c(&IJ7$8?9TqHL^=05!0iMJT(y!J>Ilx7s8F>*vpIJMoZb9* zBVQt&B|6~k4x|_L9S|EEb^zUJx>>g1g5c5tb!B%f_GBW65#W{3qG}QAo8JL@Cyf|R zbRx*hhA}yOQWau50bh3b(QgHJWg#*fVs=2?se>sX8pH}ZfUe2Bi(xF$0dsfgN1H54 zK?mfOh(|maE9K#iU@rx!>)Ry72|8de8&VM+$|&+XK(8!-BA*U*z}{V(q0SPuIn)7w zkDih!>7WA)liQlLP-CWnV)Ad#tuG(b0g3l%z9gv(xMea+Rbm}LdAPdZbwFYQPz%MS z;!p<=-bK|+y}``|rvntDgGuBsNIb5w6!8uqyj?p)gu8Os0g74eC7c8wZP)>X&AvS% zvN|1LcZ^F!M}xU+hk=IzBv^MlfbKZ&%4fU|fID$bcJ5(hUFd+d+YPgkaYiUEh)d{A zzgGU>p9a1;_~U`-Pc0|9lbA^>0{P!t#4YlS?{*q zU_Hw^?Eb<1uKQ{CZDiAbru(GG`Rs~!m3x7^mt6WzEaCiy9r12+ZgpP9et1trXTB27 z{Atedj&J|T{%>}|d!PO9?1T42{Pfq@7oaEaw8w2b_UG6SV_%l+`PRAC>DGzth4+To z%Olsvo*sKr@@L6!#~%8BQTN{Qk=9lJccxx-uE`{u4I!+{vaHLxtgs175s@y^q$w7} zFv(1k*<@z2nPihJDt64&B&fILwim>L4MYL;XTyG@H;NT2A}Cf6>n+dwobNSBR=Jab6`F_qhp9A;b*V3O!e~b(TZ%w}@T_s1sY#RG)`dP#)oJqvOG3m|e zAoxdce{gs7t-;r#p9wx1yd%0dcy;iKpc0)6hJ#DNDxMS^Mb3f%>-t}aS@>n@`>8w0 zTksKV?9J%=QZuP%rp`_s4ewu9%1&J6|INSK|4Q@~{;i42{2Tr2{Wtl`{ zhweArPr5fIcDdKZu7dwBpE%Kd4!H_Xie3%_;3hZ?Ea#uj!yp)UgJ68nxgG>#F>=52 zLT4)esAejBN@BBfjB{l4`yd&tcyRyyJo*i||89xC9Tead(F)9eS41z0o*g|d`nYI! zG#UA`z-rhr2)WKyMuHy!2wd?06n-nH7lJ|@DuL9{iMw7S7L>8E+0iaygL=3)H{ErT z;D@8wrb$%SwNr4kQT);>EFhV$34|$(&NwQF{*$>)pC6c-$h=bkMC|NiM8^oYy6P2& zE(ab_$&>^XADzPJhi$3N11o;^&k&SdC)f}I1J!ZO12c26d=Nz@bod>}JXw%`>cEZx z+c@0vt5mm{or1oi5rZ8Vhwsc$S`#_5w~|qBeZ4HpZDyN5g5lzfzM9!06&0df*=Kcr zPOLOz$BlO0q@~t2I|%W!E)oRKG^TpG3(&|y6#QPBNFM++!KeL?@*#60AFf2t7eujr zTvQaqf3<+0;W^~m^a7IF+OyVOqBF7DC*QVq->Ro+@_nY>(yhaarKgWyD}(NP=IH#Q54v)OsKPoc6HPEOKP~)^YJ6OOLjzIIbMN&T4f` zvU;`F2c^}UG=qJ|?d{i%N1vmEj5m)7$aF|p$@N{F{(U$t7%;LoU0y335pcMEJgnU} z!6qDmlYUU%EorV6(hrz^)*YXeb=izlwnu4Yvl|s;BVS4HFoPB==a|SJwW(GDwbqU0 zh6AOs!SFtl=ktlMlO>`Qy7xjZ7&o(LcFI=kx$#$XmHP_72!zY|nzzG&eJ9|G3@c zFe;+X#J|2aq6pxC6{%wXV(pYvn+io=u{J$vV$h?aC_qA8Hqv&JmH50xP(HOga-OF&1pBxZH!OE_CnZXO~2iCm|q)6zx z?cc7=0SpD$ldQ83Is;Fb_2kvILtTf2*nW8J-Ev}dcG8|)o7HkkJB0ydDFv1(EUG?v z+D=|=_o01R`}b>a0(uj`G5*)Jg=38lna!{Fg0=dU7yOS}$`)a$G+`PMBfu<5FTyhY_(fg!40TX5!Qf%q8*b zZ957)Qz|o7m>S3Q+5XD)DnAQTBi0q>YN;$iwkAour~VD>JIje>l}Ck=y-RCP8POke z&h6s*GggQk(CVoViE`pOzt=(ntQC^)78{$%a(|^(RIFe#EFWejI?8oArY94(h-p@Y zpzwhZETk(TxQF2MiQDxfTnwq?qi2dNe$4%4e1kSW3ox7VY$dW+TVp*Q5kFq6j4aV? zh@D@^Q0KRfhW4az@6;YJXZ@b=_QKRa;!D~Fd2)Ery2(#z!=WOKh|}Saun7j=Hg~gQ zEu}izzYE2v`a&V}*{jDtZ>qD3;m6-)Dz7Kjh~P|gko^)Uk z7Q(TSDTWEVW$@fQ1PHn-?bX5z?=#a$oR_#Cj3M<79X!KD>lZrO7<_i8`Bj-o-74$k z814o0A(yRtj5drpBLl!ye>QWA`y_pEU~0svX}bSDz zb5Rv51lVDwkQjgwhTQ^_hBWCoU;#9Ayhqy7+%s8< zJ}RFYWgZ6^X(~}O7d+Czp}I&MhJ=KAPtdhj4jH#FDGRVKd%MI1rYPn@cGA64jMl4~ z>N*%wX-QIlleT`W%c;07&fyo@PO0`urlh42c$_N9TDyGN$oVRaxV?>M#gvwkoISJo zgnB=P>3gEe5;-~>Iac~?bY{+buGW`y#*wdUyD<*Nvq43FYj)en4f@r}(3p%G_agli zg9bcZjZyB9EE1!YxW>bgT;%{pa6AsIz1kRhEV_k#nDqO)mc(oBXDJ0tJb_*8n2xL|yXB z)5C=v&NHLav#49Qg?Ayh4L?E3C}8EX#*O0mXa7vUT`q^FyZ9aY333}ol$V$+hbKl} z9-ccPVj7jCp^@i==k`Qa!e7TlG~|XS1|!+<+(1MLRXMl&_{dq>ul(E-8EpSNF7nj& z&%wwQ?VkgYYui6}N0d}i-f(Q>-0-!#Bk(ZL&E;}L<;E5N|NCOJ;_q1g*whNXYVzQ}&E{dhZVcfbJnbL+d-9oDVZd&&KGo#y_#!n(*h z-r7OlzrQ6PNd7qa+2l=R{aYqK!E|z*=z^yuPf6}hZU?vU5`RzpG4YGU_Yz+v@1I~6 zuZIKh1z7o?mADWFz+)3z6J1#PABz7t{x#5*o5-@T6n}YqK0XnDcKjSH{lfeA3#|Mf zi@i7YMy&kT#0qfxUkD1aJGMR67xO|p|6T0xKOX%c@dkCW{_Ts7>K^~h=$`1-XkXNi zMj{VKeo0sAAHN2cy}8JYWTRTf%SOO#8wfZeN(KvoUhnuKNW64yYiHEotS>Mcy>of@b$E(C-VXE)RYtZvUt6XA`A zTCxUM-Myczcs1~8$v9KVr)t2{0%;+eAotA&H4y5pWBag{3Ns7dJvDIYZ6?)e=$AtP zDqLf@O;1}j0O=l4hrAkyG+6S!X;A^Z8kjUk!rYN9S~Xzl9zt>|Dg2ed^3`!s7C5H{ zDvcpX2#j5%mzbSLFk2RUR%#3)B;}eZbJz{(CMGD@;*BehgyO;%R|BH%J1`DBKs~^y zr5=^y45pr8zXnoG%6MuZn**l?P~B(t;+Y!g^bXcG*-a=oS|}e<1EoH}z{7%Ds(Yvb zr#ou^*4y`H^RmM-r-B-I^;RKQ6Y!o5+MzW->yz8`Vd~EcsR0^`5UW3~3Wj~=zg=82 z8U$4U?X9x6BFmgWF`ZS=Y^*JmgCIqb86~$0q}?xsVhBH{3Ygtz-tJVvu=}uefrDqN zK-gHJVZb3iO4091stSm`1$A5^R4Kk&1<39X6-c`ZgxxzYhPciuu=VzdY>vJ6(Ejoy zqdQXtxZWWK-jSKfA#=&Ef?jVnzr_+)1;5_HJ{JW}1ba{g!QNVdu^aXY33+j=px9&+ z#)1YxQ56t-E68vzG{8DlpzJ=~oK&nTKz0u)s>_{KKe0+rs@ysPOdNcJ{qL&1V1 zOy92pWy7V0(T(Xc>s7(B0ma8gh7Od=eiamZv)O>5a646CZ0r%xHRhZuD0biID6DT| zb`|&N)jdPS+#aV2T-_&G5ehlG3RK-Iy*`+!0#omh{EqnM zDPb9dy9!oKzfPg`Syj;Lp7GphrLzi9yQmY_LJe#ZhZEq%?&>KlUTdkeOiHoN>XYe7vr!3m zAgSuf6tXf>0M8Pl?XK#Ruvx*F3LygK9qi70#IK&jH`SLD)qJMAdLl2EyYah3Tqw`? zv|l}eo3OwG2@}>CRF9|N3zCO^PWc=B>K?8`4vs#@gKqUWx+e@+-%uTtTCk=b#7^&5 z2Y4jcX6~@7yJ;fTmc8n+bj(zd+_1Q_q^ieI37NbqKq^l4i8NqkLLxBI)m^kSxuO_q zrffacqs0$ro{=ok3lfn(T*lDoRd@2v0$#3C1FQN32IAC0IpX5Zo$qyI*7m`4XKfQoFA>AdbF%6`{RZcVWcq%sExWcHjKG5NEqpk=tSDy;DVQ z_f3eeL&dHlxqB-UI8OvsME2G*HGcIn41Ia4iq!6b*L~`+Dl+?24Dgu#DFkNW?3|Jd z;xV^BOYITkQ2w#CnsTei@&3x>>=+g&zltOmqo5%mv#N;mo(s;p>{6?W9LKFB&(et$ z@1KDal+`^|MRr3anj^ueP=Op$MTD=*1!x?q!nQ-C!=Xh{D3Mo1pl_<=jO^Z6MVb$` zudRdiJF5uw?ds&w4x4kT2zQvSnD05aig@oQT7h{`u&YRS*j$MQ>Z>B!Pg<+KvCs-$ zf=I54uxGr5ob)z%C}_}`eYs*#Mb>ZCouLGPLyhgZZHtKWOAhwHWJzJuhRANe z8|ixFBBK7_4?oszor`DzVRq6G`m`2N0(zvGHZCIm2ixUd=jYkCh$?Ur%i&{0$Yd7L z4R(|Oq{yKI6$cPTE?7i4*eVRe^XSRc*IGm~5FgnAXAz~KkG#3qCHzGcg3TjsA_->^ zb)b)+Z^B^gMYI9otsWWgUPKSrWjbL^FLD>r2p~TdCyZ%(5v8EFxPY@|Y7u2%%b7}S zfI%$3X%SW6biOQ3wn$NCVHt88@vhavIg989eR!}=P7h`l(F{nFD&~atHrQQ6J?J+a zFqQsA^n+7y;FQV=-E_Ep<;ASN&LSEE+^OKDB^FUBGTGyuMHC8zBtm*5 zxripwjk{}V5jBD}ydBA6Euuv996;f97ttR2XXd2KbBRTihfJ1|peJnFi+V2ZWQQ!G zE1V#{P%ub{>{8W2!8vykt)XA)r6opZ*gQ2}hR$!En4d*dgplT%Mwm`6q9t@MEG#4! z(F(em#NCUi1iRYRXe%l4Mbv`yg^yoEAGqw`IkYwx*G;0#A_~Hex$*LltSXhEImSzB z5lvwWd;YMm?M1W&Rw}qGoJCO-5Fy}`!6J%+p)H1W79Cso|9&3LiU0q7_G_YVPX8eN zmGr05A5Q;A`i0S)eP?>yejE1n^V3hUccll@Thd)%0e^sS;b+9He)06_&dr#7Zy zumS!MF2I}oxBDypHU2a#fM?jh@K3ZqY#-tu@CAi1?7PK%Q_ul4R z=N<4S$PREhu>q%fd!n!Qj`lWt882%6#C^!#;@(Guz?a=y-4D6%jP<$Kxr^>Ka02ed z&VCV`*k`$e?&IJBd^k23JI8(&`2)V?d=W0dcRR0f7M(dV2n;!w*+u7Eq6Ln?#_rmm zvHxy;$att(}wb|;lBFR5TZ%*Eq{7&@Y=-uQC_-yhcL<77r zxdL7=mAr~*fK!uCOm2{fRdvT8RVX3wSp9{Z2}3NhITc zk3Ss0H~#JT9r0V^ABevtz5*ZM0YwW;Y{2$-Kd}MH*n_bj#J+$>#=ByT*o$IQ(Q51} z-TME3?yqgJ3!`DAo%;B$Mpds9-d#5fdQ~XqhP&P&zwm1-cfD0`t}&bo2fCC+V|;cB zr=%|B#4vkJRo%N3fMuJWlYp3Pp=+Bko{i6D=kf*pAU?9978sDd>j*I*9eh>x16^Ch zGN3-ox%n>W+c?M#D_!@4dH{_R6DD)JK#8I{iwn&p$$EwdGHTC1_?)4j{)hmGYo46( z(*;#+>x7A&f^@3?w4|2t{wM|0L!3MJ4+wTCz_as7`J$dLl!wf=Fa3N;Jr$mNy1>Tz zn|e&os;6uv=n&vl&lL*F-gt|7>ptyK2$g8@6pmM z+3^lFzsaON?eEqKdNMU;4Iod7AB zneYN>UVcK>Kbd)bcp%HJcbhg>=$0B+7ZUEnTYD^Xz7|6>U!`s~uZAKOyU?_Ck{%92 z7e72i97#(1z#Qg=3#pfhF`J1<&2F}1LOo^2f=aID_3ssL5usGFP2NmTaeUsm5K zPW15u;U@`%5V7xXU%gDXm)x7o<+gU6P{Yk*sL6?L^AV$4CwgR#>1~nENRy85mz|jP z9i4>xvm?n5=?$<(R6M0!8;4N@HA38EA|KUPv562iu*7?$)47}lU}q-gCKobK)k4WB z<@nE-TF)vah&GF&ejxeP_K_?X_B*s7Tr+@L>RmDm<dU4`z?Tz{%X*z&EW;pL&PCJ-O8FYRUukX2_#Kv$kEs1mRy`OfbYqu!wNz9W z!m^rbGIjkXA&#JM!x1slZ(@SjgBZ(NXfBWf#PgLM=Qu*qNpuakkUs!Vt!9#r)QJu&eJLNa~HwmU1-)l4OKFRTi?+y9UQ$B zze12dlS z$j5${wu1Eiur_MjTorsmy+?$Z4`d~TZ=2enn6)u_&$v_O&FiT4W8^#B%~#oUvf~D* zH`JyTOB-w&{|b0)RDV<*1bEQOnYMzlQ<)7?dC`0ID#kBiq|wc*3Gb^UbX0~{BT6)( z2L^@wuxTt_h24Xu*X%;JasD9GL(i_k8rC_c!NUuN8^&Qf$B+r{PR@trmKcH9L#Ddf zq6i7o(Hl)eW((PQUl}NPvXJ#p4DVE_rf|PgP+ubzbo;gU)=YbeSL^WIHyLb}NjWw( zPbAXg^~+P3i?TD3cWci~&4z}*v$c$2yii=1N(n1k&GJlKyUZ3&3H9>4uiP4PI51>_ z!)&$A>lu58`OwU9D6UcESRf|2LRy{$EvCvL#YdC(YJ2Gk ze=K+=HvglQp)P?3{ZC>2|7z;fc+lTK-oIArMdbZ^E_?iwQcu8(-Xr(lAHv*!x8Og& z?7z|<^Pfk=|C8C@Z-jC1VRrU+d!O{)?fnP#|9NlH%X;T~rx5Xfm=|~v_aXNI_owb% z_{@LAeJc_FFLf*KFcJS}xktNO;Pmfw{>OR9xzG85^WV-L&Ig>g67N5Q2f%Zj3!KxP z8M%KZcHQrOEf>Q@_#?@eI&+!A9I!Ycb{Hb@aiDP zo7(G=T?akx)h%vk9lUru$}B;x(>TauKlJLr#G7P;COBZK4nVxc1P4mUq*WJucpQDD zyAD3Q%g~YFeHXgZICYTXzHxG%P0w0&VB(%}R29DtNQ}WpAZDB%?K(iQpuh_wP91c( zPY9G?aIXtEtc7vvfWrj;ish}d4lqm{*kr{JA|aGgb+F(qB{A@5wmzp09^4oDk=DV1 zyQlK=U3D_&!lp&O~wu2%;b-qdbvuMRFOv16L{HdO~0maLArY@-!d z+&Z9e|IDby?WXD=!&_jcsw_+)c4pi<=rHO1Fvt}r({&JHwa24VYtn7M4o18gTWD?+ zhpB;}4p6)mlXY7Y_3MDe*gU|##Y3dK4raW|NO##Pm^SXJgB|Z&6O{@kcy&-?2r=?G z>5*g|*ti=xu(1wcJh&R8xkl;a)#lv5vD>PlfL@)Mus<{QAlA?)ImW^(RRk3*}AqlfLXr#50z>^;?|Foh8t0zfpmRPOn2+} z8M^8N3(3U=Ko15RL_wFw6p}`Y}3ihr?sP z{zU4CJ_$i|Hpe{M#bpd*dE>j_)sHq)0%Ua}>(qDBxlEAh;y$bX1XdxLDSmwiuULgP zHq?*8W_ZxF7G|QZ`gRH}Is{~c#%d+Y#^V`gtY78n?)o;0`>!a6Q$La~R!Xv|+Em|4 zv(J(x1szh>o!RMGRlr$*#p5$wKZ1tJ6x9VfqWFemHMquDA}x*4ceoNEYGDE5HVkWO&b2*2vD zUQh8(aooeBVq+bVKFCf>no#QTwCCFH8iAIS}))DUA+39_WI$}LDz0a;A(#gj=TpsSJBh^>a*h)$& zV=K?pk?#_O%MMz4Vn4nlRvj_lGY)(g)DZ5W$w}adl3zo>Z)P}Y9xNQ{5b;|yN2vz! zc{P#puv=*M>U0e$k7o-Ga3e--wQI=w-dPFM?XDr>Wd)YX0DQ`A@4KO z!&VJpj|0YWd%c>-cz_{feqqF|A>*;og0+`&UJU_H+T)RlS#q&wY6$tZmmTlpZX78Q z@%^aqIDhQ%YRGto3I(8dx@*Y!UE(n#to96byc~u{?3##sy0eU{poshOln9Tm8sdIu z`_WK;uxbeY9&C1Fehsm|nLVB?3;F2{HAMa~qCy}wH0ny5YGVz_Ke$fT$Z{dJO0R|* zK$=gW7gVKG4P9W1!-edo`4RP1%tVwRU(lw17<`a9Esp{IR>;n&<#J5sG-cq673#K`~6`>2wY8 zzb!m~M!h`g*3ba@!w3DENPm4$EX{rm>AzXle({)?N!Jkj+kjG6{V~0o$b8uGvJ+6M zbk~siyNYmH5PE?vHjD(Up#W@E5QFiOonCNi2>w2_;04s(8gkzdd*IiVtRd^W=ZXcl zhNL%nk!46B?Xm5aiC}SR2z&gz3j1fLtQwNOCkx}2S3}gRSD+kq*AVt=Nn%;ih3dko zA@x<^oSk-S$ohWb{16{F`Xbvmv7;|g?rFb0T<&`!%Gy=wi4r zRAvUe8p51KgSj)Er4hvw(P@hCmlG0GXji>U7qS z>5$5-1DApta(%0!>BdTC)e!7G1=gaz8bbY~RhU8%A~Th;6b2!Gio98!pICv`XLw50 z5d2$Yu9tAIm9+uMze&wBlETINP{&Ure~5bT^j_z^%72^p0_^Hn60^R`JKRhAv+h6L z-@89|zwLg-y~%wSyYB;J*1N)ex_hesGWQtwuvE9}vH$+9|2Mqwzf83Ho1JT&eK74E zjoq_e^f+1Zz@Q<)ITCvCtPFla=I1@-qDK zPZSF~-uQoo;s59C#_vdcJn=#HgM`M48{e(<=pVv%#t=QH0->=x?Jx zi+(Hm)#&H($iF`NYWCv?qNV6Cyn9cH9-F>Dx+S{7|4r16{7?G(SgdYKzZ-vwdio{l zef~XUSG+8JcKXEhPVy^u5?k?5@blnX!Iy(i`zyiCWLSK2a9wb%|H0q|K?SVkS-}Ot zY5twTvB65;P}aJKolkX>U4Q4g}pW0xvB=)iO@&yG%H<6F!(#BCdCm8b{;c#s!&LahlC z@G^yzVI42l^6rtTmFg6jdm`Nl9{TaNri?%d0MXlfyPveZm|qof2^ z>TLx2vNO(Qo?wndmmo;~Wdf6}5x&G@g2K0XRaUjGctT*__GzOF#U5RMtMQ9s;>8{j z7`uI|7yx2_UH`Dz%EUFgwtbf-54Ikb#@VZzcpRvl^Q3WPw`uIt*bW0YskcPdPCZR4 z$sI_Y)KP*8$~C2Th00t*2=xTol>d3Hr(9Nr#ye~EcF>QZ>ABRO4mv>|`pdPQi8}3%iD)4zZKT46$PHCfHx z3eXn2XGydgJWI?pdn?wx`d-QF<9<%dzfTrcJV-ik(~+cyonO+s_oX$Z(q15geCld# zDzF4Z;|$Ce{@Vrf-8)r;wl5?)#Qg9z?HwHV$&wX}h@D|Cs?%v&?ecg@xaQa)RIIP- zJS`7byl3lY%Xpp-N8YYuygcl`Qfm{stHr;mWiF6e&D*7KLMj5usGYO(Ir_Yw>AXVU zTA0pu{K(u_+M69PP35xfp`js_&bFa$(wmJ{f*%U{ZqA=;9xr91p7vz{pZg)vN`nbg z0**U0$p&&NKcx8_Uad8?pE1o!JpQ0P6)sJJ&bk$$-rQ8#?<7xeb*0{9|{ z91E$F^qO*}#m~~}lZQ!z4)bfJxP!-yn^#dFP+s(6ZGFBwFF{?tzF%?V#A0#7oU{Vi0t1k=12y1lp=?(e*J<2~A5{!1ViES^6GhQuLh+3i9GP2wX^3iGQwbFhH7`s8gL!dEqQ0T-*nL}Do+%gg;iK(iM2DYKs zt0Wk&^v%THu6)hkfAz&gRCOdS$FP6P@kM)FR{G^BDlP7nG! zO_Q0!=qcuI!WeMN$qtvi>qXQQu!y!jrYn&XbfEB27)((fGh0RUkUu=!@J{MDHiuT9 zc{~1JLYVR&=I!DQHk_4Y4cDr(TWOR%sU+q?DOdg5{fr>s%T2j%K2KA)$?qjnegPy9MO-3F4gg$>&Ns6 z524A?$mKfXH99Jx{x^jpAJWAk@+WgmBH|M2V<1eBvt#ZedfX>gb-DjP{m=?c(TnA- zn@lHw=U~FPo62W8IuEi5G?M)%%@R1QNvwkPuZ^Cgv)`Q>mv)G5M*I z-~Xnp!4tCwX4ALG09|9b1+M@GER+Lv8C*LbFX{6HOUhc7dPExH;Lyp0`hn;9u(8t3&)A>R+W>?M*~oXLp(o1IoiEe-%f;c@$fxm`UNu1xKge-$E}V!@dTZAHD^FL3itcP)vF4TC4Qpi7RW629P_g@S+vxDX(Eqv z-jIZWY0hwSxVrgpPS$$pJ*(pWc=HOLbCfk=A~%9UI=_&5zK#Id(+wGOw+_$j`<8e=q!ccced_zA^n4*!5nT-Vd|hGt#H0_pnnvB<%+e2lv7N@CD)23tk(% ziunIR@Z8{R{QS2DU8zU$^Z!BWo2k#HJ_wWEO6n!B|35!+9|84&taETjW{%_dV*wf@7yxhLPKFuD46W|crw*ChDzu*!d zx84UQz>@VsYo9d+DsirLqP5-XwS221`G@3P$_wybJpEshygFG*4kgb_o{-#`JS1ts z32<-XuEb{&A0fx!a^jjqDRD*OjKuMYCnOF_q!N+%?_mD_3LXLP0DYK`KRZuvK z3CP_G@LZ{+n_%4Alm{9=0DNqQ-6jBc|J=x2A%}In3C6u;jXEUV1mxa^?NtcHRmtsc zf^YAF(q$O6K|Mvqjn!@fZue@Aqpl{%_RiHC%r1IE6L|X=ZqyA0YMdx^q;_utavL`Q z=2Wr?!reVp*=IEYwtK{Zue%AH-HzZAY*4wvye6RbCSql$rLx^kAnje3(nx}h=W`b; zy@=NY-QL6&jTCY-lTH&byKh{b0-YvkHcd%N(;2G?h7Hre)QH;zz3vY;0-a5e>+K*W zGqd8rzMu6d(*(cXVPeVJ3{^oB6dNMckphVXvtxykLz)2DCkS8x<}4@6!+( zJ57*qSiMEKZEOOA4|2ZEYSyNA>uiF8hwTxPmjz8=@U1z_Sz!XcbQ1u4tvo~u1Wi!y zup89um1+WcZ((CAE4knbO+mhe%T=Qt(oK->Z8FN+WH&(*^jo|xvN`ZxG+D0+1P-IF zN&DN?1pCJFB<4_)&5cR~O#v@Ywbvv72-}FN+hbD%#ht$?i6AT>l75e&!(**zS z8&jU9z9wk*Nd{(-Y=hi7Bw!(a1{46wxJ*__)1^TtLiG2RPS6STXBWM=v9 zCNTFdiG$!{lj;#mN(H|OJ%+8>+ zjs?vlqg_N_n28Nqj>qndaflS;qJJjKIy!GUErPF0`7DJCXEa$S_#re;LQM_#v}Zr)yVgM2AeZ&J-}Dr_F)*1Y8W z#7Ih)49yWU+05{umP%gP$w3&V?=;iWew8UgmaJw#C4uQGHqNeapX2IU44OVAT9*md zZF)S;T|$oSHC;YaStycAtuW#@9r{MCM6w*XO`AK#-v->*Zd$x@6xDseX(st5>1D9m zrke?dKOvZleO|jD3jLBN0Pr(EN@QmGEIoE?`R2pqOE5rig zgxu4N@QQy=2jw<9C=hUr05yK&8Vb9b#oTYah{Ixbp5T~VZrEzPkhZAI=E`2<1yqr@ zvcBcYZsTfRfos0-n5P>DD12BXY_r*gp2h-SUOj`2*0@0@8}o=O5?y8*a}2ZahPK;T zV?XUd6A%@0L<3=eepvheEqA2TKo1~m!Z8chh&1SJpcCL^uVQaH zkHryvW>VG~r-5F8SK}OjZmNM|u!W=uyN{hI3l`EqC)hFr2FZM3ISLvm16z&jEcg?7 z0vhN8J@b>$A2v`3`k*p|?Zs}O67-5|RHe6p9*=m9+?9OJqg z=m0wj-^QmUC-E@?8u$&Afi|T}Wx{Kq4{VagCb(wOZ=e%wrrC`W<2TR>HVY}5vY=TF zGy;k@H{&+Y1DL~m0m>*fIzW&5;WrTZ-EiIaG?4ha!*x#>K_r3?fW&Da{AnFoCsGZh zKdsT0Ayxy?-!qEHvl__!o{^Dx3X8F)&omI#J2WXHz-JiR+(2OW=MRjD50KkH zV)qNag7H1sKxB7M5lhfOL~p`;E~9bUZXliMZ3IrLfn46AoYYD$Xg83`y(ESM#cd#u z!%QJWNCgeV@m40izy+c?I1L0c^*MmD($hc`i^mL;(`08iMYkJB% znej?9vg)N9h~jOqO|w8ulFJv9Mgv*g3vok!va^8LVOZsdb{k0JPzY4I8VKZ_#shVgh172#mp9|AfkO(DF4I6N?>LyK)NUY)d&h)O z)N3GzH%T5G=?b@jB<>G01g9Dzi+Ks;N3!Ik8_42q;S#6pq@4|faj0p9q}EOYag1Ci zxQmz)#4v84!zlF#@JdeuVZ2*5&EhSrE1d~6XozT*{6p9a8X}r2NJ0{~NR-!sywyN7 z_YmX8FhwlmFHu6R?`$BIw`V8E5MT^F;V*X^$mV{i93;ncR|AQ>Q{9!6heYHHOBGU? zF+yoZI~xe)?UG82kQX#wI>%}tntRTo%lrmnc{4gVZia|VtASMRVMD`QLn7m-Y)YGI zAd=fuPQ$sJ*FY+7%H=A6W-wPakjr>uo7|XQ1KGUkB8?J;tTNiyad$M?5x-4w(qn*Yu{+UCHi)IDRGkhQhQ(Q z&E(Cyz&!|4G zt;4Le6;D2ryg&KvO`)uqL-g}5%cv4atK4TKp5;ExJ%w0? zL-3^d2aya9INt`l_?Yu{XBl6L7dU0mi_4w!V&}wehmYVW=a5)Fc17&m*r~(^?2H`| z+Yqyf5O^^9Q#=yBNDhE^M_bVsM5i?m;5pHOXrJGplMiph0gv^sVD83uM7&)XmBcj+ zXf}JXa~4M;iY0PKg_Z^^TK5h?EP+Mapm*0N1ZgtwB42h+S1II2*DZpW6>;E#*{JKo zg6849igl;!ErN*2<8XnMx$z|e->Csvkb|zh0%;YQlG(2F#7a^Ooeqc4)YR0`b%wcv z`O&2@Z0euOJ}}qyM14SVP+>eqla(DtvC`#>6~z>>B0i@|b~IhWS16|6W-V8HXXY1L z7nZ>3ky2^R!7y`&R+`%=HY#H!^BFC|6gId_MZd`!27)<85H3r=EIAIw1WTms5}sJe zsD%P*T0DUBlbJKcfN08NoY_J>D$_6VTZMA>jc3TQ27jv?M?|iGaLAy6lMP|k(i=A&YoiQS?`%LGH1kRTM z$Sz_!Y~s!dtvetV`hpmzI78{c2sOgWG!7d`boPM3Q zxRgOAL?vC&cAK1^#S=(|{%T71;6{DS(5gdFA_Jee=1N2z9CTO%)uq)*M33+(9TGp- zm>H;TS9c_x@#aq+uLHP!e$~%D`4pW2?enTi8^t7fzSy}}UoKAZCu$S6?+qgYl4oj{ zx6kTyiG4$tk@h)EE|ugdl52VOb)nrsG6shQJZVep?0>($zCcet==0$llBesaX@BbA zfP~~32bDuE#_rP|5ARRzSv_Lc;keq+LV%ihr*?pu)Xvprk&+o6eIWeJG;n70X~qlr z=}XSv^kcewfx&1V&(~?Iw@}X~@X4AF_mh4|AnAH|a6zxCYs=YV~2M?O^7D{Mex!70C zykff$=DPcwxePr%t=X|;+Jn`ek)Ds-W)8zGMDi;-=**5nywA(CQ;vqm7ISK$_3zgz z=75I4Zi|y0-_Wv4hHc`U+D_IQi&_j%B7^o8tRI_|?f|f1c@j5i=kfZYsmX9@jeR;i z4x@~cno$Fnh_-mEMAZAPI90%}CwiqeA7~v8Q|j9xm01U{+|R3_2Hl#V+|hZXys zE(!dM9jYY}3irr}*Vc{i`jVLU)Vjdyngms&= zT)2xw)lw#p#C{~Ut|H{n8bQydp3kCtdcQPfW37i=ApGk39JlfJneTAUNU8W$rUIpG z0ZWYtbj^De`$_nl#n10Ezb6@nvA1Yv5^ALmSDt6Sr)hj5KMb{of5|Z%|D>)T|0^w8 z{8wu)8HlKRA99qJ?2ae}g*k{22!W(3=O!a3nj(YPMQ+wEm1WrkPoHCoD#smPGF1(Q z_|#PNi#kd}ITC$`4l6l=l_Vt8b$_C>TTZsw2NPYZuQ8ozpKf}Fd&IQ_1)?+-iL9NQ z&I?<^^n!Qx+JiJ|aUr#BO=VFCLmXi=oF;m+E&%db@EQRhWnGD1xLO$0mT9)?6-QkR zjFzDx0;#p{%BDr41H7Mx&6A((sD(eXlL-wU=E;HhLt#Vij(^sSqFh7`^kROHh>3)f zn#fTFTFO(6Uc-T=xrD9Gu)_GyHm@0(h+JvD!UXp(RaLVb^Yv7ThVX9CA|90HH-4R7 zF0yxy{6=3>1jAR?ydu68m3-v;=Ir=jR5LorzM7zueCpliK{$OQpVQ_oj$p3Q&7E_T zd1hpPM43N|#gWNM>K<*`wz@elcqM5I9y;i3$N}m;q9dYxZ*fxOfU8MQR`pdSa2Ojd zy1&xCY~KsjjYQFke~$YXRd?D~govdej^08n>i%AM7FJ(ou7&)>n!08+L$bck8_=dZ zC~I>3)kc4oO($c8)r-h{ab5DyLuH3@!S+YJWj(?^q32i$dBxWbg)U?0*TGNc@++U(ZI5FpuI&Fkrn#x(>XJbkYSLk01NWo4Rv4f& z`H(I~90+WlPiV%JVqto=WZNN%;`QhaE@-`#Qy&)^8cm( zkp4ybF6{p|rQel)133V$NtdzzUxxjEFug6ENk_5&|2()W_1p`BXl2u`&T{!3QAj{}m5_yZq1jAA(xt zb^fdTc|Y%8p?m5l_=o$J_h+&Je8;=PyVZNMx1zZKp65Ny+v#55I*bP?7r81 zo%>4S5K3+q7692h?{>G7H!tHn>ih;4fG;_pWDHN8{*Sf}w>DUI^6$ytCx4l|2mAl$lD8z^pZw3{Qu1ZVBKXC#;QBkA%m7Ei^yeod z;28HNzLWTD;^xHr5^qhs3T}X_$O>>;;)KNG!zhIN;@^sY9zTHV<8LJE;v8`Z+4v># zGl@dj5c_-VSFvx!z8bqZ_HLK~=3Kre|3)0bx1*np-V}W+d;S+j z$D_}UUL4&MeL}PoAAtMU?b18CmjJ1Ejb!mi#}I@rBvdEU=_LT`ZR&FthKTnr0bK79 zcf+;)t}#K_OQ6@i!}~x`4_N}aJ|SdwVVJEWeX*8+v3mfqCcGsOY_-x6W;xuo1c1GB zcpsmUSBncE>Cu+JvbU+3J|z1ImH@Q3$}Ue-o1xNJW(iz-2O9=pi2-rh#8bvw0^%kr zNjz(3@|{Zn+d!iGLGq@Iq}jLxzCDPMBu5?_z~7-ZQ@67O&<$`Wn5eS^)ZMp$=3OWS zOMu;klMy^*9Kx(6;O?H0>DgTO5@2^2<<0WQ9pZy-EdhIzr+v6$F9CY@?#I4A?Ja?L zV>6R!J6TRI0eC}?$`V_e(K^~opx(Xc`V*BymjJy_HqvLcbnT2U=_OF`ZK1lSQr=$@ zEPSlZV$!_?7QTy(rvUpzjVUZTom>JB@6OH4buR&iYmnD^2i9N-IGiluqA94hym1Lg zd@w8no*S$A?VTmy@xJV&Xby)jfsmi0p@9;7G|Rd#r`NyOTLLx*UcBI}(^<_@OM;wZ z(Zd8WDP&Jef}B@ahR5wCkaJM)eT8!O5~%sEcDJ-E?kxeGZ@LVq7YgcvvjlifGF4Th zmjp1MpG1jHF9DcuGqT21B((%$E&;?@bDUlRFW>q~o;Q}Q;7h&) zQobEmku~bALzlqGPY$VMMQaPyJ{5@e61aJ<7PMyxv>ZwWY=Bw3v{B=ynWHm#dkNUQ zS9JIT))HuWkF>tK1X$iLn@t|*S^_KI$(UQe*>jh`%=@7$lVIr1B>?m7W+w>uoH#36 zOCaXh-uGwiC4h25FM%%HC2;cowj2EtAbGE_LNB;W;Ntz#D|qszmH@^>uN^TeI7^`7 zeHSlW1}lQK1TNl#5n?2{1S;NL#N&s+AT|4p(|FxWVBx!1Fb-lFa+d(ZDJ%L2zDG-- z;eGg+<9nW30tVk=ert-`CBX1r^&N1Q0K)qWomgrKC>;9$o-w+TSxbQ7J!23iSxdm+ zJ^Qoy`6L_5j&7)VYzX717JI>pyX5oT%7kXBbe23`IJ{42+ngnr-=msKihMHsz6c}T zITtufw%kLgcYe@bvUm@%mY9u}lKjN7He3V~=clmlALlK_8OuW9fMHsXQjbX2K zfR~78Azf3VK0-D}OuXIQgkbCqt*QCP-TyeruA_l*Ad8-kNb*6ZB$fSZq6XYcKu9Vl}nk zvqi-9i*^lSK;;e{t963?g}( z7AFk%Pqz@uluBD!EtF0RncNq$fVPmvJ<`cm3o+b-@5_MGLiqNL5CqJ~Zy|bni?T0B zwGg?w25WYPO0tEd?S{C{Z6RiHVJS1`sWNgF`!1$_ej{S3er0rKD&0cJZri&q04m)= zz;1)ju-IlVw_74;kzO-dw}qhX&lLnzneJ>MXSbU>O}t(Huoi;$RK5wSJDx{v4jtF# zmEC+gXd!&J(gR3NCg4oPYawt|RS|FOo)*G(H$mCc3@EXchJ)(R7E<@*HpiPuIGn}V z8b+o4$7NawUu7UN^%qp2r-dBeZFW%WcUE2tNep|x?02%$sTN{*ORi{UV|mhPiS*^A z2&cXl()T2@WXqOP062W}=*<}hEMm8BUIU(k7DAWxM3*wGEle1s?$*gkxH*j*wBJJZ zZdU$#CV4K^LjG1aF5{gehU#SrbyC6&?w0k zVz_(qz;PQ}NZ-N73jJ&$hI_a_-`PU^ZYTeY^v{rT1*clb-!0RSJP=4RkQ+#~kiOw@ zE;lu1w~)f>M#^kM_zHo1Wwu!EY$14YnF{GkW&fFKA%eFsS99fZ5hlZ~7E*X8TOa(; zFzp)~P0&IPZw1f9K*4yeF!e?DGCM{Joh@YVc4EFE9gwhpOs!T6vD=e7ZhA7=Lh5#( zbMb=TLg zSeTR|#cLsdarDF3McP@vg$#z-OHAI-Gp1Td;w|H=9J5XfVca(|Ju)~j;=wefmmbJX9o9k`pDLX}T9HvahnQokzL_v5c8;rKp@{!Ox`m)-kpin6BeM$rmtG5L z&4gvaX9V~y%BI zwUFbR#7zmEu99jZ#u=+^XJ4m@{O)7&OEsEE?{+l?N9-n2TZmuvaFD@~7>VVoucyAOLSP3|{ERC865e4z8ip5F1Z z$e%mXe@_1@`myv6)Bg<%;4SHQ#xKXxUV{m6DxHH1a3J=o^p@CGtn3}20AB(Fcpq`< z%W(Zq1^M9V!IOfW!uFr=h){np^<#|#xFz+T)SIK*QnkpRiHpw=4{#;%08b-U{m8^2 zsY6p~|1bW7{!hsX_$hb+-{`memqg#|&-mm1^ZiR=m-=Vm_rBjhUb6rMeuwvP{7KO} zV;jBuydQesjD7}`;C4#v%!8e`aS#i@!#9`+4tCA2R(R?{bu{s_Dk&j@vH4;#z$kv#{XfTPYl5T zeh?dNpUi>}S--UIiXUx#*7}h34sr+7trx`4v!ZWp8+;>q zNAg3k3$Ebj|CZ!SVs3IS`lMtod3o}J=zYo4k^@PC@!~fo`-m*~YT`4|hsZVfhQwlG ze~^nVbR^f5Nd zEc%&q6kA$%Wu}rjO98F5b7W%6XO0&{sSH`xNPh76J(*4a`rN)s=lcYcLQBQ?(s@9T zymGNrAb>SH!YVB*cjtnDZKcUdrzXNIk@>IEd5&PQrTsJWotn)So*oGs?(El>W%<3( znNc`WjPjjn!Md;*;~bMKbq4w@zQ>($LC}m=JkY5jwPXgADVP}*6jaDcgsv9m)L9H- zcwK37Uow`!&zn~Gt%Q@+WOgw9MaAOS-?N;jzaULfnnk#0A(uxQ&y*`^r7R~@JN@z4 zdphC*dW#d3aNlQnOc4)SR`Yk3hSBfR*NTx=nqrr%cXsA zg-oAKza99OKKy^_P@1%i*3pGeFHH@@G+ag_U9S=Zvy>}^=8rD5_v3CgQ=aNNQ_)Q$ z?jbDfN*&Z{3PDsdzt#@brp(+gpfcXr7$({Lu<4n}Xh17o7plLQ0MX13B)S&=fRT|& zsJM;awZ`ePT#LBR+-drsG5cTApr!n*VOVTTaM^mGC-Eb0Wt$`NouiUJuGMi7#urF%L(g8os>70h?4RXgS_n@ypt&CH(nk zyrZ=ErDADfu2674rY%w`_ziQ*GoQ{aM~LCIRKn9xIuPgeq>_V_NTLe<1505k537@0 zo1B^GsOpoGQzN;o=ZC+EOiwLpm&g)MLxwkKQN`Pil5&*S!{UZZ^me3W)g>15Bmzvz5Z zdo3s12|uG(kf)M4$z9efii}ym)+-@HW>U! zWoHn!Gac{O5^&%@s8292_UDtu@D>a+g+!-*CJZyO)Ot(oNtVg45#O|CxsXfUq*F-@ zDpQ5aI;PZ*BAIg|c?)DOK~7-8orO{|C{VL*7JL z{=h?%IVq_+-DA*_=v15YKvnqHoh`>h07isuV2im@yOg9uYey`hRN=vo+I| z-XaE)*xR)cHLY@DNP85~;=D~qRRz6tCVPPJrQmIPo1XB_)QX#Y&52rt^rNhnFThHn|YotgoCNkv)+6WLaB_Q?tP_V*kH8a+~D; zyEpw`=})IW0RR6>vHj=L&rUxny;T|N{u0~|L){&C)W0cs1v~y{22X|m|FFQqHSve3 z+fz4U?SEye0PFuHsdG}trh5EG+1dZZ|8M-~KTKx7CU*Yk`{&^|-|5G_-?D%IFZll7 z;JutIe$VyJ@}B4&f_?vw#Pom9{gQjT`yO`db##k;Zr**SdoEG^Sohhb|IYb}a~po~ zuT{&wF#MkbzyHzBVZ`)5Wd8(q|F6RC|6caxReQl6v!7>QY@cjzw>Q}t>z~#itoyBd ztZ!JiSvOj5TV)!|VckCumj7d{J}mqHNIsbSUh>PyPbNRgUi>x0Botx#KZ~gT9mx&J zSmM`-?Z6>-uwB9^Ag7;j!g7wO#h$a55#{E|0b-0ACA8*-i*JP$o^vd zs`y#)lj29PBmGnC*RdbPzJfjfE!gv49$Sc&V!7BeV`q|wa7!!`iz(0lck$xCJ^F!Y z6;8o&^f}SmISmJey#n%zMG8Hq zX9eiB9Sv#1eKG83c>w%%li1Z!bW8RM=qnE(LJwI1cs)VYexOqEN7J2$tQY+&0I{ct z>k%oX0459C@fXr@QUC_E$KxN@^H5ppa2s9qpUICjG6W-)NY6V1gi(%=L zp?mlWfb2O3y*;;3Daz)5;Mmi|8n;+_1$dSK zNW5kRET)N5D`2!+$M8dBtx;nPIX0tO%UT;3!u5$eGe{(t02MHUEBh1uU0*sq+LrEZ8dm zxxH|rPE`_!_m0fmyte{&Ybe$6#qL}Iy4~Im?Sf8aVm7q`daKc*Vyed>WCiecM;KPv zb^=}j!tEQy&^lYRR={t2&|Aj56+vy$`6LRy;;ew$_G#SjptAyI+c!0KfIYmk0$NMZ zmsHPM0jup9#*xuo2B+;OhJFr-omvK@-GbtZGd{bRO7}8AEuA6|#O~egPR}fZ*X|fG zv3}t|=vfB1ZO=Z~U_%2cZv??L9t-%yl`E-b@Y^jTmHjll5FZE2K)74kvO>WpiIDQn zvLLvy=QE1CmqBo`q92^tC|I855lYLJTQ+KyV0nfU#_}anX1-^+LSaH?-*x;5!SeL# zjXCiM>{{N(@XGB~OkR9NhsaLuElVfb!T%g*Ke>Vvab^|LuzIma!cW|-8S&hiM4lQa}Mu3&js8lhay zg|obSIV+PvD@6c4UV^l2$yvUNM@TJ%*~4ERVwRgbsHngEd=Bw@MXv`pv6ru;4x`zr zxr(*?JehbnJi5zQ&}?{N;r^7hm!HcWvdOHt%g^C_Tf19+wzM>e2x=Oap2a2hz4$B? z+~vzTK#`I?NZ0Z+X*$B=+58~yjT4Q#{0#X5zVx^X*vpsk1?XNz_9vGw#junuOu5UK za0BPWdeXUkF^!}w^7wEm+T|=?L=9OeWiBm0T?;-^&MaRjvyRkW0L84F;$+;ld;#D8 z7lKP?`Fv?0vjJZ|Pd?AmQ%EnLtE;H+5*V~3SbiD}E(TdP6>|i}WR}n26MA>(^NNqw z@>8WSh55nbk4-I~P45YvX8Q$a@d6F~5N%FwK2vWV<>ut_8B*P8YIr&|4Bd3w51z(@ zD!-H=y3(_JDidQ3&Y^C~MVDHB3SV5Kv9gv=p*b*omxJXe^9r*dv9BAWekV))FoEHt z@PD!QrqPj>)!uhf^F3B7>2x}TCWNMKo2G$IXc`4XCYg~LR4`Ujm7z0Kbt*}xS_EfB zJt#uR*yYH@$ul zF%Q2;bJuJ0+(l%5uLM|Vc=ch62>o*}U5il~49eIA){yK9nf680fo*|2LF!7Lc*b5t z7wF08%x9-T73gNnC~Mfhh%V5$xTxvTSWF# zp{9YvSc^#gZh{9OvvC#?`x|AOli(105uwk-&yE1)xr-v+DYX7P1QyiPi-`9gW+K$E z+0-Heers?c#nDBsT8qf|ZpkMYp`IQ>ev<*|B*M1fEF$MM8C~41iA7{Q>=D>1ZHox_ zEkvsWc?M4Iwnb$87J?I3YY4E%BjmSJ;ell(+Y4q7%dBG&QNNuFO&ku}s%*6#i-`N} z;y)QAZ-p&fb)JojNc~e9Za|a$%~mhP-Bd}4FQN-{N>#3oMO1<9LpUsH5SsvHF@eGk zT|_H5lcm5C8PsS5o-8~=*$WkJauGEF{w0CP00-IU zIu_9pwo9x(LS?m@rL~Bb(7jN|^bhShco8Mx1-@OgLXf^27SSAbX=Ek! z8xFvFQj2I08Ue9pes?XRJHXQ1;Ky7G8|+v_eb~<61{sgWB26u#No+N$W#c2=MKp-s z)zZ4wB07XL7KF7Oz@lZF`5Vg>;f2U_7L7)Mdc>Yh4lS3HCVNZ@EFjKvqxHHZhrgTIKL z(ZLLK7f~{LIcZ2D4_ZXefa;!z6~y{eo|;@l@xY0^K+O^CL1b{peiV@HrdQVb)7g(E zvN1zt31RTtxF0>_l-044Xhi{~bA!R;w)dlv^aQc9J^N8bPLfyvDcvA5pc$xZ-;YAF z?J2byz5Sw<$VVB`(6t|}WM@#xTM_hCu7~}oC&Wfb2p(&9!+tcBU9!fZH#~5bwC_hv z*`}KwZ4DS+JNKii>@dS_0^-dJJNJvmVnWfHLpA;VqOnY-1q{FqFqL!mqp=WdCnP#) zVun#wwiX~VB{~dYB_@QoABCll_&(CgBy`T*kIvG|A~D&dvHhqk9TOw@w*6}=3S&1* z9L2i*s3?K9EK4h(jp^Bsl5&!CA{;t{cmfsmC8bn#errE^3tOJ7wZwiDmM(2i+kP~b zEo@_JFhycNic42^0RpFu`_Wm}whWo#I!}WggLr8a7)n;L_XUk`_oKq}ik`r%nJske zM~jjD2{}8ss<2x7QDwS?hB}k>_M^b`@psS$8(Z>`P-jat6TL+F>9$3CqixX^YS8~2 zOZIc&fylpO$OTQTe3H~KI!;R`j7j+@P81#Aau9?4gXI6RyYJ}{u}*kLtDTTGX5o0 z6g$#zD)p^W$(D{$hZ^EI_5SawGId3LP;FV6nd5LqLbFy=+)8}+L5jX^Y zZhs#R!Ow@Tu-|9DCEP<+!8KqGLof-RVL!`0%04vIX?Nn+`knO)>$@=SJxFxGXRHrc zZ?~4LS6X|m-J!hoV(a42$E@dBCt62KlzJ7doUWkvxFOQ!aKP7%ld{g+kcw0P5rorQ} zAH_Zw`!M_n)!6m1YhshJq1X#z=fs`^&tPw;5_)IMj{cJhgg=38@Jqx5yenFZzA-u% znhy`Y$#Kj_R@a3;8%hLOii{cjw+a7p*<=n6n`>lv$Lr`>n{Q)*#UB?UkhF+ zw~&d2K4F5Z3#t3{A{5#j!Y*~60A*xaHWoqZ+uFQr7KR>!si(dy*cNd*2-|Gx3(}7K z(BM#^kWwm8{>G_1mED3hb3DrZwO(pIVbMQC{{Cmn!AjQHmm{UED{tmJ}|(P1*u6RS?S2R|rBVOao_y|l!t}8sXa(yFuD;RZLZFyq+?`u4+aoQWu zA>an8I3$1Bc$$e7iSl5NsuKgv3ST`k zMzz72=<)JU2AiX;>&*%vsGB4??_OPKoI$aL6;~PZ0b+`jM}pbACOPvy|!qI^?OFy!)AVncdzC-+hjWxPWHzO&7y>}1;eI%4J zPnk%^)=Ro1-u8v@k(bJ>%4_JR5NU+-=Hs+xSX5p3oRlz4b;S4=n}?bs%w+#k(~96g z2H4BLEO><6<$%+%K{s*U#iRO0IU-C&GuCa|Yhz?;k1u3~BHz+U04;VV;_1uQxbEU1 z?QDaEks`^rj+&C5yY$mWan*cD`)qVFbiH1ykVoWkadJ{=RMg2U^#al?MztNQp_lRN zwWaK7g5}8G5qh0|8~%AoSl0E>`gQ#_Lx~sro4!KQQ3`F32>;3do64Hdf*Va|!%vu( zK~-0nMR}jgwr$t%1_>?NA2iREYOyh`Q^M@Rii1!zezta2W25%Jpi_*UY>p87$l<1O zuoI@IVEtL!l^L1Y zn|xAxEHi@TEcAt;kLueqBMdqT*~&oyT8!jK9;MC9jPxr(Zsz? zA-+)?#@|>y0}IZzjeGdnAG;`OJC=N| z&M+h}4>~Ql1jKi6J~upQO2fgUq*9U6ukPvQ6J`pN*`j@Z;|Hs{^{+ZF*c2KRhB1w) zG229;q$|b7p z7_{5EPq$9J(+%2?3BJq?CJbbfZ5nKrr#mLokyhPt(o^=Z>A%S|%j%=1Y1FOqg2^?O z3xC{<{+j=Wa^ND8;A@OMX!@gx2-(nu7Fs7dM|8BZik669Sx};-4Lx(Q!n)G)h57}n#Y+|NNKXRxq?G+ZO=DBdO7oH@|Q2MM&5L5VQ?iDlI;Y zlBRss#13t6ewKPj*J{t?!4^p`o160PF&7tro5mTP%!Iv8+mJ6rUaw6P)r!I_t^aBG z{~u^c{!j8DV*kGa$KKnM<>YIUdy`YitCD9Xk4$#?|HOKK07kuA{hRzZ`3wFOy#LQ5 z=D*)R+)w$f-XFc6E1%v+sY&++Z_c}lDF36pjh^p?h-vzT`)&6V?z>?8f1O76U*%rp zo}qmI2e~fs0DmPS;Adq0f8Dvm`H=H282|Sp_j1mNbD49h)9-ACLC?0Iw0~v)2==_& z?GM>2g!R0_&e$)Y3et1z0eh3(Vf_W(ydPO#A$tE->n+wBts<=dY3m9s^W$Ot@3z8; zC$t{nHxi#t+?sd`dH>f?k8n6~F`5566CH5=|2_UF_W0N0pO1eez7k)8@jnxPp=SOc zMGZnH_Iq;ve;B(r_9fT~KNx#ktQ31)tQgx3>;EOO6JwiWsaPobr|ADge~cymmFS(( z50mjBH73lk@F)vBhQR% zh}dv0{+=lQABVpc{zCZH@KX3S;o0zL`10_%F#ZjMpBe5A1F8}!@DREG_k=zjdNYv% z^P#Ilr-ZhKdP06E+WM!~M_M0fvCDwfF#8G+nsv)y)V(m>fLT(R-6;c3OA&Rg5gRK5 zMR$zt*kPAJqN#4HYPeGdfHp}s7|NYxux6-CjpctP&e z89)I zYNEmXVU>ZO0o+E%rp6OxdZZzzKs1D+BP ztI3Cw{YwEkv25DQV947{MJwz#6mKbyRR%le!_$T79c~HKxL1-)H6J)$0xs?(`)blE z0Tq)0BTVesAId3$JUBTs*HHq|-LAoMK=itoXGe>6 z2_#pDi(zXmBuWD14w1l{PLzOhyCiHm=aztQd%>@VCkVmHStVdxDay-)N|k_Yw=zyB z5`}50n>$;uOMtfG*b*DOtpsGd1@7FS1`w0QDhXa&NRMP^i+%~b7B45rI^PJ_q*WT^ zBwA*=KOZl>n6H8RtZ0?4=I9XW%0Pd-bQMSQ#mQ;6^dj0tTm|2PxJ{H^NQ)<@@#ZH= zFW}GYaHf!UOILCce*1j?&f_L_q)Jx^c)n*c@Y#c8<<^xh2LTt*>HxiMUFkA8Oak+K zMy5dECa_AE(iU?#QM!cpjA^WC>0)`0I2_7BB)Bx3gv3sE{{4 zO8=b2Q&Sl7c==~P~`7X^4|JYG6Q1_#z7yYyV0LA)$Idr0ZzaLZ}9xkt4?stHmY z9ERE>$Y_a{p2K>~Z?)cqx&siP8?~A0fVQO2^Q~29oQQ zj%Hg>979nHzjTyoGdr7>%=AjzWpkFV*8EnhbR@4~J7Ys^D{W)l7|*}LDC4Y~BV>>@ z0>>|Hso4an(q{TgNxRshG)2q7Khz!<}5eJo!!6!6c#e+@H z3&Rklv`Wb1jSWvjqJ%i^qDM1R9VI03_KdJr3s@Emfndp6Qe(IcJG^Df0!vqDNpyVN z5|UY{*@=DTiEatuEUXROP57c;LOwG{BsG{CgiZ-5y-}vL6biIUDxxJ8cZ%UfL_-XZ zTtc$gC6Uka$ic}euY`Q=Lo0#tZgOg5wylIvCL?_q5_!1<%h@j>k~fX7)!~dSA(uPY zEvzLZayPl^B$Ko+A(OY6D&?%lf~X|3(Itd)YI@pULMrzljqw&25=)5YuKB5b1IJoR z$mQ-)44Cn}yM#>cRn<#@?Iol#`z~n`CFJX-g(AHM$1vgD8~c9Zcx7xv7hGhIsv+?`Da8kK#s zsU-yPR(O`N0ipYt78G{<5`uW3Nq(SdpzBN)+Lw^a+r-@?Yc&X0?^r@QZ*RU@Lhss^ z5Y$^V8ef+SOpeJV1UA6}ji8F%h18PB>{$}&DJ2*bo3NIU+1-0odGnVL)SHIWb7*Fe zAIuQ%i-_)mr*f?5Eg_-%gufo(YHX^|wuG2wINs zBBp0~MwYKfOm78p5{|kcC!%c$SxsqyrZkDf5<}7f3)?gDOpl%7_ z-Md=rI=O@Z-)#KznC_susU@WNR+M>?XBbpXZ|hn@n(t&JXLOHLoXe=J>z0t`s3%Gj zAdw2jL1Ql=+k4R4CSlC!TtcAlAh<-p0p5V?kDTB=lkH2$^wr3xxgmK5vkvLLtLb7< zYfSsvmk{=Hy%c&NxL86sGX4^B->^oBRLD)omyrFPFMR&#r#edr`Hj>W9UdFaG3^lb zy=(RUmXPqUq|nA}`x5ef+f!=)C6^HO1oli(-P&Y?B$g2O6x^ZmpR+52XEl6{cBrl8BdvdEQ7*h2$Yw8K6Tc8&^{I*D65A5JiB1^t{up^Y z{@?NMMZO*Xdi?hIt?@U&lf2Du6|6G5kzuDj5J1`AC;@v~u!3V$_ZuDO5?ep?P3S36+!3o|G z-eKN)F9y@#WA4w~AGH3#{knSxe1q?TZ}8=jhoRuTDDuU~KiyMc7T7|?!I<+G=hwsw ze8>5s^9kpc$j6Bmc&U?hE+SIkD5uBqosj)|`yr5rJM8y^JX{a+;IMt6eY(BN-e&jO z?RKm6OY45?PU~IP4a5YDz&Cg%n8T6D6@W%7@nqsxiTgt>iO(fI8a*kxgIt03Xgu=A z$gd&~MZOccJMziM`yy|R+(@p#Y-Eh;3ui`-j~p2}B$A3msRZ~-Dgk~cd?%FvZwl|H z7GNPfqDa7V!`s0DI>N1?KZG6){W$ck&|RV1LjNABQV;OD&>pz|FASX=I+kjHZE!k# zE%}LtYhV7W;9Bu40#8#~A{A8~*3H=>$?>t|>q4(-zV`qA{eOGl|9B55oGoQoMBcQ2 zQ1I43PDj%^<>zXnmub2IJ7C>)=gluTi&>9udwo8gcOxWn4FDCW!s z(7mJ{5AKzsi<#6f^pqyy7E+&BZG@mKsh28DZ-lkVn1cVXV&lP~hE}WUi}PG_GZi7x zLkfkBZCYy~IO>yViua#LSCTScqv0R?JtZmeS*q0M-RZ`8@~da` z8?oqzF;)T5KWRFM=N2_Cwe>5h@Rn9-5ndMdH;yj7nlI9ts}8GRgAz-)ip zi`BUhTsTOv1kbpz8b?HBZyVH@8R7uQRVS&2^yH!%aH-4Gzq58CJy}E#N?jhjXHD5j z7)SAH9Gq1N-peH>_Ajwh(qzR7k)Q{9ZCD@%>A2(%gP{>>PjV$F%T1t;gb*W5*8+7~ zZZ_Shp~XSOaN^x&i1k?FeZe~g?c-DDvZ0mWQRaxz{*l|E&jh#0@z5PQX$XH7OS-j1 zok{#^`KuWs5&hnu%?(<&FMd!W+}WDX&n{>(w!||}&*t;q1N!#SGVj;w8pfZg4@D;%%Z-K>^z2&reB!Ix5QZZB19NJUEYO+!*!XbdvyDZe+D$R} zU44(N0fI_GCZ>U32GcG2FECG@TjFq_#8ynH^Vh=m6JOSsPvPJL+lU^c-^9Ba%H##=zmp_axt`s+gp`&Ul~Gp%<~Xy6{8O+ABqdFej{NqwbJC)f}*2 zr8DNAk_Ws zf2g@>{ZQdSI6w$U@X%+N?-FG>q8#hS0JL(Z>y)i9{!nm{Sa}oX#bm1#pi`63b@x#7 zVmuE*xF=8zHrcGZ&h%h#*j;bhK~oK^oxG-TfF)0l=MtgD0epR;t3+2C2Zo6_%2DHh z*mNS4nhkMFBjY$UnVZY7St3&+dxICluLHyq{d~~+$xMG}d+=FYH|zYwJgtdnE`F(}x!jiF?M23xAkU)Exzkz&t zQWr{aTkMslodm2DoNm+3^gf^u!fGW9vq(I4PB;|a5S)|ZpCNVjaSr2VI_*uFM~I`q zR!St!2%B1K)O@OtLqn-5jsf>B^K#{e$tJH1-XSr>)APj6O4Nl+ZO_%Mr6~DCLQR^i zns23!2K*Q@*u*x@`kPf?C^Dr9UV=AC28aJCGqpA1QfwKZ2_bB>A2(ldIn@uw+sw{W zynKAB?KkEVqzYl|Tc%OZ$8x{qlJg=Dm=+rr;>1a&iKk}^@Pun?ckP>TU#8nr@z~wb zKbjW|OwUhEQa?=MwTc6#T2&!=p?Qm>t0dkp>=X&&y)t+Kq4it)r&L}Eb)-O z8*{BNJ(ag_(1r<)Bz2nI;KIp5dM5mOZNS`QzUA%augp-(JGFhY^My=Q>yYFrdOWzB z+{4L9_pSO8>8)(r`PxdrJ`o_p+19t~Ct&p>I-HNHi(euH!DOVa1Obg~i3@}DCxLut z>qITEHuBI}vRb0w72cSQeNh&E2=~fUJWS{Qx zRM8&RZ>Hh86x$~C=L}^}KnV+NkLo81TUI2mtv1XX@&C|HRgH^yMtp!KU{?=FB*TOe z;X;d|55^4?+Nxi=I#r&+?HT{7@EfhoBpj7s14M_e@vcf*NXxHuS6X|Dfec!I7wB}s zJk%VCzyU_+0)foN+%8037kq{=5haYkouRY|%mb{@&?kax^+4!P8Vb|M>oFMu{%e8< zsCVL?%J5aQ|KDpX;COA4^?5EOS5P z{m%QD#_)f}yUlwW-qqK7FT*-ddzX06^PcH#z%u`v`x7DpJ_hICibnA7antSRnELK=3M1mh*iFWh=BD@3s(69_TBcUvC7|O zm+aS2QE#{XBKrdS6#H2F2p9um)?cmP!0C4{^#DF>z1h0adWAJ-jS&-Yu62@ithLqZ zvOf1=DT(6~M<)6b8xnDi)W1J|cl=Yz8}Mo(^|P=B zoF6|42EW7OU2%&z{a?hsANywP3)BO6XRH=`W9${NeC)E=S+SF0?%NdW)ENEy;10Mw zdQ0>z(Hp1)Fd4lndSUeR=yB1_(Syji_*LXbAOc^Ce1cj4%aJ$09dLEzd69w0Gl&Xk zfjQvb@E5|jz#DK~cq)7aEP>m?J>evk|9%~MAoR`9M?!C*20$@18oDy{92f&OhSr7R zt$$}|oBp{~(DUA@Mh%{L6$rhPMB21n1v&3AEZ)b(s^I1wnc;$41u^d>sV=Y7dC4kx zxwunjCL~me;G?c8m^t8E;0YT9E|;1YBu2Sa0CYfBWQ2%}WEBK`^Cd#ek(<6m*v2}l z!06joA11D1wg9IJn7*-bw7m+Bz75y?tZ<|Ur3p7wz|wcEy%RrbA#eaW70`8aH=$L@ z3i$eF%AQY*1Eq=o#H|3X_bS^LD?8s-0b>u+kqe5x7pw|Md-qUIf|a}qPOkr-My}Tap!!cOm4YUW@TGcT~XNx369s{IN#bUK=|8M z&lz6g&I(vQ4Brj-lxxK;KjTz@^d&$+gGSrLRLplTAOIoweJ#NWAqZ{Z0iqf1^B_M-00afP8(C-f33=@q18132uC=ag5~F?v2w(itDDi_(_hjM~@cT{>k)l-rukU7P z&?Bu1Abt04)!S1QFnWkBh#FX>>`qj`=eu^x&?YLN@?C||J(I(U3MhORmBPmvd$4!d zst41fQnV*k0eRm#JWc=gvb4*zkpm!Wzh5YPswiwykulvtT=r>EkyJWi&o< zx;T|XxmrrWO5Fv!(#zYh-X&zisT^V+BpX4Yqq32yOu1=@St;fqdOT!+iOL50L65{LU3`0CIPX-}(}3XC zA*<5K*W&)8F@9wo{fR&TaRK!s(Y?~46H49fR;8UQ2~UIP%mMjgZZs&^Ds5aQc_$-< zsrE{emMMAJ8m#3IKg?zq*czls(pv(R7T}p3o=8?)+O6d{`^}WGD~SA_>=b1y2v@5h z@VkeA?I_#PCRoQecy+ZDt-%SJ&Kw}OQ4y+q~b*_WQ{R}k%+2y_BW(8(XKAl*Bs343$Oi1dw! zFb#9J%1Ckb)$ZG8m674y8Ol!NvrZZ5y^$}`SO~j}@a`D~A!1gyml50BWYneW0yDa^ zjQrlg7YPlS?5@FayNn#C`J+ISxsEcTn>=d*iG;|=Tv%|+h;P~Q486WpMsCZxX2LpU zBsRr|B!+1`=a&)H6x9K=5Oju(tBjQHPGe6^^EZ;Yn-cDjX*gvB^G56eqP&UvFC&V3 zB*Y9$Em1}U6E}#hYL$_?-Q;)EI*2MCUeANZA;PC;|(@4Vx$pU#DYb1Zc;p<2k#G z^z4xwP(+?xMs)U^2@(!sc~BX#d4jp0mkAZ1bfu|F;Fl4ho6JcCYSxz#q66s#!H_3$ z%+E~)TWF$;Ko3>o$$1ro}LQx?_;F(5o_q^FETJ*g=y&aAFLZMDk? zR_zV8ET@c2-AHf19x=jHLYDT*$Uq?r*G3s(+9UIyG?iExQOYLD)JBYMgc@6|=R_G< zDuJZwDX)wq?Nc!*3HPiA#Amni>lG4ZBqtPCe1Tg=boR1*Bpi{zmon0`cXloal()+W zP|9WC$Qat~myw*CM)}4CcnN84tc?8Zp!S_zMtb(hhDElDTNe2_x?mU|`|UFFvu8@S zw!&DVjNoJ|9L-HxWuzvoN|0ZS+hviNQvtDE)Z>H#AYuOKA_1dBQU$u{Zf9}E+Z>@=x+J3u8h2FR=sE)D>zn0c6Lxe#V;c` zAu54|D9eJ&XFJLWP}rn`q5#2+ik6Y2si6g{EFu)LBjlY`Muf5rP0S7PIU+=n;3!Me z8MllO?aibGg+#ARl#!ubXN#WcmJy#wUrZ+defa3_q!!?NyqXokOJATC;HBQ_-Y##O*Xw!Y z20TGEz#qByx_7ysbZ>$2e+8z%SHcxI=?=Q*yQjK4+-JBwgpnfz}Jy`NlxeOAtT5vagUYm=1(5qK~mSpsiKygD(JxGMBW;&hOJ z9{Btpjo(ZB!+YZU<1eKu;6?Fg$G5@YZ^s^^7T}kOd3c*t0Sqt2UKBfzsE4iLw%EZj z2fqFvg+3Mi9N7S`#pb^vdQ$k5=r$~VH}cQO?;}5r+!y&K5ec`#vrvh=8qR`ysRB3@ z?vGqTEWooP$3*%f?eO~lIs7wf0e&g`5n=&0!yEYj6B~RJnDBr4PXmat(Wi^;?>0^a z)uxc!!o-9$Z$HyOy{z)~9R>~#+`vZ~SBY93C_*ITjV~x6Vf!=8b$b!n#6K9QPHa3h zQtCn>ehR7I$(#2ODi1MF>QRF_^9o@BOZ~TT37CfL&1X}$8tfPdc0BcFgDXoNH{ukB zQ_7tj@Br);R_fW2c)Cq%34#->f z;7^-Stk)^(Z)`op+aI=^o z{^_O*SBq`MA2DaO)>Zt!%#iXUyvz6&4%{g1Ev8BHQe!(JgmxCdb zhc*KEtW$!y!oleC8lMNUGno&4Ay}t^W31KliQgQwSPrl9by`YnK}+PQIOz0#gH$GOZoVB;lBoaL#BEL69Hb!>9l}NsQ!(~P zQ*#AqHQW)&)}TYA5u)9ZjTMkP#4iu#L*rEVBSAOI0c=eY^fkXV7HU4u-WqJJVH1|J zhVJf`(L;~dnF!(-3JYn({&PX#kWUKpHcY}@`vn|j2YOP$kvXgBFzxmYZi zDe{Ej+@bssd@5tSx7rkd6JWV)^zmRG>odf@v7cxf<5eQB=wF)N zHI&K3C{_vCjQRWq_4}*UbEd}(4}<(kHxeEi$^^|9H>$~Q4+kD#3Bn!AI(G*W4I^|c z8~MALnqrdLbLI;QGqcISOD_nN{VB6%wJcYB(R_wN>q=0VFd-I(vM@YgW_OTy;Jzw& zI_}KYt-;f$#_f3UL`B5{=Qk4%z*rKvk~@OCsOT5}R?u3-WbL1tk3->Y1QlBs2ag@@ zZ)>!lbnbIZFDi!vvMTf?^F|6;jAldkn?~X)$B&tH3{McKH%po7i{^PG=-JA54;&7= zaUq-hn;D4aNMq|6X|de1OQGk5~~K!!RRBDA#6OZ!Yqu1+aJ5sG@qYVPw+Sld{|NJ;5IB!cKztd z!P8L+ti6p3r&&=gUpG(4?VU<~Hu!TkZw;7TLBi#CgA`7$)Drr267$@uq8 zm*|oB@64-mnW5px{YGf#GSMT{ifH}{Oj?bn5P9vsMbHt#|YaKktJik7A1fgPmp-`QS&OL$r}&;&Wsei&ziqS z=Z5B--R5+c+s(sAv7kw%^u7`Nq?9K@+W)qBm&$e&%FwmJ>HO@mz}jtEn2H?X z={cj39AQRA(d0twou)%ZCkyVW!Rx7q7{_NyXeP08+1c2C27iyw_B($J{wCoVc6yC5 zkrKeM;4pA#*o1f%g_%0%XkC|lQOX@oB!f9YOcH(A`bX0al9YH!GKgpup1+YoYQ6b- zO&+v9-}nJzvX?O*m(5ddd@`L1HkJVKk3V6Wlp&1bc5_!|W)7mKYU2k<*U5*)|Nqn0 z2V0VVfdBso$*(3qle{hYj^vH_|0m$^J1KcIH2{*z0Pv{)MgKii0CTyxUoFUheF1u5_N`9PRWv9rho{_WzdsW&1O5^Szzgeb?EuR0Fuu zKF2=UKE~cc+oZx%i9X&ySxL z--&(i#r_=odF+AM*J8J0;g@6A#U^4eB(LGr*zvI~v7T64^vUS&qCclHz`fDW!@&2x z=$oTAMz4!zqvuCYjP8hbNA1YpBR`A$F!Ghi?UDCKs*%@4ijj%PRgnuKr$vs6c;UYh z=l=uh0^Aw?Sor4fa`*;v{`ZD=hhIp}|1sfB1R(u0^xM$Gp>Kyi8+sp{f3FW+LuG(W z=zKi=J3`MO>))X|!2d9ePyJ`tz?K2zb=$ORiY}A(G?Qzqfi7<`1=0{$;#Bo&0L*=G zV4|E)0Jpv+wWbrXd|4T!mGpK$xxHNa&ksI`2JTLW3{WqTyD2NAli2Dp55kg`YZ zQbV=L-2lwcc{5S%8t`(DrApT)i{h*M3%#UaHw$%WhgUaU0lnL`o4dfXRP^|&11GfhL3;-5{YPvPx=UxiH z7SqD3m8=0g!>EZGMU0RH6enxo&zt1}L3kw`&#nm&El1dzH`D;4cQtMR1u*LPAgA0K zurzN9)Dy1;5Zx!#B&K$lT?2>a3ypqI1AE>`Svt+sjMadjJ0{clL=Dur3$CH*bfN~} z+{KPL%O`;@_tDynAxDkX0GK<@A2`phfi3q)WlAV+aj(Syl4fr`It-Ff4Bx-^~ z)3m~*Qv-(UqIm79fm}D!Adh5){t@;AuLg?UXNtZ_5jeXBgx!-jL49^j z@N41Fp&5x9_;nXcEj@140I$1Eq=s7qx$Yg$Ec9yxNTLR8-KC95)BvozcoSKtH36%U zHB&>yL=CW-%zvmmQZ=CJM%rM2KP775)Lqo+EX-Opkm_y;fS5nduK`k%^2vOpIz)Pi z-UXlTWRd0V8VGfdIH`zANYsF+yY>#Chxj!RYCQdhFoe+JR1J`Nt2*d#?+Q^uCfi;E zson+%!CnESEy;J-5s4a@b=Mf4y~2hXc=axEDHWRoZuoo1s~tkuoh`-9F?BC2`n8R` zZ)_w$%}9H#9ZVB6eYB3>t#5mDJaC2*2&*PQUQQnY#rarQ4OOo>4{#ggGP%R z3DRI5XV=#4VIKtJM zsQEIkC>ji$MlHmZ0?# z5hn3ZXI^&p71<%X7UzXBf>bEAYB4UR#3>$cyB6gH4x72jv7BFvFc3|5#%f{leasnP@3$#!iI>mT( zhI{67g$cj9N2a6{oETJ~)UD=uFHIOr3rT&vn&V38??e?j-Id*!Ss1aaNa-FySm;^1 zikL=Ts)6cO5zxK#nc}KhAt|FOxWY%J3x>aOy?NKR0gL6| zSw-URXvk`~b6ErO%!8{4-;;Gkt7#@%3Ke7#piAouB|8sF|#k;=Wu2g6y@ zRYfwJwJBnt=^^W@$moI7*y2u0&yY^f^kf~e<-1j6b}#hpvtzPNC#y*9&05Sw_8mGa zRYh>KO)6v+@OpPvk=;8OJ&EHJfCyF=rS+;J!h2*(1CrcWMS7oN^1?NUrBNg>&@!wl z!dtipP`B1sk=X+>9Sr-43CQQ|UKI)6r*BsiDOE*=2dbDU2Q^dlstEEvu~pf)C{J%y z5#`-eTDt6@DuVn3Eq=ypgVc5=vzA*+R1xc40<2AJs3OcIL`*IbX~{%W_V(GdUq!GJ zQ$cM-104HRg!`tn7>vYS@Jg$SXs7NA;Y~9KR}t?56$#%n!#WqxtcrX`9aG!Pt|HX=p%71^idgTO-2-i!Q$?U}97>aO#TFT_BE~y2 z*>v8nBDTfjD@9@5Dl$9JT?pezRgv0TrzQoYX?%El72&;YNYlMdRv9^YsVZW8tInA; zkr>*QUKMfPw=h{)Fc4s06?uNP5Q`8-+o%<&C6Cwg{}WXa^t;DldRSLQ&=ZHL?-oHp zoob>d<5gsS=Ojt)ZWWQ=tI-&u40TkI_S+l1kE$RlHyeux{%I{B8ml7s+2BSys|frZ z&9lqE{%uvnzXX&F^lQdCu>%KHQ36gdjc#aNtBtp-s0FIjP`=ozq7v{XsYBXUMHSeB zSX(Ov8?T}WbdvQq+g(Kuc$TO_fu6F~8--0(6oK>qWgj*CXDAi1D(XQ8{2X=_wV($% zLuGQ-H=02oe0<^uK_5$1Q46+0ivTJ@B>htSVXo`z+qEf>T8wP<|;9OI=m;fSsem zdBRVanuMWbnfa1mkgB2+1l&{&Ikb-4n3kjE*||{)I3RJcY^FzToJCY=Fo%;>^n=aK zE+D6hhCuZ)Mr(M64nsvi^~(b_!KHthTIz7<+v}`< zz|D6*wfkxU+6yzu`;6~DVe%klRoe-(dQ{Koh^*82JJ6XShxKOTzxE_Q$H zi?R2|mSb;-y(~5p8^s@gPUr|2^N$L@Hr6NhdUzrFSoEjSZ%4lv>WzLZ`ZgHzUm4vO z%|%C}S4S_1o)X;|Jv{VC=&#X^Xf*QIun%M3Ly^x#J{oy*_@>DI$SWiB)I+!;ax#p4 z?cpawUrK%@^zrbo;q3d4|Ap`uLsx}Dp-aNIhu`CWG_>A-H*peg^sj?8@e2PepPW|z z2>%ejooWYv@qP<(@;&dfMAGQ0SoWq@W5rDl(GYbQF|;wM%7_+z3Tw7L<6%&-I2+ zXy_1-V1Hd)?Wdejla#bcLr30WC;{;f2%vvA~+%xJAi_z|1@1mG_Ppe z66+9qvy3|=KnXwS4a0e4U9a7W(q4@06fo3uj0o%S7uWiYOu^Xg+Qq8g3m=#PGQuBd zI=X6uIE&)CGmnz^xNHF{n%F+gmktiA=5BUOM``qf@yV6&XM|qmMg9}ZpB7W23D!)CK0spmzasM8lPo9voTW`bX3zq;%3tVM1LlHhM=jM zAp>o{`lnXYWt_Oc?(#F-B}s$?Q2$NeFQMx87vkZL*23u2f{x=z-kB4iUDukL?|jQt zEGcfPreiYwa97a(K2t{Q-V8*my=MOLgIvu~$cK8+M&pqS0#Iwz__XulNXv}<-<_M#ConyX3f3o`1#n@lP%^a{pnt*5R zr`TW2XXuqdj(F@(;s+0|)dUuLQ{v|faZRdk;+V9cv1gg-s*A^TnejKlI$2Q3;cO@_ z4stmyht>je_`sGwnlBa_roky{^|n50Mq)Z683&QugFByI14-(84#-0@=nFuOtM$AR z7n=^A&h(=WlS{6w5A1?;aQM~(c0`USua)`$R^u4$V@wlFoNMcf>1$lBu}|nqF>&+% z3fXh+F^^YQ2$T-sr_7OXF#LMdew%rCHY28a?D^*5K$URkXden+k#(YOG7UCK>-%PO zbSp-B%%hNaW(Di^968m@f%Fh2Zp-cZ0#YeZ{fqH`=nFCg5k-pTgfR!A>m;y+RMW9> z(kmvYb(EhPoZm5`{k?irP*KJVi8Ryl8ognd^a70y4^ZW-zFKKQ3N3eO&qEGKgfKok z=MOp+1du8QeyiveIwj2^oq*BH^t<&)^zz_oQl>FsHUc>zlz;hD$~wsknobD zDB>0DtJv};^L{uiXC=frdV;x&Y+s@~i7o5SYR-avhNL zsu*BEwA`lOtUoaY3*p=Jo$|Y-Wd20#B|5Yxw5m!WcFWq2nRr`p(PY16L@s+3b41u- z@}awQrjio{%E{&?T1fZ`)6}u?&sqb$eR9K+Rcs#HG3w ztsP&bZ3`30hnBK>W@a*+d}jEPrXvm8N!JaE$13a)K2MGp+ZU=kPZ$#9VZ@_RzpcA+%FZ z3dXzIr=2HTgLAnGU~98$XpEp6_p8(kGbO9kD}#AERtv(Ss#+ zfJBbHsOg)uhoxu?ZY7YQ$osV0IMCW|?$JE?_^rgc6ZP{b~g*B+5$g8sC8 zM>QnW{r_u8CciYAdlTWtG5^8S|RKkfSe{R8>|B1qUvhO*hV59yZOZ}e=GJaDPpWSbTo zGWxbCQ*8xaxbCShHM*qX#Y7#F1}EjBvRKb5>0_WxHU_a;YR|Gy~t z+~i@&_GH-qtN$DSXa4v7d&vI3&3}hq_FwDogO~3`WdEPwZ}&I(>wL@mJNE1^y#F8) z;A3#}z13UtUheIt8o(vqIn?l@9)SC#`?&is*6bJEkGk)4m)+~#eeQ_+0+5Fj-J{&Y z+%DI0{sAA~51cPkx$hR|tqYn{B4Au`}xt=;zwIQb&>6ZTK+?~wa{3%URMsRb}^ zkJ(q*=aKur!#>PTlKcM$>j4mlyR3Ip4d4drwN}A;p>+Xy|3{MbA4@!*_<7>K#63j$ zzmGWo8xt>0zCcQ_WmB7R2vxcHIrL&^D% zf-^iow*LoX_1KNEYh$_C)x-px96K_$Ar_DRHTr#W{XZCeM|6L5J~|w|7);@4V*ahj z->9qj#mL7ZZ;QM>vWFP|lOsn&x+CH6W8nwFUk`sO`~m#`*M?sbz7Ws->7;mwj#C#Jfv zlC>=Z32zCSmCo#D|4%Ig3Tyq@Ob%Ho&bdNz8E|+r?jZ64O>kY?GI;P7N!ArRMK$4d z%fP}%2hY-Ku4>_SECUd$>kq<|RW7ZK%OJ(41Q!>BADPLt zErT*QPUqEs=Pd&=_i5;pZq2D>!Iy)Fi+YFbNiBmfZ%t<@EI2((%#^r8I+nqhVdEEs zW)S{XQ?$=t22~~jN{af%YGc$xMns*TZv0AmxUj~rggfC7qphZ=(mqDa8#si&m!!l6xF7!fT z-5ON2s{!mF)4kw05(kqn_AUcWpAke&Hx&NhQd2e4UIwDZ=b=$y{xaCKWKD{57m%Yr zMLc{1z!paW=uV++8E|@w`jv5^XfZ5r8FZRF^C4O)j8o1s__So%Y1mM58H9TClqA54 z@(PmWE(24Os0M>bc9vwgWk70D;mHIwg{)%0LGTGok9RDCQEz{$3K3g&IDNqx7xxjo z*mAbfS2gel{2mPmlN!4i-%o~t?^w2Ygz*K_0@WTMBV10bei*SaLb5oWT#nPuy;6yO zs-QubfXBQD-=eh~74Tn)8RN?l@&C|0?sAyVAkM|`v?rHC+^^~P0g&P^xAI}knyJ7K zm0E6*g+f(03`$Am3NOz@zU9rby7sQIbl^Rw!6 z+)uO<30GVLt%DLYO<@*N5~ry^cL+)T*bY>r{bXUw;WM*7@0q zOPWxZ(?HnU>VqsJHj8n|{??H1X#K@xd+wQa>sQlmX$8;7WMlQKn1$@58|p7&-Jk#b z3r;!vJlPvB#y+CL;LLe==Ibxy8q{IG{sJ0amaD>pN>C9v? zS-*nGr13%k*s^?L^~>c&vlDIg%V^sund2C_M#*&Rm(r#}L*e%7m(cH*sCg}p_C)<+ z2A8*trM>z^oFb?KX^gaCYFtQfz=c8xj8lI;1IxS{A7OGN>KAa+e2!Y6ZvA{7FZ@23 zaoGj8ejY!$gUO3wov5G7g(RF4Do{U%GsDH*OiPAreH}GtV630W3aG8gwUHn}T3Ph! zXgqyHQ#X|3I(p6)xlnVUcb2c_! zmZ+oDur3J{w(2M_P<4wDWY^JLdZa2jo4Qp;W$8v3kEa)`I?75n7Bk14I$8=5awhZ6 zs-vHDXQ<+feOpH}*?Qslu;%Svq5{mSqndQjO|wKZULAd;53W@SEQ1g&QAZQ$(l?~) zC>>h~Ku0%fxR+CP6pyW#x~53U;4DnBejRmV(|EqHH>i=CsH0?b5kE9M;nYzsHWp@J z1R&=zQAfS#%1bzlRY$GpMo48cGfo|qVx#aT$ae15Q6_r%i?*xuc!d2+iQ4KiL$l&wp z=mdRAm!g3}i8|^)*JyqrUu>(R3Tzpk%JhqWSXE5Fj_lt=#5Wzm);*n#*Ae@ja!s<1 z$lr{t72U-o2iB4Ky@v3E5o)U=?WMGXfU$;PICi=8@Bej~*x2=&X&bkvdT+XLB+_%_LG$vWa)f-ps*Ys7_BN5*$Ue8|q_ z)Dh~;7L$`0ts~P@W9)87Zlq7ZooUyR-8}(^&$>Etn=SY$bepj{qPt@(vtZW|*gar~ zQc}mNBdxoq)lf*(k=4TOFwHI`LRvC~3Pkqg;&p^{C)-8Z!HFdrlM-P}cy&Z{pKMm9 zXtY;HIO9tv%vW!<>d0u=Uvi)!ZFOWZB_Hy5_#m`n3t;IWh;ggS2IbTdz!HIkPdqbV z*Ac#W=riJvaq0+QV{ia{#_J-2rF@@PM+EonSxa-RBZJvEW+kY0fmw?H?oRJbQ~W4i zNA`BYq%mXFkhtBa)5Oy*jnxpg9kVl&ZVfTpD|oSjc3urp3(pexfky81)DW~MHKK^v z7lMf2{M-;C&aWYPH?e{m)oc?rq;D6*8#J~i!gmH0)vqCZ%~fWvuxdzNiQOWRz^@^1 zgGZplPL5WT{W1N?22HH{z&o!Ii;)|*@5{96nirL2E1!R|k;^*(t2jtZR-x`@pG_GGL7 zOaI&WXujZo%zvw2YP~u1CjZr~A0-dqD*se}Tj&XYU3k0qkI*N*|M7n4eJ(udy%+2M zWq7kM^G^1TX#I=V?M2*QyFYZlg5|&DzQUcr>VKZQ&2^pMg?{S%h}`~9JMVDbyX>E~K4O2vemD92nb2G8^X+Hb&#;r$->jd*>~}k?`}?iytV!!i z>kMm$wIT6Os{GwYtp5iR^^l)!2;*r>IV)s$C;I`OXV%HEaa0#&j&%}=vop>F8(t3v>Oz zL#^L#={)cVzk&x%XPA)x;<<{(89Pmil+0wkH!9GkMxpR?6YcsT#gWWK5TB2x)+rif z4zPxXCs?F@hkCKiK{Om<3Gs0&qq)e|EV&-y!-i)WJSv-fFf`X?xCz1zf>txJ=hGg>!X`O1ond>$l=d%Bu&&W) zW7lcck8kirb4D!E5#fyXk5g>S9926Wrr-&Gr|Ar1#|n7w@8}Dk(ReqBQ2W?<@t{e7 zFZ&jn%Zz_i)00LCCdJ~;jrvD69ToitDx*x+KfI}H2@OsAho~nY__S3Nx#0IS9ZyS{ zA!ITby5HU074#YI|IXwGTF!aeJow)_(A2txiQ$ZYMDqazxqnPk{}6OGk@dc*$g}wX z_B&A!-CwE4p>a%{P&1NxI^mz7ZZ~s+z7*^uT@;Z{b19~lMH<^y4=T_ z`at-Fpatk^K7@m1lx4g7L(4kk5Mml(hWD?8S3|u8L=I^##{7b*WZ8 z^tLs1DR3D^f6kje@R$UhcwcI6K?A68HP^fGI#hV^FMG$TM=EI6F!U9E>aee(sl>o;5Qujx~?v<$bkjD2d=? zI3|mJr0KJ;%3=E|dapR(LV8P>*?!ve0W;zy5B$=NZgl_H)Qtj(?QwBKH0R=5Yw1r!a!K?&T9G!_9eodv5~!GQ-euMLK7SHl*c^iOoOhuACYYI z#-Z`~9N>Y8nuW9OyygcpK{C{O$a+^Da8x!!^d2wQd{j&pqJH;yUvB!cd_%$dN7FRp zpePxt1DI+;-h)l|fGncmQfhOdsW);nILl5$`=sy(8Kibrxkgd*5$r7*+7PfkOydO3loFaRJ$yD&Z-n3L%bTFp7-)O$B zf$+VjX-v$z%DJCE;Mn*i=(KxxQ=27}f{4ngymw2}Tgc#K&-X59x)3X1T0$5K-rJgX z0*(^aMG$d1Q}FgSpFn)i5NsgUx_4buBgh>PQ^$Kr)9WURATnw9fu_qQCSlYn=Dg=N zU&hphk^P~j&fPsellB&yI-`L(y6P2$$z zGf#nM-FG$V9l;f=YU|+qvF?vHhtF>;y{Da5B!}hgy}$YO1_ov*{b0w-x=o#LPO@jyR zkmAPf-Y z^DTJMra=5)SuJmFv(oAElDn!e^8ao^iCCQALg>OOKm z-qZ-en~(8Q%|{5TNqdhsy$dxO4FXlq>uP#eLp|P8@aCR=Sa!-|nw0c3WmuqeBsr4_ z<@GgvUZXyQ*V8mC#&73-cGbR-i5%aifd*m*#O^fhJFrZ&^?S8Ka#Iu@oXJK5>xg_Y z`Pup$vqC|_$SIn}y&sT%MlI8PPDrUgBKEY@M(YkU&KwR79AtWl1DGl^>6v1y2?D}) zX+2+~He@#Z&NLEeHTJM+j%3h{=UTx^h*&bF*GMt^ee?KL7D4-{rUNo8v0v&9a2BV< z9FHlz7;c5V_$?-~kx31Zz+E|!oh0zN<j{9B=1drIr+)t zdy+RKUylF(e0cwkNcJWz{|W!+{{8-!{G0vj{RJ%k3(5UI*6;Nbu>Jqg`>OXD?}IS? zzucSmCcVpvT|a`z^|1S>`%U)??mOInbN9N#?#1qN-JRt8d(Jl{n7{_nPLx8G~uXcuAbI~{+1j~%!EVm)Mi-TJKceu}TZ%Gv{m|7q4S z)&?t{_+{dL`1?PC7ypfknM4{N{w}fv){`gj=lDEVzb+bz{5JAq z^7rq++P_&d0Hz{WM$V0#fW^Nt{ABpy@b|)Zk-h)!@KX31`1xNPJ}ulIeg^#fe-1r} z|Nir#kCD0mhS1AH)1k{kr-qIS9TsYD{eA0$t@pIv-g-;xTN#2jqU}j$Hx7B!>A9I{ z>n30`$<%j}zH%q=4R75F09?c0yk-ZjTLFt} z9A4Y}tQ8QsZV8|moAFmb%@x!%S%4Y(_c z$YFKE$uyDeSP?`nI7@(!F%VKK;udS%V{AodMciV5!Gn)_RoOk*68u{>r6Ho&_l9gQ8V!E0;7iQT1qRIvBAfX%a$vq6rkCGjp+h<@sxi0KN|DcFY#qR`9kpy202($rZeA zjnPyyv3mu_+p~hc${%RocC6rq+deF2erKNOmUEDztI*b8P?d?#hYWIx!-+ zJ38Ekl@nNQ>Hrs_E1a54bz`r$tvs7=3ifx=KgUPCm1pryyVI2U86vH8eErJtY*%`B zpnVJ)nqGfp7xP9QC9@9x0B7YmnwTNQw3sf89<;KP8GAqzhYPfD=Z^jzJKI-|U7Hh< zbs*+ia%F%CAm)E#DqAc4ve-4{F}|`xc2&&%bt}g_Z9_!u>sUFO84)-eWeTe6Dz$Rj2%v}#_RJOW$UUU?=D#t# z)9G#|L1qyFX=D&l36)eOU7b`aT~$dZ4O|iD8O14Gvx@Toa>1F4$W=te0rld9qE{4g z7KiIqd7s~JpHr2z{NH=)zV%;kz4dNbK%IG?efHkJ>HGWsQU^ED*Nj*;!FldOs2+as zX!^(qsBtU=@jDtI8UfG5!Hu-iq(~BaD=haPeBvQb$u3OJWG7MwH>~=I+F88^pU@pp zSO#Jq4;&n2aJplEjar;McvSZ-4=gZe5(h_kwn{_O`|A!KNuSHeVR03>kl{8+9UPWN zGyicjE9z|4K6r#k0^?;%9~|oTmZxy9hw`!`09g>kC63=2^wYsXS;s(bi4f~Oco^@X zE(0tM;bbXS`pE9;h^LNukUF@YR)}AL2__L5jL}!ouKwJeGSflb&kw86f@!R zkccwIPTxV4GeOdTDDI^5l%0d9XcSJT%Q-cD5Dm?HtmnN<9YjI%)@Bw3?9_pS=x4h; z#(dhWcpu5eT7MALY)4kPEyrc<%S+AUM(aC>j^=3+9Yb{8L9{hbndut5(Ss;#gUns# zhO>gE1}Bf1TB#M(vudRI`hj3ToRfm$ypzj5-1L@r=F|bU5$zI?j&B3R+x$c_CYltf0a5GkE}Hu2SFJV9US? z>Khn?uFB@Emi7wD94eM_=h-W$Z$pKwF1^VWRJDz|h`3O@bt@=r+d7UMKsgN6a(Uef zTH7|2eH)QUC~=~4 zbOrrwP{^_-7YA3++fI1?A4e z-2Q|AZ*ga8WtEy|9I(y`YTmH0X^t%wX5%ZUc%w%15i7fQ1qF|4K%^#+ElR2nT(*5H z=yh9Ng|&mCu~yLU0LV-(WRffBcGxZq1rHClBFdbw%it>zIlq1dWo}1jh_F^H8CSr- z3M$<$c_468d~I%(FqU>_1qE*yQ{QgAUzI$SyjD0wEW9&`v^jBh6#LkO7Ew&BZ zelIoq9`U`&`L6RN=hM#nou>0jD)wCgYrrnJ{QhSD-2T4(HQ4+<24eqh_A9aN_u7}* zC)*orJNj$50q%ss?*^*#jYrRp?uZ^8T@OZISo^+fecAd~>o)5>*!OR;uCvOZ^iL<2 ze}ol{{66wM?E7~`-b^h2s>l?4eaBOcFBblN_}k%s4d1L>eXj`b59eX)J3qWN^vBT0 zLFB(Z^!m_Cz~s+_uB7_j38Br(#Q&echk{=W-W03_UrJ{G?%=V(BLa`Xxc{ZVO@ZsN z=re%}17`+~3v3Fk3k0$0AI7488`bt^{1;)(ACEmh;_vrcu<$+XyWe-W?^C`H`QAZJ z#aF4Q`0?cXL04R_Srs#6RqRfllH8Hpk{rUb@@V3_iLV^$o>7mGGGUVqn0~LinxIy% z^p2~m$t{3k@6xdQ;xw9~Pm3&3`||Du(}No-`qJKI3zRivQE< zv1XaaEm6toypZXf&S~QpCV=SVD^XM&BB-ckOA0L(CC9itR2>Q4yeV+uA%}_0!wMya zV^^6E{+DLVt+|a5#7(2s!jHe|#JlxP6sHCwK==mjI}PSWc57eodu|#UnOx|->Y~(b zFPZIf@07`kC)uADa3JzK_e@ZCaQsXru2K)J#O8<<2_j9>g_WHr zv|b(A-9u8!{aB5JboL35iUPfzwBg23-~CT<@d$ zu{(Puqg6?as5iuwp(E8b+c_-j9Z6WJKdkK^+3i1U?YoF-nJAlbe?ttMM21ewz?spv*WZ)%kn=|{-0w`;3lrrl>?rH9B zzsc~e?8_EH5Dt*+EA6#@u2X@ZOuikd@45#H^U+PFRk)80`U?`f@0yV+yX-fcGXdB+ zKRGFI6?e-hZ)ZwQ8WFG9v&nMq#UO8(rEfQiZh>;07(hu;3la%rk}tNHw$eJoAX zSG2!&$ZnHQVLwSDA)QAm^Qe#HXBlqpE&Of=%pJ%?zv}jm@O)91ER#CHbiB@)Y<_AA zRgM|l$@=Xz!EHqo0Z4U^_kP=LjNE2|g-uMA@{Y)38dNbScXkKPHzO}YkPr;DC`rML zxqe(wXF3W11p(g%#~PG`d@!RZdnM3u0vHq9hd;q$XV4L^#TO!0(d0V?ChP zGfdTZ_E9EclMiNc)dKaCT&g*$K&2;jAW$i5IeL!{9~Yb)+hNX_^xv$z1@wki)~hVa z7+Nfv<(ywxzS)B2Zn<}-IgxscIC*-0p|iAOyv3vLHbY8O#?WiK+vAJna<3A@b1VFO zmDICzIP9AhbytE$5N5^i)uGe1T3M7~K+VJ-(7x{OS5-YYFdR79&+S~lhwFj&N{L;l zt4h1f-8App%6LmkW0LfLi|76F7jRwU~d#kgi&AjrO$M`7;l^KU^+MGsMzNw zcl5qMCqA2=cdB=n`vpN2E|z<>!iyM^a3>^xs&j{Y#JQQY7F&mC9JgnWN$Hi}@W(Ic z0M|mh@&=$Z0)Nu4V`}e~Dlkamh06JRbU>TEQWL&NvM_v&M2g)r5+Z|}AROF-0>fXVAMmy1->Y^A{a%$rGdVBffQ z$*Rn=m{OsmnB}sv@FflNhHQ#^J^FR+VO1kp{U)PumcpN++eiXRxsqVUG7|oVcC7G1 zqC~`huWL`&q=|h)7j-<)7)iZa;-v!&k0s5e0Jf;HX8+wZkSzjMQXSd}n+|sOxC7kr zcdp_*$LC%}5AMceqPrm zxuoYY^O0yoIXbCLEiRSPN9bD=moSq76-}2Tqq=Anm(oFfV`EaQ12BHnsz|wKn8of{ zz0>vN$1l(+=U%(Yn-@QP6*|o`9K{|0Y8d~}<6IM(t8T@(Y0_S9Bt268* z9iROh`$7B5_MP_4_S@|n>}%}2^7@|uS74I7{U1fYfj{8pXgm7a=v5&5$D_~2D{y>t z6I}j&>-S{tf7QB^y!|&?*I0S$`PQ?nldNslsFk2X-!I?>{7U4`$SslggYkcT9k|uBeFX4y7-wS^!d}sJ$;TuWxd`0*`cs4v9J~w;k0EA-pY zL!qxyvF|pJ0M*bNLN5;O$6s&-Xn?1Mo&p*m82n4{x4{R4{~r7TtbiX5)`PDLzA!iq zBH(-&{f`fB2_6|t1^!M>|F`iVd?N7SBkWq|%iJKM^&=liG(ay>r2G@J3S7oE{;Rwg82R6NurpDF}qcX>`~&XNA}A0hE2eV8x-f30w?I) z*2~PUfNC!08q9J?_r?q#LES+K)w~a3A$6{{oN-TTWKkA zLH9BkVI3`+qmSFEsjZ3SXkfsnJ5+>LiUjU?!QgG?{`0Q+Hn}{B_-o4=AR*5K)+X;~ z+0k-zvKLxXA#0dR{aBU+cTehvB6?**tIoO(OZ#}!F0U5tvrNaZ>DI#bt1>_>2Q_K~ zZ!&i*NKxT%+}p^H?+?ApG=x41yi*n*$?XliM=169l`Chb&4Xqz7{FQg-Xc;I5I*Eu z!VO3GZ8}q4z#%V6VR!#?I#w&HQgop zM6*9zOkbu~P{F_~{=u+F;mT~8x}VZ)a>8Og<`l2avOOznXk~U1;ZEGfRmmiy+#k?0 zsanrq#i1JhiP;ufcCALyZ?=VhMl#yN>KVe@C3C?3lFE%dDi5wd_HiOjtjOJSi(`8vwY@3GmD<<`!;imWL6M- z$Ip}cfoKIL*FwVa;{8g!MBIwrzA^I*qR(YWM&Dt!rl^z+N#R$_{R!=7B)p%q{;WN; zN06hTf6)m>0%j&V&xoF^%tlltB!n~XXhllM>dL-~_I{`8wXIg0R>98X)9=&=$U#l= zS@un6pYU>%(a-A0HYt&@w0Uq2A4acPw#Y-qrd0~OTq#7~Gk~Tm(WdGH(}4$d$JA2# zHhrTh<8V!%qTNBUAAAh1A{Kqls(mhe$5DbZGSx}=F4*7H3E-uz$IKf{DI-$&GJW1u z@ESdb9>?Q4n@y{k>r(PNFZYhACX;Gwi#Syrgptqb)72$6SusH5q#1nfzSOg|quJ^N zm?7I zuB#n4@W5w?tHiZBKxLcg9lcp*3e#5*on-UZhA>rR{UQBjPWx!ud`k$erN3Nk&FtqqjH61NG z@Fx1t)4?RieGBHTDHxHT2r9FdJc|jMdY^ZV2FhX&dQb6c8b+=&eS{B7Y(=JBsT|Df zpym#yADpLqEipx9vVjfWZCt+#3_a#`xrC6hJ=i%e>lqHm;19*xkw%RlicpC^wR3l4 zdPQDgx}9^^;!)zqcg~c&Bkb#F=cyRzkym#Po4OdG?|APf(McIDm9nE*Gun_zVbz0_ zg*^X+=1sB}ogJ&P*JvjsFJ-1OnQ}t;J6V2lE33!Zy1;Zj#2ryhrlT08Li0{hj;)5zUj4g2xxDmdqKd)pj07Nm2unR@d2 zy8klY?PmCO_V~xUJv3%|z5zE`mfSe`gis`w- zj+^0&7Zq?r^1Wv0OGJ>I(v-SDsUskuqC(^^W|^7=QdLR1B4u(9;Fip+rOeZU*P2~U zpQY0a1WVa^hBi#VEUvZ~K3p{t_W0kfx0AHKN;z?**~4m0VBFoG)A9FXLOt z{BQCvnA_^3(L|t!%%(r7-7JDb#FMY7pIA1HpDg)w?Ka(E*n*;_>AEMI>v^$$MBNg_ zG5SGscW%IxPQ0>nwXrtJzISwwfG@|nOhJ5SdtY{kUc5_(%Tx6JfaUk)-f z{RxBrZ}udAnY@?UfA7}HfBUdB&rKeyF={*U$Hb2lUrOADci;_)O5%#dS&40lBNBo5 zf5g8L|6Kew`~h#lA8>j6-1v!9{ENl@0>j@oV|T+?e-oMh*T&{z6S2!;XT?s4ZH z@As(l9Z&+Fbl&Z}fyx3`f)O~;c_My+9{X4JcgXa=or-@A`xW+8cG2Dqqu*vb9sOJM z*JJ>EGy3UhBl_y-Vl)@MIQmpF0FI3IQQz;^pakx)-ftbWuBT=|(aKTX?=0&WnEZOJ zAb9`}NAAHR(83>ZATk}fFmiI_Ns%G)0Dc|*X7~;m{N7BZfc@d;gAzEMihhZ3F!XTf z8`K48hh7#cll8wFyZ`7=Eci#b`@R?aOz?xjgWv>;!RLY#cye$E#r)4y@cTyKjzA;u z=DY8xPa~+U|0-7h^el^}}mtgHTbe#*Byl z8d%%y9kE30nA#V!#pP7(EN~-IU!!AK+chA#V2v}1!P|hSgqHz4u?Xz2B>z6V$!;wI#mN!yGg#20cDL*ldJ}+b~Dzc zKrn@(iIRDT)xguP`M#Qzf$*kA0>Iin*!B}O0JUBR3r9m=4Jhr_4t5;88=eft18CYc zxH}IR*mfz%oZ<-w`}upP)uGbd6taJ3#r%a9!$ zRs&RfTsJzVPG_+^X3D7=;9Bo&!t#8W;Tp(V4-fY^JRRv;Ul-`*k$W6g16k|g>(&xA zL~3Ab`=`j%Uta@L>rF2m;qG`jtOmf=yLxT*r&R-GJ0NhGVyp(RcEn8`DrXL>0jWI> zGtMJ|?7m#9I*J*Z}v2IGh-xZ6`64>k=G+TlptO|zKTdOsV*{bGb9?M&;uL7A}jaB#J--#-qS#P86>S?^Pmm;yn-5mgYhUQXOUGC=fK0nu*n&MN$U ziaW5XU}*=)WQHHR3U=0fc3BdgDp1*BO3*S@parUelJ%P55jU)>0+!w8eV%dBigzLd z_Vic5%z6vkD%yxx72NDd7xiBSFnh{sK_Hpi2&Jr2a73$sXa^7MK^!dFRp7Hj=jZ3n zJngJA`l=Uo1w)5>#j1jvg@P}iFQ%&iWw(fmy~?%YRKd#*YYpw`km1yZI%9!^s(WoRtzpsiW=G{i% znmE_;`+BP=W8O*wfsCM#6IFDw4Xabrs;FkeLUOqbWM`m?QnqFhguxa*kix!n6$Q?&GC^BTk~F6Og#6{Sn{KR^Z1Dr(mt9#&jY>#L|+o-FA^##u*`RkW^+ z_`A!Jpel%}WEHh*qh@%Jroty18?2&#c}a1di%nQPQAP9eCbdum#Hy%WBY5$#f}sJ} zP(|N5-__mz0ktl-ml@GlMGx~ncZb0wRz(>b0lCgQ2p?5dG%?gD{6GS#&Bm)}Vje3u z-UX+MJ~k{aA}K-}ucCU53I~vJp&n61>GD>Q4z#|*?6AIy_O)YrVxJ3sm$|8|sHv)G zV4?ta0H}RcG%&BZx^Rg%VSN=HY{x1=uS9=HnZ7C-n0GoFmZ4oayox&ZRJUgiWoJrN zQO!2tK&G-}!6^O7Dtg(*>|Oyd;{Rna>Z_uUdH3yb)vT+cjcs$wPIYs7Q&m(lZ*&SO zc`?&lMH};`lY9zDBobBBGS%ZxLrEGMfpq^+5)2%9+*uY$_xN~p1iUzjj5DYsaK6|u>`?y?7bpp&{Z;fVZL z656xb)l=QecgMFyhmt2n)7F0`zGD5#`my!R#5q*vyTiIA-j2V9`g|+a zD`Cx_v97Q#RMz}0vB#_as-bwMk$WuV+ z4}yoEjl}R5JSY6;@Grvmhrby9m*jK9?@jzQ`K|B`#N?NfSBLi|{{^f3S@FBWCnt{# zZ%b|s9}%`gkA@x$eKCH2=wqRGhZ>2N;`xiAZ0Nb6b3!MDHii0we+&LD_~YPr<9`o+ zBYAG{j`;83+kbC-K3NOCCHTtV)xnwI^MmInti<&&_8lMG8XOMx1%rV<1RjFla6bNN zqV``VoBsoWYT`(u_AdkfKNA4{8aOZcZu0tf1-2xA78ngM8vMUbT;_i;`8zE9d;FjA ze>icq|AxeO$@71)e<|@1|6Z68ukb%Rev|(h{!{$hdytKT$9Q=~_ZapxLTJY)smqo;9ODx*Zs z(9P)y<5RFcq3=Jf>7}HAF8kWzGj5~iDO!QUy7_6>R zXi;C2#E8stoFi@~J$?LF4_ zt`=?mUVN_Jeo@zAFPEzC4gcW3BM=_{?-%lY}qU_u`QPi7@_i~f{gZQ$Sa zKCrokp0Q&L zYW&E{O{>_-Emn9LJKQB# zlGJTT?*Ma`tTW9CGx==vixRZ?hcdcOzkUu=M%P&<<3i5qmhp8CmvOV7!UW|#_6g>A zaa=fp%EHB534Y$(Adeke^1o1@hcj?Ce2a|r{X{l=>Y9gkeda)pdQppdN{$j%fzRos zxd}mm1W$4|B(fR!slKR38eH~2O~0_W-ScC2vs9T}%w!`v!|-brC&B^kFSn3F><#X1 zyvR$_y-sYK`DG!5rb}`Y$~!1>H&ArGj&47DIYj#9#J$(HIt4a$#a6g%NMc_#7Uo^h;%JTLhYB4Dht#6!)78<+{UUQGrUo z_Xi?nmnO@A+!m+|T*~#{q-)C@IZ8^5yg!4lwn8-mgGK6nzb^Fb952lQh=rtL2<L%PS z4P44+Q<~X|B*BSMPQ62(wgeFwOKs{RY5D;QYLmf^lLNr1;u02-($l%r>8724)}aP3 zrDAd=ini7$SK)qOfvRK4@9EPepj1lUEuHTfG=^LWw6mz3oy@l6r&TK{&Pt&NrBO*@ zAdg}p&AUc$QhQ`cDU8ZVH8@z{Ni0oj?c8NRjhb@TX5z5}H@2$`pR+3e}nmxx^zX=ukTjEGHh8MlT7tE}_ug z<;=7=h!Xeepp|cpe}MwC*lLOQiO3TPHBNc3#Cwe{=e`;GR^r|A))Kx=oFQj=q1wc0 z6950U?-M<+|9uPgzmFu}2KV1w@&(EBk|!iLCkK*N;!lYmCBB~cx5UR1?}7XO4T%@Q z`k$qi{WB9MCAKGyN+jaHia$VZz$ZWgEGcKesqvlhE!g%6umBIo?k6`us@FGSuZaC~ zEFT+>JtKBp>`0IRe{udpu>iNj81N<-1Fogg-xXvEoJ6L;;ZDf@qy4b`E${%hf(WSE z*HPtf(teKpbo+RFE6f3Xnk(?N=x3uJ1{Lti=z-{7ssNlurod6rp!Eyu0Z;)Sux_wk zV(qtPtxK<z)exS^ZWh^2f-JBKJrB4G+Z!Bk#aNaZO|%T)^d#^I-_wN|rz({I~Eg zVG+11d~5hU;TkM~SA{3T&ka8_d|G%cJQDgFbpd{&75+X&hCqu9fonojq02(g2ptBsSNN4wE^ygEwC1RS#Ul$5j-up4WvLAq`-rL`vRYWDex_U7sC{IdElJDDS@ql z;XuOwnE&@w`}+#q0=M~B{BQKX+P~z_`Y-mM<3GiJELj1)WCi@v_kG`2egEeBgw?>S zH!um9E^9UL;PF$kup0R6hUW82z=@XP4ZL-u8nROK{<;Q!Iw(Q#qOF1elv&JD6A%r=yel`3&^UIRw zwtYL4A{1wFS3KAbK*T!rt9X*PF!t3C@FvsR8vT!UV_$uly}G>$3Yx4hbsk1KA;P)0 zzMm#_9;Wy2t1ogbInm^D>mAg9NYxkURMSyzb0YN$--_(Sxp2MA@I^4MtC#2;Mkc@w zTt6NOY`DHpfCJfy{`x%bST(spsZb=?O|MASi_)^?2`GfYra)sJug~$t5c%%v?$iss zHOZsp@p5T$U4544fUYNnRKG*1xR+pQZ+(W>St|l!bz+z!kYdPMPxz%yz;Y07TO>lf zPMC6ZZ%(kBW!7@LPM{KmPUZlPl31NkCG~H}lb@sDyIm(vIRrPN?2M+sbzRGG0NlXEEer_2=*?{6A2@@1#gw{Zg6bc^Li>fGj~0CG4$V zLf?|5lbKu~E;257$$0%@I?#Mh`51}%MdI>bfbY#Xsp9o#bHW6b!vHOinGmaA$b*Ou z;)lSw*<0T&GlGI3aAv!?P0{)VG!pMe7Glo&vuLC%r|tUrYydkZm!=Y~pGPkdnzHNX z%BRScNQEya>jV}zQtV>RTM>He1Qj>yYI~Zu*hcCE7W*Ooo3rW!69-^WnVYif#14lD zP6+pFs!q&s)8wiZwj8OS$wl+i1*Y*C+;ShfDuMvU5^)yA>Zi+l<>uz_kPtAcpT=uT zA!PH3)Adv7(0$6k#U2Bwj@D1%MawgSRCMZ3lkZfN;5-5U`pLY805d&W<-Yn!%*iri z7;zybpEy>|S@oyVeC{yM=R8rn0k-_P=~(>)8983ad42tOqDeUZ=wf!txPw8FE<3V* z981mI0%}hNZd&=!TF6`K$^sWh@u?pxYjD1krsC9h(ar)erOfo~a({g%15uz2^gi>@ zB&pgfYoIlysvUuRn!OF63QKzjCa;mABSBnQ`uuu0NSRFYPfR(Uk*<`W6Wm z>6}pzU~ippp;<9H%AZpwSUB8K{^}Ad)RSek2bo_dR!Hf{t~Pi?ooL}Ho(%H1P>Ik3 zU_hIV*Cl+2>B5a`DYmI~g`I!eYc zVkL(`FdeO4mue~7$HXmyQJ!99Gg1(#Y<+_Q8!*Cr1qz~C5)Aqkcf&$8aXt?bK00hE?4IIvlB^fAovV>aoGRm^`|)u8z{N zZK6cwCO!r*Py@=3)X_frp%=`h>nI$G-&mFH6RDwh^q+CwIlKF6C>vV~Sk~h1rQA{h zSLdu#L){qm?i#P5YK-!TGjP|Qz5C*L4b4IZs*uc(ZWgVfTMSOp@-p~FGzx=!b#pFj zC=(kdVB?3jSztcBHPIzp;pZ|o#B1mhqZpcyu}jLhT|=D6_XU#q<9ocmNDHEHI#@AT{bE(yC@SwxJji*>yv6|5YN*rz3e!E z0+t*m9HuqS+cI@XfK5(SsLrX;k8};?VvEQfrckAVFypKC*3d9EPvLO@hA#enzCyf) zo-wL2L3x4VH581|y?N|;Qklw?;Tp=tY3@@W=RwID+Qvp^G5MF{swXCD=o}lUuf-H3 zVw}%fHI$Bl*@b-z1*e9}F|2@m{Oop3G!E83Kr9)%CK?B$NdiuG4UJ=HFX3;5b-aeo zF0L%kT1 zy5GopyM~4_ME`+c+Y_&$R*V*AM9~ucD_ujU*y2)w35N%Crwk8Niw#oO+r`<%YUmdu zf|*zvXNgJH&@eXcEl=d|j^|N9=vtJFQC-Do_~cBghJLYWK0hgmMO1D;C?{&D7aKae zFt%%=UnqcrK|v@YSwp|r=$(N8o9eHjVW@loxD98BTbQ#vP(#%K)9s2CUJ@N&o1Utn zaJV=`Tt8@2ONknKhhPf4(rM8ey2l_WPbkudYN#G3t3Y6Z1wbN5-Hu&l`~K2%kM9v* z{33Y!kBuJ{PY0&rq1Ye&uZw*ra764L|8f3j#cq$?ocws~?bz=x1kIoG&w=MZFZNWb z_l=Mvm4ea#56;h>A368J{r6s{;k@4eQRih~`%BIq?D>m9`0sEwIqRLE{U?|Je`w#Q zOn@JN1-|Dp9v>#2dK_QtFAHDbzn9#A)k*8h~y1ipX^LZ^pz27=%bj!51eO2ZlOD`gD$SFi~04&D$v5S$BM8N4KTHhzI8 z1lI*afky*B#xwBQz{fxyygl%SK)LHjmGBNkB^Y^v?=fprDfKRKvWZ#5p;XiVEVmk; zICw-LiPTH&6~`WlD%?xlRh((=k$O*HcMlaM#4p6orQTot-+6}ItT0wezvgkDkAJcn}xXEVs6e~QYDQ>daLUy9iyP!`5BE>8slEf1))AyS}3)a+kR;EHm zcwKta<|^pXdt-7l5}mPJQ;+J6GY5dzrGBe-^Sqs0l+tu2a}SJ1U4>IW*RGf?s1!`y zAD`-R-0!AOp!QQH^$~qZf^wyq<~XA4u6=ymQLXT;Lyz5Lr&?-+*+@;5RvA(V%)6{NBJ=xs8Fp+UyXxf9Gn;D-dioJ|*sN^io zqDM0=20vh~oT1+BTL+dfsH7Gfn<)#oR@x zGBYW4^h#npE`tdxXbx$beE2+_AejkkQ161uoKSiM=FC_yt8YIx$z4K6>$E(uGh(I$ zX3%7r{drKpeR9KD3iy&IpHvV1EIMJ&cl3(=<-{{}NVB&4zAX(@Nt~G0o$z-$w%JLa zM!v6uc_F($PwIw@if&Qt*faEYrG>=JdL>L+&K5mg73_o(Z-}z3YDCZ5^=dTi0_NaS zC9JfD64v_eOtc8ETu?2XOVEl z`QBjeHZ6cCdr9~tu&ftK3&(0JVJD0vbS)@OBX807XQop}OFA=W@%;=RE)NjNnxBqp zI9(1+_B<;7cz$x)w7A4)`y0DH@fEjOfLCTBjyW)i?$L9* z&VEcrv0qY86nMuWuF~YNjOVo$ec}t|ei=k@+1B7u*Z59+Mi*+&7!R&UTB{z0FMpDX z2G|k?r~U%{)Ks>fjebY_hego$6TLN}0&3^L3-uML7e^)%j=k zjQK_nIcK}C?~pym_)c28=lBzR>kip-yl+4U3N$s9a%j#p6-o_tcv>*PAb3$&t(TZz z(?!2BQ)-cV@i6F#aEIi|{)=_4h}%{V?180sF5^F5R?zP0_!Z{C)t7Sqr>{NTa2SM6 z)^XIiiKwk)i$R<2e~u2@?h$1;IA!h5iOlpu#($xXr_P!9s{PMgds{krJToa4w11}# z5bxxkrs*GEVw&1Q0s#BC`TAy$?|nK?bS1>3u{@-~UQr|0U8ioT~e6oxl=Xp8_ z@)L9^wi^D^H<>RvFskOpHPSvlZvzo7Vk*TebTYMIrrBtU)lY&(|4--YlqMM z@DpRcquqVmeQz}bdcu0KzHbLI_fefwOr3J_Z0#KsARPf(StG8s#I)K5m>Q1wFX#(w z@!>38&Hc3}66j-JVMg!8q}~yV=!5wg{IibA%z42S! z%&`U5pm91ec(Qg9l?K_);sv)#=49F7GYg!QAuLs5r>ay?c$`Qodxn=$691}BB_V(@PI5yLd8PJcX1Z9gpQeK+Gf|jD z`k_qb>+yV}!3_3!`r`=1{8Z}fm!Zq)Xfn%{oxIL?_uHvR6-v=Bd4dR#`o zM2w6iOkbjhHE4?kmOfQQg$QRA-Qz_Ul$##0{kQhq24TJbt?|#tKTaLLcgEj>jl3uR zs`xeWE2-vp4($J1;zRfZ9*sQ``+n?e)bzVG_U_mXvFifsVvBGTUG87+U-UiVe|hZu z*i!=M#rk7G=eN$cozFP8;tP1KbCq+Mb3XO`h8)NKz5OGs|IgW1e+~RB z@SVU{u;)LHJ>Q@%;L8J71?B@;|2g7`zC;$s(OeHoqm<9=kj<_Z6-1Ma_K8YDs*;<&m8SPy-SSIuAK3rR_UWeN=esD zEIS_%$-(cL<#3<7dnR|h@9*yJd@1@lclUHAA6zf5=0&1H=jb;kE`|3xr7|4v#R31M zULbMbrQo#QCtpHMdAqsR6!wWdChCJ`vlE9i-pcTuq6Wymo;QdP^P&hu{tK~xl?9`_ z2l`o4iOTTlHhvmqg@=o9q8xh$zXA2bIj(Tyq>RZmnW;W_?mb36QDrFg|$!(a=lHZ?U#;JFh1 ztiJFB18sg!u44a0Z%0BqigMYyU$2Mbwo-J|ZgP{Mv)=hkX%{9LenDrSa2(7R8A7)5G|N>o0L$T`*YIp*zx_$C4TizQukJ=U z*TuJ&Lo?o6s8#fb&KA+5P}bX$qLZP26CZ+HD{~z5qp8|64iwY5U)**7cxaviC(uLx zmyUS%!ftdp@sZVwhFW|*f0e@4-i?&zKnkpO(@sJ!6h^OqIDrTRt7hohH8;egT237+ zn!)PxH8nEy@an}$>P?_gmqT~0ZfN(RJ>Oh&w#2@%fC78HK_UGiLER~`t10}}eI7ea zSUdUR)pw>|lbdc6nR9&xc~q(#H!H1 zNU~VyW#)G3B}3E{GFH~Sw(OBy?OX}6^L}$L_645o9Uhl4#kZcTSnBth${-W`)8;)8 z3Aufej~Y=|CdXt);0p6_HiUZ0r&PLfOwGyAX7eJ-LlJt1WPM2T@Dc)h(tOEDLUda9 zLGoUlADVAL@z?ysKGXkheR;3;SWL^q$W0hj9R~VnulaD2k=JvJByUam&XyO<9Vlj} zoQ$+0cR;bP;m?@;*`+CGPJb@vvOA)O>nViD7A7l>`V2H)CJj#(jjkaO5|+2}bn^WJ zfgL_Q4yI5@G-t|MWkZ*F_KQ8wx*94;-*mR4TZIQtH>HFjK!Ja#y&B)GEm|t&maHjr zw$K5&&f7j^q1M~+$6)2 z-}rGjF4Pzb2o61Y)qbrTA~tMx#yMBk5zg0KGKz&vR$}AsV_kClvTsmCGUvEEj3R?x z=O~%jssrFsq*q;dPUr#i8H5I;?5MB>xj_&*+~Cij+|Uh{Mi zx2^Y(A$%Z8YR-;ns*@ZY zpDhr(M6;5Oz@)6{V2uPb>W1ya`z% z>)j;HEUE*HLKo%0Q?xa6i>i}EPM68)>dWQJ@isj9zoq#8&qe>g>jA<4|H}9Kp5$+n zKS|z~{A}{J_3`FIXabhbGgox|+M zUFUu2(SkHHZ*KqW!XcW@Wg1Xth*yf!)?y)t@X^vvka z=w>_zj`erzx7LH!SEwm?lXW9}fv>h$tF6mm3p~NvOa%ddh7 z^yAPyAOk*#58<_;YeVy}6Py=14*$XW;9rBkfk*J)gLel%L4H6x_@>~s!3C-ZTu$|X zlkgrqG1woBkSFjkJOph0^5QoI|ado?*Bz2%%-?>=szHp@J$KnOF<7+Q@!D@|yZ%A)N#x z2qGxj0-Xl)OQE1R1z)0pCMBLDk;}iv<3cba54vWc;0FOIvYUQ!GdUk zIvb+)H-Yc5XcM&A;53k#VkOoDZ#JT&z`|f+H36CpC`iU?f-)PRdrJGACIB-)@)*&q z->D|>vP}~9D;6q-1m0?bG8@>pfZsRP1Yb77Lrq3bv~nXRnIRcnt~1E8)EW{ZJV*1 zV8e#ovP^apbl8xa1LiaVhXEK~pz6fL4yy?|Y#>uw$}jdd!G>)Xb|40$6aYdsvYSA} zhFq2-y9quFkh`WfN1K4d1`Q3G(*zqfOocnLspjc^@L@u}Q<1=M$!P))8y0^O13Pau z!G{fK23oWUI&4s^`Pt=xCdjZ|g89_&A0^2IR4Jm_X#x)$##dFGK_y8w!G>)*7p6-0!r;|0tVYGR=vzT!z~kOp3AJdV8^k$`kK!Kgh?I| z1pN|2H;=KK=kOG6H-qL9Z9apWEolay-8`EEbL2(LW_H-kr?Y{FIh$LcVP~;XK;hNT zc_tff%*Jk>!G=sH#&K`+bXv1E1<+}pM%Tkdv8RYZlWLwyCzvD}?Skw?w0R0GDB=47 zebIaxA9jAZxS#QUGJVrc9gH?l;xyr$ql`}Tsd`$uR0%at4D|Hw-Is2jzz6JL$>}X< zF2l{^S!i&MN1De8?r`D2LVxpE@OcHgFFMYyHJ^|e0M1F#iXS`^s=BQl4TxFa|@s%Z( z(C%lj^44J*%+)$Erx><0!F zZ?5BzxVlU_o89c=F6i!}$j6#U*AZL>rtoE)us2_a{7#dW5{Dm}Z7LR01vL-ZU{hr5 zA{S>INF7+S$V-#uDAh#9Zh|z95*XNS!l>2XMAB|&{CRwu?i5Wn5xMj(pN)S7=U@Sf z>lsi-V4@k7ukQg#7q{C@#P5)sF>6u90#2(5MzGyP@(yV}0{tBNCOEx zEGR>PuS6RN;lb>}29eF9>P(QLo#bR9pa;&&T~;VM4Mg*>K-NfBE5{nh<`L03l(gJ#Af1PB zABphqZ6KUC!$y)TUF7vwq=A&~FU&42BpS$OSkeR?q~>$FfqdSA>xxg672hcYD>Ly1 za(Z-f*>$iiSq)_M0GKt>+#3k$&8oBIi{pkB&1xX62hPu*nYk$0KvZv(bxm_c%R5MJ zMPjpf7AB^x1_FCvh8PuJ8VNmU(z~4o@)a*QnK+9O=RjthhRA3J9$B5)sdWux^tO4# zlrR@5w0v&5vM1I+PLIqlyW&0GKvdINs*8iCk2R3jWa_$UNwEgvdPGu6wU}k9fyCaV zIgkibQSg|ANbY{o@S+W5_u%g3-Df_1r`7S^mMjfYj5!{f~qN|yR=RgD5y-VcOp@^1f14%wezky(J8VK^?$teZ|Q_XH5 z$%iJV)cYE3AjStLm6A5m5DCr@_F!yw0|`DfB`&L6Io?2kkKz~xIRmz)oNOS(H{v&A zn_MNls?i3r8$)c01f*C4xjlk@iFXf_rEPzy=Rw~Wd$6l-vEOaK5xe?;J#AlNpJks& zME-DW>YoygzbE>c=xx#WN9)+s`=S%ki=t;mw?x-bkM9rGPp$i{&s!h2J`5}1TQt}H z1i{&)M|>VK{OpZ)XxjQ=@s_MPb8=HKWa_9uN0$6n-n03XSZ$a45n ztlyb)#$!e2&&jXDRd9PO<6P&QpS;ugU@Q{55DtY_?Bv*!oJR7k$yX&0B%enug;SF| zlSd`f$slYBKTrGsK83pzpGw>ut0vx+xB*6mc^DNgPMn>1Dis%xN(`t+<-g!ncrbpy zGaUbN{4?>7#y=2$NBs4mGV<}~QF(Dkd^8@3{WfetTcVAN%25s|IRs}-k~O<0UWapEQWK66!(RU$KK z-|Jq*^RSKVFPp2Ta&#EJS5r({NK%|{nQhw2OqrZXT&nN7I-@XwR@3j3^qeatHgRYk zqa3h z4LjFLh-dAw;Ll7`IiGv_6+gfk^GhM}3HcKIB!&TWbiaF^Zl+$^J&1S@eAnGna)PpT zo!d;IT5ygKFFE(|94x7T#4F4WH#IEpzBqn?o_pNq=!gow$h{LT`sK(|%!P*TdmO~3 z?^mV^+&yltYwu|icIXUX81j~kDG|F*f=QhN;w2L1?~sz7b#@np#taR(=e{-bpnx^v zd%~IRU`T5wW z8S-dd$>*7$D5=R?%ww?mm=>{n&4KCMlJ5tm=~INMuu7)vXPdr|?7CId6sdg@mLk$w z-UG0s>taalHUlOrapLfhyCL|HSlBcR1yfY<#K~qbiM~k~gm(@7muV7v#*2mEglUIt z$>sKIrP8K`R*!e@Dh{&n5$;8hBY-gS>yojSSU&y>!31D@ER-ZieOxLd0SH1&muG= z+mK(4TUFK!P3+J>0@q)eD+S+X9_{W(K4Q+6@q#NwL*S)MNhWgY zJpE*J2)$_e@OfNIatO9^vaxHi=B z|8Pr}eJL>yC75yhzDLJ?W*J*E{dOI6v&fwBY?eyv>6hzJ(jB-#v-8vGtMzN^9$<~> zt5j&1&H3EYcy`}h`hW_4-8T!13jRe&UmuqQsI(a@daRP&kzVRPurL8*P1*=|J)W(k z7j?lfcUMoP-ecj=y=Wn&bfw#{$x z*D*08_7&x`mh`lJh5S-_u6yTPIbG=X5U$f~zLK8R#bR@;J#b@=KEX>Upvmr$tc+TVGXY}CXePPyAw0m4_$?M!-W07y_<@3w- zX1zVM!P%l^mh*YWr!b^MhxHJdBDCl8`V{$1$rsTKUgiI)zGD$blJ86AzUT!LzB{z(c%Ga;o2Dr5QNrl$ zMY=5h0<#}q0y!FE?uJA(l3&nKf^Zd8-%+Tf1Uqt-eHmLT0GloGJdB^V`<#@fx0!v` zPfc?smgfRLHm?oV2^NTQId-ASxFXI>z%1x0EX5`Hc&`8ZPwweNQt+6~297pOLNlcX zdrkX)Zq9$dc8^XcR1s#G{j=@_D~)BxBF2W%Gf0q~jl8ydT$Z57P2HKE*)bWpX4U4{ zWaL#6|9{B${hs8nk`KWE__^fAlkZ9%OuiNtz`akB~p`X4nL-jum59#GW2IG4^Db1bSmW=a%M{(v6X1HNY8iKpU5`+ECD_C7lYAK=zMIsub888=af1(_2UbdlwQ+(U*F6cx8S@u++T232jW2woTA{*sMVqWPK5?#_ zTc`}T@rIw)y-sF3`TCvuDRvvj_>g;XvW-`KqgNhXil{qnoa4iuS7oS;Tm0lz1%BL| zIKx}j+s0GAISYPY;v>t*om|do<0~I_LBBh!wz$hdMY0;TahH#{aq8J+r!5|H3_4{k zII4}u{Opd;oi$vYxS4_{tO!}O@uUwfX#_Og#(lm;ga}NBl2a_JzSG8oJ`9!GJP3rj zSQ{t$h@L$Qp3-WI`piF2A~}bGQBR+7BBifghQ;27oE5wLXQyWvfajqK9reJ z`rT+7$NAu16^XGn&hin6%9gcxP8)~$@M*Kt#oeslu{PfF5#>je*Rb07%m>u9=CpB| z4-?^26UJ`iEFa49hdB{x<0tRO=RKKf<0Ic>?u|+#gQ>rbe|&rQwa2l)#4wArag_J( zhm|+p#zj6V7nzQUwZ%s+=5?N&_*|@wk9@?mT{7z1_{T?fdsDz}<0Jz#Lr6^tEw@!%ex?x0Yy&LtI_==m3;MvfDVs1qC2^poum<@D0*3l1(Ii zJle()4k6g~V~#oIh&FEUQu|EN)Zz4K;~3vuSQe}cLHix3aAmuVgPho* z7FzFb;~d{E#uwL4cgJX~jh}pkL2rU-@iuPqQDK8KJ-V)qlYE;*;>>Xk>S2es@t5~O zjht*hkv?1P`Lo*_cq%5Nc-{NkPvEH#z6pnrPzbpuL##c@QzgQvVdQB0C|jwg zJHDp~?`FI`$osK02QJ{UYw&*Y4-`x)>;# zB)v%7Gud9p?I)*rDLi~;UiNVdb$p@fh1+R*shp|A+P%E4Va&qsY_(I26G;Rr*?2vA zhNy=K@`U-5V80lW$3)w4+9mv5(yo}?R2F)=#cn%XK^K%sRI%GO8zM;PEQ?|+Jp*T) zfBt!wq}vv&k-Oi^qKmg9ygT407ZD$Ahk3@{3_LWfR3V<>c}RQPK}J(&4c72?xE1dR^ zTVHFLGm3?|e7>B?OmYisnR2X!l;<`%jXdTCTFClc92?j7M?#7F9Zt)#)k4e@Nrf%c zYAwijSuRhG^|lb|Ag}~{#h4dH$8x-da33{Bo!r%FA>fC#=o$;^x)$<%TPb&lb1&LL z)C11q^Ol_!Qhs=1wm2cSSG0wkXXs6cBHlvKk0K*5tEDD=tc9!}nJ>FB)N~7RzeOna zAl$?!qH#T^g~X@KpW!r$wM5qI$dml9SPNM{LJZCH_xcv%eg{K{m2I|cuvhzFYcKb; zko#N7P7szYgDAqs)z?DiZ`Bb;0aOl1I&CT5Li~>+23+q)vL!NK2AP-T(bq!eZzZ2i z<{*>XWDQs?#6R^43;X61EhIhF`LrUhu-l|sNPDPM>3)Vc{+3cD)k55NccG(zc;QXq7Sza;*hH{z>(ks!f9HLw2j<*otql_oqky2-7T?@etnJ~-foSDO#_|?}!inE}~Zb9*wLy;D;ynk-7vJ`J2 z#z&<=6`}cMt|7;V%bML#DkoZq@eTNFm^+BGQYO(tly9hvEqd65WJ_eZ=)Gth@XEu! z-$IselF`cIu4zGKyM;g>LOQ{6H5Y3k(-BDm48`P4wvg;pe%4qZ5|emwYmA;S&cwc! zh7J+wuE1MZFr?qYEkt?W!X(&Z#Q4C1447C889vhStM;`J;#*z%M=mo-Aa)CB z4u*2S5<0gK;^05Q_skWeE#x-{;(0WMR14X?$>0zF5AxnSOp0pz`>kD7dv#ZLSNBX$ zHz3tBqXRRDG9Zl940A-045A_;pdun>MGPn?2JGC>m;;It%vn%DRKN@v5Hm(F=bZEX z?ppi2?|Fak`~2>G?qBzL?)l@?$5qwMba(AfRjs}D-g9tEfXhqddR)T2V6m+ej&QHX z6?_NuD(PDw_j+8!cR2NUwOftNlGo$%U3==B#PzsnH_!Z!>82uvAtqZp8HryL-zGjy zY)foOY)))Qtiw2fyAn5IwS|il3y=$#n>aCX6jlY8h_2b8SQ%iKM6X0cBAvkWfAQau z8~7A`+OJ`Jz?1QZ<16B~#jnR0f%D_V_*wDU@#Er$#izvgjgO2Ej_(@ZIo=fCE?yH4 zxqrJqxnH^;xNo{Ix*Obe?gQ=}SX*$hd!Czj&%pSBBdz=0X_$dvAM|$bhW_rI(Bs|B zO<*j+U%^}i@5kOi&-Z$3Lu^g#zSwQC>yT5Z#h3f+ix z885VV4wbCM$ZwnyIwmwNG%++5GbQ-e?e>^ZAIzB0Eff#g$aZ{7AJg0P5^cbEhx_Sv zx}GklMb__>v%AviG>eX)gJ?XBw2#8*hXJ%BHBgEoWFQanrF`G|*4_i_By5sTqHg0} z%&4F;A{BWK=2SRNPM4D~CSs`UkbN;OqB~|*AdHRp-u~2n*M7x*#(vaZY2Rrtv#+oR z+UMH^d!F?%R!lep`H&;6U91+=ZX~TRsyBW#KR34_EAl+j9^${5I^o}0k^h%l#}=k3 z>5;J`m_*IkVNB*zV}~-ybz@3lTL@D|M*qwq>zmO(FeRSy@6hz5f0d>u{3)6qZ*O8U zPZ;$JQ|Qc5d49X&MrAn^`FPmWfXvz{!@6_K>N6}EkZt@i)aRJ-!JaELeYNMkOo_+* zZ#6AxZ`O2Rdru}|w)fzFtg(Fuy|dEZ$YeFOH!#r$?e%)^n)ZyQtJ*!LXsW$CzsXMR z+i}QP+1^bbc0qerCUd9uE;{z8|D&dL{->JO`dc(T;_I&>@v#54jy>dGs%f>qQqzO} zYE7&B%Qda^M{9b(pRDPAe~qU5{4X@E@Ndzy+@G%LUVlGL_xOiuy4ycl(_Q{-O?UcL zO?UWbYP#KjM$>KWhNfHny*1t9kJWUu|D2|q{Czat=)b4whW4 zbdg`ubfJHNrt|&vn$GhN*R;q#Qd8AGNYg_998C-Smo&}v$7q`D-^3I@&%aC4x$RQZ zIsToRj`a7{)aakb+@97{ z@V9Cj;Ll>RXZk;DI>w)-X@Eah(=P4o9%;Awi*&5FKS5L4Ka9y*?H4qy@V9BYwLPlo z#`c(|vVXLufooLr~1n@&GfZR%_IDGbnI|HtLZTRV@>`18#UGVr)UcM4={bsFK8O% z-_2zFK8 zz%bQ+jbV!aB*WzP2*U(_D8qjK!3^WuO@_VwISga`iy21w$1)7}e`nau-^B1Q{|tss z|5b(#|1*Yx{xF6%|09M0?G8hK|9pmi?Si4Ne*i-te+I+O{!B{gDhAe>g)I{}6^c|0{+X|0jk-yUP&wA7pU-cNt>-qYTmZ1cTF#B3^Y{BmG+$ zEdT7_=dsOZi`8PAJ*}5@tcUfSrY7rEO*>f6YTDk~q^Z$jMcQVA^_q^=TkmPgSlmo) z)3dnQ+h%v`ZQd&`u(;XVqNnvj@JHFlS#%vyLT*13$822z7X57p$-B`hJsKIU6oMv3Ykwc6n3=<7L*UbqA zw?=c6aVhU=G45n&GPn_%b;fdzB#gBTapNWi*SL!zYCO*17*8-*#+3}Fu{tTtvj~(-pD;STnogJX4VA`c?quyItRA$als0id|xA*H;5DmUi6| zvK?Vg==x%??dbY$upQX-rC?j%_2ppOrRyufwyx{eU>ooHM#S7ArkR_J#HPfPiH8#R zqWAx5Jo8sD{{K`|08CFzN{ll<$1{INqHm&SqI;qyLFOhrf9-=Ou;Esxl`*#^zBGSK zyl?)U_&NS}{3py5@B!uuco7xu>*6cpcg1hSY|U{!cBOHQN3i`NB z$OOb)8|w>x8~Zr+Hf9#sfK>|akKK;Z=$FS9#d5LJW3#Mq?1)s3ac1Qh>VWxj%tLRBHN=LAr>*M zDbBCX*UpESpLw(MG*&iP;oOR~3NLjQVjRUBXC_8cOmX(X`~;oOE>4S+agt6La}@j- z{v7KZyoMPL9}hnmz8h;DED2v2E@27gQ&6vP7@qU@4UY^D#^{QjvChGE;hJy=Px?QF zzQo)GZ-!n(^}@Q)%FtbS&c7;jF=`mj#YzXWFpI&|(EfPJ-!s%6Y7O-WZ5K*}B>h3( z(I=Q0@ny_tuny}T-a$)gF`Y+wI)hH6Bk5q;4|60ArZ!YKG*X(PB;+shE6i{32Ifh8 z3Uv<4es{;Bm5tcTgQ&%eYFpd9j=eM zee9l^?i|Z^nxRm?vGE{A$pHxRg?JlH@HSGzTc?({NMHrWhb-PwjJML}tsUX5W%AZ^B`&y5B>3o#85+``NyG(z zsg7_3Kd?I@Ca%_dqk``<91#&0>X;+=?!pma!8gT@2noIcb_5Cj85|+SYW)gZoU6$a z{Adg#3w~H|@TqUrdkw)qt7H5lp5&PEx8Qpt$M{R|J%VHWDK6D}{}6ndIL7bdejWQw z@JZ1)9^?T+!4;QJ8A_)@Ibd%qBTLOaIiD8y4~GROE#+@rE@agjc5iMT-1V!@9(j&Z)=2J9G%#AABzLUDW0 zUYz-YZ#bQKg72lA$%1c6ok?N?A9H|snPI$mj$w@8n;~bo;Kt<)6}UCPjkYsH@V%Wg zSQI(3o8bF&r$cZ9bbP`0Th2g{fSpEx`v~<<)Qdbr zS5aW-A{H^!3BJE^Y6RcJI0?Zw$xdAG?W5xgwuciF_wuWvf^V&zh`^1B`X?;GH(rh@ zoKq-D$zL_u z$#*qbb*zGL$V~pCVs(F0 z)x|XZn&gL>F#S@;d5tjroaD?vn0`ub)yMsq#pgW zy6rT5on%pj>8m6^CWYzCey#>wVFOn{;g?oUA?AD>QYSdk2*`! zFLgrGUdhc&_NR3rP5URm(bSy$jLG^d`JJXs$(J-eQCFjBb@D?^k>oZe^X+-IA>4u=pqWEyu*&bs0@d>cX0)CRx5=u}AWAjv3pM zA8Fc}d_mKj$uBg$kz_rDjn|V~bnN9iscBX6drjr!Z^8K;o;T_%hS|v<8D=E^VVIEI z$gp3M+hllL@)eGZt&1~^PJYTTG|6fR@0R?7BOP@nLrd~chQ_)EhD?&5a>Lz|+>*mx zl5C%FU7gLxBenSBOv>kgT{ zJNc{&nW0W@wIT6jC%4s*SklQ>2^k-BHt_oyFLmng#n{xzIkb?mp_9*{kg;aakNUXP zo!mY`#*#sQ>e!;rbnxYd=5!hi(>qfP0|))UFrc$LL(9;27@9lzrwuiA)^ns`(C-ZO zgMMP@GKkNxP+eyoM-rVLL%cJ_5bNaAC=~6?aKswKEu3K9xxwE^X4pDIQ^?9|B5RH& zX`R9(Zm{@5hueE=KF4q`dXlD9)|r}CT71zZV}*6LjxDuL*R;esRa4nIC-|dizO|5H zoHd(ati{(GYO&7cNTbDh3#zwH=185DV@O(j{i7PI#F2zmVTfDv7+j05e-yLM;z-o0 zGDIxCq>*Fsm6a^a1gS1gWLo9mnnc!#!QU*Cb))!ZNhXt{iaJ(1s=!qH#mF{IpO4%{ z(`O@h)%5Ae0h*2(cCe;N!`Nf8_JCpRSy{W?p3C*#ZhPLtRP)7Ho*#u9Xo*C8h$Q6KP&`>p#qDg@qk zUv)PjFYqW9XQH8)Scq)=ZXmg#@IE;7hDi4V`am+7>#gr?9kX` zWDG{fhQvBBGvSW09b(&IWCCt-qQ7BPgU?Vq@CNb*8?m~<>gaN;cDOWp1;!~DlTn-~cdtf$))=`#$v zc+Gy^ehPC!+-Ki`DuN~U#r8t1(lF0H#XinH%$|Zw!zirQ(2n&NceESru67)&HvFw~ z4R4`xW25yb)?&QZx&_&W%dACK0qZxMVjXKuwhbagVW}j7uE~b1qfDb7j3g9;+b%J9oe241QgJs@U z+paQisck*w&EUwNWL~JiK*}4zD{MPA-@>D{%$=H{wH>SS(?+IGm?X=>XhbEm5944Ip)wyw;bqP8tEce2{< zOu3VSH&`WeC#pc4arsiN4X;c*haa-19+8kGXi)^<_=RYvM4t_2)shMLj!n+a?=8MopOf+ z@P^DyRmb*`xr5bqsLUOtwp}Q9U~s@znVX^l`^ns7wH+*Tlhn3e<_=KXfigEyZ70~d z{qdFKeJ0>P`!&hjerg+)x$$Z{U*`5z+l0*RqqexzPb^rrf9iE|a;D>X11yH$rXkIfn;3mQZe30Bh{rQ2a6dWNuF!&>!c) z5VajHb9<;Qeze`y7XQ{@wH+gKyQwYS=wEn!f8zx^*NNBnr`#a?cUR*n%5?&h1%r)XAF4{+f+MYtW`e4UOnaij^6Xm=h@F3-sJY3@% znS(rp8>O6bhifd5Ik-c(_<^Ag;ZBq}m_y*&np5I%jYnk;;t=k!l!G@Acv$8j4&jcc zobrZitfQRrhHG3cbMS_6C&`@BhTB8tls4QN$|-HQ##J&0Z3s6>Ib{vkc!+Y!8m{pe z<&-sCV-e+)HC*Es%E20ddr+GcxSg`fAFi>MvdSN>ah=S=3n`NLh%)M31M;DwCKAnN=n+ zkCs_w67yKfDwCjdRAylkVV)|pPzfTGRVG2dsLU#pn5WCEGKqN!9fB*LttEJT7GC7FduggHZIl}JpSqYw!`rp&@4!fcUQXhfJe5tT*I zk1MmVh%nETSx7{fIRBJG(A6um${{9BJLM2FF0*imFi(72emy$ zW?>Lv9xt;>Am$mAg+TB|=gKS$BFvdGs{~@sky!{tm}ki>{2|OkWLD|Jv}6|g5a!`B ztL$N(EVIfU<_R*Z>|vfLv#^ISN6D;`hlyVu@(|{sGOOHS&XrlXLzu_OEYu;)b7WST z!^H0jb2z5VDsj|x$SlMm>ZZ!9@Lgqtnp~+&(bOW9D4M27ctSMA zrLshmWkV89lY}AA(Qd;JjwN9SF}P8}4Px;AQkh|JR4OqHo+#l3F*qS%1u=NMR8AON zBb5>cCnby^29K5Sff!sTVFNMPm2iO=+#+EDF*q*a0Wo;AgayRlF%k|CgZGj!fEc`w zMEe(mEs54I2Jb6X+aJ8QMAH|8N6Ev~W~4;37lX%1Gh8crkc_jpmL! zF|>8jqn}hQy@x5$&_$2o63txn*h8X`iyp32O}s~oL<<)^hDo$<(PM;Et-Hq%iN-B@ zSQ1TJ^w?9XhTUVRRPDOQ?h?&f^cZZTQ9C^(TD0i4lSF$K-I^p?v*)+SXm?&eC>io116)rh;bNY#eB?J89h?zWpm3l`mWl&bx9 z+gYmS+pS%y*4r&E(Rf8SU#h0tZIDzgw_AUShAX;RQZ?Id|B|ZJcIz$CXhpX^SUVk? zz7j1~bZeEWy>`n;)m*y`w9#6fZc;VXK|Q5vse_uNYN&&HN!3mVwMf-W2Q^EyQZdM~ z(MFv?QngUOQKEqgzo%5q({GZhb^2+k8mDhc)i(VeQZ-F~JE>ZxpOmU$`gKyZOW&1f zmcma-)hPXLQng9nlB!Ai-KA=geuGpE(%(U<_ULz!syX^yrD~1-_EI%QA5SW3<4M&N z{fv#4==f5#!-ykQGmJ!}YK4)gRE;o_kZ6Mu*yI^`v0Rb6HoHrMn8$Z8+{e4 z4LlirIJyGQ@z+NeN6(KIqi02DW6puYf~WYA(ZSJOu`YH~bURc4gd%?j&+s4M8UCfn zM$`bT3hMu_iCh|~Msiq>;3UkPI1O_rj*AS#?1}v&JE9JtYa||#sQ&-K`CLE0Kkck> z?#En;%dkelg-+Qy$2kp^07p0nI}@BS&Jd^F>FYEHGZsWq`~O?`Tg1W$tbrKEiSQ@ZGEfx(Z(%)y zjiJX-`@bA(B3_SK4K4_kv97@!)C3%b%KrmGdxu7Z28RX)&+lHSE))p~JimWOpJG zTrbzjRq`HG{$DFElZ#|Qo`u@~3 zzhrN;AG03}>IAOG7yzylm}8%S*&V0a``csfJ?%mEF2S>V7u&TZR$TnS`rLZY+JaRV zpSIRo4_J3vH&{!oi>!(@AC&?pSVvd~Tl-skSwpQss9@RA+TQAF#c}de32oJE7VlFD ztrhSLmC#-RkI0g0vCT1wIl8c&O(nEh?0A_?SJVf{Mr%D&mp~_=JkMr~*ExA}*_d!>Nc1 zE8sC%RF~G~IaI{86@jOyh^s4LGZjw{;CWe`s}8ZKI41~fkj2wf;6y5(8U#M2;_Lvv zpyDY3yd;Y!t3yUn@uVQ|78Oqn-~%eo3gAmwJV71OMHXkO?OZAzAMAKf7LQYb33l;V zXsTHjkHLQqY^37R*gsG#rQ%Tm+$D=gsy$6qJR%6(EsKY%fFp}D)HW)MhpFv+SyUI{ zffK2St1#Z;Ix6Bi47h=cxDo^Ir6R7yfK{@nF2@5CRK)ez9Ej(rqPijvG^scx2>c_9 zlU1Nb7AL7~l8OfeJAS6(!~h`ji{n+GP8Ro7TU!?QQCpXa zd#eM4q~f>$u9wBV)Sh`%92>lJg)ELyftW0gR@>RKI7)5fR2&(+VmTE@1aLnUhX?S0 zEDlqL;7x}H?}4vw&tT6jRK$fF|K5XC#HAZ>Clzt=2CSwcF5iILWl>$g2acv9uHXnP zqav>1fcvP3t2n+J9NQ5@Zlq#+04u2I2fOgs3=ASSQ*qY-Zlhvb01wIH0QJU}EcRF1 z?o`|**l`mT`vq_c75fHo2NhcbSV_e`0o+5yoddw{vXgps0~LD*fm>y9M-`Yr#a=<+ zTD#bS6KEh6oAKX$#g($y69@EdlEofs8=+!Tu;VH!?x4WHIjOGreTP#KmwdeB3M%5F z4_G3L>ayQ=x-6>ee%}sRR2Tlft}Lo6f8Q2aRG0p~__>r%`U;%Z@QLV)p9?w>eerWC zoAez+Mc4!f94?E{iRg>-8#WPr@ohjRqVL{RgiCP1)l`H`0M|&&-HAPe?IL92^rfOw zNk*h)5h@WGv66xS%gPKX1pvyBO)`L3d$lGaVQm(MKWS{DkzI&M1LwMi)2K1D!?Lu$y87p z$%wtFpfr*ZNm+nKM5cxcu!xyK+MxiAh)j|Sum}PVQ9)@WV_ZT7rIC!tQ$cAYBbsDE zX(Ur83($zj%#a0GL}XklD2Zf5Zz@0{fOBO*StQd!1!a*88d3ok0Su)AG=jJPiV6@3 zB3-DUOp+1DP(hg_BX*(!OaeH73Q8pzahWVAm1JU6fJzWpKn1u2u#gIn3E%=MD4S%& zd@3lLWQ0crWs{6JnF`7#8L_=AD4S&BR8Tg_hzV4HO#q!#P&&zoK~#WF0J~BFJ^@Ul zf)Ywb>`w(Hl#Cci1tpY>=tl(z1+XU-luv22i4cvP?!~sQ}9Wddh;*Ova)D zG=l&>y7Ej$jG_WO1K5rV5DnlGD!?>=sZ>y^$%rGVpj49)v|;%CmA#r#vgCf%2@JqbPq?a7-iRSvg~69?B7!-6_w;*^lxt4<M$_L63 z6DbenAW}>Dz&RpA`M^2Cr#w4nU&^y{hEX2Q!NJ`q59t8rP#)F+>_~amPA|%{b}pqn zw1ZuJDbL=SLV5Picsmd8I2oCTbwp#G%tJb&ajMM2Iij&e=Aj(XI85eY9MKq)c_p02 zxXeR1qH&1K!#ASQqP)^gqexI*>84TC*m>y2!55%p;|Npcr{YKzfNRkE^8w|RY*6SX z^N@{jddfUpgOmy7m1-Q}P+qCVF&>n8s0Po1lvk#4L{#Qs8sQuu^AL@2@Za!^aOTTA zG$WjZ%)>ImnJn{=jBo}}UO5J(h%yhy2xmOym0}#@Z<&W;kUpZkG7O3-WgdnR&Lqk! z!Jvvz=9OTa;gnZ`LHQx&m0(aEDf1AFaB3*8{NfltQ(pN6^>>t4enGh*<&|F?<0F}e zUsT>H54{MdL*`)@q$4S>S^QEDmn|^GYlz@059nML0N*;1%JFp}f)xYF{a@wBi`6)%gEm z)Mim9NU@VImFZ;+Q*-aw-fO+^PJ9|6B&^O%=&$gaZ>x9C8 zg?~WL^j19CK8rc|R-s?|hVYf)3&O?lnc|L~ab9_W+aIlKd&Y2C0D`VBqO zAK{7i#nAfDn$UfCp1m$~S*U8ijWzW?w(qyTv)AIuaf9`;?w>w7c)lHnwFWvv{X;v3 z8r2$pAq!8p-_S?&7SxQ{sfg=)~^UCz$7dr^NR5?TId!8^J^^ z#Mh{Vcr(5^{xs(MUxB$3uZ>@d3W#&#bK*1OGcYg0KB#@@jPDX}iD%-;coEO&0fni7|wieWyo zAjeymTj%}n{p?nowUf1j)y+y+()`2x&iurD2P-ygG}k$XL3eVQ%m3g1KPc&`F|HfS zrCo0FrmgX?nDk#?+{RKna=+7CN1ecS!jiQkwNhB6k z$&_0oxc1CV2(El{u7PrsJw|agshfg&=I@}B%T8IungDXPOy=83Fd(StxDiNJ+#_Kw^ zNN{~3`VI}Q8%DpPq5lG7f#AwQbV3?jAB&DsVexk|Uvy=dXZ*r2+u({p_Y}c}p6-bT z27{@ueU`yRobK_)2OK$8a9N;xnDH$~rVB1Xbf+0ysqIb@Tp#F86kYh32?m#SI zN5&akrS6V0Ugk)P!L^8P55Z-V@%Xsb1A`A7kMGrbkfyP%hie+sdI(dfUn>^`#zTEu zPtdWQTe-k69@?&Tx{jq=kJprFoyJ5HTDib5E{C>G;h1b}oyTN7);g2P{J!-tO)s}j z)pUC+7u?0oTUw9Pv8Am?GKp_mCu!=^dJL1XwDky0SG98SU))&KIxF}F;`3YQGE8Wl z%;2}qVCdC)Dnm=_u?&r^T;>?BX+4P}iB_&JjK^D#;z+FZXohI(=?sz9GZ?JaLmAB0 z*}-3gj(5Sur|9SxTr`LdeZgg|=w&uO(#Neap3(G(p__#9ut@6ILnzi!qb^)ywZTQ# zuJNGobZnLJy{46-Ueg1D%LmcjYjA-&dYX+l^xhQ)m!+f2+Tccs9%SQ1z4sm=HQjAI ztLZM|B~5o4Uun9-cu&*q#>bj&GoIIUtHF&Nr3Qja9#Kbt+ZO&DHyK+r-Dv!*=?3Fh zP0Nf=G%dyK*!+s?jo&m~XMCvXT7!$_QFtM`>)6#Iq3J3S)wINTMbnkWXPU0S9TUIv zVq=r0%MC8MMK8a>0}D_jV0^0gULtHw7aMN{R3n~D@!wY?)~30Pv_?FXx>xUAo#Jn; zMm&(>@3}_Yle%2*y*c#XI%^?;7un&MVhBW_M{$!LwZG4;6Kdqa9RP0LcOvKp~8 zJyFN5O`WRg>eMBgPDx#>>Cp5}nhr_vFH<89Nd2H={Zb!js!5%%Nv8hNWT#lVHO5aV zZrL@)SE=85uklfui?eHt_fxBNY+LFxyMC-pE#W~aVmn3ZPt)=W=#;|Nv;VwjTR8tA@VCkYeG~ z?3dzV<(l#7{=92kiU-itj7hP&YeuJ@QnO>>e76@s7a=qI8u{tVMwGq8RDtW7~HhO5KDc}5KZsN z5J`_oj=9!_4W>7nEunkFQhLSc$~I zVHaN-^57N{0~g@LH~ay zQJ08f{=Yxs-^V|TZ;Nk1|NqnfG3NggJm;$Z{}ba!#Sg*ic6-H##s}d^w^zIYz5lN6 z{r^m@ap%5(>i%_j+P&Ak#l0@*{V!sryVKm6dffk5cTaba+dt_2@8;IJVb_TLf|~x1 zvHIPssOWzp_7Lj%Z;LIBU4d%;QtTY`|IdmY89O9)0G@eAU_HKFvBp5pSSF|durLqc zkI^sww>bc=j$RU77|o)R|HSCg(P_~GqI*Y&V}(Di0qBld03%T=@_Xbv%mc7B@>*n5 z{ALw&b0=yAa0<6Ux0e8|3x)R{rppyS6I)oM3&wRa90z zWsakY%BrWtTB@k5ddfVMDk`gT+0bsVsWDoCm0r30ygoI0RgR#Z|wHJvI*s^i~nk`nZafs;Il%B`o&L#Q%N0s7`DD!HCQ;wPZLX}=mnH^L?dL1y5Dk{I8GAC0-<=0c@9#lbo9k3r&RDwNa zj-`r9u&2yjsiG3>DdRe-s04e;+?OgyumkYzBEt^&7gdmA2kcE1m19qdWwN4j?5QzS zQ91UMIf5$4u>%HE1xa=sayV5~mOX`%lM1rzBGpV4m1Iwe6;x44_LMoCDk{mIG6%>C zlI$WihbqXi9V4vQi}!zsfb!zR^Sv-J405W6j6)z0;Avst+EWIh}wBnhEWjcO=Tzr zurrn66tfl$r>vw>i!PHgq#|l#R8~%@HCD;8a!PHS%E~FVWs(r_|z4Q%_%CJQH0$j%StGAT9%biY)6)r zQ0xemAr#X#>tz{65w%5wfwYK2Wf=kyElF8c{%Dy_W#x|+u~n9PssMgwrH>X| z63R*+Ehf$+=tH#NV=8;JV8}sP*`vj%P#N~Xi=U*j(npJlPY!(`@`^0OAEE^TrH>Xf zN@eH+d!DB<{DD_LLS+a9yK1Pc4ANra-&O``F>zADAb^A{Lm{GN9F^e^1n_r5BBEu2 zU4}!P7FkvX!Qjg>3}TY{!IeS?r?*lFMPwNY5m<%0tPDc<;b9Py#0|0xg$TmG0D}m0 z4wfMhK{c|h{6YAKY_%OrW%vUFu0yh{1VU&JN+9IQG6W*1g-Y-T-ceFX354*?m6Sj* z$Xu2n5J532DSr@jQBwXOlvgT$V1PT7;1BFsN+l%_41TAQ5(t?jOAv@4i%QBLgeG5t zKLl=7OG+R3i)BgagX*aSec*^Sb_xD)@JeNm-c3}3J zpH2CrH$EHufxsqNQUd9X4*-GSy@V{mAfopKy99way=6)1qgPK^f<8nqd~(>s?1eh5 zlF~;n@rNuyAEFojab=HQ;!i3md-M`tQ%TvQmsmq3*aPshEGd2Tnnxw*1A*_Tr2NrK z{7xn1k6z**Dk*>TLdSGT`J|;i}VsdPze^nAumu#X{48dnp>rjUg8_O z1dTYos053kUiE1zDUCD>d~r%6&5cx28fg~qP)TW|*;q*>rIBW_O_rb$(Trad77@+! zWl2e-c_Nh{5ghQLEWsk8IU!4sh-k(ys~plS@OLPOG>cbd2@Vm>~Ujvor<#>X@9f0-9w&50i`V9vZ67EH>8@9<{$ef`wRO$`*npu;@AsS^6hpj=F;2FPT11=!}`wp#Cpei+1hBWvmUVS zu$Eejt@BXXaGaG-{A}^;`UhM4S);7M=y&gJH71r@>BO5>6z9t?iA(;wxf|W5-A6D# z!>t&-2tdkvYJ$72u1?#4U} zOJWxyZ*x}c6jUlqi%nGXPnu?f@u2r{kicpP)q0#PYzQU1F^CzQ(QZh1uW~NAVWRgI zA1iL~wrE=Az0PEI@whMHzk5&oiy_zJL|Fs%_jcvi%J)1@!ZygQ9w!kS*C!<5X^g_}JrQcZ2xI3Q!!O&h$uHLdqJJ>DQ5^N!K6wcc}@)_AvQddQok>3)w>;SJ(O?a}Tl)8p=d24jQAiRcF7F^?0`4aOR;Ngub` zJ6hBIUT;myy(2W;=~Xo?_0G|Btv5{5)!s9juJRt$w8Yy((_*imrpr7|3pW^xywy5Z z^-7u+dgp7Zc%0^MFv=cxgftjA??Jsc>pd1^o*U+Q*D=iT4riF{aVEUsM31|k8fJNS z@~&e&u0Ciu%)5jm)4Xbw;UNpB59jrTZ1+`E_|=3T*Hc@r2+Z+-B=>O-%j`DCdNy_{a4V=twT)%0Te3{9KU z++gZMFQo6$u}x|2(W(zUpPsK{&!tb&^lbVBP0yrfY1)|PAEQ3BAX4$u#%5)Q6r(AE#rFrx$8EIX#Vurlh&S)XSgKtg?D}M>@}Y<$yHz z($vdc(){Dr%f9LRd9OVyoz-+mdZVUsY3`A!x5uVe=$M_plgWB0&8JemH7CudVZC)s z`f$DX!1TGAMy6+I`d6BpSiQAtnos(At1Zo9s<#@`&+6m4r}?C>x4NcT2K825nsrof z{+i~7Rd0Tu=Ki00^S$&H{91Ek`Z7%`(%kIo&8yOU3fG(Grq9!R=cHM5_2#kZLv(CX z`Y}!E^d*|&Y3@0!7k{N$VD;ja^aZ?EtWRI9>B;m(n%1USi1p&`v_8Yc?P(Tby|^L$ zxIXT>^b?w{P9Lf1@buZ54o$DrbU=Esrk-iOeASCC=_NWQ)2yR<y6dvGxgq8Y3^UDHDW!_*_xK7S)BF8 zb!iq!y|E;HyxzMgeV3+kn)|lu=ck_v+FkuwY3>rQpO|%DZNzxgV{5M*3Ec zOiVw?Fd=;)!+z=M4CB+>6J9?qeFR6wq`6?Het3EnM+T>-G7LzsW9XNDh@o%#P==QD zGKQu!_rupWrk~?TefnUAy7cV~$u#%k)z_r&<47X?C__BW9dq?=n!D=iV`;WxeKh?v zA7iCY3%(bOdoVjRU2b}sE;CvC8F8ujO2;lSlbS9zduqDK9Hr?(@vEi_%;}oWH$$4v zGvk^TnR{!hn!`0MH2FNh*cX#qD8^iv1NGjrnbA}-x6@QK*^Uj)RUUhz!CB&M2=+EO zS924}w4qGRWHpKChX<6ox1Im=_0G&pB^S-p3j z_l2f2JpL6LoYOsaSc5ayyH)R<<4x3bn)juqQ$2QUgEQOfuVbfpJ8L@GYh?=Oy}6o3 zd(Udx)!UsZbgH+nrvBc+n)-R)YTDUjOErW%kFN#|q3ygAg1s3zWAv3w_7|hsQW-Np z`tl%FZ=63$n<43p+Mi=~^GJ4G#(r=Z|I!(A<`A}grdABOm)|duZX2noOWOz(05AUk zU=eW8rW>3wM(~$5Sf`Kvhsn9ddsEZZ-q-(rnrZZYb#kUyuL4 zBwoc#e`jI^z~keG#}CGn9-Y6kB2Ppf)^qq>5xF2zikyx0|BjE$h#ZI+{6=9NfPs-dLC=3}BpfkN_x_FZvGWer z{(H`O!g&al@3%VFIhQ-oQn6#fdU z|GgD{Df~>(>wj;9=e{{v`m8jevC1F$y0_SB6MdhWh2F?ZkF@@353_n3Sz82x`uF#10) z=gE^XLgY}a{I|Cpj;zK2*;{TeyJC!p>hu2rWB=c?w_uHcr!kJ>0j&Oa1Lp0!$gbGu zVugTN_K_I*KM^^Np~1-iUKp98M*iE#YJ6{fW^J?7$p7`$zeoOGWnFA7w6fOe)=AdU z)->w?Yn(L_dx?Jjc7NmWx#OyrUV*Ee5Z>krp9)jy=n1 z5z^;)&Hl6q`E&ev17sBmbkWhDsw#ipVY#x3{JH3uLsg{D@tSQ^Rr&J{tA?t`p92o2 zs!E`DSbI@bCD1$2OH@?}^bT|@R8<1K!)lOKl|aWQsj38eht-FwNT36zQB`HoJFLU0 ziVQlyp{h!ucUXO86)AMlaUxZbLq{M&Rh2~Vu*OgoNp$=J*HZQPAhLt39;c4&PF0mg z??6XQ6=`&Qq#LQK^5`Ab(NtA=bku236?t^Pu~b!w^bT=~tg1wM$0({Ik&Zq11S*r> zVeLv)WYPiuqN+-zcUU%6kxB=&QdQ;BJ1l%z$fX00p(>K;fRR*1Ivsz-R;nVOjz|Yp zRYJYP_>ih9q26KbOI0M)0f$gkWz;(?kE$x8-eC=-s>-N$SRtyajCzL^r7AM&fSswT zQtBPno>WyS^$sgdRh3fju$rl=QtBPn6soF}dWTgnt9z-BHG!&QgTPT#RT=dT3m;Tv z)H^ImRh3ciu)0uHWz;(aKA*~{cUZenRb|vWtfXBIbKCR9lNfTRb1=QE$WVj*L2X+$^g|sf)G)WL0I<+YXdfl~Het$|^GI zqHVscBB3tY5>!P#9WQu=sw$z5b%|va33bsnnW{Sndw!7vb~s!FG~VaQ@trPJFcQB|eW+sx%uRq6CL^D0?II$g94r>e@Pw_(U)wVMi{ zjdcwIS5dV~aOjn?3de}HBvqAS+RzPCRf=gdaq=m}w3#?*lw#VD^sg$#w3&}lRVk*; zypyU*F>UAus4B&@nN_MP#k859Q&lOZ%|ruNifJ=nqbd{wxQnXFF>U5oR8@|_Pk<3_ z0pP!$}(-{7FmU5MB8*)_k9d7i&s|1+1*%&vB4XTCFY-RC|BkU`)dlx51a zBf}=klxa^;mMPP2S18MrX}4abEK{Z(R(O^v({A6Yv!IOC?ogH?({BGkX8{?jJxW{1fwBylcKa2b1!S!DDU=0c5LiQ5hD^JCyUqeKR(mUD znKA8lnX=57cKZ~{f-(3|T4wkTX}7ntE+wbxUY8Pjf`Mp2tA4^##OuKz4WtlMT7=X_*VcP8jD9eOtx6h+26Qfy|#N3&>#OYbYC1#(tNwA!Tq0%?f3%*I7`;YM(?| zfeel;Kn5@RRA)oV>`z&t%p*FBL)>aVoU)({w!n@6W*~gZf;0G>*uww~BBxVUNb@{p zL(-rWM>ZtQPLvhWd`;PqG$?SA71F##*^o4K*Xb-sW3}Vp18DHRuTeH6jr}HNg*5-9 zY)BgWBFcuO!JvIMBn>XJS&#-FVh_p!H4uNLtgz;G%7QhBd_-A+%@;Zg*jVj2=)fAR z`IfRFY>}x42v^kfupbb{xNDpyScahE}_-*iu32mOFY)BisO4*P$ zxF%<=Fo6MSKq-JKo8cf%s45OymLP{#5rWut}GC+;hJW^*s z8ml>~GXRa%+)5edOtXD5WtcO~_VJVfXCQt}83s)=Zdo%7nr8bX$}nh}Q86L|&{)k% zXTTY&8A+>*nP&S$odIU7=IJ^E%2>^tP=+DXY#&D%KnCIjCj-j(%{l|dSZ(;|jF>ii zEoFchyUlu8XTTV%ZA+bD#I%jm86d`Li|7mpW3{c-834v=i|Y*dVzn*N8Q{fgLnuZN+D})zV6aH=&jVg&gRaY?pU?hZFKI}QJz8Xd_>g+52CC@&D!3zf6f?zhsCj=`up27lAE7qG z)AS#aEAU*fE;xsF#N2zXDaTKhE~*oL6n`uJqdRd2Iul$OzYv`YYw=t-KjGl`0hooq zJic?h*ZqZex7+UyxvzPX-Ku|p_k=%$XWMz+>F&FJzq`IJO`9APmNOF+ZXswr#8h9S}yuDEd8WBfb-TCHhqKA#^^t866SN zkDd-+vuv0fGOx~&}!yF{InY4Un2KLZjW3Wxj3>O-4IWS90M<8KV)_c zMtUQ&{-YP-KY~G?-(Ww484hizb2u7(3IezsU-}>X*O~qQp0TesQZvk*R-+x(ZqRoz8aZBIh(G@0{oyiE91(IxEl@@J8o~ch$`QXlgOG z?u;p4iIwHwF5OW!A3yI8VFZ~^N{nMNVSarNk&7J#yu|AI!U5 z(EP4h`@LEms{j03e>2-%*!+gs?gu4SzZFNYyY9mqG>gGJ z+P}EDtQ-I1Xc;|n_j&&?uehc8$IpCT^N+(7ziXD?W3+!`^9lM_bq)X3Og68*vU#de zS2W8o*l7Rq=1vp4ta%foE^3w`;nDv2&8tl8+~&RTuE+n^cmBWofAd-HY~IhPJDOMG z2t!fj#M*ElkBiqGFM-&RvW&`@*|K=bNr+ zN{8>ZXn#xp z>m3m>OKk2j_151cqO8~PS$z~slCyBMe|K|>`NnrO&oS!O<{!_@o0~T`v74I58+Cni z%BX9b<+Hbp8PyzyTI}hgnnXFfjM^ytn=Ru;$!y;ie^jGHf>BA?NL@N=LkZcVWSVZv zoKXq0?$%KP2~%kBZ1EcOMm) z&Au5Wb8}mwqdZyHI?6ShUonb|x_Fc}>atOeD5qtVGHT%{TVA?)lqDgnII2!Uu|^ro zXt5?X%Bj_2?b0X^ZPAZ3elIVu$2ERu-fdN*RF`O(*Z7Tu+#?&mmUo-qC@^oa_GtW4 zLgO31kgdE68f9Fh#k;8SGl^N3HGV3asYV$VX;DGr#}aC4l<|=k8r%4xd5=pQ|1PTT z*+v;2Yq6&`%FtSiJE`$K^SXF8`%}eiVd`px*x>3ehTD(gd<(O;P zuThS|mT8T0q_%9_D5EYdiyGyy#sq9(Pm4Wzp0KCI-gKT27CE?TQTX=Ar&V(7A&*wg zH?hyuOrt(kvyJ*h$*G6LTeZN%K2p=eZ!rF_*_(x-7I)7XyO@<9Dj6k2=C6_wH{=VW zQ!$q|Kw_`zGwN9-CkYa7)eIB6Pj!WFy!jDIPT|da)hvm$s38#})u0Gp$#DGGgF5B# z8#}Jk4Ofkgbdrd*omxb^(-ASEQx3hcw$o{ce|D_xc3QHswNr+|#@1aw<)0F&pCX6e z*t%P$NSTzeu_Mhd?PPZQ@#!XvALQS{uyNDt88%Hsi?X;)agc@qRuhuWOYIKC0bXj^F*vrl2FjPv${eeilh={r}+$*iB6#gxgEmi`X@zw{noJ!-Z_iZ@|QBK&F-H-HT z)oNbxjx8rEst(&ii1F52N~naY#Y!lH3~SYHUh!93PFK`mR-;Vpbz4qNq-v|lCibct zZPY7jOQT*^I~w(p5a1KS0l^jLL!B!K@cF!o^sHfFLqn=V5 z81tXwA6Z?xAXVjn7Mn*lP8jX5T z$>BcUdcgkD#O_yewLxmTlG_ecXSTmJYwuHX*%)u#t0E@$2Q|j1-`jE)AXi+CHL<(Z zRz}^WwlV5XwXsomD7jdn`n2*)>l4~V0*_99piSTNR@Q@q7R!NTD_(SavB(lc-PQ+>@*UIq++FwXymD)ta{z{41 zS8XR^r5Yh(XSKbEMfQ6l7OHJU^w^(>7^9|$NZK-fK0cu~mB>i7xrn%G6A@E#2_9ds zE5$<5WcWpyWp@o`I!3P0GmC3VM%7_2*1#NxV>WRupT zB`~h;*HZsK^6&ZoPsShm$^8G{#EbD?qwgP&|L^gy@&69={M$S}=70Wti>KQ|Q0MN) z(f=8EzMY6lcbmi-Vv(2~{RaL0-o_K|Gtq~m_eFmfy&-ye^gKM{7NaNsYwUkH>fNQ# z)o+TK{ofdkM+qJMzNr5IPr5JGKT-b>a>#G1zZTEB=b)EgzWzjHk*}`bA5Xi>(8;f- zetP{5nAfmbeN))SuP*Xct}|MHXS|2+DCGM;$XL{>%iitK{9|Gkmfktvbw zB3ocK!$y$}B0k3dzX?9Z-2c~tXW?G_bnbsCI5}7wtOA>;{<<&+;3$&=u*~nr%!aP83qUKn0BrcLx&QBb ze?=C+lO_w`-*f+u_YOzB#C^Qoyg{!I^BX$7Hg5}W(|>gV_{@FZeIuOt|A2e9d$W7B zdl9k#*10+NME6K{wY#6Y(p?6}WS%?2o$PMwwz`}AcYF9+d*t2fNnM0TZgndvvPIsl&Zc4ziU+9(iyV=4RAi658w27+_Q<q78T%n@ z_o%=wdAE9+3ha`1t5>POE_t_liVEzKcdPrUz%F^W`j86jl6R|jb%9;-?oFt$DhxbB z1$N21)dRW!m)u%9jtVfz?WO7uRM;;R_*CqYFID$YfnD;Y7@94xOTJXyt_yIQlXQUNYG0>9G*w#k>aQUNwO z0)M0e`{YY8cvoPbd?{w!7T}XxOY5n?Hu+L@hc3V-x0c4Jz%Kbxc&-JwmLmYiX}8z$UkrZbJpQV7GkXe!2j++*-IX71%7Fuh!@S%yMh~I9*_`e7;Ww z_R8n0JQdh0pRX>Z0(<52QB=MFuiToC-;=HK`RZCKY#WNpsQ|AWo9spfHp}O$E2+R{ z`FwR16}Ak;HB^9EZqG-B_yW7-^U<=Z0Jq$lk6)k7^7-mwU0}0(K7M^R%jcs=LxIim z`TTpaSw0`r77J{a&sSGd0cJVGWmI6de7?Gb3hb88M=^l{+;V)H7Amk^K3`p@3$V+r z`Phj~;Tr6qjlwlo=)x#o(@TZMa19QGBnPmgHsmFCR0CElQTPaqmnFQ%fEQ~C&IP8+ z64YNVfG*Y&>^g?a5_O?204~-N90_2HwFKV>Xu*nebpdR#mf&b+v@B5ND9>Q&QKwR#!P29COL+!MkE&3f!P2AFQyyS}s8XKE(xWnz zXR`F*c+7(=R*#}QgQW+U%rjVeK*v0Tr3X;VGgx}m8I)(R^ZMi`#KM19$2xbs}pn{T(PFx zlm}Mq>2+V~Jh);_Pv|^jWqOqIjFsu?c%5ggOmC$;V`aKJMdukS(^pfTu`*r#n(~a5 z>6pTs2Ue`@>vPqN&RPf4UDbG|{R`&?ynJUYWXO;(5tY!EZfQsFV`QLe_N-uUCsABa-bRJN# zde`bam}2$Db)J#ZyHMwW6ss5ekBQQ&j@Ee)#p)fY^8kv~iw^~!SiO$U11DB5b|2HE zR~<=t&;;TbooAf%#wgD?=~eh~fD?$LC=Z@MU}rE;df_O8}w z311d4v6}E@nI%m->pWOuHQ`GGB~}x@ER&>3t)e`WqzOZec_v9y-6fP~k~Cp{cOE3M znpWsMKw>o|D9;>eLVv+LbEIjN&VwUX6Am!ONRv81=NThS*h7qwCbYcFGe(;5rGXK< z2^BT+%#kK_5apR8O}K#N!4X7$sq+Ad)r5l)9I=~__mO9iG$Gw1&md`9sq+kyChTSg zNt5~&MN1D`OlmkZ~_SZRp#A@1A=fDxG=}^is zMw-y8GRGKcs=HI?fDx-{5#^X7O_rl`porBmhH?y%4mFN)43Q2sM&|$#s{;Wr1cBWt z2Z%r{*Eyz02QoQ95d?Ol9Al(IZJ=|Ek&X!E7$Y5Oh0ZZXI@anOW29qe$}vVd)B?%@ zBM>`MjyckydUcLD(h=7=aK!4^mvW4e4z(HOfDwpIDF==~%%L2Eq(d##Ie^6KSV%eM zNC(O)<-if-D6Xd*gQP>8LxCa*UG>)lE6z1fo&r zz!R%uB;|k;Z1N@Lz!R)NiYtJE$nBH^Q6O@Z15&VR3FW{Ph%G3`Q0Y+Edw>eWUX%k> zAmWq*Rv>0k4qSnVQI5gVp|+$PgQY|5NjZQ8?|eMvm@FNr6P07KbSUf;CQFBEr5ux` zL(Qfflchs>lw-1Vs3|%JvREAnodZ~`4u^8!3RXx|}Fj%&jjf99g<1gv zu?5Kd|8GD0KaD!~_eO6wdH<(H^BCVg5|!@vjjo6eMth^PkoCW9v?baU9f9Zm@9RHB z&i^a*PdT&k+<#B~&FJ}eK63sGcJ9E7ZeU4xy21;LD95}xtL1*6dA&+)%Sb-%a#m;5L2 ze18{u{9W#!iwysqf4qN~zX~1xhWv%d@1N?o`4jxneuE$Qb>5fW2i_arbKWE9?svO) zEh_r0_bTY^cZ_$ix1YBH&-A_M?APIK>$P}I$U-3W_50L)=O?xNZbM(cOP#gu*>24_ z#98TP-DBM~&i?KJ$Xyr;pXQ~vJ`cmDr>?SJDQ2<_a- zb+67A^SHwvHRHB0)=~G!j9X>xh=0zwL{$Cq8Da%bag(i^hp{PLV2blj>-f-z zoRVl2pSaTk_L>ESESZJa9VKCaw~(EOCv9#R-`;*SRRMR3cLn zGI6+bQeurnS`!r!;}SQD7?Y4`!ktZt-6fJp$iP_V$b<~Ab&g2LkXvUwAp>lkv4r^O zo%M-R*&zI-*NM8WZAm4EXQvp%a)0<9Jj43aYw|11UqgKz7wX-=r@hp zN55p$-ui8$ey$%fYA>2*)Se_GJecXDW#o(RiuW^XSCWhl;jWkDSmiroIgT(%NPlLw z+eJTP)N2ZkuVDiKX?kM(sqijq0O?M)i`MBbXPZzcH}|w9=^g`tL@~qm7K}(GMCmSHEaf zH}x1bhvfX{+st+on?*74;UV}m@CEoNfd>6eZAnf{|u6ZKn0ZL2>v zY8(BEQCn*n`|VI$>BmiMOWM(>EvU<=3FI2JIqhInD{XJoc>Rb`E&2_kHY4F8Kd=45 z#K!9PjoOri$9RaN159kRmT^>`QuP-T+n8kB81uID(F-P|PE(DF(G;Vi`X5HsQ{1SCe!{3g ze`u7iKQYRqHltkqq)|lmMrr+kQI3996rM6#jJl4}MqQ}iG3o*uY19GKWYli7#Hd}U z!KfW*l2L6`XH+AlL|ISKXru0@R--N?Wz_i;7?q(-jXFsG&8S^ygi$T}Yoi?fCsBAR z-N~pgX^v5U)6W_8n*QFXSM>`<-J!oS>UNrC)NQ1Vx(;;$c?`Rw?xHb<0yGG?`rctNT21aG6*{I`5ir93lr9DD`;~`LnmOIvH$yLE4-dI_6 zp#Dh2D%wWGzO;*om9&Y7Wh7SR6=zEUOlhT<8I$b;8YWB3PBaJ$CR&|PCq>9OF8y19nd-72YTZvfR&?#a?LpP8AAItUszy4Q-J=g!gEq-nM zlK9#2b^noH&t2{o#An7k;uGVonE$^adfYib$!~uw_5i8^-V(byb`g94ssDd?>{qdU zkl(%po$ltwrpI=OZG#N=jgbLRZ#n?HhYkSGM<0tmfDQmRqu<>{(X&uLE*CukKEUee ze$kbvAeWBLjZQqh|F2R1|Lt)8|0DH(M7H~l^;f_P_-%c;{*?N)$am-Y z|I6!lu20p^s^1YA?-Sq#G@`blM)m*CQ2qZ6_yLcjy5ZfCn}Kj2PK)di*(Nd`u0R6S|0M(9?cf#o0uKlGVHU#;rusi;02~t>5*!fh87vP5 z;0??SI)aHoD{|vE45DxczVkox-}7Hb@4LtS2mRmsxBAzFHZ{B`=7`E^}lNWKOffqzX#nCuMTVfOBH}4!YTl}d&|6jZyq`(P6})PZ|o(!2x|X- z=YED7hi|wqxKE(=|2^)l?zO1>e~$Z`u=fAa?ji0k+&xkIf52Vf&T@Bjf97uPj&?V6 z>s>|P(x>z;y-v^3qx2`bi*BZ?;1#T=DrS-%Plwa5;1;Z)rRbJ8m!_e%;nvhb8~>|Q zsBd_azVcr=0LSaY^)L0_=oPtG_v+btirx;sfm8w@=Lgg_{J{CE^8$J~ zKIq)z+~Qn~>W1r`nsX|;R37g9GRy!NbpD+IFxDA``i2x{0DPeSs$Ni!qxS#Zm{D+z zx>%j1YAUBrP)DkR)V^w^T88?D^M8^9fZG53j7$}F*3(W(SKzE$>5)`{v5vq_RAFa5 z?JT1TJL_o}mK8Ybi1g?RTkGi+x&mw6N+)y$&bpO$bOpw`m0qPQ?5n4vRAFB|4WqEa zzIqxhNh|Qxt#m6@*j7(tdTIr>x|KeHD(tGKQGT_;u6o)Tq6)j}X=kCXz*V=>^|}mG z-Ab>fGCXx`TBI_Y>S=Whm0_yeX*)q>cGc4u4Jfm#o`z#shO2I+V^n5SJq@R@3{xH3 zj;1oZ>S=X8mDyEKI|EdPs}9kp%WSKsHI>;`PvaU{W?Matq0};Lb%?vD%)WZsx}3`J z)gjK;Wf<#LdOnreS5G^0s0?2nf1sbrY^J?#ur8OA!qAeGr!PosKu8P2+u z-j2#J*0JqtRAy&A?cmjL)*+Tt8P+=fQVW&YTTeSnsm$Jb+Wtb9;jLR~MP*p)Skp^o zco3OQ> zcDktyYaL=SmDyWQJM*Z_-g??eQ<=T>H0lYI*;`LLyHc6G^|Z4ymDyWQJG)Vtz4bH( z-OKE)r!nYWW^X-h|Den8)~)n@y3E#kdJ`(MwVuYlFT+~5(i>Bmo%J+|!WiJ3x(r+0T0CBt;i_AU*XS}#b!##9D0}LQ>u?~!Q@0l5@3W;oeB zTk1p3R4TKjKIC-hGAwm#Xq+y?QMZPCD#K8>ht#LK%#QkyO=Wh}hpf}73`ZR=*+G}t zQXd*gWwz9ZEc`04)U6?Wb~x(TVg{AjQXg`r=rUXCL%ZuTEOl!rN@aG`hfwLZ%#QjH zPMtD4>O)pim)TJts;4p>bp(pK3`^Y_!VX|ZeaPveGCS%+d}PB>M`R+EVW~q*qcVHy zL%eU;Qy;>pX_-CsA!jm`*;5~KcGP8f>ekSBDzl|NRShAb3*$Oc}6{l;7wvhWKt zSBCKWfh*QflFE#gA*YkdjFln&Wq}o|Z;UQ8RrBC-Rs`Q~ea2Zsw`l7lFs91g2naq^F zR$XGI^i7}=Go{bjo=VJ=KFm`rfhksBJ(UcSbg(!2}H5_=IaszrEd+D7$|+tHdJDu^w~ru21=j3hb{pqR-d90 z^Q6yd(g&}d;Kb^~7EF^q6zeZBP5P2l zVw&_h?Nnl#^f}v7iD}Y@0m2e!V)ZT3CBVd*J5HCt5^HXUE-^~x9-&J>i8XhaN=%Zu z_QARYl2~)+Qwbok=Q>+biAgfI?lWCtlFY?NXOhfCs#l3gGS}IPN+1cu7F1%C%tcC2 ziBU4w!5(LnbRiR@1e91^wl0ArR@WR|0!XZ`5maK1bUB++i8<2cjHVKEq|0g2C2+** zO6U?WVs+s&Gex@aYcfT;rc#M1(&e;J2^4|YM3;aOs|&v-D1yL7RAP*Dq0d2yG13*I z5@Vzb4G&7dh}EU31d1TAIh7bAUCvl40V5FOsl*)Vs(Xb>%#kjql}gN!F61|qm?K?E zmzX16om2uxu*GInVvuxMaVh~M5JypoNzzsKJe8OvUCt;fF-f|dW-5UsSoNwdF-p4n zsl+JhayHf_MoAZbM@C6k-Jht$DCt7BQi)O0HJwU~k}hilDgh-BA5n=}GT>~WOJIpL zFosG%2?F>mUJngL4PbXLO9mpk1eRC>ab04R3@o7%qh!Fr z5zHtVa7O47P+|?(RAQ10IE}gll2`+CsKg){z+h;JK{9};$|VNL0J?6J7$gG;Dltd~ z98Z@35^DelEI5JyjwJ@k0QyLj01~{*^;7~$@ZuY&hXB2;3O3?LDu#3&iS*8xhf zre2qrB?FVF#4H(5$5II_!KRN;2{3_JM7C{ti_82NMP-d&osR*DzLQ3@%|3#P43ycpa12Fckb>7@S1?oNjiVx%V$b6p%TSr8^12A9 zSo83~z!YoVNL^&4%-dZT87cFy(|{Cv9&S*J%#?Z9SI+>2Q>=OQy2wbG7o#F0 zWuE$yij0(bsA^SYq|C!tV5H1bTk9etWnPmm&fw)HRAi!bE9`hCO1HvyVxn}bHB@Ax zbgMs6k%`i+-ligm0`V~wffR^`brDRly0NQ(6svojE`lgl_l8ttpmeKGsmMU-=EH}9 z(yd;nA_Jvcy`zf^lx}=)0LALY@dTb=#dEp{pjh2FjF>0gI7f@%336zW5zIj8M#@}~ zfzqx1N<{`rw|Y?*87SQeDl$;IkxW-)pmeL>=puk(buZUN@WkrIF~>OR-d-0OC*4zZ zk#W+E-MVS`g6FBoJn2?XP?34kjobSoc!J1BRAiuZt4FB_pg_DrMJ7tOdX0)qly3DV z6`3gA>M<&UC=hQ^k&)7^9-<Kj?=9~oRJePij`t4pR@pyzdwN6OLUgs8 zip=&2-e|AE3%ok}&+eD*2Y9Z1&V9ta&%GT_wHLeV-HLk(`q>?fto9YCZI^a?+%9Cb zPsB6r7`M@lqjLX0G5-A#y-lyuvv{h#A65Hrp=(g9;2hMqL$@9DH(5i!pgp6ShG`LU z+h@?^`tNC58jmO21iGU9Q-2YS>G$>P=xg_|zE|Id3U?RPf2!B(s?MTr|6%`)zIOkU z5pm}j=U_D6S>X&iy{K;2;cV-)I8Dw7$5sDOU#Oox(cY}CQWq+&ZI@AN)gfwsJkKss zeQLJa5uNPDt7f%<{aXCX_y_Sf;?Kn&iQk7_j@QO7My-TO{1mRLAKx#&B0d=Jjn9IQ zvn~2KHpNH82`ogNCY6YXbF!||ZlzQ)7pj!liV$F_`( z4J$ZO^oQu@(f6ZogbvRA(YvBIp-#aC(KDhY)Necrc^vyhcf|~j1<@JNNztvN#@dKDq%)3)$Q0TcYa+I+S{)fFqCfal#I}LV=9#g1 zq*cu5sa`z!+xTY0(?z0h5oVQ(1OAPh|%lRPU7O;ux(>qWVDCeIXQ{Wf`qyui99 z5c7D3b$LWg>lxPh5znk$AAD)l9uYB=XIROISmZO%5b7gYTlZSTGV0afGo${`e0$j+ ziAb}Ekr5d&oG~II_VSEaL?%bgh(=_x@{IaOLN?Zss0b$_?jdgUycyxg#qFFYqZPQ- z^QN0viziMvZsj}~9mKt&CmuWQ4Lup-!R@Lio-1xGJ@IC7=jw@%j~h`>d|lkhdE$}c zZqE~+6F0V=xS+T{^}5a99p%aR5bp3$tApKp+|hY*FySWB6CW10d!CGB;SSRie-(G5 zUZ=dG?p04*Rot_B;+x{W(~~hM+(dff7~^i-8whtxSHC9{%(~{lU&9khrdeAM5Xm6$n<;ncCF56oa zesE+RlMLk`Q~6v-WtBVLr}3mO&HbJCh8(AQhRO zmF?vRtrAmh<Ahp>TQ~oV|}VOCb`DMMkf~=wMlZRQ5z?JZd7w}z^JC=TB9~f9&XgAV$_J_en!QTMWdq0L8I!EWuqd=VWWcN zzDD^;Ik%^JUUJC9+~lc7QS#SD>7agSiqVz|}osD`d zd6ZGJl5!GEb+$|HE;03a@;633lHA3peDXA-_DSw))P&?AMzthYh_YW#9%t0C$)iPC zpC?xtb$fCzqb^S#X4GZLy^UI*+|8(ik}HkcBYBWfI(ec|PErUqweGd#{t~OZF8NEN z&PyI?)cR!2s56r#qjJf-Q70#l56_mVMV@aCf?+6TdTSH%Z7L-RW+eki)IhZBEFK*y%PUiWon;?tf!~-T(hq|EKpr_`^;DPm+`?#Sc8n-Yly4~VD_ z{t|xY8M-sFiBVG`at}5`?-(Hy>xgV<)a1xGqb5Zr8nr|4gHhWD-x}2(d|^~u@SRcH zMdUGIhW=S3X<`$D?~U3v(qhy$kqJg^9sI+nts;(5TSi71wMFnxqb5YQGHUbSW20Il z5u-4EY*b4`?p$Z+&4O=CY+S@QYHUO@17_$=gAYw?Ok@jD>h{QZqxK0tH){LfYojJa zT%*QBwl=CM5;LkXvZ*Nh>xeSy*hrkm|Bq7skM;jwi9a2G7|)D%#BYdS5x*dQX1p3d z6*B-1kN+yZ51t#B#?$eh`1JS=@vY;V;mL7i+>cwauVWv_-j2N*dnWcU<^lXJc0=s) z*m-z*EX7X2EP%t%GjQ+NuBdR=7n_5p$L(WV#WssI#}Z);fN!IpMBhaQz;n?@(Le4k zWB^HlV0VAne`Ek`>?bf!!1BIEmBP2ZSG;GuhcQ#&ci#2hWpGJ;gQ|rmc}IDx zF;`$EIvl3G9*?^KY=hYX(gnbBzji-z-*R7ZpLYL(`h>UhYyph^pXTPn`TqyG`@$(% z5_SQY>bAREx?|l@@JWb%pwH=jdV`+-X>Y@yb~dE2uOTg`Ns<~d!?B=j|GaW-}mPQd{Qy6ty$If}m+MU+1bDnY@rFHC_r<~VN`I3e9 zXdSF`M6RQC?475a?`R!+=PBm_TF2gb%K4*S2k+cU*?L_aFXvDV);U&ON;US*Q_dw+ zWA8kr>!`-wc}n|KWA8lWTt+qa&Qq9!RfBhqk9DuE!92H8BdNyTdCIwmYV4h-oZG1e z?;OIR8k^@S=O(JLd7g6K(KR;DQwgfEd7jdiuCaNZic$^cIkxzLYV4k;oM)*9_uNj| zuTTy4IU;B38vJuBwVY~fpQo%lbq)5pm1?CL+;eR4JF2mLo^oEK8r$b7=Ps(TeV)Rc z{2JTmDd&2sv3;I$&ZZjM=P7GTsTfRQ&uO{;G{zwN;S69Q&x^@u+p*dXHPo7yo1Q`rMh$K{BKRR-r{hOcRAWCqrCqAApPq8QrW*U{DQCQ{!B4kRGpNRPddhiR z*I=hxsrgi6H$9~;(=~R}QwLBDZaTL3E7f49LtL(F@YAi-c&f3To^sx%8r$h9=NVmt zoo=O$q8i+E1n#36>~x5WsK$PJ%DI|q@Y5mwL^U?lQ`S7Hv7w%_eoeKlLUA0`*icV7 z4^xc|^%RN}*I=k4@*&mOQBOJFP>mh+l(wk`M;(!SsRm0O?}J?fPaTnqb&XB+6!rs5 zb!;0@ja~H=CYsmSRZrF3Ks9#NQ&tbv*i}zC`0dzLPdR_18oTN#t4cL?)l(>FTVq!} zg<0t}cGXkPYO1lTo^rmV8oTN#=V_|3tDbUhp&DFuY_@2@B1bz^4UwZBpsFC}L8|T_Zu~w~L+02gP!-I<%U{q{ zK*#DILse!@KL*yTV2;%vp(-P%-#MD9jGTVwH&kWh^gDT~GIIKzwNz!~^gB7KGIILW z99;!+tp0^mW#aUs2zM34vHC|+m4VamoJv&&PCxR(stlZd=Qye|aQe|Bp$gzw{Rv$K zZ>)ZN5ynlwb2?QSH~n^*s*Ia{=VYofZu*^qt}<@=>#54P=|@&qm2uPWoI+K`O}~?& zD&wZ#IYw838>>G?Ri;h9gSTVa^rHlSm1)zDy5Ci%O}|s6D$}OlsZo__)9;)}Ri;h9 za|TtJHvPzgsWNT)t>>xAwCQ(#OI4;#zw>LVGHv>i#Z_h6^gBmUm1)!O98XoIO}~?+ zD$}MPHS()WoBr*n%CzZ+$5;hzu*q^=1#YZ~sxoi- z>%P!c@W$$2q^rPWSf;HBn1XUR|i%@{O3e;GOV!8^_Sc`Co zGH4b#N9ZbpW|7iWfW}(XqpRSIwWwEDff;MjBC0ZF7CA@iDkx*kit8#MW6iRu%8Z%i z98Ohc%q)yjSHT!-)(WaJVrC&lrwYVavs$Ujgqh_Ws;eN3H4C2tfU#y_*D+saIfv;g z_+kx@(N*BZ8XiYgrpvIiMpr=>YZyl}!)4eygsKdeVP{`m1zfD*iBx5_4A)`Y3T&~4 z=TMc=GK|jkRYuFObAYY_E!HrOb0*8My#t20IDp*)u;5+sNkJBCcz3EYScXxWrV6lF z!%?b&D+nOpk-;*IdxZ*vWf->x6@bMWM&cuLWtbBmnJdFnslr?tc790}=E^X#)hf)D z;d)&GSFGXHx&o|N!!fEbRff@^slrqlMpKCjQ)SrMpDIk1VP`+8Fja<~Ra9ZB3?nVE z0;*WU^Qpp68MgMI3PWYs`2|%ND#OmNsKQVgb`GWrLuJ?*))hd-8s1JVK3NvN6mnzJZVP_wzFjIz|y{N)W8Fmh#3NvLGsW260%5cA~FjI!Nr3y1;7=?Q( z%#>m0=Tu>)3_Azv3YcOIZ>%efl)-USVWbQKi4`El8jMhdi85&2qAMVZH5k_w2FhTY zt^g?3;O4plo>+r6RTw9O&PrVYPOQN>x&oS5gGiHQm<(b(p~5g3!~tCaOsv5KRhT7% z$lR+iO9q|YbpTf zRhS}!_FK9Fidchdr~-)CgJ^kG0Y$7q{D=&ZL3;#M7$SopPlX{es2r*QBKSKven1gK zaGWwm2DhdPFoFR7Fmq%OzYsWL4KAVzFoN9B^K^wdk{&}9=13Z|l`7x}QbTvq6$VLq zoUSlP(!Q=RNYaaS1t77~5nW-9q<5wYID)Lt3v>k_vC?s>Fh|n3PF0vA>4j8bj-+vB zSC}JdTUWplD~+!LjNorApb9vGEzacm|BKWPb^kj@jAKXOiT~%A_rEAM4;la4W3+hF zSQ7dEcJ%A$hv@eA0JPz_{>u6# z^?miTk?B9Netdm1YW=y9A0nTr`@`q_=OT})uQ2!j&d80CDj`m3veW= z0PgL~@pi$u<$TNn*umS%8;dG{QOp7O1|Gnh?u+i@?)~na?hWo`Z~)e!58!d`p~(K< z1NHyX=mH4a9(fX*xCz%smc$o$`hOic5)Y#T;BCl|xCqbwW#mU3O{-~N+6~?RQmFek znYN+LXrq7i{(E1)p`S+v-eday|8boFJe%kLyWRg9oICLBf2ngea{jaE{gw*4SkNIMd)o!#)%Dfg zvOpZfKE3Ax$!JKAUl5ngoEzueCrY*VtTO76?y;d-81d(bmAKF!HD}AvCG9(6wv2!E zIS0>{G3bRIv&H=E({IfBO183ReJO8d-9JmprS^@VB}QT22K}?%l9hG0&k_^1FE;CM zCUoAcznWKGHcOn|{OB9CMxE`; z-@rY%FCIPaxqTUG?qB3z5q_rrh5oA|dVI0A`?vG&kjNNc{Pg~WFP3!wNMCI0{+KVu zdVjtDglrt~-xA^Y&x%m+?D*56!k#Pn4ye!P&NH!F+_^^G?8+WMNj`VBiQVY#Xw(gE zpHbJlJ)-O%+)ksi?le(Wi#yY(G452OM!3^O)!pYxhQPx8+>Y?mEnM!-5i!S|FJhuA z*$4|ab|*_D>UN9pUCBmRsN5M6vE2pXTVtAn_lQxudNOo@>k|^T_^V^~g(n9KCU1D} zn%IzU8?_8*lkJvzGI)X+7v4)IHt4-$)MD=`qjvTlHEO^U%N`Riyk||U-;;wBvtNA6 z#L{T$B7b8ie*>fXJUP-aM0 zy1l23n&W*SN}cb?35M&qFIGHe+yLg`Yt=s9<3{xZ`VyN1$ct+CJ)_3>n~6ed+nD$NS2}5}piJV0I81(1h=7J>|)e2j=>CGSGp!INnEQ?FGIJ zJz!dn_o0cc_ntGV=>5Z}wD*8fEx1U@JCE^Xa0Zi;d~ITmC+xz!9Pdqu)xF?-V$@xp z41QpSkN2L5o#%aO)Ow`+h3|~hx5210JQ?)Dj3`_nWo^zEQeuu0jBieiNgshs!BDLB zWD;w7l^;lCKa|7`SFJ$*o=`0ICH*PAvoAAecUl`cD_pgc9a%3T8aXrkYdhJA$Qcrv z6#1=$^n%FgM)gKy*mozZB_hb%Nk!JlN^5zfW;RPj%(b9DQZb>vNLk)?+ej%C=|$cj zMJ)6s2P@qRKR^7$^U>rt6g{}QhhjUVM24c(ClTX($>mCq@mnOai6>)t>5Xwe5N_Or z62YNJ`1K-2`jR!59^oe?68D=$#Jq1rM15aGJt`7~FOT@6Mfm=vBDD9J2*;0zP@Z5m zZKIzO|8STy;vHjDySJB7ZJxQrIoo;ro7m61Q;nMF9d6XN-kwHn;~iww*4_a|ZRqVS zN`2t%XVj(MDWdGhy(5jf-aE{wGrg0I+RHoIs6D)28b#i(L|LzTCy1(h#9L$3o!%Zs zWxXT9Z`-#9gDkvj`WAV+i|F%yA)?pYSHyf2Z3?%U=N%$qj`wR3Q@rCu?C2dTVr$fF z4maM?%Zr%ctrgMgNw!7bIAp6Ge=~yM=AF ziijsUBYny{F#KX%YVl^Hj-gwPI-2e>>L|L&s3S=(d0c@}F1}oO@jA1%pKcUoJxtdc z)k4>Z!ZY&qM%_$*H0lPrD*Q~nYv~Un4x}qZETnrxw9@S&#?gHu5+oP!-jQ^tMB?;& z5iz<&M1*7{y4RuKNkoy1jH5>7-Qk~y9~{VS76wp)qfE>Ter=Q+m^&9ufe;|2b#R_p z>-Yjt*zCa!6SIR>qpU!VD2&kra=c-1Ay^`7oqq(v1q`DE@)M+-?}M^g`(1FNQQrnj zjru0o+^DaE=|+7OoMF_Lft+&~r3iL5vCo6WMtv6a81-qe!l+Mzkw$%tY;8VYQ_e@| zOD^ieV1iM94+=(o5cC`MzAqQFl=EJYGO>4kx$t4=C|GS`ZwK2O^;S@C)SE$*QGW~M zQiOqpV6ut55eVv2&g;Q)6MHR?GdJbD8VHdw!V%0gYhMnkM!gga8}(waw^1+na!ZnO zo(}}hDd#!#C6jOYY#=PcxJA%zVowK2qn-*bHtNZsXw(y!wJooGJm@s)u|RHdFx(di zfiOT7tTbyM4z@JvFTq7d{W&<-sD}c%c%+;M(JM{f`GG(PlydG5&N8t-1=||+$KZIQ z?hCdv>fT_yQGW>L8ufesQ={$)4mIj-RHT!?aaZtjqwWlPjk*I}-0UYY8S}w9jM{#u zKhbaNm(jQVL5$hnq_5ED>EGzQJ^^#J55$P=uQ`;Df*G9DEeC7Nd^R%Bw zrS?B!wDvmZ66Y+Z>SVZIJ9_qg7=JVVQk**q{62nb{AzUUJ0o637W&%wn)okJQIP8i z%#Y8APeva4`1r>0MBI=4GxkO7eRRuv7P$oX#%_yUgIWS-#>%miV@JnUBMW`E*y30U z)dVM_j=*NIjbibbj(&$6g14hDN1u#7sJ20`yj#L50_&sIf8`MTf9;l+uAf^!4V479 zsvlRsQGFb>1HOxV5_voFa^%U#Ly_M{Zbja}#gVg6OYq0a0eeSw{YmeD36U|8WF#6< z=p67-@MiF0@OW^4a3`t;To#;zK8L3U#|4L?Yrr1CvLGFFqnqA#!RBGbfcik8p5P~V zE_xZ+0uN$7#ZCSd{(1iCei8F2j`k1s_y0+*zz+Ua{#aavqrSp5{Uh`ud=Zrb?)UEW zZa|*EIo>+&R9t@!^;UU%dCTDsEI^uZ2NIOWBTHZd&vk!rKQ~Mk;&agAsEyy2mww^5jhdGRd4L-eK-@@Jzbqj17QSJV*Mm3?Oq{ISW zZY z{!$UW{w^Zs`v;1c zh=ecqp~EA6Ng5uG`DHXeiMs<1T7&YCK9fi60 z-g*<8>d6m|dGlV$#HM(c8nvS*_id;_;N4(ilRdeMz~p@IG!xswlb;^b{XMznqBwzf zt*k{)%5|db9#8HBFn!;vO3eDiyU?fyJ$Z;k=>bo!^{89mU18Rq?#a)BssrA6CYJOr z5QV1=xtBxb0q^W^uMF+(T_U0fHDLM1eP}#Vyh1S!8DF7Ddh$~YB`{AejEsZ{9Eun+ z!a@;6ahOold*_Srz3W6MuO`CwIJjp{Q>d-$P zzQ?i-dRW9Hl1K1mtt6SJ%M$d6tcucKL@4@`2%DY=cLBO_xVsp2pDQFqmk)O@6Z?a^ zzfr$;R~mJXyRT7qyTVU2;c$00u{+(gQFpk)Hnae7g>7gk;tKiD(ZgLL+u37WxrIby z4tFPs)t%=qHfp`Qk5M^SxQ)gk?(*_=L_#GH zjEo9Ka9|2SAP@l)0Rb{MP%f^{(~)^Y91xtbNYC_uO0eeyi@@`|RUs(d0tuW7TT!LiuB&i#!KwI>7TY zO)g9gRjt9X>2&sc)to@Ro> zJyQsVdWH}T_Dm+I$8yo~`J55+3@51d(9JZX(leecAuLX<`UE{w2?Cx`1b$Bwf#abY zZiell$!0Sw&m?s|r~%`qZy*$bag+X|w2S*U)M~!!zF*T$_iu@e7v1!|h$=De2h{;i zTIIfvV7mJrf*7h)%VC{V>86+UlY(w~?LH}h$-An_cHgUZ*~X4@mT78r=n-yX$2zOD zZM;LbcN=SQ=uvNDCX=R+-b9(aJsc^r*np; zlCx1$%IVQ`r9%&Mo3+THZ=W{HaMn?)`IvK-rbnDEO@xYyZ0 zt(eeC64PenoweGw*`Xg&ZN1KVb$!~_IOH8_o9>WKw6!`U4{fy$eN(nY9QuvbR_V}J zW?RTvLz`DPm~(4jR?0(+b~B=lfY8x@_9qC40nVG z4n0d#UVN)*gWDmpwz&sr8sm;>s&`juGQ~GU_}UE<8DF@`;eg5=Sl(S74PUmTpQtb) zzSg$wZcfE$POnaeJRQ6Dz1GnBryxEqGT_mJx0r!EpD!1hwuuf(YiPt3C&~ z4T6E@b4Q$WU%=NckNAAP+~@AcfM z`cI$kDHBZg^bxdrt|A!W*+Nk3q2CMBD?QhfCFHq5=Kr5<+y8&{|275JsOd%yR7;r-D2miJX; z0X&IS0q*nO?!Dey!h8H?WB{D&?eQ-0&iBg9{|T!4-_QQbyZpO&p^&TpJ%%6s|GxU) zTGU5a;%WED>VLHQ-(jA5tPw!f|Gss9=6)Zm1pFEA^p8V!W%a*nu};9R@m4Qa|6Ac+ zhMOOSmT!cCas}TJ^ z9ku`3#AGoJ@&CickRS5@ze5JVhgc`zuUIEwr+&M?2I~a;l3&c%^OacrZ$2vj$v69B z_~CpAKalUoYA@I|65&STt~PL#+rWv zT|Sp>e{FxP^8R14pHlvU+wJS^vYoPjZeL)pL*D-x_5$SnpI{$rkG2oD8|;WZ(Dvbm z|M4Hs2;0JfQGSu(wq=>EY%b3*WtzY*6d6;IIZI>=vK2+Tmnb9B z>lLv%JiSisq=u!D@Mf;AWNDf2wt6H>Bj3$j?c-^g?zS2=d(tx9ZMDtQNO!{mXR}#a z=DV#vlBZY7U7TOZ(`PC0i*%3N{rN~TOLt2X$`z*1lu+&P^a=&NJiS~&P^6d1-qq|> zo<2jF(7Q_kcDYnRK%|$bPR6Ao-AUbNiS%McR*y(8BHL*qy-<;T08gK;HpPG!NI0RE zr#lp2uk#h4sa?Soo}MS+G7nGBRbcV-90eH5Yz6f^Jxc+$It^f4hy9$Yz!vFKa8%YOa(1GJwt(?r%zIV9knUIj!slCh^MCm%-_N?O~F{6K0(4281(T9aJ{A~ zXc6ft@)WONGevqb(McjbiD(8-PgLD7xCshI^7L^EX7O~Zf;A$2tm=*F3F-05Ts zvZ*{>uS_^#OaYD)Re;a5P5};Bt9rYlB7Kk|WN@YrRE;=vgm!hjNFP9S0!zz`xv9M@ zjf^>Ss>RYWVQwn+C==!o_+@FCFgJAsPs@b4sca%oBVi6OnWvF4XCdgz(ny&zr(*Cj zV{R(u0i?Nm02rDf{vRGd9hZ(*3i(#X9vryk1EGWB+11y9S=+leS-m`3WYIT4== zGHr_{RrKAwG zRqzyq2wn3mC6%Zx#8Xm<+OV=_N-9xXB~M8u!q0M^f)W9aWvP|2WercAB@O0dJS8)4 z+pH8%$;?~)4Cg7CdD~{a!BaBx7C+#53YoWnzw(q!y~T?GPs!BVHY9kaWa@1j>XfFI zs-_l}S|X1S;3;I@Vla>M6jE=|Wg}0?+}k!>uawNaZDZqE>U7!H<|(A!Vt0#pO6K0S zSy!?Ya&OJHR-QuYExH0^?rod(XP%O|w{2`JOCk5xY@5zfv+=j3o26#SzqLGd8alMd z3wNqCI6QTVG+??~>SSr?WvQ9+ZyQg|Pz?@Cog@uGmTHrKJ9!Fex7fveoMeHK$WzF@#bICJsYcawA5V=|O{0107}fMNOO2Ad!Sy~`86Ib;kw`R+9og4oZPQ?$ipd6h2TvjQ7CjE-DVcoR#17&qnS9&Cj$$d9eA|R40?D`NyB|x*?As=M zT*$t~aqw|LOwjcho`RYHVk{-)q^XjnASY&%i>0KRG~rW{YSP3GW+|wN*@RC=iV5Z% z^AyAcFp{UFnxJS9OF>P{CLc>lF=@i*CdC8=i&#pENfSOVhzSfEcuJ~ClU>bHQcao| zPf0aF5hb32nqaT>JSF7>C5w1U%1IN$oh;=9rHgn<%1IMe^GiWa&~!9UK~K=s!BY?v zSPtPSC<+es6-z-<%%)X51x3LTUgIe#DNQWSlTuQe*bttCqyUEUq|}rqb|gZgp($o_8&66}X+~HxDJ7*j$dgi1n(Z4{5|Uyzce12Z zl;#t7vRyV95Avi`lx8-NC#9k^vj9&*Q2+<9q?D9q3=xt7gO4YrrZlrbJPA#~*5~o0 z6qROH!;(@|nnOGZQGsC}o|LN6jC(E#RRO%slaLj_b1Vs6F`FxSQp!p*mXu6NS!rIz zlTubtYk(yoD`xW=o|LN6Y`3$dRF&qnED2RHn|&-PMWwliCm|}>;$oJBs+i5_C`F|i zCjn8hnsLh|rK&U=x9}uX1tY8ANhvGMEX0yhR+>lfBxD6$9^%Pn3Dze(DRre8Dw34C z(rj#CN$85%Je4P=hXR+f~y(maPJrLHtHKTASa z%;wcRDP^UZ;Uku^(u}ntlTubt<$))qtTY=}uq0%~Y@W`OQdOE+HBUlSaA4eQkQL-k zyvUPMS0=fh;z_A1laSn>gszyAaQjJFndG{cCl8Xq7*9%FndEwsC!s6oTg#JDSSFdn zcv1=rV*flTg=La?D^EgL&}S7-LRrxCB~LldjSBzwpKv zaUE{|)pas^*S?qi5w!;H4BQBBLmHLpE(n~941pzq_Q1)3@oqsxicV2a# zM}2_@FzetZrw`QyHe-E(v*BS_fEfoTILE@jaJbXp9N_GOwFL}#7e4U5;eExs3snVn zz_)Onx8VJi_hPIoa27lZ^N_7E**g}i3LJ`x0@bLx$US?J^YIVQ-;j+FVGaU$Pa$Z! z1L4CPJY`Q3q1^L4t379UI$TQ;>OCF~_(r(E4?!Yt7)iRq{hj-BtUmar^eeD$U2nm+ z@F3j0x4O5u^N2rPf+VybG6vYE?g^;J|0QxhK6EFr#K`}>*#-0YDf|T9%Ezen1L}A+ z7wkLs`M*^V_;0dNDEq{~Kf8_mZL=d|9#>wn+18jbk103T?BEy*Ji+uRSz5+CLY?@F zV;&|7+&tzXYOEYX?(*5})iD%coo($HLk{uT^l#gwkh#X4 zqbUF}w`Vj3TjmsxA29Y?oPEWN|n)k;zD4x`*UT6ep) zl`d)ffKQLTUD?__HywK$(SVub$hX|i?-~2Pvds=Y+H?!Gn)f%2=UCiX-iH5g|EUvg zA3c%c7jr%5P1GNoZ=(L#tQRKI$JSw7G?6^r9r1}26zDKsn@AypcH^6-7M#kq|F@^} ze|&WHd31QMiTp~_)sdSuT@~4-sV`F0RF2St-r+4pen~dZO%V#pcZlyJkCIKi6}eH< z8<8EFo{i8m+#!A!AqRbjSRX0t*13_*MBE$cBXUiSTt#H>ilj6xj-)l661hoJOJt{} zNaT4o9BX8LQ4yg?W=AkW=?oo#$ZgceAEA`u4qt=>y2FW3 z?n8$ixtjV|kw2)bFh5v1ob+{mFf@Fuwp9#2Qd4mF(V7CoM-Z{6hm-!yw{IApAe)&P zPEq3dvxbw(&!0T}D0Qg$wZkdMJil`IXtIQcHxhV;HxbywDHz`FsSls4cG>QUg^$w| z4bv^v?x_ot2)27_!}E3PL1EI6cF%#~3$-m0?$C5Vc#@`?Fx~v^o+O~g~Zt8YV zb$GV6g~N3Fw0o+;T4+7{h3Teg_Y4e^=(l_J4bRhC>=W*n;mYu3+7=2g(lj7EM^i+UhKNTjSXy-SFPuI4y!(EyNhUsB%XWxhEYqp&|6uygE;rXC1>vlFa zJWAVKVSWF(_JkLc&2>@u7nU#;nwaHFOp!`Bhn--gfE^g;M|O?QQxG~F1c zp9byrwPBLnc6&=$e{I_%!!5esu<&F}L&I}54GLeW$rV0<$T~kfP19N7vo$RbZ_v~g z-l*w>@C+jJ?eJ<%4~6rZ?h2o$>6Y+0n$8VR*K}6+7EQClr)Y|X7ie;Yk0LTY43iAE z8?S|zYTJ%5eTlRi+rt-V+a2K*nyw13)wDTGVc_<8;i6K5_E}-l(e~+K`lZ-DB|M9o zCWk3erF~Mkn=Gy2HiDKgNo@Pr@C34q2`30fhI0h*@G^q>@UIAB;WG&$VfuaBUK1uM zYp)KUOicsBtpt@}(&P3}m;%-9fiR^$wEM%P^zFXzMbz0Frtgq;JKRndD}19m=Q+-2 z^$%+LwEl5TpVZTj?m3R9o}Rfmp6&JbQLE?1deWFVo~rsg$;Kb6zn{pwzy7zH%Jq*B z8TZuF7wjBkYdw7r%;~MCmx?*d>*-|Ybk_e~jcv}%dir9SGrgXExzA~>r{DQ=BK13| zPi6fB1fhERI+_!#r*EM-fqHt0nB%LbFP}M1J-x}yvFo?15uwlr>g&@_;+0rmo=E0~ z6ZIfRoT%GF&opXWc<7l%oej?#8UJ5wy+ZT<-wggK_-yd8;QgrncT@1HU>a}kn^602 zMQ~AYcCaltNw57UbM;aA?}uFdR|2~NkK$ciM*d5IWZ<&Ed8qogJa9T{0Gz1e{v!fI z)q8j_@MFdJSNyyDkNSV(zr%k6V*bDOU*_NFKgYj9*ZZ67AL~CFZ{dUe2l)5(`~0@= zU%r20y}!TtUh+MO_wf5r?eE&3#QV?ib@)#8P4l&?eEoxc2jNYe^7TJ)-gRDcUUqh= zX#btgjZWD~;!S*$TIuiK^YsVgU3_21=UAxmw+E5_zj&Yb?({zBy&E(Aukq%*zwln@ zUH5Nq<41dchBf{Mc`Lmh&-Zc-1hoQ!jPc)(xym-{R_o9wFW}FI2kkhj}>FY2r&$K`}>QK@CXAd zAbiN*L}kBc_@n%{d>g-s_wh8poS*++a`yWp`vbXOMfT;2e!JNpRb+n$yMx`pN{H-V z#x`Qr16kEi&Jj88hsb^v3o^Ny-)Aba|1xU&J?y&Ab-U|2%o6#@y#62J`bWABanVYC z%-(B%YQLxF0X$;wuw`6duH$!^z0p3~US^+epQft$jj@k_FX|vv1_;{R`qui?de3^@ zdWGjygYAz*4pDFHz?>~|2zyKF;5ild9&C#o;@;9!A#wL2>`z1vp>L3DKc17ZZ{wR5o|Ca}l zzF}g&5;+9FCH<1;RP_5B92?PZ*}qQY5dH?CoL5f9zs+qCo>TGfZBd?6@$YT5Jg4H{ z+boeo{M$0OvCDZ*1;DpWHNp z|K8Tbb1MG5Eyi<*e`5z26vE%wx$7>GQ}OR@Y_rIz`1dv&HWmNg#(pkxD*n9=i@W4h z{Cgb+sN&!2LL!Iww`Hzlm+~9};HJ55jmW9^_d0f&$RYlXM!QGk5CE67T;vb|2O*A{ zLkJujU>qs}z77%GoQi<2c6d%jz*qP393tSzvk3B>41k-fXY!m3fSapN5IF?EEpxR| z5IID^LH0VHlOb?(H9id)0*7fm&&d$DxjGLiAqI{{+^H%AzIvd@Ap|aW@wvz$25y;`vx|971;H=JH9-*EG%v^C5d#Nc z%qj$a`3#X$A@IwwUQG@maJ0?ixf%tPJU2)IhP=PprL~Rcs+Gydb72Jmo~u%TYqg*1 zu4N!n{sgTf);RY4pRtYG;jp0{- zK0XP*vUtu>FjC~aa*w}a=kuILneYg>mC35+IiXD06IU>S=a_<+$hl~{3q{VR?gxsT zrO0)N$eGkSMdS>ki+HwIZi+?cvg;N2d3K$GdY(O3!8o2>tDuQz*C?=gR>rYbxL#mc z#Iej3A(llL%UpqtWfW_Li5@Fu*R9y^SqfTswnxE4k?ocT--?sVo~caOY=we)k%d~J z4GaBbm0WGbL6ux>wMACR)mA*zS;&>#!v!J>y^^$vXO&>xQ_HhTu^zZ$RDqy{S!k8CZRA;q6}n--&?=bB3Z8{nnP#?DWTjS_Sy!jXLaRX59U?2m3PoG; zJPWZxHw;2)Rko66l~!dj2&Gk7oQ%?{>>80(T9t+PW}#Ks0iN-!600oE6k>%vO=ejc z<62+KvWRh+>+vZd#AU6w?_^mS<67@$S;V-^_4O=^5SO`r9M8%K*Lp0ll$8;#_3T`p zMTE;*?~3uP3~{Yz>shv0_Ju)4xYn~?o|O@<^~h_>$_Uqb9A8Gb*0Z%dDy+nc`Pcj zP$tWq$5x4~lBRiVHP1qtOmiN_1!Y1brVV5vO&|oBvd|_p;{*mb~eu{d76ju zOL;QhY~xuePsW=;k(KgfylHF}S;!NJoyoIOpNuzg??`&a+aY zj5k|(77_)R&a+CP_Q5Bs6l$Ntc~&XZKDcF|P^P&LP6h&H8V~o1tkfstVJv`}g+9TA zkwcyU^&$gxl5MYw4CG1DPM(qaWIVizXQVzE51-33QlE^6k(&s8vdpnalgOL{lR37Q zXUSzzoD3LlE163k*G}194QkHo%p7hLoMQoYKv=g1dGfJn9ws}VClyMFEL#Hg` z8uNRefl$GOHt3XTUNDkpAX5N8&nT6;0M}Tl)CG9HGfJf{KyRp&Y0k&hgGd4P-VSk;JYK3_0NuPepEGI1FwmSrAh;o?BDO!F{DWRzkZhM&+GrC5iVxFMBd9fkub#X8K| z!81@S^vCsrU||>RbdiB#fsFe^rjBe2MW&W$0nZ$yHo!5JVr^mVJOjlt%`H)pfnZtY z7V8e4QHr$%_W=|OZ6T3Sg0%%}17?(9ZNa%o!7{gu6d4E>wqx^n28sm}ZW{;|09P7% zCEMnU3?XOTE^M=F!#@Hv1EMhCRxDgLk^?SrKnx zN4oaI+nBB2?*7wi?GZK*DHSf)H?B`y@49xoUUEI@`aRZaztwe(D~r7C3tVemXJV!H z*_h`&As7g{0$*dDfWKp=!1IB}0}ll5!YToMfmC2~U?aQ*%K|^n5;!VwXdoJ>M%14B z_xeBa|HJ<`|BL=7Fth(2tS)!8KjZ)TPv!^A^iTDV_mB1u$Jzh~`K$Z^zYDVi{u%tj z_jli`zUO_9`yL23`R)!L<-5gq4I=ly^j+-h4G#0I!rFIXUzaOkJ>i@0JJ~nYH{Lhe zH{ADA-$DOe|DDc*&OOep&K4){{K~oHhj{|CoD;D^K(jN_In1edY7obFg4e@)@E>RU z2Y3B9^Zjdrk9aGCMXx7#rSc)Xk9h(wd!9xt|31%c!P`C826uS!o?m({!o2?;PbVg8 zpM+^%&6tcg3_gS~iX}1kH|~$&LHMit1(XDO5Oo1>c3*|5qnEok1uwxmfW7b{oQZlf zbKNuCQ`{}?WArS6{V)ZEiM`@e@t$~{R#FVUfms6oX)VPcX8*hVnEyXOxKShU3-}S< z;(y`K^T+uE{4V83Nb${lBR_|);EVViR0*8S$MI1-&Kr1y@5>!-vM`nVidyoCL z{i^)}az~!9e{bLW-_G?vD)<2^_Se~AyyLU}S^qz+At57$%FngPzP0s+-~>G6|MTyE z_X?;B*AXgB*gI+t zQLPK?p*4cYy0a#zDOyvZ>A)IBWV!}@O=NsuQ?Kcb8n33;YCM|$R^!w3d`+#U?KPE} z3N=GDae3hwY;7kNN$aczWxKV8J26m~Tbj=S?EVrvZK>p{hSb$vIU9|xUt9C^K zFH+~40J*`t_6yug7Jq<(x?P^Y^JK9DLT0?(?$E;S!%por8`^Y;yBYTGpp6t`Sz z>}a4k%2MN=28!7&HLhytrhZ1QVY#Nw4QHz(EM3;HnxMVmEP{%LH3Y$iwFH5N9s*y( zDgvir9f94jLhW&hlaEr|V2S6=XpU^|8>2T6@oiDMluNiTN|Bi*?8s=5T3yj7eMn2} zRZ)sLEU{ftiV`g`KaNu5Vu`sUTBa?`tD_VPTViIT6uDSpMx%YYbzt;*O#`A?O|B@# z^p+T#qx29iF)oc>qfTQ~qDA;>E;5O)n%UJla|De1dM2&Wh&}6oT!ncs6m0?)OY$ ziKbl%3Z8aWJe@dM+n!2LfUL9P$;4)Ddm_=HX=kEM)8h%cwK^*vODxj1KO|1j^l0Kd zO^+n#iR-L*II&FI9!gN4rL*Gq2?~mKR{SnO0npBh2NS32eh(z*qwcJ@KS80|&WhhA zC^*?!@tZ`C?&l;fByu(-eyM3h;xtW1BuYfyzbCd3dH$H7N2Jr^BbWcuDkh;@- zM1n#>o#OMv1+;~55){PjD(x(^`wzDeiw z#EH~&LW1u3&Xxo{JDuYaz0@=|F`J+%L4nTBk%^y^WkiAmsIxwCK3QrL6pHPvPAnkH zzyt+eJ1Y}ckR_D(H93nvetlUz7qz_DbB446((Gk`|8uzCPp znuV1ECR0;r00q_;1_n^{e4&59Bx>>vm`Gp`ppWEq@9mLK)tFBA-WGXV)7A+66g%B} zYve<1yCw1lk@!6F0g-)qkEXeie`=Z)`MaiQ zrRpZk1Rn5MdzN~4`^hHfb)8{p|rq5~)()4LfOw%VdgEW0S=sP0!jG6$E_^M`q zB6dv;*L1<4Z#507i4wW?s~JMSViy@7wBBT>6InE)mA=*%wY1)-P5##Fsm*G=CHR3c z;(zxS_mBP50XqlW-g3XDtu4PL;!m~whRAhy%MNvz&RH$@k;yr_g?=4$I+wRlCP1hC zQOiBlYTndxH_?FGS|~$jiLrOwi8w6E{mXxY`F~s>5jaw1;#UO%Kh*2{oBt*MlbH3tU9I>hSB$^Nzs}#|@AS{} z&%}Cv<5c{=-e03;{F}b7d>{GV#vA<$z9+ES-#zMWK8rm3A6EeQukY{y)a%>p$oT(m z=OyPU=V51ub35ww71TR?ud@oZ|K~d=JI5mvztK6uIRrEP_d~Tlm-lO|@b`Dj^MBs^ z_z%(ltoI7FzMq`sFLUvyc*l8V^nb9o#=DQ#@mij*P#^Sd&tFh@>oJrGyUTME>h)3d ze~pU%(|h|^6vvUX`v<9&{S5aP$iaWZ{mKuK|LfgF_m!yEdY=32f2-Gblv>rV+Fjx1 zsMq(YcvtM!Yx>VG}Q#2G~XFW~3$v-ncX>8EV`1RueN@>*Tlf3KR;zZ-ME@8cF zC0okc*~#p9%ncp=lj@L`>tC*qTz_}{)%BwC4BhLx&2_CS@A{?dB0ZzO-8IuS#Wl_~ z%JnnXVATKHN3Z1fvHcJGHBxt z4=-X4mDPpS3X7OTWp-J-h&fbNmpPXgS+3h^Q)QCVH~rK~7tQFYB{MHyl0^7Epc zMb%|*TZ<2O8D#2WFY=-cGIg<+cu@wK@FK>G zGRV}0;+sVoWa^5sB7#h2m(7bZ#?-~ITf~@fpdv5IAX67Y`$ZXK>SE9HqMSz6#s0{P zavBxh@OTl^s9;&gigF%R*M7W+c~sbX4=Z9KmDyFpi}2T)##^<#DBZQjTeu3+U2D9B zvxmDD&?1WP)>_6}2w4`TyViKiFN)G#i%vK@xNBjm7e#n$VKT1}Md_|Z|7S%J?pjH^ zL{a){(b~a_@YiC47%xh9t?`yEiqc(+oz;mV+_fO%Wl@y=TF@h+DE+nA$2w7z{#wv8 zya<1-X%4}tmAiI`M--L2b_jcl7nQqq2*wY0EjrEMMdhs>GLILPw{}RSC@OF55cV`L zDsSx&e1OVZI|S#UytP9RVJpI0Ynek3VJpI23$k7pMdhy@;)?Pj{I%G9k0>g4?GQvn zig4G$gilL(YllqcMdhuX6%j?{t(|4pilXw?&SFo9BD}ShIg33hig4G0tTCdf{I#>- z*Dk_e3mY;HippU-3v&gFaM+sWES!l@fMIh5xT%T#c$aM@aoTD12vw{qSud3w* z1j4OVhz}NIBzzTnj2Gm5&QYPIwyL3!3vnqX|Aegg{AWE8eUkUdVI+Wozid|FD#Y@OjRu`k^o2o?Km;xd-f17%)^Np-+Oprt^!LG=BPH~ z15uc*2q`;-S*o#x7fw^)7ll(*8`fwnoT5w6;ya> zZ$K1Ocxf;Dttd3B4G;h-G^u^yIwusg^1>Je(|Ms0U|wqR!e|98qHqj0GcQHVzc5Of zFzBNd;6q1r3B5;)f(kBOYT-OasP2dW7NAyg!`DOsas^_)5e4WKNRB}YmU$`eRVi37 z%@PF&mL%AuVwp49Hc^0Lflv^yASDa7`$R!X7U(WsfMl8GOpF$a1;A(_SZI@@m5OD~ z42gmYFwL|_@q!94&8*}F2o~CK5mkI?rkxfA6gbYCM1 z5w&;3%?r>gIffm)pag5?X`%qZf(dI{6`)w?kJ|`>C41d13Q#Ob_wWKF3ypD6P>MBE zULU1cGud`gP>MBEULU1cGjT1HV$GD-2Z|;4fqP3y*33hBK}pukF}wiDGL3gUq97H^ zcn9m;7NA%#;ZuTO0k8w9SH?S5wJ1ov0`1QW&?_|7ivr|IZuk*?l_+9&@`4mB#WlSM)5mGKU8<_gd&5H!Ca1PU`@XmwE-;9U>3C0-2wQ{Mm}IeoKBe*`hqZO6|lJ`IXc-ROHW6 z#BLM$9!Y)XE}rj}-TERtf2IP5=T|6b5AAbBENuWE6;bR4Oa2|d<8boL&h+` zR*{E_Va(PQA`cmpqko;}p<`&AF7isocA|1ZUdh@w1 zO2&4Ecpfrl8apd_9x4V{#`8+VcDD1p60w~ayArXT=I?o4iP%nDQzc?MtrtWdB4!yo zG21#16~i8;^E^b%G|#T(d8uLM*?yjv8fKo2D&aJ zp>dbUL&7BC0z$*k4VM8D1{lcmP%zUR?iG0mm}L%UH}X6b3?_@`Az%O;Q0kXCyq@Q! zewo83h&=QQz3uyWUJ2N6oCE|+?%*b#hk}`=Q!DZiFw1nPleQap zUP+h}6L}?Jj`69;D+zNLR{c^E=HMbg!eswzL>?L@3FiqB!vU&AUTK(P<1tYh<_r{h zrC|>16M1Nu>|YjnC1MUz*z!um9OTU9m54dGGnI%r)+UjcB4+HdF!TkyqLmRFwL`=42MII_9DJSwu z#`dt3$SWD!W8=z0#^nBI^E`A6o8rPK8QUWT1TrQ!{WZ@k9ovHo1093O*e&u($o5z# z@;rnLTh@rY(y=|RV?-W0CbvwoTrYlrtUZ|J*2}-OEVoYnMP}o<_(8H3%NFL=O2aCa zTO*@s0Rcyd(aKigP=~ga1}ZzE{>mgPJORW1CDto^+y5$77I;F{C*11a;+LL^3;pN%yZwv( zbNp@oiT)=42>(!j?T@(!KV}|q57sKY$=Byg`8NAD`p!mO!Ueul+57B!_Bm!N9Op}* zZon{K6e|{nd>)_SeCh0Q-gf@tJm)-y)e5)i*$S6A=b& zDjg515`OM|A9Vx%@ zhv#~%GI%A5&G({M{ZiB-oave387FE*l?VtI|C;}k|DC`3A0qu{^JRPiKNWNMk426D zA1eVew$~1@Pl8|AF7_^ajlIlvu}AIw*l*c3b`!gbW!M$$LcF1#1^>Z(_z$MC7B-6g zjMcM2EQFey-^qCc_7$k(cdp%IFR|P0lkMZ}V^MEnxIM%^5P1NfSnpb|Sub0=;Jd=y z71Ijd!&l08|Nr^-KUd&?uE2k}0?O&z9lB%!QQ6DUU3%@(v$ICpuh zl>)rW4;x1DmgV)sC~mX7ZWsk;me&qzRF3K8HNz;9v)mp=0i5O5FbV-J3p^TcR!3eI zcqBfB$n#lzmZtsV(}~zi@#8hU7^i^EGPWds3fb)Q;}q9gW^at2sBMeKRcVUEDSEif zdOc3zoMqOtafK^4fO9^Vz;q7PRS$P#)I)I zsGo6vobLN>~0H@u&lT_a`tOk-U zgbf1^s78b^15az(7-T@m|9>X<2R;A4?Rx&|N3{&)N``oHHV(f{qfTU9QFhflswSNa^EjrICIb>36+|Eb#l9nKAE{{N5b_04wLki*~PjBtiI zQD=WA^h2fpH@$zxdVPS2l{yTqCjqk9Z%>Vxa^Z(z#O6SjD8MEK& z`Tr@;X3r+iIiBUHz;K#pI_mq6K^4A(JqLOQ>h=2M+<%$5{{(9L--E@Ru6AeKS724w zwaD40%Kp;F^6%^Q$@u?k;*a8K@rcUTzg`qo{J&SM6iY?Bm?@@;7BNcvOw@}(qVnHn z{Xfh9fLZ@{@*6m+MhK++BL5Yfvv1jF@K(IeUcvm3Kd}4R zU04_LYL;ccU>9LV_c`!<_4rD%NxxRAkalP&Oi|aYpW4fAupDX3s z?Aqu$$F&@*|DEQV=K5(Zf4|FxTK@l3wftYSpR^yse1NU?mLJysJIh{b&sQFR@%AyO zg0X! z!J_d5(FYeSc7+uY`jij0Wiao94;F0}?}G~#P$Bx12e!pEQS`wBi|$5V^eGo?3lH)> zxM0yOB>Lcim5rN4pK`&r*b79Ta>2G(NAf=9f^C_{`{05_|4PvZ53D?m?Ys{zSeS4b z;DH6yi$3LmZ9zr&KIMRI;RAV}a=^Cucpn_F=+z_or2iG8-&gcW|0~E5ebWDGwy+OH zpY*?)Er<;EN&hRVN{c@DUuCzj=#vguP?hL|0~UlSmVNNR$_;K3ebNPMwz!t@KDc19 z=>*XyJ+RooC;FrZ7L7-VKIwtQ1|6ag9$1iZhv<_oSoEtvtqQg2xuOpqSZUfv^hp;i zHn>srNf#_^`-widU?o-ZKKNj9EL-$R7c9=9Aj-Ye=oRJlifqt2MXnxEK9_7Ci1J!R zW`UR2sGUp}<#VWUF)u53Y|AuJhC5asYJe!iA1f)u%gP~(vesqgkUgrFmz6{IsKa_oeIYA z@?r&zyu1it+*K>e3o#($F8dQ+K3$nCUS6PJBrkU;s2An=suPkM%I(TDftTkgz(M9J zm?Fw^R44fE%d-`6k0{Tg4UZA!(?I4>?iS@!i3Bg7f=$h#=ytL)x#sioOl2A=$}^M+ zv5)de%7ly1rU1h^QMFmid3m}r;i6B2$#@R2+wuvDxGl=ZD`H=Z@>E5L2$ZK_1LHXy zaxyi3Cd!i(*_Vs*M52H2@&wfl*Wx$@Eu!2?yO_(%$0}1ul*cO*=F62^6mgd*k5lCO zhbWI#WUUtEW<~59UT#vG;_MP+`cjm~5Pd7kjf(6`MR~L$Zi(_SL|l|dQNK?_`Dmhl zi853SCoQj$lCkIfq6`_6*I~FQL&qegd07eBbF+9^3Yqa7E}#@LZ1@E)OCd9!8!gHZ zGMJFlQihU&5MM7t%4E0CMOkVYYzK(4)H2vU6=i4{2+{Yl6f?Bq_K;#`Jcqkdikb1; zaiR<{Lz|7eLaLeZ95;9wYKBJKsSqCQ+7h z2Kr8vrJUiEnJ7cfK&~rz8G44D)QGZ_Gc=l_EaeQ>uT_+loJBG7zO3Xd%HG45Fg7rw zxMh``MdgjE@w*)nlyZAtqAZL>P$xBMlqP8eO&t$i5UQ&VlptxADR2=>QqxQk3v?3nr4a+FG)=^g`bz8X@GiBl9FZ$Wa5<|X)sOTB`6x8iY=$f#7Z*raB(Fo z$;`vWxHdBL5K{_RNmjR59OEUKc(~ZLhnHmH;bJ_lC7F1**qp^nGVu^o2zW^*9%4oU zE6K#e#Y=ceCLS(!;o?KNOd}T&B_&)rB;=GJT$YhzZ}5^*t{grrrCd4JDqd2`mBV#W z%9S(cijq>U9CDsYP%i8&BuYxSa>%JDLAYS5qf9 zkS(;~gIB7RGnptswa{o>#7j!Haz0*yY@t^VFF~~c0Z~$-m18?ZNr_gDy(LNzEo^As zElNtYa`LHAs+BXBh>}vR9D9?Opjy}oJ`^QdIrg?FLA2zi-J+yaD`z~zOHeIz8^lXe zw9N6iVh}CM9Ba7V@krh%LAB6`J4%X{Io{zVh!&t%l%!^vDBmUqNMa{y!8+-D!m$yoJ*xwcoBL9K%yn&N{$sdp-QjDn@FLBUZD}0jgTw3;cKF(^lH436h-J2Z1~k! zgkZ@{pB6=>SmVtdya>g@rpP~4f;HZrBZ^9}#iaYOll{$zr61xy z5Hz%WlPG=70>mP?)|HBbIAEe&&zw>_Peb4)v_mAGEu%h3+)-LZ>?-pI@?_6)Ucd>Vl zx6M1z+vFYL9qO(1R(bu%^#2m?`L82({v?**z8iV|WzVk>IbV<2`HMZX@s8h$Wo6^Y z@!ubH_L=)@_ea*P?zh~3LXQ8#?t4*T|7y(5-;50ZRqmzkdB~xd=uWtga1U`G;I2en zzi+Kq#3$k%>tU?h_ni2H_zmXcUn_Fr3UR(TM=TQ^sOmRGj79#$P~`Rx6b>r-ea_$G zyZMV)sqX>Q^Sc4*!M{@L^qs|*@OgX&pUlVdk;t8hqP~6wXY6bC5qk?&A9i7lzI)lN zc&AUZ&Fnm^(6^M$V>8%fERQsj9m=AtnpL2R-(J_puD=IA#~b~#u18%vT({ZGwZ)aS zu6F(0b-rtjYlUl}YnE%e>$rbgpU4QU(>iQ@P!gVjTY8d?nkrfW{t)l6QUoVO?dioSJR>Wcz@GP{kVPX zC;ga9xcV`Z@Y8WG=uHgJv?{?h%}4|^)hB$KY7>>3f{6-EfrM9+FX3o%5(t3G`|tug z!RT=3^R1zu_2aFfXg}T(iudEqp-4a86dKZxH->8a@rF=UKVBa?upbwP4(i7#p=yox z{h|H(aaHIrjpnS-{{0vY9iY*;GNd1t^Nr0R1hC}D&p$OZNYk`XSW`=An5JWwS#ynyiri1UEU`V*wiCCg+~m zfPTC?HlrW!iXGXH+hXJT@y^)De!L?#v>$Je>5I3?xhC3dqxj8nlzr#(jQ~UA8nEre=IXA?X^joiw#rpBO*lGP3kLkN}lhY6z-fyjmovzVy za%`qXadT`=KQ4&ryI~XG9UHB!d|Pa>M)pcf-&&j4w3xoNHo4A^X<^*tS{t)Vh;WpXxV(tCbX|ei#tc>aVX_M_8*Kf7nj@9T6)*Z37 ze!MEy|7lvkjJ5PzyJGsL-()S0P42hOjt%R_39+&LI5<|>kG|N+8qIHG`}X7B*pz;J zKUUF?ug7>lz8D+Pk1xcI?#D-BNA=^au|@q@8rT03nk!?c^jqh~ruSnsHmDz6F-s$+ zcuecZFJhDW@wJ$K#5NhbV@|(y*SNv`_;~D)e%uk8*pK(d7WCsiv4#D3XDrc=cf|A) zzscAd(<->hxHhJr_)W%Du^$eRj~(B?SuUo(<~A9dV-xzVm&NqMzsa~Xc6h(_q8LKU z^2yxP8=I$TO$=!~%GMJ*M$<{L4oz(_#O_t=^q5Q2w3yb$O((>VAD~(%$F%BhYK;Z8 zttED%rZF+MrjfB$P4U=)n(AZYHN|3DYc@qx+%iN@@s(Un@Tcy7ZH?FC=UE5Bs(%-2YYpd?nw#uqIHHE6S zX$n;7@9mBLD*fHN(XP5tw^~(q(Sgsam^tdPew;DtagD*#M?Is_edDMnHHx*P9@S{? z8l`_=oo5Xl^?HKi>RC_5^`gcjRXn`+gvMrqmc}N6#>NQ2=tfG9={>TMlFfRDH&UKV z@8SQ8z4s1}s#^R0XScOx_Ov9EnZXg#fJsP(j6fj7fdm5zp(vn;1(l+RilU&Ph=K)) z5u~F6YNn4}v4DCE*n2s4Q2~2Hu$New>;3EQmG8uV2T|BwDJ{k#3IWA=X+vi}$SH~QBgs(z9GJpWApiT?5a!!ZgF zXBqR5$dgdT{{&-~S8}1p5sQD^S*yHhN?w{OW!NdQC`#EIkyAKib zH@Vlk+ufJA=ekdKPjOGc?EZxN5O;5P#O=r2{$E`c$nF0T>g>IUFaE8_?4PtZAT!?* z`vT1DKLua=ZFaM3kUhYz!OZ>=o1)6zx2{hyum2U-lc=tDmn-AC0XhAza9xOEWz!KS zKNh+8f-c+nm-7eAnAinR{xi-;oLiiE=Vs?>=T-3IpX)r$d4lsOWZr9X)?=nbH>cOB z)1T>HWZip{K2LXGp2V$i39Q2m{!8gRI*Xo!IT9o35ZVu8(+ATc%#ip8*-t)3&iQLYDR%4L<7MW&DGu_6Q`U}Rf#$n`G(_vhOuYApTPXF*fjWrNUWDnSd z$?eblb52N%6b#Up>PsDF-GNI}$lUhw_mBN z_{nljzPNl>**+*fMQyWp{6yK@7MGtS+Z}u2@^y8)cYj>ICvW$jAD=9{8gcpAwA~eq zPm-%LVsZJZzTMjrKU!Mp<8k@EyWR0le1crT*!Xye2TLLH|L33BWLI&bRi3=A;{L7j z)8qqYn7+3tN8HNv!vB`O{+YAUB#nYyZlMt@692tGKaMegt(D4{aTzI<&OPSC+2geyyXF_0U%N zM$%Q>+A3c|x{61&%2$>hjwd4WwRMMMTV${}c{}Ds@K9!V&W^E>gC&iM$Zz-^(Fh*= zytO=n$2g}Rk#3T@N5YZ<5xfHMR&PX(6YOwBbd@g-tQ<&X3oTDx9hQ=R;X>hcY)U81awv4IK)#fZXzG5J~Eu>(oi{)yH&Y?HhYrVJsF`SXcLj!rIu?3j5T3 zuCS)IMqzdBUkanOn!?_7*D353GZpr%Rj1WgRp(RI%33)>*yXFJy?AGUZh2hv`3PZ8Y3WG6qlln?y>XP*ZV)DDP%U2S+ zQuQsal^+{jzM@#2vif5O&ZaN+in4lZ_bc?&svE@Tj_p=fJNBhQS8S0&XUwmV#^eik zmygt5p{!P{pF%TshC(B@O`#q;u#;MBxw1NHzm@3yE2a*g_l>@Cyrs)~OJ9fT@L5cq zSnr=PDaKviKWZbY!|yS5(RzQ2Emqcl)XJ}?F7L0g_m%aRI&~R&f37=JS%0dNH*}Zx z$2xVgyg$^sRfq3m>N4_v7o*DhZJj!s-fwCjQ`Y^pw<_FMw?pCAwLdA`TX&%ESG9R% z{W6wT_(h%kzUuORUaKw*@29cus>3I>2k_(ACT0C7CLb?d-Vb93j?M=$IRw?^-4i=Z z_1ztl&$2G>uGme=`hJ}{$KLm1yOj0aI(74UcgB?Ddf%y2C)WFROewYZt=dMl*qe1{ zD}24rfz$n3>|$koweA9ie~)!3e5I~j;mdXETKB#byIEOZj4f06LS0tj^Rc58K3DsQ z!e{H|D10V%royLdXDNItR;BRCn0g9%pNP#<*2nAQ&{miCvDkrM@o4RV>ug7?RQ26n z*Qv0pE~oI3K7T0uTdjJ!c^{7TP}YZPpH=u^?OcW1Vm%dZjm=Q_K<$BBkCgS!*eZp0!~zO$uN|iFwpf3Kx5nBO7GfVN z%*W*0PnS1Wci=k9)_$fsWMT(SY`XS2Wlhya6((at6n54s?epFo8>y@}#V%2JV{Jc$ zn`;kTo||IoJ;A%N?!eKxA$F1Kdwr~%!s}{JSGb|}z;9b$ci;@Ii`}L=tnKrs!Zo$G zD_k8raCBD1epJ?#u>;5V+S+%Obw%xNh0ALfDZD0jp~8;Xfs=K0-4tbQulrTuve>H% zuZkrUF0K1m;gz-Z3a_Z$r||OF>k2Q69k}e5)D|o2;@IH|FRd+7cuB2O;iA|Ag%{Vk z6fUewD!iy}roszj$0=M8J3`_7*a0QDAZ94*`L(wwoL6_?W|$jO?+@PdVzX6;bNl>5 z;hflkqjOH|d}TemZj-{KQW7XLp@e_6!;tNMRk{`+}6!1exX{a5-I zVhmuG|76tv8_nzg)ngPOBIEzR|EKu>ZN58wS>Gn#8ehBbQj7$g<(uZ4>^sso!gr{z zAI1WD_)2|lpC;$jzw3R~`;52Cdq2tk8H;??cWxcLDPt;g2@_B(g>^4v~AsK8c|iubP`STu&QnPNRsAZRof=gG!LuVMpn=?!m8NH zo}p$(fo3@{(5m$wN$c>WbfmPcuXCuu6tD37w8i7@s)~u5h zkE?1PK~jjTg2h8p2&)1ZG=-=t-LaBfKvFEM%CWMXrdU`NOfyLeVO21>XbMqPFc}4! zVqsN|m3j}7LRb|Vv35jN0ZM3!1ywm#YQNJI3#xLgG)q8RGMOORiL>vHC@mGnnGL^vzUCGs7U z6w5$~w8&P9WuTndW~C4Ws?9V=iY1^#=46sW5GY_ONwEZ!Gxf8r6bl2L8L?6<40PsL zl44R3is$dJw>| z$3;>DIpDf#;DGCD06RK+j1H3O&rP_9`f(FEg{BVSWR0PzI7sUWr$wqB-L#&5lIqLB zM^iE0X3eCjI!>6?l&a;822J%5rjtpkhM6vdshXK4==CHOWu^&LB-NXPo1}Viz}kCq zm`qYt9ExbFQY=Pks)CavM^fdy5&KXkOdT}UL(nTU)m_kfnmU*hIgzF!!iMYPAigLr zcdl9!5L%lGbCW?+T(l-QHqum3EIEayxM)pqTt`y@v5rSb3ZkVs?ysULrdf{rG2*v|nc$j1R|Ws2pvpPWEb9!3w4$uz|z%khBY0h(fx1=~cDVv^-}0EZfq1vrMJ zpjZGuO%c)QIFf>3!8D$vOb*pFW$-pc>ZWvV!pVhNv9&KJDF-(NXmT+(=@-!?^a_ob z>5#mHH+pGu5jT-zNb+KCiqhml(Q5}uUc^lcY4SpD!d#@}0&eorB=m~y{P8pi!D5?C z(&YJ^^m#NnPb@HlCg+OQ2T77k)&sq1l1tVDehS20t zL5I=g5J9ap2{FTOH9n>(=@ENg(eRXR7{d_baUkA(quhMjy#FeBs2|#D>)hCja4*R zCmQ>cB-1oU-c6FwG{9n#WRm8{<930h0sJHx<$$9LMPqB)LXy3>X&z1X3Ppp=r97Lyov4L=A)q1xcoAuwm;SPTHL`$y5!t?`V>#8fXPgLe6(_)k$8*)u6oEC+7L6FWV)v1ifEGQnwG=+PEzNlsWi!S4ePp*B$=*hIZVK0x`qYo zNhfp-roprmvc^o91`1t+3A08aYcL^SXeZM(to1G030(srb7&`o4c(^DPUsq2vM=d` zu)#EhbVAnv3uz~lH7$p?s7@wp=!MywkTo=75+_uRtqb!XA!{&UE-F+Fa3bwwqK0ip zXeUGsWLA<+s2UpENGB6DE!UfNGEu`y`_N8^8l&E%lc}1P>qk4GYA|6+S0|UX93EPo zkTo=7q9s%fjhMdG$z?5v@?V|Pd1HchLeg2kXbG$=3xvu3}X(!jU z9Nv{Wp=(&}1lq}EEk|l;CzrJxUhg|0Ygh-t+*Yn@IlR<&a$U=jI@-x~EoVGUI-zS= zNe|k|Wi3Zyw3EwP4lm!GOx7IVlAffK$(rNaD%#0p&G9X+piU-hXe^_hOx8e{APiYU zHym528ekCZgs8E$3fc)(135mVolMq1dq^jfHOIG@bqrYpjH8`Q)zH6+b~051RnktT zYUq!jJe+sKPiCTq1@EJsT+|Yz2kC^UX<7m+gQj5$Gj<1(2B;#PP&9yxb}~V8T#az= zP6!%Im`BX?45ou=C(|=fcN7HBTJ+RE`~SDgum9`(EBsgZFY?dvpN0s43H~FH`Tr2i z{g3$lm;>;uZy)mhzwLVwGyk{xZucco$?qE95@gdm(|3yR7+;&O**CyfgRlM)A4L_v zZ@r%)^8Xd@lir6g<3HoQ0X6)t@Lu?TjQfAYvjyM!n^Cn-%=ACQbBbq@XN>1CPa`4# zdLruIk1YScx&OIR-~H~}+)4L!?iKDU+!wj$xKDGR`2URp_&>)0{NF?X=&65-0T|?} z!>s=QX(WL7roWzEi)jCa^jta<`4Y#|!)XGs0M)byo6ArBLcIT1p;z}(gF6&S0d+T%Sed|^0Y2@F#$I4loFoS=owGdzM zr&`A&_ugf;0n(fHiKNs~Jr(ov(5#|uH zzgc6JA!ol0-~Ug>UgJaKZDj0!9P{??FjB^Kh%2}Z-|c51Z{K8NoG~1^`r}3~;~>Ka z3H=3M?H?j@-wXPq`d0l8{_XzX{Erx{YBzh2zFc?>R~SQ&lB5rngJ{c34j;8%^juyt zV$?c`#n+9PCb6iqxl*FBx4FAS?fvFzg&UiDOLV;6T&D1)<_d*dn-NpR9H7g`HTRGd zZI+>k%d48DLv?wmSvpyl2bz1yenzt#VZO%Gqgwi!uJLrQmOFio^Ns48#dfYS23N}w z@oS8->ebS!zgvB+L@iW(okYi9)f*LdRIe2qyJlkb3Q2>i*GQ_a-Yh9veZ8cr>P|@| z)i+4;Rj-resoo&TU45e@yZR{tgKANWJzQGquU z9vP4W!5ws5;7w&68<3-^9du0KJ!Kso*sriHAP3Jo=%~P3$~rP22m3qd5rOZO_3(gn z6m`%MfxXH)yi`}%8hAnBVSz6c4huY`uqE)7!sdV+Ztb8$1J5e!kih#26M=UX9vb*s zVN>7}g@Xfo6gCE)P&g>?w8DXb*AzAcr2hji!~r?F-a#%5d>}iJ$$`HV)&?F|SQB_& zp)2sHMC-4B9Ki3e9xK(9wGfcw^BqqC*u%iV(QSHhA@vqDD#4 zA{jSvbybm!J-)iUs71C$iV(ucmnbQcvDR06i)1v%)vh9hPV!cxXrS0gd&zyHFH<;V z)KLl(qsB`tK5Mx28@3luY?ZfAyZhVdT-m|>O>~UH{n7af_eG@^wY$HLN-spadvA1! z>hM)mt=Ii!R60f4-CsoSQXM{zE>`$i^b&=iMx}3}-Tg^4sjMGICoB9Ydc499qf#*2 z-5*33DeIo-RE4{v8HJ_M+a|^lG40N?qvt8>jHvVowL8Z}*Gen7J1RXw z?POL|dZpS)Y4kMJp(uKWL~CI56ov8Vi4x6hR63p7&AHJT%6d-p0)?kU)oC%q(VL{z z*b-f%aB1`$g|ni^C_FWKy~1hHWeNvGS1Bxy-l5POrY-{gkLXxw)pteZGo)Q#GBT>H zr$kc`XldN64HF}}4ZjMS{Yr8fhI!9Ssqa6x+ zMNd^&9Bor*k5*TdW<{l&tz9#tN5~G2-=otN?v388a8Fcv&f6WkqZ5_&)#zr0FGUw9 z+%`-db;s7|70UWR^frar=*bF`(S-^(MK>zk7(GGZ^5_i;JEH2=b1aLti(9jOQS@|4 z3!_&{nisuN($uJYw6-4;%}LwDsGRc9J|QZj?%Kyk)3SAJR8FC29}$%g1woPLrfZJH=65Mt=(KQTSs}J_DA~ zAA<7fw2Xcq+^;%(7xF3mHsnzFP4Fv)`$KMp`-0yp{5oVS+#CE(;a9;Q6n+`A#GA6#Pha_%QgF!ViLfDBKg250YhccW|Gw z?h46==yi9qV-EqKAM+VHwWb#-ZHaa@NL<_)PwTrzs&e6D4*!dj2}WJvV(DV$fIyY zs7T@9;HwI2f*(rMw*=)Qf0=&%=zhxD8vI4!kl>pNdjySQZEoX~V2ZNxqC)y2%D0V$Yitp3w7p=Kr6izo+v5z3qR=|AhY`|J|tmw;3}4 z+Wm`V?Z3(XamWSmui5{;=Q#jG_P=euySVp%wQrg465l+`131Mu$v4*5>TB}FeZ4Ug zpv33&{^|X}`=xh}_f78$Jon$--W+oOt?{<=+<#|bHo$S-Ba!#6XBxbOd0_c!iOrSE@-d#n2n zciMe}d!>7+`(pQbm=|yoG6Arxe~rlc*Ap`XirmEh<6m+CJZRr#=j`FUq`)mud1HN;8?%L&g-SwR7QP)=29he`m$+g0@S$5F+SjSY0jUWUpqf??sWd$`84JV+~>T_nM6*2Yh~8IS+cT1E9MIv z;*26MKnODiO!_vI=rgFU@BqDoqU;D=gLwn2^4~f1G&+SIO-CaFU@(ni z?m!P(iu?cuW)FNzK1YUtw=jR;N%A+u0NjQd1UHb?$P%y^qXy@o#==SPwTwZYfF=yH zR+BOkBpzZSdjEUt%YVrLc)OLhHey!6)z%VgfprdI08X-wvBn@{Koj!!S6e--fMr__ zj3VqcKQ!M##(-zc9p+Z^PSpRq5pxu-F|R%|!3B*!f{{Q?cUnJ_oPz;%Sy@(i!#SN~QFudllFzLytGwa#T3J-y(40{#%L;Ee zhmb4^Z|F|_0g^@K4c&>HFj-VO!#XUIWu?xXR3}+h>dcAC6iq zt90fh-;wNG2B=|^Wu?xX#vdemE(7f^l0~gE-Dw_8vaHydQ-6kJS+O%G`JQA^>E<1&7Dnha+GJ}2z$)3Rb z;x`=6;TMuUjsepDWGC}JIDp4;%R3}HiTBxSWshO28Ea)(@kM7V$xdVq#!FTfj&IEw zB3b75c3NXd7JhH6ZMT($<6Co1AX)gmvAbW9EF9l}A4nFSZ@@k)%Us{i?pBt$zMT_E zmXEWp8$q&soOPX-X8AblI(-+-@^RL6+Fvxw$643GnUTdftL|85ttMFvv}%rZV`-L+ zvpUvcXgP~ANPg`Gl4Z$|{P5&w zSu!L)nP_EMG9-VHWE;8R1(F@a;X{%g$l*yV+rYXkCfNbZV5}h7{=DTAlI_RgRV#Z4 z>oT5XhnGpViUTgvN)FGGYy|`TRFW-cV67tAG6u$MlI_9!JZ)vW zvlUMv*@L+Omq&!dYgYCk))FPzZp>hHkZhQ@;A#l5mW3o6*68VV&1ZwWQ#bwOR|0rPgq$W>*6C>FE_kTvK|h*NY>53fi2n`-nOzX*7rn`b@DDd zNR~3tutmZx&ylRf`zA@&WMCXmvIcL$U8Zxub->idPu?V1rZ#@^G08w}09_=*_l3|MD zNByM?6bHv7W@R8bntvq8Fvam3dr5{Vj-R|@WuQ2kKSVN2aQw!7B*O&9Pj*@v2#)6O zK{8Bl{G^yAIC280Ld_yk7HMWWZ?1v z45k@)d|2Bynqe*<&{mRx%Lk2Kl7Ytu5TzOB@Nw+2CeRFX_@LK=Bm;*J8rw*Q`Fk9@ z44Ps79zcv{n7;?x262DSF0+ni;O~J=Z=xCQ@Y&^fi)OgPXBXTs8902fk_jZk{XM&I zDB$lwf6F8pID9n6l5(2i{+=b|UYg?j5kqmS9IF_{04BS0f7rC2e;O_yk%Y{39mf&Y{ zhYw~V(+nIwtlJiv;U1qQUlSu^1d8KkW7pNjzt~sgq&BIT0v`R zrjJ;~tt3;!yW#v+bBK~ml*4e6>CM4MGrdIbJ4mJ{H}$5ODq*^XW-0~EqL~Uod73E~ zbQ{f-abkz82Vc}6neH4;pqYb38;)H>^dCnu2k}N+Tit}IKr>-Z#v>#X;*C9MCI}Pa z_mU)23X`@ChbO>IWHrr{h{h_KDHb%JW{L!TMl*iV52wy2=w_Pn3R*%l9!@BCmT?Ok z$mWD6OUA`FhMUgGO?X~pC^z*d8Nwk>GnQEJYML5E0TwKTnulWEfQMWPjSp=f=YrWXj?CX$}d zS2C5RFAxiSPSfXeLLSxhJWg5_Nzdio0yKS|SaJMV?>9e`X zOVhKt2|o4oS)y?RO`pjL-u3hu!gei9GeJW*y_ zS!4ZLNE*6^O|;Q8lQo!T&@^NXWGp3V=o%V((==oaCenwbnXYNu`q4DgHT3_1rkSpx z@j{wrx`qwxp=szEv(2Ju2pgjuO*3V~&)-VZOxa+&hNhuxjFL3Xqz&uqMbeNqY{H;v zrfh(lXqqV-x^>btQ#R0LB+Zmf+m@hdC>t|fPt%Y#Mj4uB+J?3LLDNjzU`x?7w2j$t z88C5!t(~TsxPg|^G!r+_N}7haFqeSp`UcxO zG!1naY8#q-myd*yTT%|G(Av>|j>Na@&(8Dkl{*5t?wXt_ zeCJjpll>%T7v{)om<7M|Un=x9`s@9@%_IEX{Q zmm|Z#h2C?#r+QEDj`tqn9pdeOU`*jZ&nLJWIR-X+)_B@ImwL`eHG!#~V?AR%t;jM^ zkIaG*PmzbXe|LZ9{@lIG{W@k7>~KHezTKU2U+=!weWiP$`&{=-WEz-=+=9*S26wHy z!X0vZ+`9dXz0dg7{@B=WziYp0KWpzmzJWXKti9P@Yjh~SFPl%H9>BebDY)5OkCA}O%mwDz<_zw8vYRP6m~qT^^^3BCUUxj9Zzd;YGP$!$5R?&COAE*HA#9xLu>`N zJ+9SAdQ8K_bZ*Xd+EZ*sC2P`WRYoYHBV$tX1-jhFoVvo|QB!@`I$)BXBKa=R&TT zkzXX87I|ILsgX}4&4_#?4m430b^sXT%KW45djj(jRe|1N@IXJ*qMitLiq9Km2SxAls= zB1n5E@|2{lk$sZxh+r6-_0w*NJS}NeM4bANwleazw1pz?O0px!^2C=gBU=Tb?$?)+ zevODEHzCJ^k>{l?8Tq@Un<9@%+8BZ3o~^~PJc8kKP92dqBwZE}^>spvBcgIoXkO$U zei}n(MjjS$Ok}@+iIHsrCPcafjE{&CKA|y@7lfrP@}hu|k?jJak@p4kjyxxzD)PO6 z@`xzv6N*G06_!BcBLPJbQ2{9Ak9;jGzQ~&bypazCcp~Cn3b`Yqwou3w`A#$$ktYP` zk+1kq4LXfbnIt_VvK|GUT4;o{IYO<1=wBg(7T_=i>7OBSp9Se3A#ryF>F=Q)vh}wR zf)RMXe}slh`ZWY^B)9z%YLxVIsGB5LXaJ`Y13}e%_e!c-Ff56bttI_iG|@(0Y!SIu zOY~+@7O7-J^Pi&4@oMuQf{N~L{$0{N&EiHb2{ivhn9O0#zX~$8G>h^_CEjLHHmM}q zEUv>6=bmO!h^eHmS=^K*j;+n&%#`?=5g>veQligp7RR<^Q1ds!gg@keiwOd2gqMw!u^^&wQR4XYI>MO{xIW$bt@{q`J62+IY|Pci38+sS4~(n%(q-louuQ;<0VZt50`YT zxlqz1Q#{5>^<&IY(sr~d&R?lM(G+K+RG(mqo3B(KZ;A(GseY6x_g+8JJXS6{&J`U)si);{28BqfK%9m+EciNwRg6IbYI9Gbrf@^9V_Yn?f8)^%17HtxNUcrVy4= zz15r~`yFOZl{Cz}KvIh-WT#YbHm{Jjp{96Pm+C`IaYdHu33I4yJ=AQI)MSb)vQ!^z z3b85G8_m;Y>makYq=DuvNe!mB{!8@%<{WA3Z;HF9RPSdlkhW@5h+L^2GB1+0pef#E zO0`c+ad(tzPnhDZrc`^>93=W_UFJMVTg(PYcbOHE?lc!my2Y%Qlr|B_z^)f9WhNwT zHp?ZgH;<9D$Q1WtsW!tDl3J>@nkUQFUZ!}lDb=dX)1)nAo+!xin|Xqyz2@1HJ~A(t zw8uO|(r#0zOR1yF6uMCAc)+|&wkAy^-eG&{xY-nUd8uQ$d4{wtGmqo9OzC3t5&;X% zDFWu3;zlc-XHFEBbIj=irkO_xm}<@xaE!S~z(liDz*tjc)GKW>#Z6s0!kjIdn$2zk z2AeYk^feC>P;H(oAZnf>ptmVxr?kpkA}r;mC~jEV!xU;$8ZpHyUunqfF8Tz_Qw5Zm zX9_4XMRCJYzj>js_{<{(c+F`7Jm%2?T;`<$3{$*tmg?p?{I#&u4Dgn~6vs6JPIPn# zIKgqXfN_p?0fRB<$=)Rcj%ECK7wd-@KS_!kKTE1NizW3n9g<>(cyBD$>kRSGEY@qy zBH7x<5RcSiy~cD)TeY!QQq&}pN{#O&xeW1;EY?la$^8Fk>mNJ(zxen2KlAVMzu|wu z|2QH5?m-T~oBbP*0pKeCCI0jMXZff5k4GNBk^W}?Ab(%v065rR;&;jK_D_88`Cjuq z>)VcOfT|Y2RlY^Ox%g^78F2t(cpShXzUY6719;2(B60#g?A_umcyIEq^LC&Xfcj>i z;2r60_BJ3dV1+m2^>}q&1Mp+dyQl~7oaa%`HqTx7YQNF5&U20Da^wa)&oc{i1CI5K zLrs7oo&la(Po<|DW(N@WAMPKJA@D=@JMLH9&mc$O1BeF5AQQkEcZd5j_l1}tFca|r z$GFG1Tis2_1yJKI$M?GzxdMN)zq7wUb%3|*m+hx`9l+b|G^zuvw%hF`hzU5yKFywD zAI-ns54HOtV_>-*l2HLHC%{L@8u%Kj1U!Z>_nT*CJF3I1{-8k9QsA zI>I&7HNe$}M+SIYy7L$3e&;97_nfa{WTgw^DS$UG%ZUDthf*%kKu*Z4}l>`2x9^gi64Wa=q z!zcjD2q2;XhFgbP{V)ztj*5U{9N-7cDq!&de>b1Oyn?OfU1kn53pSvFz*5XDxWJrk zo{HH8N1J2JR`XD^pV`N(FuNf)05$$Jen1_84~=(>myIWlhmCvwB{#rqgH;AR(qNSV z`x(_nnSlsnc(Q&$EWpP|3Q*wV#FLO6p@4B>U7Lh*CIt)>Yucm|QouMdU@$H4Vd6>F za9ZHQ#FMNRQot}V8l$v;QDQ8J(hCJXOgu^ZmKOLh@gxlP7BEbVZXQ~|C^5QWjJ3dr zi65g%=YL*THpi4lN=w=0v{-zgrU*`A1I!L znk5B3P&~4=Uau*%&?dg;CaU)ldJ+}ookIcDX>ZBjdZG2V3W=pORU1-?BA)RFoHKsu?oYP zAz&3+*}sEH;V|BCtW_As3|^}Mce~bzj_|g#s(1zFY;V*os{m)a*66Vc@U?4=^GJcY z+8Z&&t-xIEjr3%zz+CN(K2l(=_C|d+DKJ-iqcwpPn5(_fk+cfT)!sOW6qu{M5d+-? z=4x-$QdR-3cCE3E6yRycj~qb?%+=m#U}5HJZ=@%X0&}%D(vwJmx!N1)bgKYYyVkgf z6l%HQL{ea$_C{+fDKJlaqxCQ;z|)St(?|iXcEE9@z2$zIoD-K_f1Fqmw-e#Rk3jxu;7cG>C z{;Np=ZY=c2-olFo=s^l_VgV+S0zB?|U-r+yI#~podAqD1g@5_z?T<%(5te1J*`=X#!fqC5f(xXYiWEaH(@SzexYa_OY#@-#t}4s zAvamwNqzx0ji&keqW?oAe*rfINd9~dgK2)ASi=z{KbM=PlRO+(*ljP(GryIigSOE; z{8o&xE+$BzBWa!q66jExXPzq%HV#E%)I#%2k{p=&K=VwJU^|TFndi!Z`4TkGG|7Pp z7c|c_$O>?G|xl{wg#GKq68XA^GuWw1aTqFGf{#Kzk-Pp*0+!5 znJB?_IL$Lr0u7;gCQ6_&G|xl{l%RQt5~GPU&r}Ip`-|q8D#6xF^GuaMqiCL~5@;OF zLzNgEMe~p)kdF01mzZrJ%`;)bUg38z2NrA-Xr4K+uvd@MJab^-X!Ig^IIwVV4Vq{E zD{MAR^UQyR1zKr-3@1!D%`^X%qXYZN{8wlkO7ieu!4#o+xUZOL5Y03H6=)dAGyj#N z1FIMzOpP=@oD&=>`BqNW%`|_Qu(?Qn7+(OZZQ+39(9GNPD@dM6R>E<=m1mNbC?|PH zmY$$xB+oP}VN{Vk)2xJc2gyUT^n~6_@=UZ6j*m#5iB^KfNuG&TLcht%Gto+5AtqW0 z8nW^bEiHkafM($XYrd6-XlaQ_RvwzAC62f9kSs0Xw(?LcEwPy7nP4TftyZ21R>Dv6 zOt2CZ$CC+Gg7&fU5G*aBlRVR_1i~2dOs^8UgXEcBC1@qdv)G^nt+VnFEGqc z;n-y5nP4SKNS+B+LZ>9p1S^4r4|yh735vc!2YdFax zG6*d}lJCah5Rzx1K?#a`5urg?ah~K^Y*0eqW#thYq$Lg|c@`R!&>yn$EHo$)CHZ1* zXeaq12HMjk?`J?GB+rB@L2-F7p-SiL#SXFK=Mqf611A+nNlV64J6NEgA)4RNuI?9B`EfS#RerPejSSqO3*OLv)G`7 z{w&F{*q{XMPjW0aD4{)Jo5MhN zk=!{99P3H$Y~FMb$<5|aMRI5Hrh7>4Om68%a%XTTw{o-C#to7?of-7gNp2=@@sr$X z9D0-7sl4emlAFQ6>}TbsvxOogH;s3xAi1dw43p$e;eFSU+{wJDmgG)iK(NUvylE%N zoyY)X4Ra@O%l9OAJOkR(${oj6JdxxkGXrub<@ig{PV;q|WAdZzM5cfolOJs-G6m$A z{AfGLbu`D{i*}-(Y>vr~wi8c|9FreyCxV)COn$J$3YvrbuqD=#9P~%icIq_8X^zQ{wi9(^bC4g9`8ml!f6y&Ja*!XuV48#auvK)>9Frd`iPbXs z0j;7rCO_EoD@hLWg9UIJnfhou8%U0+kG69N%`x>sr#DD$C^s#nxgp$y*VSBt6M~I$ zhl*~O(OeTJ#2VxVb23si*T@O)u(?5;5I>w7$O%aTat(aNqeyN5hc=Sy&!IQX_2Zq$ z^CWi&H}#{rI5*)1hLFanw3Ge` zL7Oxut~Mr3PU|--2WirrgPH%o*0}w@@c+B&{hR!&{7d}{UBg|2kp6EYuMC+0ZJ)#YlXtK8L+{((m%LAy2J!;1*#MiotB?tBq1n?r2cG-mF&kjG zcd)mwx5^vF7=VU6fM0p`c-}C(VGLk9Y69Nkxe0jy+dY?f=6X)|Oz})`bu+!5BRmPu zA)ctGyQjqCbpMI(|1aIU;kkd--Q~X5U2xxsZ~tZPMF(aAw7FZ{1KoA-+XvmY{TJo| zd|~ghU$dXFAF;RCdHCyB+gI5a+vnnY{{;Ie`*1sful=Zfuw8^10KcI=z-O-a@umN) zYrF9gDgxf-O5#g@1!@Fbocju5(`Pywo|* zIm>yHbE5H!bCk0gbpUIf6^Qp2+5Yz7yZ&wZqVY9-jQjS}^aj)cTuLvd=izhjB*gl+ z;YD#EtwSZiu>7vyPd*{&Z2UiuupE0VKj`1FIA=Jc2OgZYJtKu>(fKVoh%^X6uAwRshC`=4u`W}bkE z{t;%AS^qzETmO6ce?0g>B&;3P**zOQfl=n7yaf(1l?! zYfY;mM}~FTfmDTE63yOWG4D-77K-pe(yE^t78B#N8f{USNUJs}ET*5q>JK}m)v+@y zruS(zj%UJRCK_;CxLkF(H;fTgcJOMZhr^O4hA`gBZR5hWq_JU3(ugqpI=ppwI3TGt zY)Tp$`b$zYTq-FPHY5eYaIf-Zjj%_O9zIy?OtrPvJ6quu-f0qz{oa`pktOU@g(rDW zQ&{AkF4k2&-Fv2_DPDL~*p{lJUie!$Re9l8;N5PUOCCzBS z5Ix_Q=?&LQn%1yJ(#Z{Qr|{O38agB$({Qt-i4B)Z8sD&4(#QrlYWNb-hV_!F8q$&i z4I3r-8*Y;1YgjGG-H?>zYDh^k8rsF7>|IpTByYLi)(cIQ(rRRysw8R`G|9WKx8tQI zd42UB)O3(oRqp{!@G`Sq>m6;9S8ng#tSh3e5ZGE9+kWc?!SuFH<mFIBkIKTo25vi}T)$NJ?}*-IbjUm~sAE&jO*=lahPSYBLqnAFD#_n*V= zkX9f(q3rjTFCHf5@~=LzU z@h_0%^2@uTm+6=HTQ9>uN9=Y_a&mDWg(nr)Nwj7b$0X{Di{Tb#YwzhVhWnF~ueh%y zqqtUdtg?TvyjkIIl^YfQqf*R5)vD}YD>KsSx}}>K&vt~Rj!d8 zjO!{p6|Syar*K7OL1Ev@wF)DZVxp^7rT45{FRj{?N-0!TTCYl}PF0RQl{d-`j@^~3 z6~0=TRk*fN-hEXQDy3pnji}6tUtZOtQYuK?#fM5;Al_S2NnGB<6-9A*i&yyLh>759@x`U)S9s!8(&mmM)`7Pg@lx>v z$~|Y-ysdC{%?Aq4s(D4>nKj=kJflV=AkfM^vufl;UG6!(=3UicX3dKdohxeIRCspH zI|}>Oye5&vYrdCguB>@Z;ng+r<+a?rv_`(XmK)#H$or<;xTHqjH|56k8hPiH8&hk( zmTNGk)a;k2-%}$m{&IbFjl6fuwXbSkkR7x;YJO0dt`Vsxv~sOi&8yPt__5|$g?nmV zS9nv+%L+Hvyrl4&8Zo0EkC^tF-Qq}>pHYKI0CvpFkExOOY5ByOXQXX>&1aI1ta(e) z$Qt=9FE6k8QQAssK9W>a^D(~v9rwEWJ6xEf?*G}p&;N=4J^yR|=lqZQxB2fv7JwW5 zYyDUMQxq*R`8+-Y5&PeIKlkpIc>uPdCSb<9(YxB)?&|Md>`Hj&BQM~o z-V?nOy=|xs*yyeI_Lh|ZG(-XH_k8Mk&-1G18BZ5R0B-ek9>@l84zC0-9^d~%JpDa2 zo-$9V$M!f-A#gAJ|8KirazEi3;eN<{w>#(Fj4=RJ31F)GSoc_X{|CG4-MwTsfZyT! z{~V(LuiMWdZvO$)2~647+t=Dx+6yrbFcW@%l?$NOu7KCyW9zP8T>D%fyLO^d;8U)@ zxwg0pvJSu!*L>G(*Ytn=p8NOz`}Yy}_YwH_5%~8J`1cX`_YwGiYRW`)r@2dy#EO*tXcGO1j6!02l9fH)<6Ny35AfKDXUz<9(jf9kxr-?e=g%;*_&{O3KUfNqv5%IvvY>Zy)2@F=deS~k(&IJ;Xn5-_c9W!njX^$cOW8+BO4=A^xCG=hP*^*v%;k%mKmfC$JUE%stQZIXiq;mTdLE0lW zhJM%*+MV_WNq5*7X5_ZDHpb&PEw@KW>ab6cbhUkwq^s>^uC@EbGR7BgGM zOtD2E_!#8%5`8AvrhqnEgsP7jVT)MvF~jU3qN(0?2#DHe2VihawOd%2z~TKw+N0OJ<`3DuXc36y+S~dd!+!cTZFEUHryB*#G2ZS zdnm?)Io(Z#cC;CH(OPM{lVZGqx86a;HPdF?PQ?|~X52=_wa{kVO6z66Td254+E7$V z%++W!@>HCiHX}!)vfm0S^s@~y8A6NNkQ1Utv?5GQTt{sPcZ~>}b^+}t=@criw>Cr- z2;FHz6#$HpuswDBM#VML=GaNAq%BE>j_}=oI4( zlePZ(YRlShePX?9{T=z?AF=MWZn17cjkk8|5^Jt?Ix4(Pz^v|s|6XJST;^YddVn)g z5nwz<0uJ@ZF%#e*zt3+Nf1xJ8e%~j)cYS~NJ?(qMcP}CVZpQrmYkZga=A#Do+50n)5pW!;0XBML-b%~^aC;q|A3a}s zc6(m;Jd5xDdp!lr0a%0T0E;jKU?y?_j`tky-+>zTpZK3QF7v-(+>e~|Jq^Ecfw3KR z?%&n-8_ycM%)^k+;0NP1eYIg4U--Y&f7Le|w;I>@fAsIRqW?woz#jLT?ibvT@hXBD z_eS?B_f^OwcrI!SoZvpnJp%Iv>XApV8)gmY_RscS`vdz;`+1BT+;87%-;5lBSEGL5 zJbM=A`cJe++C%LA#yAV}1&nF>Jw{*sDdQ|XZ4Q;7R(>m zOjpyZ5M^*KBG^yhvj_fn^#|@ks;o`OCAf@S;=cvi15PJX$OLi(Ng$J8ZlQ>d~@S(Auh&N91PQf42NhV$oYI56gCU%R`bDw>&7x-?B|o|CX(S zR#gqd@0ILs`Ae*5RnhL2Kc%sM%O8^TmfuzLu9n}VG0=in7a5JtO5| zTw!E}P8aPfj5CLhm#8loda}a6(Bma)*`ebUUO)5{iH?_s9(-{h$V1b zhj@tj%GwpaK;c7S;i*H1ZQ&=CH5nEjPFOdG?^D)I;oB6h3olT(Iy_0?^054Q*EyDj z@#@0%>$>S-yuxxiF?_kC@nLzVUpF>9SlZgcXGj_qo-Jua_-;wfVZ2E2wG0Wbl@txH zmsB2pNm3+?mt)?qTlfk|q3}RSfpDj!l5jy%QTTRAzVK2>-tY~QJmGdpMp&N44feva zJH=1lU|&=we147%_Jw6zq}3=ZyF;S>N!eWzwf$xCSZ~m7ExSiqQ)PE6G|RFQ9e0-H z6lTlhVc+0LmPrZR;MiDpi|Vkv>|uo+Wl}9SEH2w2c6`G*Wm2X#oKe;#Z6nL%&)*O& zlY+G&Qg*9s4U|cV+fY*WH)$&>dqk4IY`Y|1+5M8dWl{h)c*^9d-QX^JRJIyrw~HNI zZ^jeLCF(~fmMQF$Sf$WRtW&5Zu9E2ZTcShZ*2J|6wtglL3FIxkNHIn=Zc^R$uC00nAJAp4)z7{jFT9T2tT5K5UL`xo*XzVN5 zAyMB|@{~mFuM&ALAqi>86VmER$0IHB@>uJ5uti=IYoY$~Qd;Xsw#e&ptz%=0ye`)|*0;!`zt*w3MP4*(9UU!q ziS4eP-y+ZZT3?I2-PRf{1+gz{d>7X5QMe#3AK+_z^XrB4&9TOJLA`Kr1JAD)Zb9I@ zdg1kRtZ_dRCvpw$+WIdf(ueEiqj?S8Q2(2>nrrHX^Ublwys}<+@_p^iUQOnf}|DI!w z|o zk~BGPN;)R)lr%oBOKPi^FE4AV;%;dR)XVpWH6`_bNt-`zN%GbID9KYVUmw=ES! z^}kCp>OYmF$K^}FYOPoOd&0Qds23hvRJ>hKET4oZ+*^F6_^Bv3T)ar(`Ni^)hGM(L z^6`iIyu~wAhx3Z%(+D+qi{%3pWp;~CP#w-GK271-#WNMoE_dZ!ZV6b zS2(M9io(;2XDggpyinn3#q!~Z8p6e=D(j5mvm}}i79Xq7ES@LPc({0u!Uu~_R9Gm! zP@>+WSUwR^H@WzHY1Pgyo+{C?yZ9J|%Zkqyhj-<|;&UYZFZSLuPKs*l|LxjUd++Mp z%n*kj7{=*g$OAnCBQs5wECON#ga%BggE$BZD2f4(N5FuNSs4s;PGiDE5)tz;$HBlc zd(7G6|F=V*bM6z)eLl~9abMia3+wCJyK1VdtA4#|@3q!$>2#W=-ksKH3U)eLQ`b(% zXe#Y=j;4}M=W6nHTCU02>3mIQrxP@hPWp#`lQY&+`!$=mx99KbbT*MgJ%27@pr?M0 zHW7DE?UZhE{1BwNgJWyYKZ(F8ev$fYSG&ef)#M$o&+O_>OUCOnyV`Za_(|#rS9c;~c8L7{Rpjp~ z{{I92oBkL5`~8pm@As$ucVh*B>-<;xFZQ2@=>JpwC;5-@Pe=U!NdHiOjlZ|QtKaLV znEn6G_nGf~-y6Oc@Yb*L|L^kM;=9)OC#(jz%GZntfcaPtuvh`0FW&sS{D&9-Q3K!+ zZvl1twt8>$ZuVa8y}-M|dxm!r;{Rv;w-EsEdS3B7P!l01;1}X8=|SEc0|i9>5=n1Ng%Iq5CcOUyuo~6YugF!~xvq-s1kVdp%YP zT<$*Iz0iFe-sdN}BdFsyz+LI?;qK(NkrD6%)(br3dK=LIPrG)z9&%-o6>x{^2G>T! z1FXTD{TZ%Bt`l4{@oqobHQY7W6>^oMj-MN2s6RWuLUzEr&R3kzppxIihzf`yJK#p= zX6NNtA>drZ1uVfk{A}kG=U8WhbBMFrS&p}OH}VC3w!gMNwma}1|D3%Ks|4JK+Kb!l zo9%1yF2CMhZ7)aOzykYN`$)XaH`>Ec51_*CX8UZ0nt+_y{U8bv-@|T4 z2EkSA61JKxM`geTSYPl+HUV$s%P@20n6 z9O+6_1~?zN1gFvk^jLZ%oq!5~b#x#-jP|4@)QOb>ezd;CxWGHs%hog29*hj+teADD z)oN`6h;QW;<>#%&J&m&yRl{N4OsRt6Aj5AHR0m|624^H%d(^9u7qbH#sHeK2J9 zG&`9#Zg>5UCuF)T)@fl0q{|wP4O4hRX3K8C#Y@O+*$rk5PsnW94HzOx$ZT0GPs0;3 zTXq9~jVENb>;~fko{-tH8~7ofklC^uj2KVIY*{Qc!V)5d-?72u37IUr0mViWGFcW2 zsPKeLmfe8Tp$VBRyMZ+EgiMy*z+dGFnJl}3{=^e9S#|?zJtSnZ>;|)eCuFiLR%GD` znJl}3f5a0qS$2bQHA~23*$w49A(Le{7#2-TNAgd3ZInokpx zMVCsJm?R9y|4&R51~*L{A-3yiVuIMtVTtjw!yPO!PQo^p7%PArOA}*67e7sm7TaMg zF-kPB<5?mifbXM;CebpJB^u?vkI}?PVHm;^hYN$bgC!aSkXvYCglL(-5+XCU+*rU8 zA~Uw!@dryFGnSOo!8C!?Sff0^63C3jhnUI|A~m+$>_!tJHMYEjC6F46Km0sPAU75} z|G*MRjs;xB5(5RGOm|{{?6a39`iq@PS)!jbJV6sR!mx-Y`igBcO;n4mmnA}?gBfOt zD%tZnmN-lRSxFO>qDwVPAU76gO<6)D$ClF{XaWgnM)_)%K>is{=>?V$325bfKTC)N zv~r}ZCPV^SIjv<0k$_fibY%&VfL4x*6A2`s;SapW5+Vbw+&G3Nkb!2Ddsspwpp}!S zXhP)1mbb8k$UiG5U06copOvGAa6;stm1D{DgvdWDCq9-C$+6|e%QPVp(8^&D325cy zB9;&dXyqoZf=ECsH_KQ;B%qb^-7Fyz(8~EsEFlum${kx-LL{J-lRVZIkrvz(A_1-3 zh_eI|(9rY^ONb1#a++WXWT0U$Tr80sTW&S8gh-ApM{)i5IsyDy8oyAS&J-5EKp2e0 zEWTC%`H98X2yi^a;;SX(Sp0ke{6!W&Pg)Mr_$smYS{6rcEcULVaU{nY& zvG^hh6Iom&$ChI$j5v~Gjq+JEzCdgTv-nA(fiGwA`2xu4G(JzXL}+}j*p{>SiE`IR zY5W9Xn9btH3xi>?_;G+qd>4x!3kdMDY5W*;3G`<1Il^FUW$~j0KpEn*WtT@;e3pa_ zEIw1hr7V7w0BaPB&k%t0_4tvp=?oT!z>ok|E{_X^2@ssGP?!Kuvba!~0AEMrLSX{< zQlKzKppwRgzyzE$E(9jvVsQuz3D7|-E)*uf?__bIFachmaVU&|6?@_k7#LzSE)*uP zj>Uz-1k8;z4uvrSb66Y#gAcTg#f8EIc!I`-!UX&*E)*ufx3joVm;h8M4uyebJ&Oy8 z3GgdeTu4lS|Cz;w#02k5qH&=yfo2vL8WZ4mvAEEf0KbgI zg~kNT2UuKaOn^T~hKF9GvH78CjsAf+rO^d-QrV=&(V#kEM1o#dX6Y>(kQbRGw3oO^On9!GiF@(j0z65xl#e}{D zP*ETTeZg6ju^0pfeePp1p)dhsK8-bm zF`+R5{s4;!jR|lZMrsV!Fp5EAV7ZmWq{uiPV=*Z*{9zW8B4gllN|C|OMNElIn#GjJ zG_#l#8T>fJl*qKRm=qa)35`KyjKE|TQyQ~|#iYido=;3_%oG-b#^BUvu^2=KP{U$S z8CtBu8!-r&2Jdc&8o81x2B=h5vD93y~oNm6eZ%19}_+0M2@Z*WUJ%C<|vaeU9V zOTpo{v+YuF=-=3ODL7;j-44Mq0w}g5^#(uX+o3o31NX4)Qg96HBn5|7uqt(=5p7G z{=ImQo@lNie>acze<0?{QCF{*d8b)sPH}Z6pZ=$}>OHc$-gf65&Kr<(f2nhgcb4-U z=jqOc-ceY2V21OE|8jQxb-Y#YwRhNA`yTsN`&zHZ^OJpreWB+~&xiI3d#Sw;Z`RZ8 zadv|}*sik6>;T@Yf8*cqk1Rryj73K>U%?I2=COLFw_1!s_uVcby%-hPg}cC zYcFMO!(97jRN7l(Ew@g!=A+Ku6l=6qk9GI@SlukIWtu;me=`r6Z<#NePnwVVZ})G( z=+8y|l~}c5k^gwqewcuGX1AUdg?*Fru8VKp(*if-d#=!I-r4<o9@OxG|obuIP^)(h$sM?)9d=(f^6$f%XU4f}XLB{-wGxQ;wE0(GQEUZuwSv^WC zR_XrxD^{vDZ^gL^sw-9~SY6Sg5A}5ghFs<0pQ^w>s~~%S#o3DfAAFvQ_4=?+R$Q!z zlvk*5v>v2loiqiF$)t~_Nu;x;iKLgNBM3%EaYjKr=M|d98;FFEwsB;srmZ z(`Yh6(>WS*wp1}0Htzg`B$ zvL%(18cjh16EM=&lbocfjI7m!yI)gx<7-Xb$Y@Pn2_^&NzFo*wnmUs)no7wyO(g`w z{jy&t0~1M-C{Z_l(D4O1UD+JZ6O5*dR>yuaP16p7=>uuoN+xT%g{TK3=(vuk#~`?l zTrQu7;3A^J7=ts(#mX{;sD&7U6NtKNgX4&;nnoGFC>TyADySx^CU7uBRJGw?Z=!+| zgQaA->Qh40(-;g8^`r*9+H)=LViEw!dV&)(LD%2ICqMM0VMih>fWLxIv{Pn z%FOfFN=>Vn5{NR?WQ=RuxlBDoW#$UDTH9LKC7RA*TQn_a>ZU3)&t}(Z+cKuqsLX6; zZQ6Dg!%P$|Ul~??yh+m;Ox-qR=2CW%w$(5d#af1XoPSm}(vMxQ$atA;*0h&ht*MGB z#Vdo8vrO6GIbW*jQKn?J41PO8GQ=4;(o8*yWsU?>KNe+s#bP-ecRM|SzUlI!+l&xkrC|Jc>6tu8w6f9$^ zBz9RdyG2>fV5&fLS(I&3mWAwg1t&4}V3p0mij?xmvzdCZ$|kW@%2Lg4R8R?5RrcwP zQ8)>u>^22{c9#MlQ&GQVUUsvxxY@l5P|j6>$uRVZoeK>`)?mCe{u5!GZ>s2_N)OFUU8zbbgh`Dz^qt+``<9SH;qx-#t~{ea=h9eK2mKP zCaUd-h}sTsRNMNYYFjr}ZNo>X?Xan8JM?h1t(~m4L#C+h;5xM(6js}T^=dm{l-l;6 zuD1P#t8L9_wXGhfww2S=HaJXeeNAfXouIZD)t8@(Okxl$qkFBqVBH+g8GSW9YgB1^ z#u%jOX=4cH^OOrzoa6Za>Q-KoGEz2mgr=TThpWqE{5<6qWiuY0{Dq{TvZ9G_2W=xrp6y9Z^E*3#(kuA?bLrN7HBn!C&^Vur)VA}C zKQyf(Gc>IDF_ISJQH$p46amHkqky%gA6&%_O4fEHXsX zndC4{XAq_IL1QTysBNc{0h&%DNQ;gp=olF9nmXJ}J7L%~1MMV8h1&t`F z)V76WmZk+n{n`bMlgP2!HlIw>%BG?$cXI+0XsI)Q{V9dCT5={TZ(*@DKgWSF)c zLzKP+jXB1T+IBQKM$>F^qNZ8K&zfc$pK3bF_*T;lLNy&p)NgRmm`?oKHjVVxG}ZW3 z(-cxBshi{VF{9)S7Np@xN&$OUTp`^F{r?6Z&Ne5Tqs%%~>T5G^#2fpi=4$h7%V$~UFXmT>G@plA z>dDSg&N^p*XN9w?Q&p?~607~aX}^FO>PPInz1_YYRqbS~IdlD+X!B3`LCkADgZJkL zIaZJ5H}k6zZ@!kFgDUMO@i{1xJO;IS2V!2jJNI!5r4avPwfZ~R4VaT&&(6cz^-D0K zG86C3O_-6cVZB&q{}2Ap{qOr<_dn;~i`5LWsAO;}vKOxKUx>8~miia^k3}rQIMgy6 zjQoW%Kjs7e7j+DX_b2a{-VeQRdSCGFLj=P=S24H<6%5Wq{KE05UpRp|%y-O}kacjs zd5YQJ^w2HVC~Fce$I5rNV?Dg?cmsc*K7qPOw{6kpH^G<(i!vz>tTAEwHT`%hOu%& zA8&WB-^)C|d%i>6#P>aKcwX>4iL8nHJW0~hg{qQ#D7U!Rx>rqkhY;&i{$?xP_@(Jl6uaKv46W@#9 zIjp?>Km8}4llqeM)ai;GH&0csJ>ilqQDb=63?Wia*wd%cB<4W z?6{RGpDBzY$jZwMJ8q^vedN}OQ`H`w){Nh!_kEB)tm%IGn5H~co>JJ6qcz%=w!YDH zH|?xxD;=q*(~08;%SU>|tno@}!<`&swyVa#w`1lh@_#r+c~m1@W7IE3*zo~9m4jU8?-o|?TXmJ;RkBx|kq)bOu{vj1jf~W}!z)yqzk67@ zz;)}w$|l{~w)thUbzjs)Po}PU#;U^!Y3xchVs$jvec?rl-1)F_ zNb8KfVdd7=883&`sxx)Iu=-x={5`|!cd^c~Kddfponvcwt~!Wgclbnon&n~TIoFYI z!pgs`bG#ZpPPN*D!s_>_&WMH8Z$}+HB|Jy9Ivc`At1~vkv-ROB!sx|FB>aMQymxa|`SVyg}`cU3sha(Fv-)ywJk?))s&^(G-YU$rZiP=p<$Auf6}%j-K+@{y_(|G(iEfW zs}GayRDW`EFIE0onA}6#b-%mmVVdru$|nkwZFH=*wb8pYZKX$Ox|4R*bO*IH-A*6X zbepAq`@`f`sywhT0$Og-tv6G3w}#10^agFakq*(+O4V%;CO1%ZSB1&-RNYl!vV}6; z?>eeHoG`hTuGO|{=$V?XrVnb`Y<;h3ll6tBjdX^ltE`VT{h4mmbfxv1raw{TqlU>9 zR6UYmauHQ`Q<$u#U39;dR6W;W(n5!6+cG*q)0uRlrqivTG@VAT({w8Bp=mL#(6op; zG&$)|O`Kk<$oP$J(exSBcQGcW*J#@-bi1aPsd_%b#dj7JVx)<{dUk^ znr^rLs%bGDr0FQ@D@|3jkETj`p(dN&u8Gp6nk-Ab9)ul#(3|9=I%0a~J_@FERzqDQ z8aj_tmf@XMI_Ze&&dSvrQQ28N;3Il>o~il-JFBIwMwE3{`NAVgJC9dQC7so1+6Z6g z24(Sf9;3k1S>-Q}aCV-qEN15_1*Efjy&YcFSH5-*KkP8It*lntK0Va7LX4jo#_--X zYTK(!ZOgl;ZLm~rdv;davYu+&qf%|Vm#b~JZfe`LyV`aU3$5a~oqMTmX@%OB^if-H zZ?!dpYD=o*Yw_?Bd5!Ch9i*V?A@Z1}2Z_>_dgB4|wzl0*Qkw1~do{I_Co~nv4o!LT zfTkSTrzuO`(Uc)cO=rW8^4O1+UJ>bJGtNRYH{jT5B>^+t>+m8mzj6Q!^9#=T^h z?spHlPt)BbtLZMHp51z58+ljT+KBQW>W!^L-Cgy@o#YwadI#yybURV%TW{P-654hS z$!MbFSw)UN$m^PZAg^dTL|)XigS@QiA@Y!>JUO5#NAB0OmF(7ZD|u7XRYZ++)~_S) z$(yZyHBkx4^(|z-vMeNO$g_S9QRAcavxyp)s-H|AQGF`OAqBn3#|nCpxPmg0Q&37? zP*6f%RS+PrDe#lG6!?hBg0A4%hTGou=t4>qkw0qve{u zr0RJHlP~BM+V(m1Yx<0K*Yqj9O4BE_QPanCj;4?3Tupza{WKk-Ax$4rL(>Pex2E^$ zF`C|^3pE|2f7aANM`(JNF4y!9JzCS-RNakX@|N|Tw!LZns_6|nSkvqDVok5n6`Ee9 zS8962`a#pnR6WgM@)A|L6DEJ5^K|Qr^f*l~&`UHuZ+))mIa;UbS?lkbp0R$>^fZlV zIzW%r^c0}Ud(-YS3n)cFjHSM8pO}ptTO}psTns!pE>2c~2@&Big z4i*3Z-@h+MG5>oM^8FiS?0+wRXTQtuK=uF6eIFq5|9RgNzDIm{-}Zmx`>*nyUo4J0+S^%FRy5SAi zi&zcdanu1!x$bh^;=0atCE^#(MP&3ha>Jk`+NH{ ztP}8>{j82pxYxeTz78t|th3MkUyi6O;KyL$rg2ynY6uVUp1hNc^#2ZPQ5-}x!ZU0S zdx&Kb=YK1^mR-Tt$@TvhAr@hVjPf6fF%=Pu@XxgZM2!D_`WS7eak`b>NH^2V=o-2l z5&kF9IdmEwOGnT_i0|(~{gmlggoD;=*0a`L>tRIq-)r4wU1$BtT8G&FGpwj}oHYY$ z28^_7t!gW1l~}f1@$Xafp!ur#3|5zT$jq2`|4Ur|QgfkstU28rXEvCF%_>BOAPlNF zBJeL`06Z-hgKD*};AycOi=)*(ny2MzP_6b2EG<`qYAxewxf)cfaW_xP)u3AKYj|3$ z$Kq%;&f#gX9t(Dz#nW;*s8)M1Ps`O`%i?Gyzw@+MmIbZn^0Zi%1+gfDheO z?RO+kcacPvuykkHSk2O<62|j%iEP74kLgaT|5Tn1NOJ7wX}=JaE| zNJ6Yp+M%e8rPj%A5th18!fc+pK(rmQhw;=}MZNc3AR!Y-4mO590pQl!+w!SRYB2CBf6e7*UUz*5M2sHzd2Y5=xnjPYg@sx}; zJ7i8^sb;yuOrAPR?NG^5XG+r$o;pLBYI$m@q9&d?U6SJuo;pq08d>U8xdUQ%Pf?Ax zuoRMbaM~q2wM6wA$x|YU2j{_gN+j_Zhp_5lDynwa!BZlM$2f%e=oFH8uxlw#i5wnu z>)Um1!@W3{Zr;x)VcFnUCl6bJIhoz9i18CtXk-~#sLwQQ1@SxWN zEQJ&vH2Qc-WbnXrB~OVA9?L}H^ji+WP+gP3wDLmNs z&pb6<*{XO-NE~cic}hqePN0UTgv1$#upUeb5+`f}cuHs-Y)g1bXdG-u@RZOvP?)EL z#)10rl+ZXF?;uYJje~6vPYI2~^*qE=LgS1>>=B+48i&@yc}i#;F5a^|B{U9%vl1GI zqg=yNLgS1>W-pe4#^GX^JS8L!yN=^2NSq+t07B!i!`(b3G!B2_VxEG=fe^l$g2-Xl zWjrM`4m*T+N@yHtJWE02&{)P(LgKJzAD$8thoj+Z7ZQhVbvz{`4m5_Rgv5a+@syA_ zP=A(!#Ni-ac}gf8cI{v(C>%_)cuEKydL7175I8~AJS7wk-P(CdC>%cY)jTB>4y~hk zN+=v!ALS{baG>vbN-EqTyMd>q!W}|rLrR3oPP6;a6hdW+jnSO_;I;$)j_A59@n)@UkWDG?^yBpwcg$)cr{r9_-; zlg(*L#K|@-#0!krqCteoHrd^23SqKFlb5ALlx&mDXbMrXMpHFQi6Ge~gw>}IBx^LS zW+@RP+k_zcl!%dSBJa@@Vq}db4@)9M7WMJ0mv*& zPDht6xaiYh=z`lgIaL4|MUzuROBGE{7TZdeoFp3f&ontv7@RbDgxLC7a)M~E4VD}) zd;G$Z$gNf?knlWY`*08Ne*TYSTZ z%btH{$p(3ht5|Y`wEV=9!zKJmll7wSLYk}-+ftSc%LaVlVFKv0G&xkXcxkd$Y^zyv zh-k10O%4`@)hszk7>uqoIZzlpG&w+QTUfHcY}ibb{e%Ixd5tje-&wM+Y>BgEwE!zb zlOfS%GD}v;mNuF^Oc-!;R|*5t50ZUk3vQ+g(Sn<)x7e1kq!5-aw#kwZ799RJmK4g; z1;O)4p)6e(9w(tJT@WIl6w1;CPGu6xg3dqEB&5aYGKeRI*Mz6Fz>~sj!s3B%v!w8v zu#7!V!fO(yH+fRHO-OCUQv$aMjq7+)cug>E9b^f3 zPB_SFo)C_cV}sF^CxqjKQ~H%B;5dQEIF^9tgl&_FxbAs)2o)DfB=u4guo)c&lPYBNm^es=oa}w0S6T)@EAKl6maGgM;iYJ8c zgx0TkLikRw<#|H*PO!bh6T)}G1^$C4;5&gV!V|)ILhE$%5sE8h99@LcFw;W-1j{>OQa^i1%Klq>#~drCb{ zWcq*a{;XK>|9?Dd{Vi7gdk=XGFS(v^J%N?~?!&wO-N;$E0agDmNBzE4@@;>i>v);x zKMHUA1NGa!p0#%V6{`S>Jb#gqP|Wkc+PT4bq0IANEc5)Q{!5;J7pK>0*}vJ}+MnW$ z{|!V@?6)6B#lAFh5^h7yzK!-}_FAkDc!s^$o@>vxr`Tic5%v(f+Ag=dV1+=F|AKq? zW84?7@@M&8{s=GdIB&xmfmibl{6fBxpN0B;^YQjS9jj$y*;?LTMpXDYWxuko*+=Xh zr#5T)ZgmZM3|8zE<9nOZZY8GUr%t`;C-y_HWJ^C6Xa1VWmW{}~3 z3%!PJK&8kPbSYgZ^ZWmqiGb{WtQPpa^||$d^``Zr^(58{Y`5ab?Z3g=h`N90Tg$9d zkc%+Knug5&5!PU<$||!u$@hPe*Z-dRn)$5E>(80@nzx%<%qz`{&GXD=bBQ_EoMlcj zBZyZSVD>S)nLd+}U&%L!2{`!A5dfBhmuNWFm$IC25*_QkEC(kMu$t$DkLXyB^t~K> zM3|0eIk<=bAI}L7(Xrlg@SN}v9qY}XSx$I}j`eF<4jv-F=#(BOqwR~Tn}Y>p69wNdXeY4DSCbnPHqSxIVX{7BIXH@>Gg8rVkaEM(hO>r}6Gxl9gXg4_x8c`32PsEmCC^DEZ$m0k zPAYkuIgjO_;6K`yHNLsl!xLC4X5 zCeKM3Z*$zrb5h3J@D7-RjEnQx#d6SbbVC-al<_vl#XKuzybbyI zA`Y-vR%&>gmuIDhx7iQ#tkm!}^f@h_Ow;?@03lYaLJUlBkyv=@!XQhU>5s=jIHe)l(Lc`I`$Fowx+vp2C zD}PpaN_d+Q=UFM?ZT15^D9^6ZJK*Fl~= zL6T9$vd7CtlV^{UCaZ;IkCmn}mOVzoB%Ylk+w7e@d$giQS$4K;?8URQq{*Dfvoj^( zvlA8J zC`TyT!?P0<6{A06ucAPZ9rOm?WG+HWIR`{GPsDzOfK4*)QX5n)hEiRUY%Sl@7 zG|LK~v&H+Fq zSduIYuMWg>nH|;dWM`*hm&`r%_c&v%>4F!jyKq6qZ>j48~%bIae4$ zEVDuw>}@R5BH?b9IY)Mh(adtu#blYYg~4>u%rappW0_`QV0~ETEV<8imN`=Z5^*zU z2*7)7W~l%^oMlcIfF#?@X=3l`EOV+b;58w0iU7x6mN{7fy?|ww2(a&^nZ=^-Qkq#L zwh@|%ifxc)7K-g`E3?3K8l_g|By1XJX1?hp=9x4z4_ops&CC`5kKQL@%igjwC!m{; zW{$`IVv+mIaoE~zG;=Jr)DP_0+<%m_)=I+htOB&~HO z&(up3S->-OlJN7I39B7W;u$zfI8l=08F)&9ZebbeDz#4FnIY0-oyjwU)edL#%pgUl zvCKgE7XmypK$;x4@JxS6<{qBur@CFnGBvVW3D5MECTj=JRIA2oc_yT2HqTT^a-j7v zMfg@KC7C062JVu$p6gi#{t`Y{DbEOZ38s}i19wT#9G(&W66kW45&ja2%<_!zmoOzU zi)Y|3f#^h*fy0DGFV6^n3G*spo)P{MKK;8qBm5;C<8+o0{*t4$nrDQ+goz8vGNsbg z#53@hV6t#Qq{Gx|JjpZCVQRHc+rcv|{Rt@dp^4ZlhB zTh7yPoJ7AZJS{yZR21fE={dDJ9^+~0IknpOyV7%Nwa@2i={dF9m+~|`C+rIkCoNs4 zR{Ij3UZ#$W3AkoS@O9E>Dce~reWv_qlX?0KWjdCpmnv#y>Co%+u0yYPE0SY3Vt&(g%22dQPo2 zCidVtiED8OPfORS)pqeTTqoElW{RZm)M}r})6#cpwa?&b_)cg=<)pN9o?0<3X^fQRY#+&rPFaXg$_`?@c@7 zZSL>?Hn02?YpylZIs#SnKlOL`U-m!ce+;VzY{yu_zgaoJ_ml4nR1kd4_pEP^@4p;J zFfY?12?Kq7u!5l5=kR`yD1r{}%igEFkD+qlc0>?di&2ENh#xq`I}hsyPWFyMhJJr< zZ*OO>)AI+`4EXFHV+ap8;{k|FX0@s+eh#NT7Gv9NxXNqSu>IL>QM`GQ;Qq&9l z-Tkfm6L*LE75CHbUG4|mDfc$_P43O^%MdZJ+ms=yF0s`uD`p! z#hQWdpc2B9u165{eh(rAu6A996$6*KmLT4JhHJd50WkuVu5MT_&~X0X{LFa}BL)YY zk0UxDhSdVELu|kWs9tcI^CagS=Tzqy=WuhTbD*=*+1=^GSivv$SN0*~TRe~0fQK+n zu+6^F8iH|x^_I_GW%WROKooTgrdcB~Qc!RAw|m>2Z71sce~VFqcTf%RNsJNX_&rvY zc?7?eU(2t+D8UL;16;_D#TdajJ_0!xeRx;y=7zb4{b;694e$f@278`8!5%hmHt%9N zb}wFrZ)4Z7Kba>ZR$ztsrTIEL-CSm#$WCHMv&k%CZf3*q-u|Gu+A>*R7BoL#olqh0 zSNat_WDYa?nnBdzV|ZKtiX0+ulIO`@@(@XrZ7xfdrhM9A&2YH?@fL56`v?BN4XU)} z6W*zt)tNqFZknpAP46$cXX;4RzCSYcaMgZ*SW})<#siC{?9)bL@szz9*?=i~RQv9R z$+~#*0jqWrVwXg5(*r{$AvRFbut|v3k`$O!U);OvBm@>oqi<4J8|e#^hG}$sJE>Nq zv-hMSMeECx5d0+fI&#t=ZDa!{^;5XtbRBVf5uZEaHjSO0I^tH1WX-sN8tDz=1}NO+ zxW2JZ5wB@1FXGjWeT#TyBf`GK-`%yYu}Ra)Mg)6F+i{Kh^6i?{*iGAJHX_7JwpKQd z)>PV9tEr?>fBIeiMueNme!j;3nmmmIG`SlQU?p44#-KWxoz7`x{fjuYOrPRT=ae#i zm3BHOm-Q-km{c~jh!e~7N8jl@qD+6toz4kmhZQ@FFVmNFr*m9cmA3Lb%k+1)lipKS zr>*8)W%^6oX>KiRELtxst1RNmGJPZMB$t*IPn{fHR;D|U@-qEh?=-$E)0cmzkuDpd zI~a@0LJAM~SJmH9#Fh0sG+daML;XD(dFT3=M)q?3gBq>6dRHUlPbNd4~M;l4vm z>wY>q@{qP#p-7>KT_VXMT9I8E&Gv}Cwf2*EB&Dt7l8C-@_8WhT=-Y6=(GhuEcQDeC zr;B(~VqKLlD_Ro&ot8LTA>f3Su zlt^CNCPWY~F21Av<0Ja^*a`aa!9P6+8+Yaf{t(s$%Oa#Tp)d;7?dq2kpcQ$qTt-)H4$n>b4WkR`=X&|b?clEl4@kX z*&%&9?VBFbH{iZ0A$?=*s}8-S`&EVzI4t+*9r{vJX-G@RzLF5q0Ay<*bWoE&^u8uv zNZ*S4ydf<=`#d2nQ~TVZPjx>tq_yOUz?G2_^_iat{3#MB;uVonjck3St47j2Ql`<7 zk91MTdZKTnho;I%xu()cH%%oGgolgseZn8rUp$h#i?6ta8 zAjLxLy>~*z2b#uL=+C`(T*W)uHmX7k@ZLy;zEXRuE8f$sl@&8XcZ&n*sj4`=zqvN+~{ZqKx@mlqB>Z9#mTdjY>cCW7P(6;H-`o7;iyjp(`yN6WkCt!DVwf^RI zA6Biuk=>QmpXq(etDn|XTCKn9-6hqBw9Q+szq#G6YW?Kxc2?{AdAC{p7u}Ck>&Jap zU_qmH)^-I>YSeDouE6}pYW1;p1?DyCJ9}4PZlm_Pb_Gss998UaLZf!~IM`QOQwl{Vu;w_E!|Cs;((f_6Y zL;qX4{{Macq`%F7lYg`SGOYJ^j{h|O0#yH>hK%{cWd*o$WB|DR1aIzQ#lN?GFZmAm zcKYu3C4Jj`H~BW}8gTzr3;;t0z&GBH5d-kD_kedN;{TK0HdOuJg!TSbd(Zw4Z|@bT zvFGs;&rhB&Js+Yn-;2mzf7H|NiKE{C4W6qI^?#mcndfAz`ZvonNml#s@9E>|?(ut= z`#1MD?vLH?x?lcp-`?k-p5a*c2&~)}!rBleZl~LUwfnww{S|NUs?ProS00(`ce+{; z0dSdXt*-NbBJ$QJqt5>bS?52975hZAf3eR0tIlU-o&SO}uIv2&bN>HC=PXoE80{SH z9OSHW_H>qFwLaq?b^c$K5&sXPib4!4_8|gX&;BpPJN*gvOnZ_&${ubHLN&skShde- zJNS=?7dgb=Mm@r(QAq(awW#ucCvWAOQA5TA2O+ zhJAwQ|JT@ac(Z?$wafYco7vUua&`e~5uVN#vg2g@|46LiC+7c4m`(qV8vmctgY;GU z4Bbs1{Kx$N75_yg!fF~sb$=TpM&DbXS?{BA!SmKW>k+G9#jHCp|9_R9|34XHMzgF* zRsanctY7m>uRT=F>9%U)A-$4)gyPnXAmRF#ms|ITQ2$qs)49pjl~l z#|n>({DztUpZ@FoKX1nfFLCU|Ttz#Ecn!zSa@LL!UO=|!w22qQ$gZ*0v4a&b zvWsq|ydVa4jkR<sTo+Ky3K-S}tmXwVs%xypoOS`Dx-fZoK@94`w3!t! zs0)*i7sQw@PU}ow5M#Rd+hx2U#&q!)xAKA*)5TdtctMQmf*N^2jOl`g^MV-D1s%=` z7}Le!rtkuWbYa4jWC3HkFs*UFX!3#>(uHXxD_}?$rs=GJ z5naG6UJwJiXdA%_7|?}jHZO?rTpY_{1&rq!j*i~EAcu21*z3F?hjTmF2fQGMb32?v zc|i{6b{J_^z;G^haPop2&F#Qawgoww+u^L|1v#4AVNd1-Ihxzy?8^&sG`9mYAq6>_ z+u1+=ZijUX zD_}4e-Ku#(j^%bBhN~dQay!U-yf6(P(9vQ3&I?l&ZQ_L~lAJ?$VX`F3d0~>W)$zha zNmhs#j*w*h#0wKtYYi`qS2Tzh#wi-c3u9HkdAu-2lJyENj8?7vSz(ksJ$w%l3FBCy zNdgYhs5%Yig^`N-vBKf95noM%G*OEeMo2RE(*owkjc9LH5L4q(r<)bT)OeKcW(6@d z9<~2Y3u0S6^kH6BGCQ$b9PN1dHnLBwN5FY1D~P%AsIh_- z#N2q)iQ8YyjYpk+S`Zuzh?yzk{Pw|iN(}-R6KEFYCMWS>VlXWkJ>-7f|weQI?HK6OpQku(t?;8kK)@G zA(>HQH!Wap+=${H7gOU=XE$09Q{z#bBc{e-=*bG08z)izH7#Ir+=$L&1!Qh@l1&6@u+z> zD~Rdws1qlJ>2X|DNPw6hk77c$fcbHJ12@oum>`dOSV2sXN1YX{ASTG8NO&lS3G%4< zJ1t;>+=%*ELClXwQTMNa`Ee38+F3zNkVnZfmd6A+PHQ2{iy88$)5Y>)hCJ%zEH7rr zqt0rU7c=BhgnZ}440+V)V|mPwlch)$zb z%ZoYkC<4CoVvanDfbYDRBab>6%ZoYksNKQxm?Ot$`I6I z#qVogOp-?tF_Xt6Ir{WwdCZanDrsI!lSgslm?npz3(GGMU=C#Ylcc2+%g>ikM)UJT z-y>Omt~5AV{zL)xuPlFp0An7_A1}I;vHWqe3-QX?}|6 zGLGdZOGAj}CkX>C=R{$!abb>-Ee@8SAi!*3`SH?1S$>>^0Lzb+V6glc*{7Z6M~lOZ zqWMu`Th8(k(O@;Qe3R^Y7|SheLvlj!KrV zmq2*F4hm#+Slw7YEKL(wewc)*EI(92HP6?|PV^d&>U(HA`5UlQHT^Zg`Yx$}IDqOW+quO#awp08H6Z+JeWXd};8N#Zkk{xC`Qr#xS& z=v|iYBmQjj1fH*uCgVn)?=1<_@cCY<+ebWKE(t$F`Jg1SisgICT}xTMOoEr?;Wy!6 z^H^TEO-3_5GTbKdVQ}}uZ-S|b=ixR9(;GYwze&*BJTD!mW<*8jrQ_6$QeJsDPG~j% z!t&B{Y97z?@SKF{0MEm90vSo3m%dXorkC^5cWSm^gYSe^{6giW^VBRJYUw;RPvLp# zJT=p;Sh8AnN96Tv}qX;U6BP9;<4$r}p0%1})Ctay#`UcOzl@hjdd2W%~6=ADUwa3>yC!8tl z`vK1hX9|Bd&vU|=GMdR@EC*)_e_}e%!Iu&TxrXP2Gld-xeF|p^jpKMu_);*v#dE@! z!pQ|#4!#r`XYrhHrO@~$&k0uw$9S6Ogezq<)5};+xKc**D3%khl+hevIk-}Qa-I{O z6uulp&%%>3j4g<6g(F3bEoLRl!IOds7XgkG02cUB04K}AjRFv!6JC_D#eR+D;6=gI zz;bY+0M#r99}0kYV&Os=TaY`N6D}0GzshoOq0l&-=f+7B?&I88Nd)Hy4+@Pi2?xs9 zg4;3&2TJVuI?D+U3Ma^O@SwzD?`Juvsn%v6k?JQnJXQr z_4X?)C#21>ejU$2+C-T0MwWxN!9-Y2NSkAQiOW6E=ufseP|v@++vm1W&HpRB|GteG z?EQ#<&tsLlTT!*`a;$N;+;u8euRj_U+eRbueE{mUb#r-LCf`JU^=dleey7oEpG+yV=d2T_h`wrCIzZ-P} zH}gyR`Meo6lgWq^Q z^1O|antj9=Hla!l*%`yeSE&I)W7wD~HSB5(tFBUmfyS`PDmC0^3@fdYL$(foX9r?a z#6LNzXVg!s+N7zv>RL^eRo81Ot-4N=uj(32X4Pg*WX$n$%*zPVxL3`T0ApS?m12a= zhrExeuHh+OHDPFktGzq5&FkHz$>mjp_1MMxsJ0RBZbkq5Pm3#MR;htqW2kRy?O1iT zLw$GFs(D;k@2H(twBBB;#u;I~t#+igy2sa!(dfFkHlmSUT02>zHNW;~jb?kT8ap(G z8arwmwbi)4R?ShvdT#AeMe8xO<25=ysGU>9_iINN@nEeQEj5NZI%?~R*4Jv)uqUh= zYA2{GG<034MiJwj7U?Kn*fYo}_ORU6hcq4r2kk=j~KgKLLrs;-@=sj_yq zrrx#3XezCpqN${Ix+ZV!Bu&m*)LOws#WTjQhG}3FU&Mo4lRcbcCsHGQFom{l8sXA4obz0TZA}*{tN2B>o z)kQ`8TUARD->6zu#DP_3X(WeLouSc~S9N9)168MKbbMZQVG;LMouWQ)?Yyeb=7&=7OGmVsj_OlreM`#P2H-NX!2H}FpapBwa%)GHJMe-nn;zJTrq~wQ#@*1 z9eA=w4Q~UNc+?oYF~t1F(_fwB5VFJ5w}|UJYCzu@Vm#pKr>%~MJXPv14DowvH2FN$ zn%o{02ZDoo`lww7)0ytui+Gg#jv~%*->cE8a<^$T7Q45qLk(_l->s?Iy-ic4JEqC& zzDtwStpX5?!KV98Z6j_qm2C_P^lnJ0V-E`SYDgBbykVP0#|I5+(%Km0IM`6!&2deG z{_BI*HK_0hW61q|H!eLd?WRvKfp7xQQO=jwIB^J zM`|_e?|dh?P<@vE&bNd55%2GOD;OZiTG^;z&Fy_?l9xIiNr6}+H`R#3}Ke`9`7KkfY;9|W}|^>-W$o~%AY|CZpH znvMRd9`_!-D5( zstjr+=F`>xSc?Yl`+rB6RU{YrheYMa-0vnHocKl%Mk-?a#p z9jsiE|Np=L_g6rDIYa4lQ?=#}C6!YvwAFlQivD35YIU2uOI_`u<&$@+_WmVRlYUUf zL7|B+X=A6qP8?Fik0z>lP@})&wTWtC*J$v}s?q*QgJ))q)|Lj(Q8n6uY4FUb(a&Rp z=g1oEz%+QK*Bqga+u)g2v!sYqYxE=E;C{SDYgU8nk{az7G&rZ%XfLaQb+4JEcf;7R z{#9?FqieJi)nK*Ms5xGv!JJWZtnN!D)r2(~FVtv-Y%m_EnOC&Zn(0NfYP8GN;5b;L z9j*q)Lp9o0Y;ZhKGe!4x-jYoj%;)zw{H9TI7hHeDG=0uh9CBbW$@GAM(nfC>&MU?M|A92itUP*E9-Zbwuc ziL*HGo~M8~5`rjBTTyXB-P-}@5xmb@waRn$`Mz`ScYodc{ZjHtLr-@im|5F4C^gmr7tN%EG{QboXWuw{uSP}E~pCORZ zf2KfM|H%TW{RO)peq7+6PVDe8f$szw9r#9|qXJ(E)Dm#q2J+#}fzL&3Sm0}c1_!<09N&@)0%r$K4@?P+3$z4=1_lJG1Em2gpjp3J z`>fBb_n`j2EY$x_>o%zWS6R!f3#>WTnaBVz(HdnnSq)a56}Ea?e&hhy@BhL7rT=4O z&3_H<{muR)vH(2zR|ddK-~pI}JOI=DC-{%?H~WYB2l{J}37}ZG_`fti{ws^U>jSvf zT!rj^|J4UjX$DQdsrr8PedGJo_pa|%-%GwOU&8koY8&3}yWV%T?^54FR5qOHo9dg0 zx`vJL0o3>o_Vx04;Nxdm|337-?cL#h&YQ(J$iu95p|^w8EQFW;Z13sZ1Mr`705}={ z_8Ffes*xRk#4|rZ>}d z^fF|TI2R)$r_;%FEN#a8|9WJs3sRFRzQm@{&Rek1A;UWQpC3-q(~ z=@==QfGmKGs7TmPxAoq-sjJ#=+PB*0s7d%H@&G>1odAz&8@1a|mGElqQf(130iLCu ziuogBQ6FKbb|`WI9E@Cmh9;>$V~)Y6>TXm~*rsm5Sjm&>gX&$#25=2VOD<8*N9D*f z)svAAaI|`a8o_u;1*%#2Rn5r~kNifmM#vJ_w6Rm7x z6G<@9%7!wPV4{_6JU|jmw6akLJ;6jP+p~%!m}q5FKS?mr%BHF@+84@D_gyaB$#ex%Uei-=~gzTe5=^(UH5@V1t!(2;l7Mana1BW?;mW2Fl3>D> zE$<`=CS2Ka4@p3{0;nMgrd-*^%_PB;D_hQx1XHeTeKtuzxk3|mgGpDmYU>F|SF){= z1XHeT^9!W6m%2sxf1kxssCAo&vX;pt5#e1Il0*Xs zH-rE6U#AJkR9MnDmn5K5VF8OKxJbOto7r zp$RTi?bc4D2`*FZmUq(xm#KCe3rK>?RJ&_Q0x}iWq0$6bsdgLZlLS|(c8^7McxOxV zX@aX%yVV++;40N_Z8%MEm1-g8$|s;wVHSNgNkF6mP)Hma6+j7zL!ttxqj9cKEi}%d zajsA;M7F;;SEv>m?IaF`3f)va4la^|6(r86C}_+kaYjW!r1yw3DhkSvlQ^TIAT}Fk zR1`Gk>Tyt!9IV#kU?Mqa=y4E{9Q5gN@Q@r_smDP>a_}S)XDk$ylX@I1BnJa}93&(M zC+Tr;kQ~HrGYSeyf08((prFyJ$3a1Iu!zJN0|jxm;*5cUY9A733=}llNSrZHQ0ma* zjDdnUX2w84WJidDf#jf{#2Envjk8Fc5m1nROX7@xf+$ZB2LZ{!Iud966QnyyobgW( zxw+!tA3131anO$(Tu9=KeS&Z}#Tokqjahme>>~#)5@+NSl-7|rBcGsgHi`X+UXO!(M-GnF;~*Y6IGMy5?*t*a#~JSgrC;?pct;N6IsxrqW!IB9 z@135T}#s}~=`5qcSgd_ao@p|4EAo2bjOr!CB zPOrr@UdNF-hQw=m<0KldaT*IG-j|0I8n5OdV)*p8s|*ZVVptZU?MDt47PDl5s+~zjdL#QkZz%Ia1m>Ln#4gySjlo4=Umi* zjGl4MMICa6#yJ;tkdsNAb5Vy%W%?WCXPsWjtaaD0wlgmyDkl!{HTU{IuAZqQ@9NEw0mJ;3s*psmB;S zEw)IE(bHn^M~ufAP>YR|NQ@EGVq-FivDc%;#>phc7;3RGNsob{Wk;E85RZ2hUF%Xno zSwdorpDIykCkB3!E0^do(34!L>M_PnmB;BZ#!i(3N$gnmgMCp=V-whq`Gs);i9rcR z2tPCv!lf@tXbeI)+LZT6j49#L7e|oT(H!8n9K(T0W6;6b3XY>OCWHeWPh(67m%gAl zR}jKkY$Az43CAj6m1ROW8f$3`LO75Xp|KGhu?uQALzpy4Vn?tAHp55@C7gwp&={m} zX8BFg7}vrv9g@TtV@aFgsb!2MZH7xa2F3!?AEYrxSy=Rb8e^0tZDtn+qbw{imc$rk zAx2}2vJe_iVxTO9aO_|#78*@spe%-tAu(_k8vQiJC<`H+M@CuFX8azEvZT!mX^c@8 z+9r?~C<~!+GzP{(NN%MuMpn?`H6#Yo!beJ`lGaHE%?PfSb(=thLq(^B80aoNGR8-sRitdlF*>|6R5C zcTp+ed4I5Pd%IGlKV_l>FZMC>Lzs~ zwD@ba8QRGrGu@$DU#(0FK)?T8{T5%diuQ~46I%Kq8q|MVm z(|037{tJ3me+n7$HXuL#mHH+4GHyj3zvJLXJ6s=#)TBXUtTDof77@Wq~|bCy~p;Hcsz7J(rA7L@BgdF4}(Nz z|K^2grKiy2{%tnDM1DlJ{}0IP$oBVNoe;Ch>8PG~G&us9{%S~w6k)FZAHKNnQQtkj zn|*72D=ZuMps+!cJJ`#3BGpR?pDC|gJ zQqP32Beh9A+VJpQd=Ly>e-Gd5!gs#|u;vbp{co9mP>c*7$5bB*qCUGK%=7-0v#3g3e*yLL!jo!E`b`Og9REE4G1(iI?DOAcF0de zC%EvjXfGFTh&lu8sBiqYXxNR8iaNqDqBW6kL{xe!^05n_i@fQ=Ow<{zmv%@Sqa|+i zrl^>*wL|KNI_3s+SRJhrJGMOXr$9@iH3GFqUKfk2*G3)X0B2`O)EUbMJTLOA+hJhD z8OlX86fJe5TI2%(mHQ)~y09hcCPP@suM~9@3H)H+MLrT8s+`u8g${OQAhf~);@{)-RQ?rN9;lLqo^aE0Dc(l>vq@^b)*kOKZtzpM&FN0 zE_^St-G#fOh6~?~I-(2~dnfXq8~sP*YZty9bsRJ3@K$t?8+|kKnhW2E?04boksn;R zEAp8OUyHos!dIh?%>gUh8TrYLz7n-uxFdS93o}tuK=YQ!9szw9MIH4@+TndHvO`3T z-=mKHCG9YZBj3AGD_Sg|=ZDD8F8m#W%M`~PKo^J!V!^Q1SAKd z2f1)#WSjZxylnbAXCcx=S+ z7)U$xBclV{s21rFQ2RRan+qR}>MmRqm0dVIveSjNQJ)L@L>+YyH};p2_eE4qNB(eO zXSB?PcSpW-;T@5;B}tj`|E!MwPmllk1^!Qe0q5e{Ry1q;^A7ATK6va_5$*NISV4~4 zdi_3jpoj*p87ppvZN2u76%5ne>%>ul3A&}+DDl|uj*b$Khi>W4QR43JmS>ET#gn3F zlz1iUE*|-(*a7LMk>bYeR%VS9Y}ehZV&orUA#oCT!ZA(TTsXQ((De4AQBC48y}f8;Q^xIZRMTb`9@+G)fYy^uITs$^Bq(RQ@9U;r zB1(U2dRIX5W|KHi+sW%q@3_(JP2yRyUCA`PDxykDli=~~%D|?)8!c%PY`IwkwhPxabvq|z`^qM9&bLnT_H@z;9+9a;l?p{?RzjgMj zyI1ANuLLaWY;iBqqKz#_h^TSpNbw};Cex3aA)?y)kzWg_KHM@~KxNKI@qXB?$VWXX zqOzx@NkHkNk>aV-E$wWHy3rji;^yg=@-6+{=rb+ixz#N_&>|i+-O^nxN4gz0w1^w6 z8?~;)jn*yQ&@$NVa7D}E&aro|Y;lZeQumS;@fzMewMD#Wch|KzW(ldgy2UZEN!{TV z_Z_XIWtdn?pk;(WR*R$gOWnQ}#|0v73#=IWl(Xe+flG&`UATPcGcH^;K{&)Z~&}_oBT>-09Y6}CvX=0fi0(#j63N{ZIKH^55-W@4ptg0G9bL^tap2W~X_(dA+$BRRI>8^UYTCG~@&rZ;mt%HxK1?0Ei?}Ei^w_TEOIJF1&$#jNEG$|Y@~+w5=s9_{}S^f z-iG%7JVrO3)*sUE(r*&V|G607I8C3VkJVfB!;mquQV(LJMAd%PzR~t-?`gZVm$fd8 zl{}_(LiN8+yGqQFn4wM8jzj&w;aXIy*DAF>nwtUObM<}ob!h&Z)r9&O=11J7{!P7F zU9K)v=czM91;8eCFvfDiYHuk1y2t?Vk@Ak7X3Eq6Q%^HxYJf%3Oqm*h0oOE?DP;f( z0;M5MDFcjsdYWld15`Z?ZAu;x)YBOGl?M#f(`?{(z!aLEgW)pyCM8DGvpG_iko4IY zOOtP^rs*~w@|;T3tsEI&lJr@;u^&y(azbCx^h}N*HKb?o#v+E&I#JXv^H%Hn#G<^_|95X&4 z=@RUU9K+R7%mMDZUL4>mE8+mRQ-Jk;Rl|M@iS;RyK;(v%})Q%@7#Z5T=G9E_)FjkjS;J*{$Nd_>X;Z^Vx!JE8Y!T5`}H znp)|g4`^zIgFdFIOBp&uX`!j*97!LO)H1e`LuyEBDF@XgbqNOwNnOmrRGPYo_cq=l zsUyz3;z$?OLF5}eF#z+r>T zWch|-k^+|j_(=*>27v8wCiBQx6=yP!F_)ykWU}n3rYTNj9(n~yfyfY2Xo~ZgN8UhF zoX0#!w2Dg&Y)k`(7M&r+HKm$3zcGzBta z-QFZA&Sof)mm0^nY0(te3~fkhk^-FpDbJ7;_zXKVo~AgRdGw7W#pw){2~(gmwys?? z#re#GL;)%A8T#XZIh}dbMw;Su=7G|l;&kQ-(-fyO51bzJRxlX= zPAela^m>)17?ELJ=g|}=GKrmP5E*OTPE%kqhF%~kPGu5)WKbDGc-W*kmr2G;G{w10 zGIr1u=dxl0dkZd;rR%^BjLM|z@H;Xpldi+>2r2^zkd%i5T-uDtr0Y<_CdG(Mx~`a} zKx8cR6HPHD1L`0tFc}(gJuo7Zt^*N($N+F?;4uJ;CK-*P_ePQgjUhCQCK-!K*CF{+ zlChX{o#LZOuo&xh3rR8>ldfArlb|uy_$f&;9+R$9X_E06LPazQ9%KDC&?JZq$aq9g z!XYHv6?&2xgzO7R5(Xi-w$_m(971rmJx-E%5rdm6x7D*q zlIifaks(Rw@YvK8l4M39+qhp(G9}*jkt9>%ZQ}-#WJj6P8HH?PgPw#@NVXM{WIiEVd731dPslcIB}w>%u+X0* z$&5la9iS&+6q4;Cl7vqPEtiudGYZ+b_L49PVWG7o38xUY{g$4DRY8*Y-KJ< z!YKqmNs?KGY}}PeW)-q=aVB9E0=R-CnODfxKP1Uv3>XiSHl?><~=*bG! z7uTlE`{J?<^DZxvWH|%IEhKp`19-VjhIr&jk}TtWKGKt=Y-y7u`|y^(>&YMsEF{U^ zJa92d9>jpOMo*TomRWkTnEka#vKR01AW0T+u$&|V9NbNk7GDPUo1aH+BT171WZX&m zc++Df>E%thNDU4)lB91?kipo){ecaE>jPJd+=FLe z?!nl=h(IJzhf#;3fR335-&mhm?^rvn7p$E13`QL8wr;l8S(jN$tohbi7;iYv8jX1e zgRNTYV2m~pR36-iv4(g2ulS$yr!nK;e*Xsl_5Q0-G2lY~T>qK=lQ56{D7Xm*`m6nY zFvcL8Kbc>eADM4sgyA_+b?^@J28=IUYA!VAnKR6j&11#rLbch)G)>v}6KW3bLA8Kw zzRk*w(9bvdHu`S$UF%zgv4!(|XZud`o!}eeYr;H(zS?;0NaVY#*X+N>7{2v>hP;Ej zyf1sZPI}w^bK!2!O`bKLOFb8Q=6I$DenP&26SXq7`eH%Y@VNK&+jHNgIpN^;hTR&%WGpZ-}1*)6ih-~s1MQy{|oK2je zt{X1qI-j8qKg$W8rr%b(NkHw@+It05v$YSoa7pb`&RS2OUb<1BDW$gvG`3VsGd#Vb zR7~tWy`;2Lv|6Qi3#67hUIY0wU#9j}v2I_w_Hh@cYVQ`%^FyuM*E6kly&Iic>kR+N zr;+n&H;AZyPp#OKbLx(8MlR)ZFg;hyJvv7{!WsIM=LJr0a^zllp1ixsQD^~QZmMd7;1X=l9DcSg$6Fl>%Ue36veCCK= zM~GNmFEL%~On)zD3{*Z-?RB_w4Ab>)>sl9Xv#xXD%hqKse95|0KyA3SR6zAR>lzov ztYt2|&$`@&)z;qx#PriEUD#rE2q-^itrAeW(^}`kTdb8Xyxdyr9K!Ua)>Q({wAKhT z#kxeGI_qkIYONIlRan;xWLZ}Tz39ia45tVN%t90SHWtt18mkM@6 zN~ThAe;@%;sUzjc$f;FUBKk^u${c+TDZ0waoC{;YIk2RV|PJYUHSa)b)Nia{ySL9Q7Tb78MR zPYWphJ}BdCcYfWVoIt@r&j?g9$WgK6`9*`eM9dnL5Xc;q6v#Jdvq0*gzdNgLw|XMt z25GmpM+D`zdq0jOMF(SNMC@|Ar#$kYh|*xhksRfA{ey@&ymmbm5lr2#UmFoWMZ5O5 z$em&_bw@Xx;K` zpQp-EssU-0V5HgVGga@2zUsg#!Q!*!x2ir6QTei}cLkL0toqQ|gV_tK{vptmDnS9W z$5*{6Vs%x5Qf60IeJo-XRi6lCRlO~czseD#<=IBnMcEoQ`KtvDXST)?O!2oqer9MfP<9S$2m&s(p<>iY*@PZGoC0mpWT%3-leb+=bOc zE*DUpKV+4&RNK5E;_=&d(h#xjwkboFiq?rkmI*X=h}_>J#6!HTVu;v_ zwvr)NiY1DNh}VO*z!33z&}I#}Otkujh~sNhhpcpVtCdVH5)X=2GO0*BfLh53MdAt7 zN{%mj$L)JukvPY#`c*~ZY_@8BiuQ^Qs#dgHKzVo32hL_&#}tV(*4kVo&UR~E(H_xS zUG$ki{vvTzw5mnovN}tvH77gGXH7Iu5NM2fl0c)(;{|Fqj}xfQoFY)QIZdG6=2U_F z=7|ES<|Kg>^JE9js`HBvg;}+JOT?=E;t4lP^^5m~nfk@1V9}ZSMdl;UG0)VOn1bzQ z>WfW5zBBbjrr@=i`a)AY0A}hnrl8K5+5)pvtU>(FfSJ-BQ;_;hDP;pUR+u6gJ5mV$RnOSW{*V{R3a)FIiov z0`P?OAil?$1K>(H02W#2;EViJYmzn2I?@_u9g1)Aa;pSY{1pGM{%`$X_&@Z&jqGyI z`Lq6KP|5FZ|IPk&{>zYGZoa=2`u}AASmXg1f?9t6`)UAxHy`<{8i1PxV2U{owfu&f z15gd1&%b2>cnw(q3ceV;?f3fD--pNmz^VXb;B$Y- zxC>SN)*35~#m0Q2)i~9d1mAy)ahP!kav}alRlmKS-JV^ZmofK0;du;o{ciXC4f+3< z;mdrk=SB=OQcONvILY=K2rPYcSr^OQ+g?UL|r5X8Lc(h)-I3 zQhPwVL%Ts+jd}hHwRxCVF;$zWjnW#mL41~fFO91EG4}LNb&vWcDhF;=)0pG`fO>~| zgSuK>fzhY=>RIY3>hbCr%?AtRgw4 z1xW`gXpU(?(gAN1%`q)VI)DjBIcPyZM5Q?<2B9@Va}a}AY#PlmHAp%j-%fH+gRqhs zl4D|!bfB8#AO-;#G{>|cEI5nipan5BfaaJO1avgbF);|Jk>(%n710omtiA^e(aNDiV98b{C^G$DlaH%Jbm z5JF37j%h;JwbeAoG$E|)Oqyew5O(}Snu8|97Py<{APNDguhAS-A=d9Knu9FF&~Y>e zT?h#2WOG~?I^b<3IW7zxSV(hR7&@TtCpid1*s4Wy(1p<7_=)Bq46$`!=b#KRghPci z#Ly_3<=W5zuT8VihFI(vn&slq0hImDa&hQ@@(j&#ap(YYFlQkSp`WsdX1O|a0EKnr1pNDE`_8cCPo~GG$r~h!8o#&vVXm&0~uu^2_II)p5 zJDVezDzaxgvB5Ok=Ah9u+v=brX!a}zok6p+9CQNB&UDZWnw`OsHkoG6bYj?-GdPm| zAld1B_f(oa-Dy0GW>0g_=`?#PNAiA}J%uA}0L@NwTE~#=RK944W>0oP)iisOgJ#m~ zi4K}Xvr`;&D9tjS!?_zrv*0-(=`EUNM2FZknq@=>G?ivSbPQF{ESQd=@gxhX!zDA3 zWWjU*xF#6Up=~V9g6J5kBUvyV8iOPYq65G&3!XcKW(CikO0y2n>G#mA!*kxgGz*@? zI>>681<|p!9Zs`gIuU6-+mgW(CvfBnzg)_SQFdZ6kc{xPq9Z0euI)tXsEO?Ifs-jtk=wyv%9isD|LbDFhp)`CJM2CLx zv1A>l^PWbsU^*Fd%19PO2QYzVInQAh7|n8?!_+d8zG+vXgH z8EiDmIj+ZBPO^;SWF4oNah$As3C%K&lXX0tvW(+^KBHO2ak8%8O0wWMEP!ha6o(Kd z$Y#ND2pKfXC=TnuPX&r&sElSA#{uE+7{|%FLbHtH5GtZs#&JMCnq?d(>v$4m8OLFx zTS*oihXsmhmQfrw^#{!|ibLb$G|MOs8wCL{io;59?||Zf!0=hdaai3hl4Tqx>m@YH zI1b&gn~dYIx@Soi9EZk6nq?G+MulWRaR{A7GmPP|sb@$A42O`PW*EU?!Frlu1c&~V zW*ET%d1;0b9DbuCNd^Rm1*X#s<2UTk5}INBhTZ*>W*EO=fnGGj_zkF(WWaA&ppIrh zZ!9E{4C6OhUrIBK-*70u(+uM`pw%=3eq-H2Bm;s&w^K-l@tdrVrWwX>*vXS=hVdJY zAWk!k-_ZXcnqm9~)Q4smzX5q@hVdKv?I#)V8&+b`45K%!q={x2y#bv;GmPG_KrziQ zdc(o&rx`|Xh?UR`qc`+>jAj_U;h>+P8Afl|;df{T^acc?&oF)iT0k=3H*9Pi%`kdH zxA#c~^oG!QnqlmQUWd~R*bRtcPZ+&nH?JZY&>Ond(hOraZ2n-HVeE!=d_*&h-GKIx z4A>3bmeUL)H!PW^8Afi{%Nm+t!mll36UfZhNmlML7mU=YnPa>Kgj(F`LutUpLIAUB3|nqlk))SG4)yWwCC z&pKn10@-X7mj7bGZ$750lT^Q2!#s8Bi)oMq|MEm1I;7e$+DxTPUPwWcGI=$w;h0-Jz#fvH%RKD|pXuN%~R- zP|hH|oJao9)5}a-A~X!ZnM^NXfDRz(#SF+BNO}=( z>d?~*SzkCQFJuAb5P&}!3*Y}+kV}43;NHM3fpz%yUlf=Z zI5Ti!V0_?6p8c;1-~Il83g7=%`09Vl>an(3Y3oVr0qYLy25Yr-DLnuGsq&w48@~Aa zTBXSSr}%$XI+6SDL;ss_{BQQh{g3+Z!Pov;{|f&?sPJdN>p#{%!XNSX^M{d5-Y^fC z-r<(Zqq2T@%K|d*NQQ-eWh=)?;PJO-!$KGzR`{{k2(l` zpW^)mbpSuc-1b+z&m;feQ_9EcElLU*<}QO%Vj%qJ3j7czzCE8+hbccJ+uUMxq*|rM zl^*p`Da98X4Lgy2w8jhYE2kufJ=kNyTm2fFl_{)m1z z<^!zJFU8ov9OMC<3@1plK18qAE06`yr_0*U$eZvnydbPH0{4Sxk8Ag7w<8PSRoXJ` z0&Ncal6OX^mM)7v|(XTb~6Gsc-dbPLtGAFoNUfe8(M^}@ZnpcP@oz#4( zv#Qlf^KyZvHZK#+TAyYyg1dT5^ChBrLi5FLbEf$s0rk6@mx%Vp=EWkYKGVF&ZNIX4 zp=kFvUno#r^97>0==$dKMR0ucdG0bRniq&*ZS%Qq&l{TOi=f(kjtB;3HMa{$k7}ML zAkmxWimuJga~yQV)DdEU{fY@Agc^87$p~i-nS6zD@CY%&e#L+h&h#w#3Uh?e2Ck5H zj1Y>!6-BE?h_U@E)Dc3oy+WBY;uW!-<3{XocH;{9`Vl=2Tq7lqz8M3G8~)8<@jw6h z|H&`loVle_Cd_wE7qT^l#68oYjtPm8Yb2TqUGH|#LP8)x0;`a)8X!wm=qAxYNr%K8 z(xJ=^-Q`B-gv4#xp#(!>cpXWzLSjT5sjot}h`w@9=t>tBLPBgqx~b4AH~M%;$fq6h zJs~mv-XSjzJtR6ve}=?ZeTVd8=n^;jQfRFUQz0P~BimF+ctDWuDs;8m;f|0P_(#UB zknm0*GgfG|+o2;QqyyyD3JD3PV`b=Z=O^u09ug8x$I_6Ho;ntWgdEkeAat|nH!UQF z`a4bvJtksPLKh1(DI^B{JL*D0=<28r#YAgGNGPBkC86~qRvZ#?LPt^PUJ(m~9ude2 z3Gu7LAG%S*e4(cVQbU&uq=fEs&^2{FVH>!n*!RAO89t%u>?(Gpu1QoNh&2SYr)wp=vbc6%{eXYIat$)_Sl(T$F3A2O0#|uhkYdi0gi>vaR7l(O2$lSRkPEdxK!}wbIQE zf~40<>ly@euRWl(xjv_@%ZxLI_N-)Io>>Kf^f2BDs=S<)cX&NbBy;?iCdY7iITnvw>gd#(vIT<;v< z8mmFvQft%(p`NZ$8m@D;aup=TQ=N`iHJZ}}sxwa$2x+JUQq5DGMXpr6zVDsjl_kC( z1@ilTaGF=qkLrcvW|h9NUI?kHwAy+hudY(l^+I%AC4XDL*IB`;v+DmT&{6e5F=pdGI@GrmJ_^8jhy8K zS9o8q6z61xcUPq#))n5@D#aDB!ux8aAhi|Vot5HLuJFE6DNfG{?~Y1AYAd`wl|p4) z;oV*-(R+$fM*Dd=^DQhB$tLzn8;_(!;K zoxepub)SEv3m5u_yYM{!5dzB7{erG8m23QhPcB{R7c%Lk)&8TLjb2*p7v76YRez(i zH0m{nJT7c5`__dc%KmiW@Und_JfiF~7dDlB?ZU>gFI;$d*(WX>R`!j6`slJh1k@5C z49F??v`2O4kmSNp+4lk}^UK7Aj2h7)O+@7%%D!~rBW3?|;or)Ba$&IS7Z++};_^nZ z=&}PMDs3$L&iNIVFE0~U_41`h?v3T+%f$7)d`w6ct#xI; z2~-`T0#$?zflA8u3sfAE1u6?~8Ts`rvpiG{ zNY>ZfPydSb9KPkBut#s1E|y0 z;s4E8KpnFG7x{JbH}f0w6XgEiVQw{3=Hr;}f2-MHUXGD~bIh4=<4;g0L-RjOJ;tmz zZL`GmV7C8vzR!HSk@^1x%=LfD_keGM?{852FYzt#wfauMH~%Q#;l6>sDqqm&^GV(x zz5m24|JUKbFL?isjQ@Ax>wUF%IVvB{M!x?^-lH+Yf3Ua4TjsS;_wX0vE8`>R{M(H! zM#9)++-uxotb@wG$e3rGX`E<`Gn$PkGW?etz2Ln6-Lns~)aR%nHQ-@N|7*zdUw{Mu zQB*y=*|XNO!n5$d==^MUzlH4nztMekFMSto`{!wfJ_(ioc6uFMMK4BX|Fh^cX#6AT zFggHv{d-d{`IG!WzQC;hUC8s-MdGMByph~Wt|hCG)Bjw|>7OR_efITUN-WIf_)XuZ z??t}C*YuZ=&How9=)Y6H0qXuT{d{EdKTSVDKUyD-xg7oUuwJ4Y+Mn8w+P}09k@>La zFKvGVzTU6YF3}cft=cJ=%Rfpx9Qpd+QD0G?gOdM*dcV3sy`In9zfdhx1DL1(yYj8F zS9w?2iTsQiCk6?7`Im}M#qkG-WH&9T|CaAbaeRO=o3VTUR_5Y@7#NOaacSBbt`=3A;Mtsj`;hN1NR$kL3P)W^Bfr@K(2^6RiJg-?b+eOS@BZfpY zwPvfc)2g*OA`9q!tU)|&Rim^)JZ)8aOhi1zRsGn8-$h@2RKw2#YX52w4|G*S_G}SV zziim=!dSy^F5DOqk5YAI1UD!vzo$-V5D!bWw&70^tB8n4q#AAzk8m~E@P}wEiHHZS zS{%_tOl=Tv0*Wy;G~d}C(k6$*XNXc4I>+g$sG)YJSvGI47w23yZ>xX7jow;c5K#KQ zezOac_0KvhkSEvY1e#c%7pSRzi$HbtTLr49e^H=teO927`sW2w>${v)W5RKHoeN(r z54vz?xp=L{{NnN|H@c(Ta$!&TU>9yLFL7aaxp?SeN^`k*=wg0xdC2YXQhC6IFP8Up z;S1%(E_}Yc)`icN*SK(Nxp*_cOzd*;*v6dZ^04TjoL4SxHq2ozFB4Je&+=*)ZYi&D zVWM2TFJS(1`9W@ULwS+&<47yZ2MW}$yk4NX@`DAcC?6tFNx3ahQF*06f${+YS>=5M z@|TwjWR{l-i$nOo0?@hO97kvuv*mXW7o@13UvW z!-6XhcxQz7xE;>4o$CZ0&Imj2%glukPP!dV55MEW)51@<@YJw#N1*R1;iui`wD2n~ zoEqNY!jr=ep`-6f;cwjNiMDewBRa))E)KxSwsXP(Cxv&peNPB~=)&XeBV2f#ZMbk^ zIP1b=!~0w~!FDcYtZaOEyBi%BcBmTBv0;bd0gnkgya0H#?Yx-+jtRfzE;c&+i3>;B z4%MN<$gum=^d1#tg#&$ zL*Kq(=cx`@9d=#@0IR}(cl%b_eOy=(cE;z?!45m$r+|7mBRUvA+0Fxo8T)MK^F%t} z35T60GjrwH4q-8qq1`AJBTt3Da^dRm78g#lN4xNlu=B)cwx6)W%YdqVwCJF}VGCk7 zpx+bT>PGLjO&4BkM_hQM?XVy7oQ0j|C@ed_gnt$tw0FW!y6~~E^GHR9MPc`yO`9D4 z!0j*~{I&~g!{575vmJ_tC2zm2i>UgGJ=BG-**+Jpv7KiF`Yy4L5mDts+wa0>!hg8% z4%>Nnz(Thw{FEEL$gXtZqVR7ntO@UTp=1vdP~IPQ-m~yF`HJ1-MmN~~@V0F5H)e<8 z4%CL7@gulQ?U5o@Z6762g*{H7Q20%Of??-*3InC>&_2wBw(|l2-=yt49&l;c&L{{D zIJ{ddtJuyXL)x!4InNvE4}FU@&e_2~^v#y|W&Y5+tnqHNU>)niyfwjvIct=F_|iO4 zK>01}co*)n#C7urCSQvC@(;Pj8YwzRDQmI|@32mAcJYsu)+B+ZSSOt;NZ=mm|JSg5|DyiiWX!>D z4h#v@2Py+W?g04B`c~Bc+h%RCk{CC*-`W5Vz#3}>T>mWZ-!$uZYm7DAidg+D+d9bd zTC)Ea)RW(fk%QO&%KG;ps{h>t7r=jb{wJaK--y3F|9-z}{)(^vPtA8xSN=t_!1MiW zG;cGnGp{t4n&+Fd&FQA&`5%UCe>LX8W--41|HO>^uY8}N_TOv1mr?tV&B*_+wg0C1 zj`tny8;-2@{d~5sH^u=J@2}o{f6c|;>`izdLuUKiyw`cJ!dQUg`)B$7MthsQ4c^D!5n)%%-3Mv}v!?f+E=K>uF<0{Z@&`gVP*o2QfZyBNYA>`XaqupQ%sP zC!(T3liq-A4{U_Mt4q-Mzt%q0-ql{!UeXF$OnVg75pLxf|CVVNYV)+2+BEG1?HH{Y zIS>YD)u^mcqcncjt@BXX-rx>(MUR^?^Ai{%_? zT}ZlE&XHE7x88-EBXa93y^9&9S}oGWGLE#WC8UdG9BGvwC0)!i)#?RcmZ?^6C+UJ^ z3Vlu`UCcApN(AQR=SyVv6LgN-h1^fxTfUR5b0v3 zsaDjK>tY#4S`F+T%Q(_1y`^_C+f*x7$1;wzs&h#f^G&tFchm*nl-xR*bg_&ht=@V1H8G22wD{4nWaDMwnp_meK> zn`)&q^e*O`YMny5*g0uMsi-dIn`)K6Azko#%F@mX(gmw0KsD`RPETnk%%@#&dLncZ z>0(AtX=i|R!RQGviFPrcr?gX9YzYUc_Orw z7MRNuyLvJyFqfya(EoMW?En_PoUdrfw??^?w|#@JQ=!+ z7GU#aXgw`3pC`};T3|j;pgU=S`8=lpQkcaX5n?V+?B)lg0GB8FPo@QC@cMhnd33G@vqaFb_G1ubxsXOCJ<3ov;qa*y|VQh>`-mU|Rh;3m%=qLBhjo(PrD z0z96q*R`YolP5xrw7@-{J#gd};PFJrPYT@P3CnbWTReNb*U3TfV~ro>DUbXod{tw%-$*OlHMW(*gIwUHmnKmP5^@xVD1FKD&g$}z$xX{&fC-^ zDR67&ZGKvSwNpW-5GlahiC%T20Ba|}Xj*`?6K$ABQ5eiaDk%)&;5b@1l()f}S{TR? ztmB0Nyb(ur2nX$?P|v{LB3kIrI_*W?rb0g+!e;6?z-3*_+fb>rP{TvmUSAGyeAT?o zdkrmAIcvaGRmmGClR^apFXNDH4sfJl4#to|IS1Iv!5rXVLTve$*};_Y5Duo4fi$kR zKCCSb4|^fVk@rek=*d(2IirEfn$I`Xi(e;2~V4mb0qW zwBYARx||kFXQen@KHd#1;&mE3Xu;q}!)47FOis_F1uz(POur3JQ69pT4hBPr;HCnF z0eSJmGY*r}I9hNR04^0qVRBl2kro(*$!XZY^NhmKe+|hq3X{_&%`*y<)5a{42ZbSI z(L5N8^;${upfH9mqj_)`5QrzwNK8&+`c57s#?T^~XDo((SCKqpF*!Ys<{690X}XN$ z8H>s3@iY$>LrDH7%`+N9|Ft9!8bf1*<{67&1AAzmu^1XJCwZ_K8kf^NBQZJcnNRbK z#IO!*osk%RnAs!`5<@qYvcPrg=tTK;<+K3S;OBk_U%j(J3^~C`{ghgob%WVW?<}7^5(Gi(WzU zoWi!OBzaJnEN?l9zqS}JlRWqfA)H=LUt6>lBoF#R2&b2` z*B0dK%X9YHGM?nYUTBMuJSVR$D$R59+Tz7;&&g|x_fnc4&G*5JQwsJ%|0yKT$!ooj zi&4b1eV`q}{Sms!g2am~erk3V8jb*$S z(LATIjJkv5IgMo|(>!Pl3o83*9y|u*y^!QNk)4g3o)Z~zA&@*Lva=PE2a(D0**JyZ zF#zlrXbiw2dCp>I>Z;p=@;+$G|wnZ z`UNEk^NhlzUvL&cVXW~2n&%wW>BT(`4wL21YMSE|)(KM1aSH3id{$0joyI{V$0@9H zCCzaP>-5f{IZk1n-uX1gDXh~wm*hZUSlM8b1A_rz)+r~jPRu6Cfxs{g7qf|SU@$Zm z(;Ns4A-rtlz+ecKkQ@jM0CQx)Uug5T(;O$TPBzn%6IdsT6y`XAbxtQa5E%MndMD?v zPVWMe1Aifed6S?otO64Za-6?9N7EeVuTC}{6a2-t{UptSz}S}BXs*qPy-#zT!aBWY z(;TO;PE0t+fx@ufVKm1XtkbiK<~W0Ode0#_&S0J6X^t~kr}ik#aR%!I@#Z*#bxJpo z9A~gj%rORoVWXbeGzSV}n?IN4z+phz0FncVVN)TR1BbEDw=@S51Hwx|jz1&70$zzWQiXb;Q`Obtv7j0!Xc2EpMF z3Iqb0^()*JA6su@ro^)tC3(!+Xx$2T#VYInV(-nPqo}sN|E}rm?y9bCI#EnQ$k0Lv zomPU0hze0=P(VP$2?YndikcWuK}1pGEJGL_KoJGS8PQ0v#VlANDylbk(VEb??2;K34>q5cNOPdw$?t)JGWq-zye+ zU-qU^n~$#vxCvSQHzCh|gLfOeC-2#>+By3L`)SOexECuXEVQphy@U(x>GnyeV|a{R z|4-EtzD6CxxBM^q6Udu*+`ry`7uHF*5vwvb!*6oBe}aFce~|w$e>Jiu4)B|pEARom zMmb32X1zr3CDsyHLATO1bU9swjDu7DslK00n(!-p%-&@?SX#Z0J39E2Rl#$a5lSuO~ab9$4kG%!K_%_qL+9o zg;(=`{73lClqU6)TE)emYneo?yw>rYqQmd~esHaIwT>fBY0~xDO4s^yzwcdKRO>k6 z(BYhZj*A(1daW)y=%f2N;R&TFa93?NX${<28*uTCS{Vgw3fx{>?OIp$bD|~KY-O$E zR|c-Ab$rFZ<+YB-TWMl<^>ciPN|Ujpwm|N|IJ!10e0Itu!-L}_RRxce)H^svQaE^` zqyvMKB-z2Sl6=95lCKG>v21Q+n~NMzy3)uV zDRKfbz;#8AOH*ky{w#7LSHO3QK9+kh62(reLuod*RmiK;Y;LV6aym4d?G;W43LUmo zSg!S%3VErU&9(|B0-`iiwBkV7foduow<@d$RyZ*frP+A2!jv78uJTjY4VeQ_)M>$}40Hwz;sPr?eGR$argWw~9(>3s&@&6sQPE zvMXfNw%K2CfV3GEj_+7$)+%J2zgewt0!_*##^=G&&beMdGbh(Lu*UuUw** z1do>;JYNM*2yRr1|Hr5AKMnu?y#me{X)IVd<~4~}!}K<+4F}ufeWmbee8J0c6oU4dP!A-@0S!9e4n%N!eW|e6KWi8!~vU zW4tUp=m|;MpvRr&%eq}N=rI=;40_bTCiVVWC-8_D#G+a!Pzt=L)`{r>|I*Ki-T?!( zQlFZXFZ(%hI;BZ@y;dqwlai_}mitv6u9fQ2q&!sXguT&sO+P0{3GCJHPq%M*zaL#R zYI{iZ?5pkV;_h12#a;cJfRxhY*;ebsVu9;wrA9V+R@O>=YVs_smCt+=<}OHaXj)J! zQ$L!f*2?6LrpdJt=Xy0w>i4ariT!?(bX2VrrKbM1GJChFs#Yd^G?mx(ll^-3`%Y3x zzh5O4)=C*`DyXfJwr;gj7Mp^#QuvwzwN4hA(&Vo#k^QV%nLyH{^>ad@N~8CuBKhKN z^!`{Jb*@UI_lKgdUHraikBi?G$!pc<{kB+M!A9>lMe-grdcQ8Nar=H%B)=UrdcQ1k zk^ykEFN)Ns$wE#vVQ{mT!(m??*+u z-3}iX$(!Hk-BToQexrAHu^fPn-d#oeKk)~}@}1V`eZR=^?gNBpzn*4{C&4e()#9|UC%Whv0e0Rx8-Tf z^=z^KDm!?V+ERq(4zT4}%&oHJKIevQxzD-XZJAa!*S24Bjx$%YGtO@27`NDR9L>=d z*nOo{yV^d~#jEUE7bn`)5ut7tK<6y54|k3==VV)EWX+jiA0}-B zZ28d6sj}t0nA6>s_iRqkmiKHg~TTb{{xm2^-q)oM+bvB;uyRbwK-r2sHCGts_tv2+KkKkuc8)pAcsC#)jakM!0r@=4 zGTsiz=V6xTg@AmjXL+6od?YvX+#Yz##pQtyU0fXaz{Q1ukDXJPwIJ}hq{)HLBuxsu zA!%S>kEE)=`;x+eFC`TOK9Lj*d@3mraFQpKS$1HTv{`{KBx!+nol|HwpR15>m1gtV z3c~k|Q~tmB&cWmVGu8Ka{NJhn_a^G_XM)e;*V&`N`-7{4%S8^rJY?@*fZw*KAb)>! z@YvuH$ltFD_6!~n^dp1+?}6`-2k=4Qjlhed7Qm*!gQ6b)Lj1P>E^)-2#La0QcEn?_U8hZnw+2{7dbd?5pfc@q6|x`(%5(J={L}A8G>p>F@G? zDJt{7?9ce0M=rp_`|JPB^*8xv{6j84RIL0L!peVtpfbRh)*kCEYdco{+lJWy55T9f zOw<6l+`7m*8}kAFD-)onb%4kO_!%qQe`3C8zKS^kF>?#nxWC`L(`?;e0dN{txgRSt z0s3H_`|g+-z_8N&Pa+rKU9A0=hhJlh?{TblzeZ#OT<5z&to}F6Hw82Mhx-Ph4q()G zu&;-&&}aHo%+#!vnOFmm=LDSNJ=HtGI}#q2dQp@A zAUR9md-{~#$1nFhb%20ql^#+?7O{+#}l{*b;_U!^b7Tl9H+*1uSJ zfUk;hxE>YrNxJ=0O~4mX6L6chNvue*Lc3MFR-2<;tevZ!hHQY5+F-3t>x)$-x@&%T zEPqkIRXlmKCE(G8N!iU3!lj#9Knb{X zVbT_{gz)L6CbI-u zg=ry6z^e;WAxj9SZmN;u!l|3`HLZbfG4yP_U1t<=mF5l^HiVLT13eNtxaO$Sa zTPQA^x+$z$7l%_9{k*#<4zDf<3suG8*2PXV7Kc|CFpA=E>hitqVR3kMVVcC^!l|1J zQyflRRmmxjQ(Sm;b8s-l;nh`?oXX;G>H-Q`T=;ZzRTPI$7v0UB6cQ zqquPD=HUH|3#V?bJB!1qi#_yYarkroL8qVTy=mKmO z=l)zzs*1(o&jk#lICtlwcW)Nw?pzQ5d~oLihO#)kxqt>1hcg#2n8k%Jw|ki4!k63K ze1pZ|%T<)_6IdLsTmU|u@Z@&yMseZE?G8tHTzGQ3Ya=KwJh|O*=i}yo7OxeJxMuwX%x3XJ1>i~@;_M4!JnGO&iq|;wB*i0w zl$R*p*P(4JUM)7o1?nSA+L;uuayHn-;=M)VM2h!vOkET|SdhAv;$cC?`z&6`yIt+0 zI8;nkFfo_nLdGz&m&GAtXjCaKR1DK^DGn9m-Cm=(kTJ~frMQqWOz)*QWQ@07%Hq&5 zY-&?n$QWk%QXDddMr0erp<`&oRe+2E@Zp7uU5&_A94dxh`b-vwjG=K1i$lc#y(tb6 z3Db~nAEi_^m^Nj*5c9H1&R~EaF1J-Pe&E%jr8nFv_m(eVCzUY!d#_la|0@;#m?e@?3dVd4ra=TP2*iO7CVz05Q&eS!9ne2 z#HR9=?ndl%{&%JkJB|PC$zrF9O;IfP6b{JeiV1ldUrsT|ld6o@!Yl@TQk3z%SPb$6 z2vba`(|D+M4C=&tJw-7gPvf!FXAJTLo7qY+=o1JlpT!_h*t8Fe34I!`QcUR6cr!*Z zp-X*|k^#e_PIFQJ%Fr}3)a&?lG{P)x`ZeBvx7XB{Z9*&IQVDTt_Olqo346mGgEj%qVlg32&A4@tCcdv{SPa^PHiKf2 zCVpb;C?>S2S^a@xLYtbAju3-3@eQ_6Oo$T#2ow|IgrEV%yw0{yQjDB_&!T{~*fDOR z;WR$YVmddC#3k0aX(S)Bsvz@87E?sybQbdnD5Q=BPTNz|akU`rR@QNqXtb$gzSFpw zI<9o+Y3i6K2v2v%6{6dG>X<7``Wr?E*Q*&wu;h9*14~qQ@G@{S)CQx23)YM<>wsXX zGt5n_gDchytZ>-D%fKO7pxg3@;4z^>I@X!>)?tt1K;vGxMIyverFwAv1TY!SqE3F8RiqLgDchyZJ^P? z6>COM*1;8PhWV(`0mVX+0(DI1A88VlzhfHzl#>>)jxz-yG4u=pDs@a1o%k7^E=)+& zJxu_Pb*g|W)^UmeB=ZW{nxs*OkgZAlgoJEO!p9J@HEEL3aUza?4ldv%oX|NMU?K;8 z9uqhycN!fh@GiKL3^dq=|{xmv$A z7#)Lo%h^W9ApW<}=s24HwOPkeV&5Mc9Y=CQmC-Sf|DDG=jt~tyOl^|VQ@vl&TC}-;3CW_m=nAxcot&i$HSX&xHd8v!FmD*Xz8FY@CVit_#&`7@Fu(oi9oxY zRnQu^Auun{v_Dcl5VZ)x@FN5Qy8U;o?f0)@;@8=8?MC}ttRZj$duzdimp{eShx{B7_btVLD9Tl`mJWxwQaIpqt;Y{%(DXSp@IE zbC9&!t;aBj;C5@Fb**(dY6niYPO^@(jkh*g0)0)AOL@MH5`bBCGXwF9wgz+L7N z^Lnw8-wad|m}rhN2b*HLQuQtGOz(8>6m5`qEOI4Y z@(xw^c?WtA_4bnM2K=TzPCw9R>K=Muy`Nq+rV|RR)03#TzgXKw54dajX?OnbtNE!3 zcRfG#OZKI<-tin5VdEgfkGg*QP!(Xe{)XPEcOc{cA^jeGxqgejK)+1CP(KU#{^Rsv z$S&!p_eNF$&&&8l`$qd1H3D{M*CStJo_2|Lo_3fvReHIMA3dgnjzesv;%&Ia@sh2a z(r~k+@`k0dx!Z<@R%r}3ERp1ESS)El!y>oi!wn0iv0uY&lGKJ<9a?;7eWj$Tdg*gr zTv}f)ZH4vHH@ir)<&4*rrK6@hyI!o-jXc+*?eG}VYq`+aQ*xKnw$RvBvc$#rOD=bD zX33orwXaI%JGfFkbl41u+J+%%iJ=}tQWBN?kfhsp(2#_Ki|N%NPr;qnDzD&w{`?75U*>RW2AyiN=-SLZq^)iIAI8ZO0^^5I#>A+v?ub1xq#a6vDaZOq5t3O8WMXQ&t z{6)siwv6a3(xbKvB`s2)vU@nkUZmV*%Z!Fao*hHwIA3)6Q28`1nr_R0;G!wE4BIW5 zWFP1pXi=3dLw<|G_QBHD-R>@_(3U~MML}CWH;V#xv269*GN`x6vct~VEc8t;xzELE zC7WG5v*alk&nUUo#i=FElul)#@AQ(ZUF&HjGP=9acWTMa(#lRMxz0K4Dy#AYNqXfd zNm}JGPREtq9%;DJ#fKVZySTC83Kt)2xXi@|8s8qStzT;Fi5 zixV2ok*GH|$Y*_}w!LAdv}(^c?0>+oYPiw0nhnho)!!Tb;^Ml7c`jbn&?HgW(9r1O znud#AT+-lbh;mHBrPAuz)o_7x8CK42xJuI54f1lWoY-)_w2f`JNYe0zn=i*64GM2YuUQxz5gB6pC zWI$`h*rI2pZD3JO(tx6*q^cqrFI>^PC?;*aieyA^MY!liX)7;!S(2|v#xz%GMbAr{ zTGZ*B%yQqirLVjAO{ok;E%$w0Dr4BoeP5NzSk-dxC#5o&wcLAZ>Bn+2_DHD=sxH^R zDSbm)waZIoIBdE4NvRByEmxl|{Zw{P?kkl+vgJyz(pRMw)g)wWZMkP#sf>XwM+pfT zi(2lvwRETRA(l@nl^=0=pVAMdEnF(YT+6$c%3$sCZlyA~wLDNN176Ghr7}deTq}LW zIrcK+CR@HNml-$Ox@*1Oma*$)#yDG%R=vhnC8`y+=37!fmY(4pxYa5Q%V2z~RS-VdwT3G9x!5f% zKTxX`tdwa2tyZ8?W&yN96}@g>e^`FvR?7s_Y8OOoUeDrAiqNZdG0gSI9jm+bVx?@!_!H;@WU8 z7kgFyU83jDaG8r;m7lq|tMV%s-wex9(&~A>@^jbP9+qMGR?pLwU%1xI;chNIS^0;H z8!Ee8To)!6SBK?mwAFK0LiD6KE|A%eQrFx3GL$w+6#uxtBm#J^`)%a8TN;a34up<MmN`%0QzKSS{S|3COq@SWg}U{*x`9|^7t-i}}D zEx{{-m!NXr)ZipU{*MU`2u6bkBd8nrac*1?8n*z?5G{Ki|rt)|NZL!9xDNS;C~&z+2bOQeS?3Ee>r}&^R)mj_MhuN z4Vmnt{Db}VSPdZTFUBu-LIpr4>i_n?i2DC?<^Ni%%IawqT0YbP{G0i;$$!7UVrEeZ z@M-fAG5>#wnEyWu>;Cbm|MBJ!^9b`0^I%j1>?UIVKl;A#?H23)C4F0cPl$;BGT+Up z2za?%_wNMX2>gz(^Y!&r$oc=jBHHiF|L^q1z3sA^|1$5*s0Vnd_d@Sk-c!8ey(7Fw zd;5F)czb#e@S0u^?W3>hBYKBk#_a!R=}CH!?xy8*3oW3_=t7yHKb($|bN>&(+<)aC za`dy9^79mX2$BAk@bFxRx_~^=Kb4)x#;{}9fcib79Pog{g0Gj@b{+<4*{yt_(a z&sIuZB1l=!QcZA0db;{ks?jk$K&gwJZo66PBGEXXQWpvnV&|!uPPZMDxq15?; zv?faZMUZ+trOtEu;XG#u@+_s)xsGicOPwQjtWoN0r*Q+N&T{A;N^w6cK6VdE!Osf9 zjJgzew0gQmQ3{S$ekGov6!)}(zM>R7t$YJ~2)J7L22WE8zE)1pQwq*jPF<9Ow-rP< z1b4S$i&{#--3r2#%@p^ydb%dD6v9M`XMH)Pc$CPq-a3#{6CJ{JT1Y7#CGxD-ala5H0%4)96b}=5))%rA4-Igyno(>R%8MUdyoz^0j zsuzdQSc(UVJnP4?6aqy6T%i7<6Q=g35GR6ZBBgkk2-jd5OC2gq4V2Gc9jl?ziJN|ias`IDu33KQ;Nsbjj9Qav16 zO{o$=>iLu^c8Dldln4{GTIesrMEK%P zDG?^Z7kf&HFi|T~DN-U#)H;AtB23hZNw6t|iTJg`XBKgyR<1^>b5I|p6hWRhDdll! zB_+AKVT%AIxw_#7JxNKfZul^tP?D<~!hg?ElB*l;$4ivt>IUjXNv>|7Z7d0O!>7 zQ(8w+l4~3GtFt7u4JI4_(#E&k#gfoAm?lz^OB+m2Q<6&?=y^(VX#;h!B%}@9CQ*_r z8;-t}l3dvo{KR2ND4U|3SI&}L*p&0aED2!)_$bMBO*s$iASIz|FsYQ}vZi1~b4o(i zKo(Jw>zabK&sh?>hHf?`xvZhvH7p5PgQnXh9x0s z09;Ne8sBG>l8`js%S%bFX&@gL5X)xjQLegMT-lHVfG&HWGB-b?1yOiXbhTWb@ zNv>&1F=51UO;d_}V=2isO(|xNP?BpJ_R@}pPli(xlBRk-FcNy0sutFkQc|c|SUZH0Le;|BYDz-Y_+jy| zLDsN4JZw-kes+InNyr*ZJy}wy+NN?!Le*4d6C#~S$eN;T!f8O&02rANH2{V$G!1YP zOG45B7E206+ccSyLeVxU_p>Av4Q)Y63PIbXFQB9lv`yM@mQ+OJ1eS!Jp;tdj2szti ze!~)wGniCL2sPVe{=^bcGnl%u1jG!0q(o>Lppglz@`q10ppi0VzWx5+a3?ZBmv{LMYiL^D9aSCEKJT1r$n#4NPnRDZ>WH z?SztX(~p!8Qntz5M+rz7w|z?qp=F!QFDN0jY?JvjC4`o3GQXn)w2b%roFyP;*quQM zp=F!!G$o*AXvF&<0WkyVm6U**aoc^AI7^T=ktKwjZ91MMAZOS|Z|sA>?e6`86dVXT0@GmJoWjsV60b zo^8^PW(nvSjx@_P1ZMft@$X3xTmVl7Kq_YHc41hZc8B>*2=BF$H9fQfw62k=G zz6cpxrCddcA)=Rh7$t;`t-`A=A#@D&BN9T#R%rt%A#@Cd`6(fE3{~}60y?HB^Kh{s zV*s2gR1DCEB_Lt|l_j8IfZ>#YgsI9r_Bu;I!(f`u5<m(x15XZHV+yg}CxasC!n z>33?c=nITPL}q$WAAw~vm+Qak-^<^ux9FXETyMvU^$+NGqX3(NN&(-ZK0eQP|ErNO zwi-_u8;sS+cfSd1+|4#FFs2zN8OIw#j3azgQLkXMuK^kT5&XjM?(-v`|7Wb$_p$d~ z?+$Oq`Pccb?n)ce2HdkyOQUF1Dm{JtOVJ<40_t@4(73%p+X1J(V$pxyK)y@-tN zc6uBY|L>w!x{>CSlgU4sj-w$okoqARy(d=eGs(mDv9H*N>}|Fk-#4FSoA>{|zn0BG z-T!m2YTpTL1Us7bXMI>tR`^eO8FHNlUnk}&JmY)Rcc1SL-(ut+%=2C1J5Nobz$iS8 z7$(E8Q2Y0i4Eo5cD~dW?vyO7WwvKbavQBd#Xr1Ihz#8g6l{MOdur<|zLTj7@1=d6d z&a~m2{7VXtb~`v?l1iJ-Ybc5PWUI6erk+cwRAI_nqgd_;;~% zXAf$R;fVQQn_;2J!@7wR8ajOF9tR4C?snSrhmWmw_8dH*PJUkHaSI_Aeip_M3xO6v zmNi9eI-(~vIdC97<3J&8bfAD9cR-_s4yg2`-2PY#ljp>qjP-94vNjE#B z+(nN`T0-|ono2iGI*zW8)QgbAg7X{UNzs*(meZro$DK#(9GFTQ92i3@92icU9B81q z4h*9E9H^)J9jK!94)mgS2g0;P9AlKWf)FmlaYt#(+0T-eG0e;pwx#SlNv-S;NlQqT zw3z)VX%RWnF-lv=5X=zU-o}2DbSo*6Zef3O2=B5VB=utZ9P%tDO`P7Sp6m+;G}h&S zO3siSsn>W<7Trhc5wA0xM(TaNQ>3lhJJ})adGAS*OfRa%9bS^=8Z8MY&|A8D!B=LqcwYLoOmAxeScjL^QL zZIZsFyCr=?&62*R<&wUl>m_|j^Cf*jmrMGbE|K&ZZI*=P-6id%+a-NMcS`!0u9EZ- zJuK-%S|Vu=Jtb*3-6d%kT`K7VS}o~)YL)aJ-5_ZvJtXN}nkVTUx>wTM^n@f-B$V_f zHA;GeE|c^+&6e~UEt2#qt(Ei&-6&}X-682^S|e#YT_@=!+A8Tqx?0j-X@R6pS|uq@ z$bu2~BS#lY%F--J8G26AJ#?F-yXhK9tLa)vx6=cXR?;n!meVpx%V?#frPSi_Xk-4J zfc~fLKUd&CSK$A~6%dcqFkPdMC8^|ouTbc7Y4gx04rzbVhm!uFy^?;XPbK|E-$?qE zUYGQDdQ;Lbv`5mApK1sPf(JK+t!$0|DPk2Q;7aHD#!ZdC`3PAx4?`fux?Mb0LQq zrKWSKh8R6e=k^XUO3aP2U$Oa&q$1O~;6sdq%;%-8yXg##A;y8`v(k2e`Ie+Y(^2^$ zMuC}bJdV=tVa}i%rQOY(0Xs@t!+sH4 zjM7%KZzbKuoZn`nv^&|a(sl>?TGH+0k+h0A=Qm1Q$$m7|HOkTIGAI83VeoCt{!htu z`&I{AgEs`{1)GBB22Tx+4-P|3yF-HE;6a%4uLSlX^1mB1{yPI5fu{oxA@08%b^ouz zZ2!LmrUoVkMxyF}ZJ>9c1giz=_AiL|e`LRHZ?{wSHhYu(fW5|EX5VaIjamLPQMGQ0 zJ=Pv-4@8E3FS`V*{W1S<{vSlV|22OObNn~^A4If&DXP|8iE95d5bHm|Kiq$mzZNr87h^7N0j2B<$;HOSOI&@#7J#-!Q9xkMI9M ztwK?`Z@V{%$o^yA`@FY%7kaPtUao$I$o_QiN#5hs_r1qp7JpxFnYR$X{C`JY{-^XF zy+Rqp^*7N5{O(^u*Q35@Bb|e~d*f&*=I=+TlDZ?N?_pi+3$_d1s62ZC5&ez4+8(=! z&1cQ*Jj~pmfZzK^v3{uJUo0vf{sKS7C&o^78D?x`vC`jD|1z5YUu*ppVAlR`@Qdt4 z9seDATHgkr$a?)wRPk@o=js>hXCtS7EaLbBP{F@KKTtPOzyBxgbL|7|HB?%BUfYbh z`fIeMh~Zx;a{H$u%YU@i0545n%nd2jyz1}jEAZ(&t8P*sP}jKX@8qj&wTHY6%MjQ4 z|LU)kBhzmDIr=0QpBh!|9H4#PD49Wx`mJT~gYhzMD9Bp2Qlk2M*>Z`>HD&im^sFnp z)7inciDfG!9bblTr7Bik+g4SEZ}ozDm*HEupgml?hg#U> zGG`7Yo6A0weU0WDZiCl=au8PuAu4VUP+V73nWb{!>dfRjw}02 z(%3S5D-pIaW%wo_XmnYZq)}yfeF$6sGW@a@R8_7?DladR)V&O^6wz8(&LkC-Tatq1 zAxVL<-z53V{*dG=KR}XJhL@?>i&`FZK5#pGAQW?PL+E}N*N56%yg#(c#rr}}xwtMQ z6a3oQy`inHb!~whv+eAj&||Lk?$8Ps*Mwx|Wjk9Pl6SkE-4%M+?QmyEK7Q@&j?go% z_4WdpW7*DDh2(v0XDdT8A-0{Z2;JcJU0xucg?6?qBp>qAm|+F48JZr6HUNIpXC?AlPfYrUqxc5y-IJ{PYJeeB{@Avx;X+5FIZuJy{$ z`!3E4J?`Qaq3c|n8Q-nDD5hIYEvT<9hjv!SIfJ|9}<;<^H zUx82Bv=Dw#i9M@Weo1_H+7j$rCkOwQV0E1o`Ypjeb#iQP30Bp~r+G`Tcb&Z8Tl@ue z56C^R<#qD8-NL9&-m)#mjyn0?*RIe&#LH>)>4!wsCdxifrjuw?W#f>Q+nYUAIh9xb9I&<#mrqDy+Ll zQbFB1N!{x1lN7AOZ#Z#`K%M;7xW%rM-v+n%>+s82v|4o!N%GafJ1cBj9ek~V)Vli} zdZx-R$JR4pzkGo|)6*}%Ry?Em$wxUgD^SDWYBYB}247F0jwjD)s%)pGQRww`em4Eg7|8CU&yCt|Fcv``^p# zVHTJ^(}T7Dz7}i$?eJxN&-G3W{^u+I?K0lL%6|!?UF1EiF_s&*7^1?1ah7okvj6|fUr=cHuu8%{ z{cHUr{attrGFT_UUHNYjd3KSnmlEC1jf zU|EqHRXCQiA~&i~JA`FLZdBn=mPKxqq7-(gEK;LXrO^8)WkqgOp)#JbA~&iK9EsHEE#k0o8vPhBwm@Lb4 zq&#aZmPL*fAjq;vkpieJiwr3MV_BXcWqE>>XN}IXJV6SjYgv{jNO{(HS(YbA zdDi$@770>-5X1vw+ECe`AZsei21FxyweGZ+>vR-Ve48l+#0h3vl3BZ^z1WaIAT>u7$CIHu86@bB^2*8c- zV2{cmbq-|~2vWi~xo&I-GW~LzJOUhi}Y&nTC=Q}ikGJkPsGG)#aq{22s5a!Ng&UIQR zQsx}T_5{nEEekN9ovZ| zHZwxUc3R_E20DgrD$58N+u4m}gpBPhU>PA}J8?T9W9Wn1DO7ByVo(Muh9l~iP)5ku zP9$V!AYe*{t!7@V5_7+e^ z$k|>jO_hP1DW1KBl!2O|7ZfN1IfH2+WrUjTh45scX1wuvmJxEcw~8`C&h}bEDI?@; zuQiM^kTZ0%hEqo9*$~I%* z2`Sr*fd?t$osOXlv<&1~M;VA2r(S*$k}FO7N>=rZPq9aIYT#0 zqDc!q+l;jPw9vE76DbWnkGM1SMY^`+!OGC}DcunRv+L(KpI zN((Vti^*JRA!ciF2_R;CyTe&psM*>QN((hxs~<>dp=N6>Tt%T~YptVMnyZXk5?Gt(~QzXE0fm=5prg@;%AYT+TdQ3s@R*2AE7~s2SRnEtD2=)}?l* zG~|r$wT`8sXXqAWX(4A_7f@QrS(o_+r6FhNWn4jNp=Vu~_mLKQ)};-nH1rIu+60z{ zpkW^qC@u7?%ffgRde(&{4b#vwG~(Vt&H&vg4K>4tSei8rIpegNrJ-kN#Elhl)&-GB zL(b5skD|2Dvo7@~N<+{126s>zf(EimS(+=Fr>l_CP&Al)TUnY*nx_k=0ZD^NUCPqX zG??a5noAlkN0!o%G`@?zl;)a--QL8~T+=*V7#+|wz-&rG(s-{vl;)a-onZuUO~Y*0 zuPDtm4SRcy(p=Nf54Rhd#%(D|b5VosU`lgQgY9)nL)1X}Ei4UH!yzyLxu~IAC8Z&1 zoT@1eRpW%)4Os(WDnXj-8m>4#D%Ulf${CdAx`x&qrMa$Qi^C|*bq$ADVfvdq->E5& z`m*|oR;qjLde^Be6%?OtuA_6)M;f7ZT6^|oH-NBRi;JpFY2Zhe`4 zlRjV1V}%(s_?!pYAcJ>&%kKK;d<*#LzvkOr{@Fc7)e+(+g_hn_Q zka_X@@&^O;1HFGDSN>$*SliKC}gf}K>r~|29*I0^85XYwGXQS?6%%OU5MYT4lR!5Fbb@Ptb45G*3H&c$QbyG{|57I zYpONT8fhJE)mpu+5-W(R^D%eO#5=>c*tlL>;9rdl(-XYIy+@)Z-@$soT;(moFME~# zhNtK&+Cy)e3HmF=^rMVMYV)@muh7G^mR8U$S|7R^zwyu4-l8*T5{>eiGzd#D_xIK4 z&FXi)J24xe2X)hKHGe_DXM_Eneak*(?`SXj2C(hH;$Q$PHT>-TQ||?@&4>Ewfwxd! zF&=nEe|gEgw3S%V;a&S>WO{71AIHi7NBCM$-{B5> zk$s&#$KPaM#P6wnma&QdYFA(O9QqHx-v2KUy}SSSF2ZN#dBOHY9Uq_P1>exf*V5|G zM30l`TUFykT+nxXbhK;T5p|r4*zB2z&$VufIDrIM@2ojOTJ2+_LnWFiOv8|>-&w{pssH4#$4;y(T644r$-NUad`9)w?k*t@r-+3u!0W|3%>i-Blw zw?lo@33*|&9+Au44o5^CuQ9C6k&mU-|6Y`pV z%kBG1#PKC#zu!dy?q){Rz3R3SJ<#3k(#TORPK~%X*8ftCd+Pp{8ut_1YSfA0d0y~u zui1Y(2S)cF0!2sMqZLN|?tWj6xWmW}MZK=|`iSGX#?Ic2+~96@P}Fcc?1(OQ@rD|= zuRSp8eqy^e>cqq_CM%;JcMm;koX8XQdu!D3Mgwn&IAJ&7%@HRC4ZN{t|IzkDouC;8u$5zs4@UQQc%WvFYuym7cX55xy)FLxBOkif`)c-Ihjr0o zTKAx>f))9xQnMmu6FU{n*ER7l*lWtbyB2)Ws2zMi+-gK5%hp#B^~;O@9}UiCpGlL*IQa4vvtE zgK7?P@yMF}V`o6beY)+#Bf8t6uI3^a4~v}OV*i@IxY#f9qKk*tgk3zOW`>K=$hj`| zja=(ub&dO6*nJ`+U29d1J0|VkH6vVWugDcHmPZbDu`IG*`$}u}-Z?vS&s$o`u}k?HPcdL-?l7TG@@Sk(P&{zsyZyB$VH&vr2w zJxikh(MXYN9UFCroIN$_N~ZsbzD|G`BlYp96CMIS7VYJ3RuH}0-PtQO?%?u28F|aK zZi+_Tz7vm4u3@5N6-Izw2y23t!A=| zzt(iQ`1ihly7)_U|J!L_^gP$vRkMGT{1lnvT7RrL#l;_@?o;UhJ{oeZ-_>-w_)T>G zF#4)yzhr(9nd^4=yk?_|pVid6_-Ull#l4aHT>K<5)WwgZ16=$l>Pm(G!$?2Zx;wJU z#a)s8*WrUm*tNbNt#I+ZXq}5Yqr?0U{F^Uu{=Y@thrvE7y8oF!IQoYFkAJt>J2m^y z;q8d4JN~z7K5!5GX3d2zz7aXl#n+>&>~fDKzfZc>SoC-o{~G<-KI`8dI2ZlS?VFD7 zKSZi#|BE$Q^9{b@uKn*{S^s1C&lUJT;tKHi|GDZr|0@2!W`8|^|BC+~Dc1cf4HlsK z-#^#s-x_!#upzKIurzQJW&z9&%*2|1Qvzc}?Y~0;I|F`J> zP5Wm8oNSM?hoM$~tzBjJMD*V$qyHcJ-}Z0!r~S`iF2F;m*T2fY(0`r(AJ_Y9K;^%P zzrx=gzwb5c7wbFgQ|o=}H7jp*SZ&s$*8SF<))FxvV77IEHO-o0jkAVZM_K*%NB(kUx&H?m7?;W;r-p)g&O`Jp)$a$-n^{+_kj0q)CO4Sz21AJ zcb4}8%n>*REB%ee9DyUe{ZRj}96101FGGcZee?}|f-Hd7;3tzGI)V_t|ThF%ZKl50A0+$OBl$ZeiD;NxfWEAf z6(JMAYy4^KGrq>$0jCB+Qd9zb*jQ)WDOUZv#+Yj~8GkX(G^QA1jiJVoMn9vs(ZeV( zyvPUW(!WAJz&j!z;5mJ>z7gvJtk7@OuhB2Z9D;N7Q}q+zPdZxfuUG43`T@G7E85?* zueFb~ceIzawDzp_B<2y^tu5DX(H3ZziClnFwDH<-?I^8Qt3ob7q2?300K6u|JNq9h z>J)C)7Ih5kgqv0Iw9KPU;bm>XsxqCz%i4mXU!Cx>qR~&C!pYjAwNa;VvbG>$q7zP5 zG|r|@;bU#luBJ}-SXEC8+6fjh5LI9gk* zC#h37T3g`Q>lBXG7SC_gNkJgqJI_0%amtt|*~bi&ih_l#q})yn%lNS(sh z+G0JyI^k=@r|nIhaJBMoxMITB+TwYVb;8$*#{SePT&*ow*r-#uT3b-#s8hIFTTqFt z6RuWlin=A8!q?hjJxZPMwen*<#ya6_#ZENpgs+vGHc_W=wzhaSP^WOVwpfo)r*O8m zU_xCdoUQ1m;|{>v3PLHePT_8CK`F9M;cjiQo}o_RZf#M%WSwxg;t->#Q+QijtSzh) z-d32#vQ9W#0cF%Fe61~r*L1?y3KK2}T&?_!`m;{>T48FSPT^{8@jOnQ!qwWM?4eHK zYHcyzW}R@gqT3|u6rR=={YvT-p4JvcH#!wm$!RWUogOT+(rm3a@_aqA<}l0i^~jp7 z`;0u+Bg2|XMxHN6);yf$`Eq2|^iHCGvVzPeBIFqY@5`!p*{Se~!$)2#n&tzRY3^<0vAB=Ytg$>_+o##uVC4B?WX_y!KS_|a zmhzLG{z;ZUQFJSy{3K!W?4$fdXM+}&pCB4>dM60LH6AYj=Q&QmY?dD@Ai(m+3m8NB z&6%TnTZ);c`W*) z&O|m%9;^PSGqHS89?SkHGs8xH0RQVV@`v-krjf7be{rSjct>lskw1(Z`WX5C{4a)S zE&n^*$oJ!ayBYaI`QHMTKZI|9Mf37eZYVVJHTd3!b%u_+O0J?xF!*p*)Imc$o5Bc$CAj zx>TNrd6dI3IG{TKd?d&YAV7JpI?CY|I&sxe4#!zQbpWGSo{NrhIQA_>XCrngL}w#{ zxp@)b*=XHKd7(NRJzr5?M0hqLnwuB0v(dT(Z)xnqvk`+ssLn=f73HBis%N8uXFsfA| zXtY`G3IS7DZmxhT%FS_h`VQqTcQ#x`xyzglL6Gv(=W(m@#vs|;-NpH$s z;&fXrEGOhCfXfGYLYuXe<%B*3@JXOgiW0!p6Y>5O)kf*>{mJ{+67)&|H6Y~7@*C_{m;u(Jl z%0Zw&2p8v|P#|j-<%C2P8n?3?BnsJx__$Cg06wk|s6uNY%L#!hG$|(ps?fTSazdaA zt!pUP#5hj~*Rl;N}pgr*f5mrxFx1{=O!<{)ak^<2t9)i|LQvIaubF~@Zc z{nk;A>zY!iJW4sPYf7Qok8)hsu*CwFgRWsT44@ojjc@P*<+!e)@dCnf8O_fo`3JZ_;OWs z^^%%jcU4_=UC=c_SMUQ6HV`s09+1jbsNKQ#OJyr8=li9y6&hFZ{ZKYkV}IoPrL+|q zxAFZ_+6slMC8Q0dzVG;cXq#ww9^Vgf1L1RZzf`wE1kc_t)veGE$5g3qg~pw1KhzD^ zuJQeI= zAX5K-zjOa2a}cuYRhSX8(DWO>8{cCs{v+(%PZ+x}QeS60Wju!bdbb(Z8?%fHjLF7$ zticaP(D6Jk=RH}3+sIh=99Fo0X5YBuS?xdL#@~TG=T~VLYv*XE!jt_M{ToE^dsolu zud>nlHh8kH#Mt#dcA35aW7nDbbo~sBTu;>N^kWglzB_AVli(LWmGxx`T2x_Ec{HTWg=DeP=gg#5=*WhHXYph2y+Y?_jOV?q?T!r?9&dU)uJ=EMJq&jvf5FxMOa15iPep9QA;>~l;V<%c^E2#U_}cdg<}Wh7eZH5m zdtrrdiSJ%M-nW2{@ZG>C`>ya^=sVjtLG&6{=o{(T;v3={h@A{2$YS8f9L5FcS$81Y z;NOsaupRLY=XxIIpYrz=^hkG7*4eSLEI7oOR#%rPTZjC>7%J(AW+8U7JT|Fx98t7% z1W{q>XrfT*7$UoLEK#s@n4GnR``3ad+KlyhMI&v{dfd}UoB1CvY@`ijk6VohcOp*r zc(n0R=itYct&PqijrzEfZlujMk86#zU95F(O^I_%>$I9aM3ZW&h$hsSL}P0#qTw~i z5Dlpb5LMOC-tN|DO)s*Q)x?NOY6cKRYG`X-Yhg`q=L(m3sv5B+LtOT>9wk}Yizf|IW^9D zrP`_-s&SS)fIDlP1uWo(nxm+$vbd()#f3G++<6X<%`ZLKu`bn?k95|u)Yfj-4ttU6 zcDrua78hp^dx22Bf7oW%I%k;Ubb-UJ8TOo8;gey`dK#=(4?`Rs*)b}HUFDQ7({31c zrDJ@&Z0KU5u|w~ninE8tsiLy&L}#@~MF`;1p-y>gK~0n>R71U?)vl=|Td?M6BCDp1 z$gC+M(rOBvwwHP@HL2~Tp65(wB}!eYo?~W2%r|kxEs^-6M0WgHqF{U#krk(XoGnJ2 z9s*(>mo_`?Bc5@ovreTV>~ZNRvTF6EjV_jyjwkdCC_Rx7DYKd!TxyOOxrqK!EhVGq zu%-T@=F6yp+Q&>I?A)Y(PKf>w{Ld5kpC|Bt{RHUerL>u}KYr<4Gwb~7m(Ce^7tvTV zNfb46L}lh%M3Lr8i3-ivi3&`L7O>PZ^JMck&mhuF#~(pmqAw_+m&X!sc}dKCt@AuuX2sVN zofoG71TAO9X$yDDY4I1RbW;2|qKWZGh{ngCAsQK{FVmKq_;TmO*sV~OcCo%J>*Dcc z^wz@8gR)m$Yi-#97mq7@%f;%lcL}}S%Q^_PZDn1Ao)5}0gv!Td@3^?Utkb!!C+C;F zK{U54MKryPI{TAlWp9(Mr0hMSo@M)q3d*S4KN&1bkj*TkpUjh5*=uC;lpSI_v-c%Kx|7UTZ&TKWZw%E9sqAzDH#j! zIZI>$c*MHfxjt{_T#u(#7<9MUe=nen=kii1K z1ilS?ikN^01Bt+%z)OKmfp$a%d?;{NV1D4*z~zDIfwK@7@T9=tzyRz_C<$~An1~Gc z5C2#GPyFxtbJ+jC)4xT=&|m7m-+!lno_`KT&(r*;`^Wi*`Q!eWKZ@~lf#2u*4SNVa z^BwZN;Y%Vy;5Og0zINX--@}v}V5aYU>=PL88|iEG)%yDTdi#3%y7~A&vje<|ggg5% za^8&H0n23sfQ8r{a1Fm4`Tx%1r(m{b2tSS=%ggvtm@i@M7xpdtlzo6`fg%RLR<;pq z|E=r+wvgS#u4b39^Vpd(L%?7*0P`LttUEK92e}Wv)c=T?lbn7)->GlW*JIVcMZXvG zCO2Ts|3dw2eS$txZ`6;EInc@f_mZ|zTdB2T|NlbmCYjG+ns&N2P8 z|Nq~y|Nmp`|IhyGtzkXQ`T(Sqd|(s5Y0U!~`p@aUnW{B<(zw!VD`4hp`kUSOF$W zVSW`bho{8!DynZ~DNL`z6yzx}y9(3YJSApVamp`v60@s&+{BY&aup4q&y!+u6_4@`p2XxT zh&{`bVs;gWe#VlRUBv;MC&lC{&VPs}#pEigg?Lg-u7WOMNldPy+B}{VbE~+dRXi!? zR#A8aPl~x!oU0E{in&#k&gMxmw~FR|VM)xb;!uqz#ndWJiZh6*RXmYeo;=s7hUU(3 zO8>-@Qyls$PoC}6tLDkcPQ6y1Jj*Hlm?zJa@sXTeIB>x>OIZjrq;>od2;jcV7Mw0P0 zOE$~GAv`%+n$&JQIm)SaE=!J-g%f#lgj48c$&+AG*LYZRxP$_h944WVCx@bvy2ki` zB~O$lizk~L)B7xWf;2^WvQe6J{56J1@|N@DU`gtaEICM4gQ-E9#9uTn$#|C~>t!MS z7{@!NcX+bSp|^Rm)}i-!@;FKQ9XvVEp_^E8fIKw9lQqJ0*we_8F=0Af#*)<%a7$GZ za7&dE3R$wh1dAn)m4M4XMjmgx#ghG`30Kosn)vZ7DOSE4cn_8oE8h*q8!U;HZ%>2w zQ#~n`z8lb@So&@--egI!^xa@|v7}h~ZZHnAq*(fH@GW3TvGm=b_R*7K>AOK=NwM_Z zfJKC)5HodC0FPLRnYyWjCxw`)o3O_;Da1_O+mnxAyYR6c~S@&+B(3KLdeuj-Wfb0gbekwJRyV(l;Q~?WT>~CCxnop-UU1X zArqzWs1r(tCw3N3K*>aDDNhI~!}*_P2}l`ErtySOG8~ZP387@51WQ24P&kq&gplFN zA7Kdy8B7y+Lg*N3rCCDgn7U~qPY4}@DZ>)bF;(d(;Rz{Y9mal^fQ-RZ#uHF6kJ6!T zWC_R^Oa@Cp#Q^hJ0wM;O#1qgkQE3HFND=G6X5NGpu?_><38jd27zcPlidY9<&k_(Z z9BT6fGz^FGV_5 zC!~UP7`s^l3Wma2JRt?F!}tSFNCE4>yD%XIti$37DPSE&2TMo+>xlA%6tE7@Xr6$8 z;mWY-HUR}gVl9@Ip&KzC;W7OH2Lg@ZeEN z{p#?1%M;KqlzL9#2`OM5>RUVk0TZ@yEFlz3>A+<`!C*38RpuH?1L`>;G7ZM_d1AgTRA!4}BR-S-}iE6K~ z1XK*w#`1&^F_?Dpgb*>%4xSJq2HM3FLd0+=x`z-krDGyXK*UsaGI|p<%%e_*2T($a z*yJ*nkRmoYz!MNLlo>CxgjBJ~_!~pTVA7Yc1Y`^?6taX=vB?%oK*eC0!V?uvo7-6; zDoyx{l}nTIIZyPFgx_hRw`1GM5@oX5D4r;lCg15i(Mysy#}g$^wL?5nEXjC@B_i^G zc|0NIY%*4C6Oc1p8Q#JPsb`asvpNAi!xd>P0XYNoN7k6K?5l-vV>H$F?c>w(Z=96CKYYWe4dbsHpbI~C8VN_u~`C& zrmADkURzN-1Vz)P1ZIVg?f&QlVuyj~`B@Qq0EaQ+THovoSiHIw5A_dLHGSQq9I7 z9!4kB3^v5W=#+9c2JtXDrJRj{Q>T=(F^GrJ2{{vozQ8+$o`JsSozOE7LSA$VLBs96 z&pRP#!s&7i>y(PNpoDiq(O_bmd8d@L1^6>{N=aLQs0W==(iRvI-YF$*0bW?0kTf`A zp2j+*qAf6Zr&P2B+BDWF6>Y(M)(J&JrAfRKf`;}XfSph@m~7rD1#N)=KTimnxSn?2 zDHUyjv5t32MO&a=!#km9DD}WsSW4Og|Czi~O4%)Tz8vO4{7C?YI zrKl}Hyp&EUY76l4?1ZS{&_dP;O#{^PPAO>%v|m^!Bn>8XkKs;Z5AseaX$uUj)tG7@ z&tk>%w71ba5I)!uZ-L)J-nzfTJN+Y!O%uGux68N1x6bz@eADmp-HhCG#lAVdOMK_> z8NP`apAJTD`l#<{U&yEPpZHh&kNj<(=6m@|o)*tbo@YE?Ax7KV+7xX9a`X*?&-Pla zr}hN=xffw(V;4SF{)O zDHv^z&@>+|#M ztL%&Hv+eQrNr-7!ZTE5a$BVu3?#}q&`ruQDXNcYK!K=kS_~5C*QT$e|+_Tq{=8O5Y zydOV}pTMW_<7AA(V}iYcJ%VP?WBo|k4pNA4xYgQVJ*|bX|NTDec5AM6rFD@t#hQp2 zj=@$9_Bb4kYzMmellhhTiTSRXlkp8V%N-7nn)jHun%9{#&GRw4G0q%n9*^jTrI_0= zOvUpPye2*~J~R$uf5T2=v#|!T4Ieh{GUglC7&DCXj5DyiVVDs&su8*1Xrr6K1HT6T z_Wv#0fu@Um2cE@F#smF_|1ReNe}+E|zko^pW`C26Y*^+$l2;%jVIlXk-;tf*bM_H? z6NAyc>}85M_yD_u&4qSfz|QhKjTkV)SUsym#KACJJ5@O?rL^fcj&Nqalos#(VP`R0 zX;HopmpT<%yxYRgJTfXg9$rY+(DGrl&#|T3++jP&s*eb_x`%z!{|DQ?{slb_;eT7htG6zLfDyoR$6>h!_EXC@Z2zd z$;e;;JSTj$i&MhR1R$(uhc9%klf&+F@|_jl?pn_b*DzIKib4jpI((~(eZptB*ey(( z{905!{0LcHhw;^pDVF3t#_<>F;wXPOm;fb#G{IKIs0_*g!Gx-WUFMP9GVOn^;i)V!09^^Yc zOgjc!e5Zw-8G0NxDeSCu08b4!yN68-uX1rhc({w>!_Evn>ITA7$clhmZr|s(g`Fi5 zrG?)bc6%}J6&~u;ZS#*BaV++KMgBE?_CNF=Pk^4OR?>VAVZn>d?k~7tTk~D6^`+)T zZryORt4IY~o82FC!OP8exE0Q7zTG`+OY;Ik>-f=G*ZS~i_wTBHI*J-=D_|o}aVoTR z`(%VO-47v~AKprbdFO=3x_D*yAs1(bXSsNJc$16O;kks`7h#gZ7VXdB*Ia8p?B21K z4m;~0N{hBPyw0t#IlRZkHQ`+@o)^B?#cAQ)E;fXpc5z^MiHrTi6I?tZ>^@1&8+KeA zlorpg;bW+R=Yw#Ii_e7}hYD0^3p-vVz^P$Zu+{zH2dS>QF}%;kbz#TDL}^i1g-5#9 zYr@-HoE<*N#dE^9$fX$sOYOaz$k+QNBHr6s!b5b_-hUvQ-rHHsLwwZU+sLN%exAtF zn|_jQ!O4}Rs%^ouDwjJaYzv-QNq?`l;2D+lfZBqmSFU#}oK{J)&=#CjN&49qJhjs8 z9l?o}&Qhh)7MxIdpL^K&O45xs_lS2_!$N}IN|ay3=Zp08Zv;?tF_F5Xf3FrnwyO6vJ-o}(*Qy4J!kD>t~-Qz~z9v80lIXKl)%$_L1*yje+IxJ}ttdAswc zXuGWPHlk^jj*E`cHm>qsvW>00n`lg>ajH#kxmH!TqhwVw_K_|wwkus+XggkfO6wfk@w!u5r`wJ%g3=nb z9j`m3wZwLO5tP;mT55dQPbc(W+4moWth%3%P#f4!B~;h;{l!JSpF*g-*pIuovG3nq ze6a7&&IK%;-;WW^?dy0_Doe-rbG$H>r6c?PNTmh+9Dht@X|S)8dqG)h_481v+4nah zt?y6HNtT3;iIe;<3H6Itk=4WFbazYC19AGUTB7WT)1P>W@?e}E$&&f; zipCwMQe{b5oc9@~1-1B|3R9PA z@jV$n$F)8Yrk>d1dpvxDYh4yT!Ns=lG#6XLbfYc4rQuUt>yq$IF1Ca(bMdk8Xcr$1 zU*zH=;e?A1hpAJx_#O(kyVeK8BV2qS{F00JhbvsXFC2IA-tZ+ZE)FMMyeFJ;@$T?E z7w-z6?Bb&E7#A0Y-B-Ww&M@h5i|>x`TDQXO;n^-O2w&;qZDD#-wD@ifpX*w03ID;x z`QZ~?yg5A1#hb#^Ia+-4!uwt8jp4;E&JAA>!1rId_W!c~|1x`;eY!o?9%>(N_s8mg z58FWW|L=pJ1wRZP489iJ8QdIP6MQ`Q5LW)@d1Jw=f){ypc%zRGo)l~dR%7@7QNdtP z!?^gb)?w>S?ET+uy=bksp0Xa*zQW4?d}IN<)H>HX)f#0Du?AQbi2L6SIRJk)zs9Ke z9W!I@Gha40nk&pDi1~jT#>AJK=b5LQW6UN*{67Zk{YPLQ!EcE7|0#C-=Z*c|a&HK0 z%74_}Hg;fayw-Tqc+|MZxYfAMm}#7EoMkw1|7(m2BVrU9K8%gO4g4AV{&Rtj!1lni zfmMMvWCC0mxG69vaA{y_;IzP)z=?t51O2h_4SH zs^5*+{#WalVlV%x`Y3&fK0vR)mSnM$|2OY<-p{;8dk=Zv@Fp?a@{)I>ccr)0`+)aO z#DJXbz1Ta&JHb1`J4j1w`?PJ^vsyc{|2>3R9udL+GHt3h3A-8^v6rDQ_UspE9NGW= z=J|`~Lr<3{;o0Tc;#uc;(({NuR5<^utN-IO{D1!Q|NjZd-?*w5JUH4>D&Pa79WhjO zZ~18F;|bOUqn**Is(X$e=?I*v2PcobSiTrkvvAm1)K>7UVSNbIS5ExGK~sG#?&z^< z!eMSMS+V}_NFA&T<9E8&+v1C;+4=GNh^~#_NHjbC5YZL!>xpK?7ZS~g-%NB~d;!s< zxbx|zniJ#KknQC7Jfe~DYl%wY4-?sOaw<22apzM|HO=@PRBFWUC(`21%Sko#HJ0@ zTQ9h{%zDbjHp?06pza-3t82a8a%O;3LrYuEU;((+az507E3KEQu4jSejHXn>)6a6g zGF3y}VL8JBpk^(ly2{@y=bK$Mkn+J90;$GCYl-uijM0|!{i_Z}1iqWW&<8nJu5 zn)+HmzpwgwvU@4XAHcJ8wcYp!{4-T{NJ)Q+*rNRhCyfLn2go zw3<3!V16}qk-)ra>S%$v)znD?)2p3tdNnYy`a0+O1EZ^*;iMX9s=k$M(Q5i31j?&# zB3sYuxkTNoA0P@)kBXd6B;ajDr%?rcdC_n}@1UZ=gj#)(^I@v`JkJ+7pNgta{itXV zRZ!nAI@84+MdMv;Ejrc32Z|b9>`^p^P}x>A(Z%IOBb~eS%`F;BG`i>{qVl3)L}f*% z6Ge*1Z`D^=G=XfvqESR<(P$#AsENo^G|4#~*FU$8$9 zq}h|5%VG9{xej5O?ntr? zsWXXc>Ztp(Xx-6dE32b@ORS`>f^0qOY@)(C`eCs^T{+pbI{KL~PhD^4ru4wk5$bn( zpl4*3YdtFRkc&q~u68jTao_fV9+3vu+C5V5;t`QcT`Y_^gECbQ6hx-G)^3q&Tnt6- zchQcFaxoa8pNt-`A`iM&GeW;KJzzvgnDsy)GS{u(kC5)_0bk@|*UBR#dwPIH=)I>0 z^hn&T;Eg=&q83@`q9@{h>IBpXd35UmCE^UURNeo39*>;vB9D-u=z2?}g{=CW5fUn0KOsUd9bNZE22cg>kC7=Z&WfDv;_(ssq3PPM zk&DQxeGzGL@z0SZE*^+DV}4cF_D1MsrfV-pNEUT%OT-xA8`iLI4lr3iRyZukDTk`brE`B>Yi&O*SXe9BP5Hu=d{R3*BXxuBUFEh z&^udK_eAJ5tE(F$kGd5$M5elUPUL(SPm9cO@svodi}A<>F7}JebFoi^UIe-tija2e z%FmH2se*DiLdvTvhawYP>j#muTzn@&`ll;zM(CxXE3ZeKX-rjD+9LP5br(jiaDI;Z zyvTT>xsj`grbp%zO^ML=tbS%>CfO!NoH-R$pAaEE*GEUrq|#B5$wb2Eb~7C+OzG;kOA;a`xJX5b^si2SJ~yr0odI(u?OJi;J26uIE*ZSdCUat z4!#_GHn^Jd0Nxh7A$Ud5*_ZC*0TgTG;h=@NfPYwDV_*7vR^EEe+J)JGXRMW0E8+?) z!fe2`)=cXH>ul@;7=?WR$63c9vOo{Zv^?fNFeC6M#P&aECd@tNOXeo*19;qg1S{pY znKzhMnirern3FIsFw~5j)n>U_WEPk{8DZcH<74A(BV)i1&3GO&0&a|f8;mQBi;Z)P zQ;lY$$*42>|8pmRvtE8E@J1ksod7RmC%`JX6JU|t2{1EoLEvme0~{S_!n{CLpd7gX zy9K!aH~)8-8Tbgh=u?OWxXu5pzumvg|B(MK?4!RH`3WxYpY5NBo%C)lz@FGk@ALic z`vLwIhkbARvc3-AAAHaI*82YI48a5$39#08tgjRq1A>?%`01ay01xn2_=|i4asj%t z1hZu>z|;9yK9t9KHF5(KiFJ8|{Q80Y6?p;PVL8kcyuw~&8`uiA6gvU#Wb@c;xI<4x zriL->M0Pw@=6lOrfD927zSTd~KhO`tPh%Hm3!c$eAcDdJ`knebcxqgtPt{M;#~}7! zyn3$@8{mb@Xknk_j$L;xCu{qAN4MlI{~gl4vBN%p)tmLqW5@j6=rOT zyoFxB_B(t&zR*6_-qEsJhqgm|L0g9m6fN4l8sgDuS85l*lVqYcN;^TT)%t6_wWG8U za#sA}`PTEPm`jiYWuAq1l}BxcOJmjx-xswx#Iw@7su|u@S?OKXj2v-Ucvp#PBY0N2 zS2deMSVp>6HBaXm>0Z_BS^1-c>kI`I%*;dsTCgXQX>ovl-_Z zxL2XjJf3Hye^oOg9Au<_RWtk$Gt$4RnSaeP@UKE^bvz^8tD51En33*P&1MtJz`Y8E zqj?72RpL~S@{Dw^YUW3=4BV?wcrwety9!XwGt#-L**t+~q;plXSrfmanwBY8$RRjF^7F_wW-m8!l` z#xugF3Z`O~5k6Jw8@PJ-RKbLJP#NJ=g~EY61E(sGF^6T~RfTGWJR_W{P*}<{LmleN zGAGJHi)We~Q-7X0!J%V#rcsi*gJ*^~wq7hVSRQ~rHb|NfIV#iO6b@jSxGbE*Gxd(? zIG#CPlAh(6I>%PaGqnyK%QMG0RKqg^9jf4&0S;C2OpQZPo{2fshh?heDe$za98(F; zR7wiq+4Pr$q=T7boziNaIYyHA1)k~W*w7vOI@FtGDr9qGc_!+Zs(7Z{A>3FWhtP0u zNytZ*DU%0GS;mruxC>L7%m~XEFsV&tEEAA`ZskXr+GG~+j8Bs91D@fM;5?XNvf6N- zkz&^5@$wAB3+7TF9A_DP(COXG+FmX(4AyCd$%~Gr(M)hMM6p z^&6IkoWV4Qr-ho~EGAD2HA9<=cv`3#s_o-xsF|RHEDbrs0YRRInu!BILe4Jq1v@P4LO5JJZGV2h%bpNgPx&K<7pvhFyV1Q&cu-hPYXT60j(?zJwvsTEG^_r z$&6)b$QhsqOGC{76IdEz2B>0bXc=H4OG_zh!=D0DrmAgaEDa?CcvxBrS=(@yhLFL6 z{vdS>yIOf#>KG!#urzcGh4nlwWehu7d0NU?o9Sa|$QTOIL8Xed1!nQIR59#<6 zrG{Y(El*1gYePP}wA3){++}HK80trO8WJW>&UspDn4cYHX`x}N9~}-F20(`s5~liX zo`!^ZRLte^G&Bt4*~-%pF_0J4pkk;to~4C|sebe{h#1P?2%Huw211_`DyI7J7=?NI%gUxrYc|0W@(5R0DTD>=25;jeq(8f7)-c- zXcz!DCL~Px8b3H8VanI|Q9;50_)$T@00k@s0Rv!TCG-mrWhuxP0NWmgdMRHcf^!P$ z1rzo-Lc9QTSW0M@@^z4uGE%qp;K@L@MA_eY3c@Amd!CZYwa560rKEE0!6Sikp%A}^l$5SLSXxX$ zx`gd&mXg}FXC6;MyI^94JO%L*tzk_P>LuuBo|5vl2Rk8CQoi=!aZ35xWBh}sq5uRXr!cuLCG9tCc}Qoi<#tVxQo}`o`lOy3CJeTo8Y=!hLrh%g}GacZz^Vuzj*k#x^B^%NrMs^_8~i9ovN`mtwL1kyd%_*PGeK)UB@ zdP)S+J@*PdB?9T5JCdakNEes4k)=c=-E$56%@Ii##~!JtL@3>JC$bbm>B6v( z*^kNb|2+F@`*Qnyc*{?;N83&R9RD8yF92u!|CiuL!MB6i;C^@lYzaPtJOImrj|3OX zxO7(rFAAO$oD^&hHU;Z~{exxj1+arUGR1vk{n>ioI%svu@jtxet)foPj5UTD_5bEE z|6Aa@z-NJv0&fOVfxZ7R18_6)5&kO{z@R`4VgVEfjtB$-s{ikZqW7`?ZGXo9s{arE z&Hi=%<^C4`y~u7j7rp@(OON?6{-N*=sP>opkH+|)BNl*@4d87=({slEYkW^&zr{Vi zTYcC0W+E2AS%?KN0(&h6`1&G(UU#42Q~8hlOYF9I7jY2}@SS`MUr*!zJNZ213A~g~ z#r}jb{6u~{uR`R+qj>@Mkzf8{_BP8RFYX@@C3+oOjy#R`vD@L9e-*o!or~y)&8&&W z|2>fbfa|~M-|3%WpT-;T7TBY|gb0f5`ZE0??9{kfzeb;-pQoRxpMt#^L-c`qKg3WB z>z1xzcgDX*0@#B687sU?z4w#Hz@^@4-qXEfy~Df>-WVbvit&HoKcfGO@&9J*7jeh` zH)vOA7iwo?Cy6`$FZ+-2{|BCfV*JnZkXeuNx%m*!LuWx4u;d}MAkSc)hti7DM|mDn z3(~wiFSYh_?F*KdTKjo1%S)~Od??RLt^FK3$nsKaKOe&L&{`bGuV;CPt*U$;VR>jR zU?R^;sr}r%hvy-+9_0t~HlCMS`-6Tu&r7ZSLGR*uskJ|txAHu+7WJ^XEic9P2i0bI zh^?wlEo6CUEx_V=A+_pMggMPaYC*^ppNH0>P-A&WEnouA3#C=xGOy)%p|qfRJP)M> zA-QZ`NUi!7lFQ~HwIFN(&O>We^{q0NA1%Sp@}ndKcz&eQ#4S8OLJ~X7^Cw9{XzBcL zS9y%=OMwW*VVJaiZk;dvp$cy@z$9x^Oy-N5qDVH8eec`3u+ zm9V^&;qUMer3`D1rG^G7+hD|r4$N$NQ~AC`o`y7?Xs zUBU9*Wpkrh{s;-^B8AS8b6CDWn$Ul`IZdFah8#lAvt=P3ZO~~8kI`}pam%J8PdUpQ zvf5al4@i@FHOu>@sfg!&!nBlCL%$^94VP!4a4EWmE=_o6<-O80p5-+O1uXB8fCs9| zN*K516-gM7=H|=7xh!|H1e4`%k`Uy%c}}IZJa?lcTH6 zbxy5~EGJSfOb(1>xoc3SmXz?^)hJU-usJa|M-px$H(QeSHP2lo$-Io`u5@hEdF~2_ zrm);B*@(e&Gab`3mb+YmDrgWh?)Xbx9L3;0;l(Q}7G@g@kwuQgPa*#7s z-GXbCYPMxQ%R$XxnZ$AsGl0!=Qp>hz`*==j*%s_H%}FiWVxGry&@!}-Y}z@98OTIG zlWMjFQ%O0f85%(^ftZPExLv3j2;Ubu$QcMb!gE5;)GdWPC-e+$oXc}U&p=1>9P~^O zdbtoZbxU9Y%R$g^K$Pc%o~c`W>sbzZ1`~dpLeA7J!*~vIhBD8ec~0mVnmC8&gr0%U zU^(a+s^OstIYXCi9#SG&HxCWs z8Vd2CA!wrTSDq7!2HOQZCln1AvIeUx@&NQqp=c;Po#&uvf~N2sBn_mcc@CNe3f#tX zLex-tD$7CCaIT3w3r!QIvsqT8kC}ndPgbOlnPIRj(#Lpas4Mg=^2ew%Y&|Q|$IJ+^ zEYioI<~EiU`D11vLr3;HQ8G)ShgUkcdkXio~* z>pIU$0ef9t$FfquUPp@%FjcKD;aRC)_4;O>g?@R|dUFiVLcj!_%(750RKxioV1Vu{ zEA^}1&$7@jSOP2y`2x&mS*RCa63;@saJ;&eWuaa$**q)7s~&rIvJfwrPG?zY7XY^) zrK`SxXQg!2YbW!pl&*TQY9ytr-kiX)kS^4p#7)$1ql ztkkV~{2;Q>Efhw1R?1dAURGHtTlIKWkS&zW;aRC#^$5?Dm8w-A&tQ4+#tSn`vaMhcquq=cNt&Qecsay3}4#`U0s>c@oEObj8I*w-{Tp;xH zER+l6M{`oT>eVdE3h7eoHJ*iZi37&-tk5pC9@&_(&@ORkE6+;tsyANYSt(xiW;4q| zym079mX+F7-^jDjF4XtHB*m*9w*c{i3G@3|F(97lzeLZ9lFQ62)UzVF%uI`Akz57^Ls?d2mzjxa{H(|>GZPDPSrKDrra4^CBF2t7)6}yf zxy(%TLPXd>4fJXeVrQl~O3xz1jykhW&mzK(I&(D3iU2z^4Rj3=U}vUhh@KSzc4n5d ztO&3((;UIF$SngvU6EX7ra6pdMRJ*$=1D9olFQ6Aafe7Q7)I*ZBgDUBS+-CX)U#}X0QCVq+f9_<;Xs$LsHWj+Axv0Q!w*F2QnTj;o|U@P zj6gnFsY}gR-pxXn#420^&q`rxW)oQ!!h}Qd6M-%P(EFtP>D%mEgDiLt`4;--`L6O^ zgb4EEeJA-EkpHfa?30f z5YhiL&ohV}AmaK9Z;18wa=XR8*Is~Vh_f&ka;81*zwU<6GQrO=5Ar5r^Y4Wh1hOG& zUutiQjELID!8?OD2CsxC#N^;9!QsJpuqxO)cx2Fmr~HrlRr<$rB|WXT>idwH;79!} z{UUv%{xbaY&(?30z7k(qpCE>R&f0J7ur^z3{~0myTI+Iax^<>?GGz`Ospd!jXPf8h4O z4S`vK^8;rF#v#wZf89Irq5q)&HN;BX>|f)5!v6^J4BP_$h|B%c|>Ji-pYtczOX9`O>!<=Szs19-Z(2QlNuCN!@4RlVq(bIDn-F3VE z%P?|IYxiCdL|W)VB2S21@KzaL4lZ>rVwJXLFga_k z(iRNvO;%;cU~>Llb^2iPp`rhxxSHHEZ2GFHIn!6y1K>@RI|L1eD>CY4y*(TPWLo~jY{O(qdtv!!y(OUADTU}UtHQ5Sk$ytB3 zT|1X-!P;3wM(s^RS}l1@x3j9yeCHP1S!IY^Alq60&?MJ-Y=|5=+u1Q8a_?+s{X+C? z+gaZb-FQ2z2;Jl!77dXnVmm7j(F1K~eM01Z*v@){=1^UIbLc)7+e3G`_;~16LhqX) za;k0jmWJr>+wS#-7ElH4+YoJ%Xx9#ePIayOL*(1quB{A_^J}}dJVZXe?b;I|^1W== zT0%Fvhus?@_s(|h+R(kOwP$D+q344T^_zCj%#bT#p2E;oR6*SsA}`i*b@h+Ko)l@CMYve~Y@9ik4~uIvjQ8+leQy@+gDDV_IOPbslqWpWpzz0!sj7Rvys6tln1?9iESX%xMLhY>b zpIj`7_9XN?QvNp=AB-{=8>2_Ls6YHNB}MO5XdM3Zp(MEr=RKp(wrVH`!5oXKV^aJydE&oo(NUBw7AFNwqi4BcUaX63lVbD)H%y3S$TmLq8Btk`y3&Ti*vDiG z#r{lW$LRTP2*%zgn-x1uWX28=88Q0XZ1BhEZ?i#*9ds^my^^-*OKbgni(XXg$654x zT0g)d;aOi{k+`joS|o1k3oVkq^+AhXpX)7)Bxt>1ku0s(tSg+;tqq;l@I0Y$T0=V_ zo7k|~MQ_6vXwNvNL1Lck;rP;K%_OSa!!Xx#L=NHz8`IJ z@x3U0&#y7wjmBN;JJI7^d^=i4sNWH#5y2Y$rszP|IxpHt=q-=Z_xBq0$LL_PDu<%< z)x9PfrEm5%<1;sr=jkiW1THgOzT!4V77(WusCpA;ChT|F9=Ky zj1P>UEC6!l-~T&2|Nr9u!2i1cfPaVodH-to{XZxo0(e&Wufn?jImnRCp`-|@b-|M~uz8&!SUyb z8p#H;8Wv?oW1U~uf6~7~y#KfLw7wVf51aH=dYk^Bz7X*k=O8M8 zH=^SG-us#NL+?Rvr+1h4MXc~Y?Oo!%&wIOfF8uM^5bys2?^)iHvBqByAOAkyp5Bm` zX+I;{|DUw?w7hme+bKQ#pVS`F?$U1dyz1HJc~;H)(7aH8yT^$}NwMr0<~Z%H1PrsJh+Lb0mGg@AUK^ zk#vsQ?vHg6X|YvAo>+&|(zd{L#gDmoZ83@6w!k&TPrBBti(?LJixAf(u5Gv_Gm%I4jAonjadeEg#s~y7!(d(&W*r1tY8#w3+qMAW8 zJ<$;zG>dFygXlHZQ8P4>- zDjybYbMfV(-7dBkZFg~D(LUz_UY%b=UF6jXMf4C~Z7ib4^lG%IgX)zPrHKlQ_7fEp z9Uux7y+&jgC5VDWdx*@Uy+lS)ibyM>Kh&$9qE6?s_60ub^_`1{di~h%*@{a5s&vBN&!hrQ@qe4oCx*FUI&c5f*SIre$XQbtzwP^sx+S1EU~ zPp`idD$9G(pk<%3xYXlXZ!PsYx3h14DSb5Wn^j6b`+bv2=~I5+#9s7OyKiJK`bOPX zR%+9+-AgT^!csWQirjqr3Q9F1yOci6_XT_XN;b3CZ$w(JADoNX8$7>?-rjqI)2rxB zzc<*es*);L!>XzYeXmpvaPj4;8bTzO9z^I_QAJ-6d)05M8px{lsp?OtyjVr=>%GeI zD*A%ht1PUduZ_LRtyT0{uy=mdQ0Hp*UQu-n(P>rmS+I9f6@3isomf>tr6*U#h(=cR zBdV#YB8pZGCMv6iacwPqknQnXwWpKS*IIj`i)YoILC8C5 z&va3*9Y@Gstv!p-GpBa6i?eG_Ayj^^C9U71Y^@#ZS|6+(;o{=j2`=7U+w9!>o^iGG z*!DzgPbOQ>TKa?R=}}96u04gdb_Z@Q&O2w>9k{7@pNsQ~ zNsx92ZYn^@lOs}%t{yoL-la);@eveQuDSnsG+fw|7i#Hc12$kQ9X&kp( zSzb&Mw0nN>JI=-Ko>okwo!w^?ze%=9#cvZ$EGB{4J-(PmO1noFlcepgDJGfQ9V*V! z5q9xgM8RTupYFDbNf>vV#U!P>wPKRZ-Jaru&b4BfSjF3fMyP_G7dCfQWXP)BT;bN$ zCREUUVZT`gJp*hBtDrF_Hh@)-knWmaK_kCivnt+ju5Q=J3c8YA6%};Fy9z7l3GA{f z==tmlR=iF}m=*K{b{Q4#lTE8gJC}yQ)dTwxdOjFf>6E`ReIWfJUuhm#L$>;X)kJjz zk0pu@>`zoSa3E1+ApKrnDI7?@^;fikqzuYy8l;*d3uiH5I$~Nt55jKQ{Gp@#Ci6E*@^8H^Yw5M@^-!^-xopix)H< zMQE>YGF&{Osf5tj*wlwGu&b$v(A%@=XhQ9)CVFS>(C%)c>7gB(w~5|EJ3RTOBdD$? z*Hqx*f+l+7>`)(Q@{&~zHPLHvhw^fhMONjdroJw2XtG^wZSuKzcT>oDPCMo|MTurL zg^8v#^&pzqL~o!SBbzwcDw-lh(WdT1g-tz)>?T^;*b!{%MmDplkjQ8vb>E>inU3ub zLya7fX3#HUdvI%v2I<>_FUDSTE_-`$OYAupUx+>9;^x>ZE`CXZwtZ~uX`<#BeNb+%kL@N~O>7NOG)7VL92^`F z>=!J-c;5)B*545u{}b%{e;xb&U%|fr4b}?s`=4jcwl1-zlHY#=*0L+Ch*fC$&EL)M z%`eQ45eYDd`1m``7tHnMa>N3>&%DFD(VT5wVoo(rGsl|4ugAJ((y2CfWT6qtft|Dytpf!e^ahz1xASOM)n^8f9?n)X`%lm18j_xNx1U+14C z_xw-rkMs}m5A^r*mtgE~_*GYfKS8h6kHtK|zx(>X>&Ps&dC zgml6431ofEyM*f#=q%nPT%VMk<{x;MaD7sC`aa}c!u1KZMZ8P6KA~PG?-H(0%1-Z> zybG>RqTc1aOZYx1JNZQ3CH*#c>c8_Y;rpcQ^o-$M!uJWSJi@z#?-P7Fm-8;+xQQbs z@Gdw%iPF1xm+*d4cEZ8G3*Jv4<4E2m+@El^i+PuD-b6jLESxt%ukfxar}RwTRVhi` z#=H7UvL51H$4c^-@UCMV+gH4+pF>ykuD+6xr>?8Qv3<_FqLQ>?-X+{Om7V<g8>a zg7DOMS8u2AT;5eC$@~-VDwX8##=Ck+vc~hS636x|>k|H(%FfBWOZaapJA{5O@IgIE{*Hvw1hF5$k3TAO*7aNopJe3*9$_f6dOA>Jk2H_=)H z?-K5tcsc`k7u+{NRvqsW{+oDq|6pD4-$Zlcc$aXKLbd+9OZac%5&z1&gr5{{E5N&i zpA;Itop%X8DP^bM&%1=56i$JLg`X4}#{I)j3WWS=U2v2Vwq?9acuJuQe8aooDFuSl zTbJF0W%7!Mij`LB_j04)x+)swAr)?@}CFJwG_#vF+vuZ+7TRe()xT41RE) zLyP&r8y&ioADk;GSi}$B;Mn@`gV#$k{}+4j9VJDzHhNceRqdxkg`OEi2M2-aW}pQ{ zdc>+3VGbZc5D+jcDk7LbQBf4cgE?YAJqAz^6=8-Xs9+oe<}BUQxyecxk2#0q_tf6c zKAz+IzIWYs-S1o9y=z_nV17QeD|B_$ue$cL!(K>VCg@v8&*T)@AJUhKa({vJC7j@0 zNYCID=mF`A#nNXXeUXSYK>9*XMg^p&b21-<^aY~aP?kQQpXN@Go+d&aAU%~6w);z; z$H{1c^tqhO7a@I)DEB6$&lYqaq|f4n^TDM37M^%#Y=ZP;v9vd&&*T(56w;G8*+^$_ zG8aR7q9_NDKAn?#F{DouOYea6sbc9QNKX)SHcOwv4|zDGPZpsOkUohMb^%JC$O*du zrB4t`Ux4)SoUk)c`Zz(aLi$)vN*>b3aKa8k>G7QOGa)@r#6Dx`v3zHzLHcMOvXYP< z!^t)wJ(`n==Vz2y`Y@!A;-v2f>5*dThb%pUZ)6mtj})N^kRHxSEkb%2CkwwlzriP7 zdpSrC5wW8nEwpFHAT6|KegbKsJrhr|(4Mst(n5RsJ}iye!y9KXq=oggb0AIDLlV}* z#>i=5J@XPs3+w4qSQ@Q|t9FF6ke-F-Q%Fz06w*R^+CoSR>EY~?X_OwWFb>kfdDgv< z7S6LCg0yg+f!{GXZ#$%g^Q`M2Eu4q*Ri=gW*o}}D&I=sF(&#+g@WGH4$}`@8v{0Vi z6VgI?<`zf`js~Jw2+>D7Nkjfc;1EdtnrXW>0vqRH z-$I(KhnIk`UT8g}$$D2pT3F8-0BK>p5T0dWJqybT>skF+8m)&P1B(giVNd9^ke*!! zX(2tFDKsUdXZ{Q+lHT2rBI&&dDIq<3KS&AbnQI^=q-R|SDIq;|8>EEvlomC{KF}QbKuF8d5@estzfkJoO7m3FU=PW+`8J z>a`)3LggU@SPG4Y;IR}64`C8Zq3;kZNcp-`uZ8U_g}TE~9i)8Qsn_ECcd03y^zJN$ zw!?)3A?3?Xz1CO)DPMN#wc4{Rg|fqi8cU(;5IRAMt8P`eA4{R?RAp5FQrvW_a8QsG znhrxFS&EBpRTWF2=rDqZg`PveW8j)wrQzq|np>r8WhvAgF2voS#3jKy~ z7^Hl?sk78aSjyKMZX8m+-f+DIEQNYgv9k`Oe7mWtc|S`H<)JD_`EtY111yDd!&3Nh ze7C78wun!m+c4AsDPL_E`i7-YZ5YDMquG$m`&bIqhM`d`g=Rw-$5JRZgw8C5Uc)|` zxM!}lcI;-ILaq6oL2rZ<_gcI0Dx|pA+O?UG;$CYv=d%=g4Ogv&6lx7uP@aJl_gXu4 z!cL*raAAa{P-_TtSqiO&a4buq)DRp`0Toz^}UQrv0n zYAd9;)7rHkSqhzo+ZX~VuC#V@9!quSp(v!d(b^UK8oANhwT&!=M#J)WZJ^K)@Y+S6 zA?PfHIzyNQDQ>fN>^hg?HfuMpg%r10dtfu9xXs$ldm+Vb){cD@Qru?kvmwQ8*6v^9 zXfr$)!91k6&f3lEA;oppuD%H=uCsR55mH=d?dIJqg*wCiTKtE?SgF*b3PwQJZJldG&9Une$km9^vR z#3rt?c6^=Kgevo|#d}~AcUe2WPHaM#VGLgg$?7)AI-m; z+s&-`9`^HJkMH{rn}0KJ!CwBCnCF_Ona5xs{{dza-}P(E3X?^CiF_IP1Y50t73@IP=Syxrk)cvJYz@C)I!;m2{b z|2xCicp}Rvjg{}-; zj9L8&p>d&Mp~JC1L-$ap5N4%_xfD${ot#?4Z)ScB{A_=z zBZ5uAdVHtvj5&RPU*RkG6#MXhgm3iE!5YlyKLEGGwQxC{kMHv*;P`!m;IRL}DF1)% z$1s!~j`{o^tTT@86Ec1`zQg$yx8W%N?_9%(fn|XQ1M>qn;6?bTe4GEjfB&~U1H2|v*`n{RZj;znEh=F#y0BU#Vi3Dmzd;4G z->OAzsm^@~Ja^(LZ&s$U?gs}{*8WlNW8k^WG& zR8@*>mK zsDPfToGkIV%83$tR~{p=SLJv@ZF%LH5_?yQWTmn>&`>GTlFDXfOXbm2K*?5$e50~? zeC25I2{(_c978m+@(iL8mB$l#m8TNbRh~ptTPd0!E1SDio=vf;%F~Ff%9Dvgl~ahc z%HxOvm6OE5l%qA?V2S&CBKxJ3qn*4tGFt74q%TJIb45-QabHiQnGid=B4vrVk9Uh) zt%G-m#41nZfUrQNcc_e3c-u{EAex$v&22_?-F-;vm|cuW=LG?8J+CiBXO`RvO`#)$)k(D>4##hj}EcGW7B8lhJC=k=Vhjl4y7yA^X%5nJ=Zxc6x@4?(iO#xZS%`;uf#3 z#G=X>)P2SBCKX!kW_@Q^2#P_|cB);d(m-x0vA}+JHya_V;rbikr zvsc`&W%OlFq^$8%yyX2wMqAx~NPNNlP2%(30EsKyA0?jSDH0EK^MuB$-eQRlx?f6M z;0>2}r$^6_vT=(yOhzyCx=9@Dekkz}uSsGrFG8sA_Rf-crFWCWiC!0p1HCgO9_k$~ zv5(hDVlTH{V$9t|s6FRhA@M0UE%A2mK#9}5V*Lz1uT;m-e@g{Gm#F^e`iPOBE5+{2nOC0O&l<0bAOH6t}iCx_<2-V-* z&m`{kY>8#>UWr-ne2Hz|4H8q{Arjy821$I?nbKqt{87l$8&>ePnclcd*1I-u@CF^sbh;(7RCLJnuY-w|KoIUhRoSol1GGcboW~ zP@e6H7F0@krpG8Y$)n#QGy%e7yG>;ad|&dPRY8lA6@Y!>+F7SQvvhWeq<^fI4Rhc*I;Y^ko`N(0QjdK?|yH0oCEMmdxm|keY$;| zeH6C#cd@s7-0oyYZD##yeS_`&w^(h~yEq5n1|0SO-?RUxS;txn zM;1lyiQE#oDl!vm1pdhT_oW#CL*d`U--X-%G}hlAa{!(fo)|tpJPP}t(1y^e(4#a9;2f+QIERn)H!?IZbXcf2&I4E-iiTM5*WlN| z-PqE-)SF_95`D`+dc`%j@V*^+{ORz4iBQsgR_z7G8e_|AkkBv8t7mX*4W@9nV33#h< zwQ;#|fic-Q*%*ss{Po9K0ecz;7#(o(6-EDE|LkAJ_?{d*=qg+a=ccu)iNN*Yb9GP6>_{* zvekMSa=ccu)mjBPtd+#A*j13@)sn5|SCGSMNq@@$$nko~RyzneUN6~d?E^VpFWG8Y zkmL1|tro7!>m^&w<&fj`lC5?%Y99tUUN6~d z?F%_xFWG9xA&2#n{t;XXIbJc@Y99EU%etHCrKz zHIuj$>y5I!YO>Y(3bMRvvQ?i3Sza~S8jeDiS53BBH$j$HO}1)RLY7xewi-2%xRK7na4UNldQbs=Q{h6-SlI@|ww3tb@+-n#opeBV@5=(m%WfkmXgAt>)X1 zn2+(A$u+_X5*(gM^FN?XLAai1KG0# z0c59eQgLUKIa$|3_DoL7bC8`R=oQGG!O46avJ*vY9%N7FWSt4w)5Ov&WKZQ}Y=i6s zLFYmC6i$JDkUg1`h3D}kLF*uUA}3vk>0#0sB4b}T0o2RS*KlfE0WV>ksagY0OrGzHmFoD`&^IH|Re9VwQ63E2^x zLcJk-B&Wa?kR8s+%Cqb+egIXF9V%A%0J1|ksasg~2)@vR>|jy;Gsq4SgqOuYL7%hi zUwAS6)J-B(2iXCfG(6k=MeKBzJ)9St1ldL&3f&9Y22MD3Sk~hdz$?JzgaaRD4->S3 zW&80}Eyx}!Lcc<`UQj(`lbkShk?qSVbO>Y*;e;bEW&3clvE0F&bo^!y;)E%VY;O@; z$g;ioE+#MzR0t z$$BPah4t+2kQLT5zK5)^o;nz^!g}T+mPPB~{o9{qQF;h?NWyvgg^(4_!@B6Ka31D( zvch@#jgS@2!yHdmIM3VwS>Zg)_GE?gtdk)toM-(AS#n+x$Lit7uHz{a&I{l@Eu5!z zgsgC$^&w=1^UUucE1aj`eueV_csB~?VMZw0W!jQ))_2=&coAULPjXh+Qc$Kc{3m*l&9SQ8KFEJX+9&A zr``b>p*;N|$Oz?GZ$m~XFHi*;p*$-C8KFF@9x_6CCdN>CC`26JKO>xnI)g6JZlzYgz~I|AS0Bg{l+q=JY2zsj4)o{D#!@q0TvU+GoOcyFdpXFGQxPu zEszn$i{Qr=#j}4WQ6hbzd%M959f5q2;-UGKt>qP`Ws|~@yyR4BaCM~1sP#H z^H-J;#ybTv!g%WMkP*hiL|;Z2PwfX8GTt$e5ylIB4;f)RyANc9@l@QfFkawP$Oz*Z z7eYoDPwNC3VLWvnWXO2KA%n)llZ?s4j8LA{9Wp|Bk!_Gc<@sL$ZcjKbfaS<}k3&W{ zPu&O^be>=CQ^=6?$}EG@!!vI{MmSHu4l?LGEQa~YjF6u717w8stUZts(z8y0jF4XF z0mumHS-1<7o`0ZtT7>n?-H;L1QzxM~v>xsQM~%)1?I{Jw2<@qP$O!FOPe4X!&&;z7Y7al;VUQ8lGv9}dupZ7_ zlo8g$kry+?OE9HQ)tiHkF}xpaA(-MRag(Ip$)C)pPs)%o6w$mCbXgUFlJy2 zTH(F$&8!W*hpUc(HlaNm_b;?(Jq>L_d$t8_LVMP=&?dAO8Vqehd)oETCbXx%0&PNj zm{e~Q+QX3w+faMBTlOxrk@uEDoA93c7_ARp!cn`LEBv}ad9o6w&1GqjQRbZ8UW zQ{N8$}$2&#(<0 zM|S^Q-=XLA5B+ifw4VOlZdy`*P`go|kE6R^p|Xl;MfAUT31<@ zTIXS3gFk8;YOVeLL%V|w<|^}1^8p++?|O4K)-_BvPcp|~F9Q$f7KoYErsK~lA{dh!~QhRz~|u|;T+B}@M?Gi z_BL1&zE>X`zBRBQd=<_za9;TI@Ub|{U{kn0oCtRb?-P#vX^w&CLu+xYfrqe7!p%6x z;H9Cdp)*1!ghq#spcw}KcW9O1kFMBf7!9C8fNuuN) zd)OJY*tl@mM8ePo!zlN%M~x4otm>ZO!%meOT{m!;Sbuw@KUH*YpWFXkidFT0M-VW-gad}|FysPFC4_`L}34Ky`=Csx{_ne#+&n=#ECEODwi zMB;hokrK}}2N4E7GKUi?i_M{8TifQEBZ+FwQACb8g2*=MQ^Q9t)^<;EullIKbFxx)%5Lc2_0Phyo?@HP2b6uQ15C=#B2%ms?Nv) z2Ufo%F;V@T#GchuQM@J8qdG^?;E~l-F|$D>(!B490u7YL#3q7?g<^|1p+7Pu>MuEhC? zrzPH*xLx8M3CfRP!@vaP_pm`=;tpA0UgB|ywF7xw(d+k zBcnGYu9kRxf^t9DS}t*cj9!~~h%i)1{GjS5|>Eqn7D_~_&sr%#8(p=BrZ?PmAE)T9>J!giB%NUFG$=dacY9@FKo-0 zxK2j9B`Bqg4M-EqDXM*zm@IK);!%k+6YC{TPt1~dQi5_|?b?vU3K^|WERxtI@vKBW zF@-R&Iq{&xb%~oK9+j9Wv47%hLiMY}{Sw;~(IbK*HFcR+$3L+zat^lWMGlsKQ3RwW)GiYD+eivwj~v*g5T zB0F&>k(s!QD3Vx9q$eIG(h`*L+Z#Qxk;JsuDK~y9PS@VZjg8+BhTmu;_w5b8-bf1C z8~V19l39C=j~aJSS^e-v65igx*^Q*vy@9I6om3zYZ6vkr4MZAAVtbYCjb$pJY;7z_ z+|)=pu)WF$joW1O#>QRZL+qX1xSMEV<7Y&p8}me?8bx1!Wp6{{c8c|B{FGPV`LO zQ`?E2m3yi>9ZBWPPD6;aPGTSuWlx~f2(iK4&VluGFYXTgQcq^x&EBi0N78QN_YiTugOFcP%x3Z;v4Mmj)>z@_-+C8qGuEyPU^-of)OTFm)tn99;Ur#Zsp054f zTKyAZGrNp+Hb}hE4iIWz*g=WQZJRK#za5s?$&L`JQCkx`*fqg6iALGeeMiww&`lx8Hm}-D5~CJ z)8lfddZtZ>x>L#8^b2CA@|sN^+&RQvCk|_8olV!^&h9oH^v+uQXat3(Qxx-qAK%mM2>ksk!{}X=l@R)ys7-B zZ{mN9_BYWv-Wi1>-h0l$PTc9_L>-2s{e5lk#&_|w{f_;zz207FKVsjHWBpxc&&ILt z&$1`jqqSUztbvMA6ai$FIela7r-Lx9_to-AOE+J?EhsP z`+u0$m90jnfwP8DejoNeCT5Y+u82kUC@c7r+StlMR=9w}JXScL zmpzyjrum?~!U|J)WFJ;I&xgP=qj0Xjb{#96;|J7^M&WEfU>b$9{J%CUOyMP$u)<^? zaN?1|nLgMfjlv|q$YHE-1~2k8D@^nOs*S?w{t}H9PU8WG6;9>rj9`TcyljdUPT|nP z3McbLN3p_597eIii9TReUEu_OGvis|ct4NGK!Mjv z7VTkB;I)!PdpIj#tt2jVpn#Q<0i_r)SpjP$F;oc!UMX3`>4yuvQnHA13>C0a5*JoM zf!9eE?IWSU>m-ZDPpp7-lDN=<0sRj1b)1)RrKo!-YN_|v#f z4;Tf18rSJDR`92Boo){?3OJ3cI=#*)__Mf9$J2e7zaUa!6#Qvir+0?Jq4>GgCH5dF z)C)R-6_U6^bx9W}^yML~mK6@+p;{>P5v2yQ!ofTgg2F*O6j=?0-kj7+q0mcED-;go zr2Pnm1gG%ltk9FMiq~on4ntU>jzc9YbmuUV72+K5O#2BJJi-C2fC(2oE{_#3--3WA z+E2HrOO)GL0n;rQs)K@`ZBdtCYPsNNTht}`g{*+t7F>v*43jMgc%J=S3&LNZ;OAP@ zCE>xWfVmc2I1mbcss$G|LBUV8;3ke|1x&Tz!oE=Gz(ZKKU8v&3rbD5UlXe~yDmdA= zwJ2W!Pr1VZPp~b@kA{LJ%9o(v*A3#X`a{9L-|?fo0fn$w`V=dK_^M5;5afWT0628U z_D&qeL&3n(n9yj0g3d|(fE7fN1;0R%WU-Egf=IGx_zj9Ai`5Kykz}!UL0%+Tu$yRJ zBw4VVXr7WRuR>lVS*#%BMUsU*33-uZ!LFluOtRnsnD4SYW?8Ue|3Ju#Bnv7#FOn?Q zoshqT7gN?leg-F;JurVUC!EeEe-S4OcXlBs^DW3v=ftjp`~{qh`&j;bzKdGOPvar% zotmG@Nt*=u^ElaI$e+teT@CqjI2q4E{%lU+C6GUh6X55W!ikNC{A5lRt}Bu()*8r* zB#X72EpKKqN#~cen2=XGuVn-lPDV7rCMT*7x3G$d?@e?(8c0`UPawz06$Ks!- zHz6;QEY>ZM7fBZTAjnga#>mMI%|zoLZ0iaRowu2 z)ETZB=m>f4vsQe##SA11oB*G zt>HGvqt5)LogvSC)@pqW`2jqJ;>h>sWNw4};hc2bUZYs!aL6|Z@*wYVvNg!NoQzqJ zKTIrjA>WS^_B_t}e#4JHgyqq1cz9zWk9xxp_B_t}e#1|AI?MZhQ(F5#-uD|Ov5tg1 z`VGlk0eN3=n5BLR^1k4Z9)!FvIQ$g%K;9P|mis&8eZk@8UW7af4he8)XgDP8Imn~p zeEN~)eaB%r$fM&h6#5AAzT|Lodm)dKL&AwJ^JqDr7DC?F94^Jn4mIb~2axwYhqM{; zzUPqeyF$s`Cl&Hgug&c<{dLa1H!uzU+|j#`k51 zho?f`mmQY781laCa4Fu$C_8`YfsjYr`E&@5|0K%24|(*RU#=bULU=Y_4MKP}esC0? zzZ8!^7|;9y^1^ubzK|#5{R%lU-Y<|7#xtLSoG_lX2y()Bb_jB0ycFbw@vPq=CyZx3 z06Aei>sH92@o>M^9LNdf+51C|l-CP#LV4B&kQ2(YUW1%ap7|K$gz{``V=0tp9SS+2 zJnJ~f3FVnTLJpPZ?_(z9g!8P6ASaw>z79FzJnJpU3Fp~59DnbjS(o zS$KTHdKR`(CF^a0oUopCIpl=(tkIAo>n(#ESuY1Uvfe_-3F}$-IfV7hhae}cXB8kv z);j=lXg&W(--Vpep7|c+PPjTPcE-+-JDpVb06AwFvi9JpT*#sM{Mbauq5Ayo6(L9N8wfe!K5HxFg!`=dkQ44Rmq1Rq&j!c| z_gUK@C){V@QsF-92FMBbnLj~JxX)~coN%923pwFF>lnxh_nA8(C){VdkQ44RmqHHR z=O14QazcLA3djlh+1O?n<>!BnvmhtzXZMDju%C4bl@SqbWPQN(D%c)xNUkye^-AQ z$G9689v&X>pX8i#q4z_tVq5o>III1=IKmyDwN1A}ll-?`Kku){^po|Y^&!~i`(R!B z*Ae0UdH;;If1CO58*B?-4sHs*8GIqQHu!jOVero2^}*T3mf-Z@WE=r+Oz?=H7d$9f z8{8LL!mGwRI09ZfU;_$x2VR1wpcxk7_;)wKm2fef4HK{({4gB-?hu^qz7sg0v!DJ$ zEBHn19(D`6ip^xx*d%r$8-p|dHL^o+1pFFS$%100`+wGkyzji~Y;acM?0@&-Scq3) zUkIG};6I=DK+JmZ-<$IQXY*TUEwdi9=36&dS6CNXQ*gF}qj4_32J2w#|FEBBSpoA0 z9Q$w^)_=TfzKp#eTFk}fJ?72kU(Fdf?%}ECcV)7q(GCxYRN+Vnyw`*Aun{n3;@kWn<7MM` z<6grw4l`Qtt$!+x@7L9M+BnLXXk7JQ^o_VUe75H3+XMFnehNIJ>G~_$bnOVb7S8(T zsDFp*2kKq)4tfY%|9_+H#<%`W+MC)7_|E^hwh-I?U$4zpu;%Lv1;?ZC{|jtXx(WI( z{?#01)PJ$)za7?&R{rweUg?h&^bLyp$N&9L6W)0L(`ElZEy!yeRj0CM_-njgP<5;! zqKaBI*~>?qNXr9L2J3|8l%6jWhIaIPfe?E2d`;p$JzpWzR`uLSsLbmrS{kTMT~E=b zK&_}sz9sfrVJBZCvXXQp6=qU&5OX-wXCXX4Q~)BRn>%94Oi1@Mn%JAVypW^+zCW;-BXAh_heCUA8omN5@En}>6GlF zT;rZVMeE$-X}ObjkE7rW_gEQhbB`fZ)9!d$ZoA{;@{Bu{PgXxUXwv5zP=Aoc;#VR6x9K&|Q#A3(9Xco(AXvEPZ}@exF| zaglIRt2)QtrC7(9$c(8~Rq+JHD&rz0p;krX{U~O~D~YUl4phtqAUu6p0eV4oQ);Ky;ERS}hn!K1>MTCq@1O2U7bcDN^l-UnWIr z4e`_Do3iZAq)0trG?Ns05w(KtmlSPF@T%CGY@@Qq@}x+zV01}Rq*D-UlJ8Lgy>C*a zNYn~FkbFu;l_cHh725B~^%T{9N{XBwUSr=TKa$Z8k|KG7(Ur+}Wpr6mWMMFRTk=C0 z?U{UnFwm6D5~?pIUzPY=a=F9@k|O1-R;YI-MKcY=c(Pd*=$It$RH%AVG)z$|lwXph zs|w|(FB$GK>Px71-=t*6QU((ZB6mmQB! zqF8NQj2@!eRdF!_h-zE$lW3_HKZYm}KUM75j5aphEU}^C7J(g=gPn}-W3+3AwqkdEpUCX`A(7UVzKD*2 zt|Yq-N%ID=v_p6EdZJqMMk39;P8@4hYka$+SLgJJdsjezAId047nej%6lVY1Bo)P;> z;>5Tv@$}d(iDP4*NDReZCk(a3c1V06Zb}>&A1u+0k;$q;U1Hx;H28b0Ao1JS&l10i z?UlGC_KU<1V;@Ug9@|dHcE)~_Sd3Rmd_G=7XnYZSOX7R+ff8ShkCwPHu1b6~_O-k$8CQ9f`eTpGl0zJ4uYi_DI|}?h$GW zV>yZU#p4pMk1G;q#z#p!C{~u(JNAvlns_&fdTa|};JJ8LiDP3sCH9GjB*tR9C3cBd zOY9u)PpEzodsX7fcv#|scwdQgVp}Cnh_y=`6Qdt!Rcbu;BSn?py%k=W?9$eloVkALks2^ZgzA&rtw%`)B)0`%}A&Z2;c2U$HmX ztL#T{zP~%{>v6vOi|n)QQ?W(vmjE{_n42m>F`eKWK zE;tW>69IfT{vrH1&IGVIoDRQ(GXZP}uL?gJegH=byfOS&Y?(hbJPF4NJo=xr0E)Kx z0h|lq%h0ExGR_0|4vq@&OlS?Z3wQ`;xW6@YO=wo=!q8bbX5cY66QCFupf;bV9U zTCqN41uTL4aQwjQ;0mk}ITucc9X9fHLYeha`MYf5(&0c03*lMwvS^X*esu7&a8=2CV1p1FCU$K)||@?~Kok9Yz8BiM(aJWUR-T0hSsM zVhe$J*jHqZaS7HKOyX?>hU2J$hZzSM-HjR?C&0uWBfsk3;>dzK^rF5=e@A}>#}@R* z3V2ArN54hCO1})}2$+oZMq~A1`T)INKTz+6^-;F2<6MDXVgHfMT3UNYds*9{t-{d) z7Glqmo3*R7%e3=xmVi^R7lz+Pz|{`MaRzI&N-Y@pN8sDQUc9UoDD(Q-yX;G#%^rDQ_v>38j z8Ea_~>R1^oX%S3T#yVOAo0YMO7QtX;tf56117*L0R^5#Q`j)YR7DF18{rXufeKC~% z`dM{1j+$Ne>t```5i4W;EEa2mvR^%mYp#Z}Up=et#@B-~R?p(X@lf__XVqz#1ugrv zv+A_S#jK3AvnmoRW92LYejKcuMW}+ZUp1>v3p~flST&2GIw<=!v+6YaLMZz+v+6YE z7byERv+6YLqg(cCW^n~Pe^@h%E8vI3idh63%6`2p?t2`R{d!q-nt$H0UKSVPdB``OAftbDK!>~*7jkiP^ExVIm$ry1p5eqgRqKG6S* zUsb|ipgwApd-?&#DEILHo@3Xz*Er84=4+b za#uf4$;w^)Kmb_z03Yn>tlXKyd8}OHgMqL=FY^&AcjAk1f7SllRYrL~|L+Axd0+o; zol)-S|22*BKK|bstlYt0LAl8&SNQ?FA}V>{7FMqCA#^G$M|tEQu3}}|2V(*& zTRsFrtZe#VPi5tZ56a(IIn3c%Ru1`~KF-QPUgiQ;1`g*NW#;b_zXQV$Xs59&rQt?tuK)Kmqx4t*?Nhq(PDctlz8H3F?MY)@x;+$Z1Yk=5n-_- zSP4CZV6qZw2w?`4xP=x6=CBf42tziMxP%r*c0maxgeS;8o0WVEDT@a}2`z*n?4wyi z4IwGdvXbv1WpQ^Xp@;nP=RgTXgcN#%m3$K^i!~^ri7*s68%n;4@Vq|?B~%fTvJ^@@ zW3-q}f)dIIV>qcqiD!%!D+^f3*O9V#6qIajYRze}E>PGzDxsNs;$4clUjNrG7Izl*> zmAH*II#5Cz1yr0Mk(IcPHde6`>Ie(rH^ObSu?|YyMjP>&SmHLqX&9lzZG@97vJ%<| z%bQR_8R53$c(X4B@Z3UN);T&Ln+Fag_>E(@k3kjU6u8zXp|jLEU5pYcOPz!J^Nlq}U2T-m zSn8aJQSyZ~XRcB7g*C@9ioUSsB#j~pOP$k)7139LIm-8}c!dw}qfwmgFPUf*XZe4t zjN;|~UyBtl^9$Ig8AWW0sLrWlMQn)}m=n0%DEdti=geS5Y>J56+Q5o_Tf{la2dwC~ zMVw=w&WhL;5z8`G^cy42(VjJm*cefrqp_mj7IBW&n-%@Gh;xibjUu*1ROgH~ir5rU zozsaGu_Yp^qZ=#wO%dlrLPpVVia2LH6j4zDbwr@VioT=N5w%eC9i@)ILF~CNky)wMaFhkL_Oic z5EQwc7TFV65$%K_hZRvy2xFnh-Ly!%5{l?1+yq|VMU)dRoXCpkCItKps3wGZRzx!) z;Dp2u}#A3E^-k`esrV1e zn#nJoVF?`B2cOUl9kE25VWhCtERlClsRzZ6kRNcQop=zB?7h$qnZlCsc)B6Pe_rwpoo4#(jS5%3JM7aQ7QU{!u>x2Mc+{PLu?Wh(NIYC39N{U z!rcyJMKlz`2v$TvAshuo^b;1sCuY$X6mH^rD59YJ6;EVE-%!fJ?ojj%r7Xl&j72n* zzd|zd%Czx{u^ zv(3rk+y6%AS!a#2)LH1vcW!j9bY?i`V$SSz201DKEmhyyAJ!~Ux;J> zoopU$4#7A6gRwvUex_vxB0oevi)@Qz@NNI)$kW*Je=&~xcXQ;gkr|P5BBw@8 zNIkygcaBuzJN~cXufn@T~pq^t1F+@V$K~Psje>fBug-1H7_OX;I4~>v(mb($Z(7s5r;qf{~(rRcX=Ijkrz} zU0ONu$e%>frJauy)s@Op{qW%;m7ugZ3tUlQk9e>9Anm}p%Uv(=R(FcT0q$#rb{BUJ zq4oQqyCr_&PLlZAAnG^OVyzzZHyK?pR8-q4E!N-Mc``b4(0oGk=Rvnh{Atjg62BO9 zkHj{2B4OkT_g=#A!|wTnpuBiQ2TG)2?MJm8vbuT5< zr@FUDJj4}AXFR<#T~T$6*yygL0$OkPBErCC_YsMkT>0Sx&$%Lxsk8*bg1eef{nouw;;U|p#Ft!=Q^qfTwfnM+E_J6$47(Rd47ehHptLBzxc5_3`Pp3{ z@f-KA61TfoNZjVmmblfOC2_NRjl_a`qr{who5W4-T8SUHbRD)}3yG^`bb~9uSY?TO zlZ@WtQU|z}xi0lCZJFRwFY1=@?rC(zk8{r=I?}zCXoyQa`&tekDk{&FmPVKQKesfv zB73N`^c&il)~I(yf>>!e*quzV-tM_Xz1;hV4s>53O1RUBdb-qoucgj?h+^H{xkO#u zH;6jBB9E)IbacE2Bgaj9QzOUM<8X}kd4 zi)m@VeOjE#X8RvWx<{Jr-;#6-G~2%>>FaE^e@Q+d%l@1^OX5#S`VO1zACni#=nqM{ zAe!y(lXQDG+utSWI%>ARP12X#Y=4uSAXoc3N%wTK{Z*3g$Yy(JlCIC@$cE%8R5r3M zNq28E>`l@Q*9^UqbZs<4&m`R#%}|%5yR4Z#nY@p-z#dOdmUvB)F4bn^^CVr?&Bk-d zbEtqZD@o#MHjYTrMcJ%6Q50!g~Pn*&PnW-6ej zljli%GkKZB*OJpDu1}sSaZ&OFLS<``RNIUV9nO}~Mak18KA0qRH7g5~bni7Qw?hWJR!BM-#s;#eNJKTaQidE~zMwX(pyar*en^#kH`^(1J5Q`b0_W%k(+Xhp4RHCrXcoWr6tvJ&Fc;MCk#yOnof6kfQ1x(MKho8C^uE zycnhD?K0(sDBa!5lxL&#NMELGh|)7@nX*2*O0KppN>86<%F5`&GP)p2SM@UGmVt+f zle27Yw3%pTl)mC+Gop`C?BeJeqUlkR=dx)7MawT`*|AaTaJ_7NlrF|)!=rSOEvt=E z|MO*Cj_5*Lsfv;SmsK7?kAr2=fep0OiITpT*-?5#EQ>^2XsH$@IX$k0BY6>gyec9Z zsVR?Zk%IW3OQVN1&~3If+OL76xzyRzK=xZ|&uO50b}1XvK=xZ|%xxf>EH$oZAoDEM z^#;<|QtgWd62Q_xQv-Qpsj4-Q2$w3)G+ZQ(Yw3^%x)YZUXb>%Sl%;hIQ)y}U2D&$v z);5somv(8mgqC({m_npAoJAC9AZ0xk{c_+a@j)MpbgCUIvATAM#QkdfN!+)#QDVnh zx&j}I>{B~lMmyAwBV=Q04%H@u*t5yBeittV=#J(#Gjb|_Jo+GB`1)h3CmYDFVS<*{h( zD2my&1BtBK;Y4QbAfiz1Xd48Oy-um^BrNvxB95!T_n z^$)^)xB;`&7vlK!C&SS=YkdP83^CXbEPwQReWBlSAA6FYqTlexDE9hNwhS}X^Vtph zo$Lzz3U(oOW1WIy*&oe@;2g#O-j4qpW4BQ@HW_c)861_sAD!Sj9HroX`{lp`SWEG) zz18_nJ2$XV>!Kxa1iE%j2|TNX1KYG2fybPyv=M>#v915xII3RBTcJ_<~GqIV2#s6zmV4)-$X)R6K!gio6(!-NwTJ@ ziJk##>Y5&>#mc%S(X>-pV>Z#FX^q`P56m^n2mh;|mma5Ulm$)nKwcAF*+h@SwUGgi z_&jTq18h1m(HjR?6buY7DQMITh)}R5S6jalYR_6fN}Oq{5_?%)< zH0yh!fJI*b&gPs*i?wn7=)@L6?TbW?Ft9dJCdBd3vSI_PCM86}TAUX;(MGY63DMRc zXOvFR&z@CP3HsTyN=t}lw>Ud>Vzb!b%INq;`boV~>)Ch>MFTw=uapRl^ox0=@@yl$ zEv;0RHqx8bN@YRg94f2a-$*~oS1R{4&X&<@8gCNEw{m79{k&g!K_k5etQ^&N1uacB z-bz&0cpZ`5NG~TVt;XvqrZvtLn_dxWuOWS{2<@$*AH6F=dum8JD?+<#?vrJA)zH1W zBJ^p^0vY|J<}t$H?i$j>ir}uAwKBS+hJK{42$pNeiz|!`HT1K2gaj(#7mWbW7IDdD^1uf2J?&UJt?k<)T_f&~lm%gwT=R@}@8GXs6CsT{l>eBVo;;eIT zwl7eA{y(N(`Tx}erBhS+$jF$)M@QC5yl%v`0@sEY5C2MBicdy{?-s!)oo9ycBCM<( z{;9-n!#@$Y!MLzP2SV-34%LL}f)4vhjCZIaR6g#ouf+KsD#gw=jPF1X=?$GbL@8F) zp(BymVILx`Lxos*Jv%A-y~GnM=pnqGolrrK^Y!fb=w4aixaj8+kB!pfWIa13`lXDH zuLu(wFGuNtwBEQb`VWfgZPCvN1GA#^m{=c}5&f2;D$f2P@wMoW63>i&Lx`{aUrStH z5s|ny`h~9> zJu2w;$ojhIFBIz@rEhwDRRui@*H=~qXsJ^HM0S*(p6jhBJw4ZJ(Z7qMe!8ObpcJ9A zcTk!z^!=bsgzV%Bi%|QzqC#x+>ADK~zMrnGpljf1t-_|Ifr_YD~6rs&jS_)jGR~G-oSOz@f|fN#~&YRHk<~Msab7v~nG!=H^Ow%Jl~))8X`t_gfJm~NLf z%HIalJ-vp#F!=A{NY>04lyUa{FZDvEJt_AM?=JDh;c4o|9$AZ?mX|Tb(T2~Id?n${C_i@Y0f0)L}!dM#5vqaIz62(PDjUd0`^bT`agvu z0Q#-}S7R#xe+Iyt?78+#`+RH%aFTtrJ=8wj?rZn353u*KBewddF#w;mMCm15Hb>g9HNY$Q4!bJyXkjT(e-CUCAVvcGo{t1r2!9lQGu#?}D%=u&7~2Hg9=<+2Cp-hk<3A&OLU=Te1$cNk zNh9)`VGUdTe-Ziw+XZY2y&Za)<^p^mbZ6*>(3N~Nz={7hCVx$+G87E{j;#aQgWH3- z;0M9ig3kq?2rdgQ3jXc?VeieOqpGsL|2v*j97@#mo1yV#M1*X6xR0u;5QBXkC zC}<0!BCVo9QPDPzEuf-eJ4FRSTg9er1vCa!Y)23%oWP-_=BX7C5!6;&f8R4)pYHd0 zp7pNZTJKu#AMe9IeAhnbp1O7Kxu442d!K!f^M8ZuO4r4%b5Q}|WY=;3Z8g9*=tlZ1 zd?}C6KhUN026`pEn4U||fH&nhnITX`4~IWRM;(N(c*g&GWD9wPY#>jQRmc%oMs6mH z$fd~lKZ{H!Cz3JbSTcmvkba~WuY~X)+5T^Huf@}-6mTDM{cq&^0iI{hfZyVHWco*W zHNeA7zo}zqh_8%1vi#pO-ZoxFrob9wrE#xun{fkj{4f4B$3KP~|2m_}IQ(C7{P*Y| z=v)6K$Nz44SvvJA^o#U!Q3r5}J^}Bf4SF5?HNE-X0pDw1X?g8$+IyJ3G{w@e)M4In zG{w@e)M40pBZV|9rcyM8JS-^B4J3s`EL9zLElnX03nq0VO(78r%6f#Pkcovxou*hK z7ECK>3W-=uJxWt76APn#L{rGbf>K|gDVB-_Tau($DwaBIDoL?aEOl5tO(7KvZTbe1 zLM|3eEhL3hER>h4q$y-#X(&8bNm48oOP%i}DWqaSbkY>d#6sI0B*ikZ)cMm%ie+M{ z^KF`9nON$4>wc0#CKgNql46Ni>ijaAVu@JleAMMju|zB=d^IFuF?Bmlu}my=zB!Vn zSSFS_-!MoDnOHcqoTgYJ7Cy3pq>zXO(@c^=9u`D1Ng)jjqL!vu7M40+HAxCtSTOl$ ziX~ye^af3_BrKHLvuFxQSWMkPQ^>+%tsjyUOT)rx(-cd?!uc$vDVBzXZWqxMOT)sM zy-QO_!(z6_Xo}@w;ealhVtH6l56~3L!-9H{rjUol)E{VyC1OF{LsKjf3nQO(GSGsev?k9aq+UB>6jjs7{mDiUTen$!oZ&A5AV2{lB2e ztGOawGx(+R!Nf`Tp@`pc^OxjZOKb{ zw*e$MpNnZEc?lE2N|L;oiz7+$A}&HS`CE2a5b2=FdEDeB$qTvYB+0p4OsB~UcqeNK zO`b2*1e!cgsGDhWj!<`!%SiGB z-dIbL6S-JKlgEn@ZlTEuTxnO)(LQjU^-rs^K15G|8bB#3PjCPzzdj&?KOSyJ%fUlbmWnY;l(4R14yPNP=o;)p5l+ z)`HeDn&emuDsh_RSPN=yn&emuVuz|E$663Mtw~^wjf`s!u0dggrX&Yj(7Kx@0XEp& zxY3+!!G$!*$riMh(A1MaH9b?46AmKB-Ia61mAEZE(6C~(1l?+-h!G+lN@hBPIxm+2+CKqDjs+4?T_~!8UZ8O_D$x1g0R!27xKa!RAqZBuRh`CQKU6HIKQK zCc!mL^{{Ed!RApuB}sq{-A0onxCSwiCOFnS)^BNoW6gs#LkW&G&mfWj*3j!(lHgSH z=p+HE!P1W=IMh7)2Abed^O(y>0#HNaG?D<*RAqA|NdRdOA(CK3Q#N;!1c(NqkpzGS z(MA&B8AKUP0B4%A8GE)Sz%wZ0d71#wpe&pMBbu_goFo|0l+BGa!HA}8_U|JJMl@yf zY?=VkVA9u-1Vb7cX@VgQrUsf|NW-WP(F8*pKI!iy0i>Z@Elq%E%=A~90Mek$Z%KkN zP1ziy3C1*xaTrZ7reWAwBmt(O(MJ+M8iYj>jA+W{5j4Swh7ZC8WJFUo<1#a%DVyee41cHQ#QMM(*z?LOh?lMBO1E3(gY(KiZH%T6O3pW?h}## z(QxP_k^s;k>S+QzL!0>)O#o=@$Wb)Gh^A~-4VvIYo2x!Z5}asrac?-$=DKNu6K$?_ z4M~7#syY{U2|$DJlLUAMfeXcPHWz!7CV(?dovZdC3GfV!xE35|b1jS31Cc9s}#&#a12U&mn1mI zs>*4CgRIINM-v=mRSM=OK!(r4B?HGG7SII8SQY-nN&sUR0)I{=z%ex9dUA|a;kO_G zjImF8mnJyJs<7o@f^)12fAl24F?Q&=G{Heur94Lx02u~ZNE4i6Rr=L5!8uliMM?>9 z42^iQImW6+(gep?mG%KmaEw)vnKS{6u`l%pngGY3^u08}K~`lgq6vVE+3;X-l2s`$ zlLSbnD$8+?0Wt{OTE;PDIS{}&rYxV1ATf?pmTP@!f`JU3wvYq^nX(*r79fK-ohBH^ zl;!x7ApwrTG=(G>#&94_0Apygt|WWFF__Be9)>YxIo5~lVHi`EV^J={n6liUdw?;t zVMp~n;27)mDA@y$p%Lp;!7+#hbPq6wHvKxXhjVQCEV74lY&q7jf@5gIeye)`GAQE| zx(6g<>SnqJD1*Xoo_jdUmeWmS4_Jm_C(=C}Wy_5=x(6sjH?|NKEMo`s&^;Vx%hf07 z9>5GX>k7Ju(`>o-NV*3!V>X-|$JufNi#~xf42*TboMy|lFx>;1vEjPt9*(o+I#%Rz zoGmw&BmZCd-t1QXw^{4=xR$s&U6;EqM0EcY*F;yVYdE6&)u_woH+Q&n`VTWhzmjXw z-=dr7v*up~PqU+hvZqx%GreJ8Guo#X29 zPFjHq^_uyeeaQYCar6)Et@dX7dHYYO%y++ihkX-j6kH51#p&3kV2pjNJ;biD``Wf` zT0dG}W1Yet>=?M!+H5^-QbEX3D;@bC8*{Ga*X z_iypP;@{wZ+W)AmPH>g~60B4BKUks9eC>Z*qtE5}r{@6HD17F5&+`^`CV1BKM^BgM zPS4H%#R>&hfxzSb#eLBIcXtBy2e!ChHoM*H-D}({-S_fZjlb>=i28mjv2I^vAY5qv z#yk~O{>EUB$069`@o=ozSB-D6UO#2*GTt#Z8yk$LjYp09jN6SHjjOO$|6Ek`pKOdZ zjx~?>XGHAp` zkLAu}wW6~13t_C#I$J-N#v@z*E{)2Yts+9E_VudOB3cTmR6j2|^!5Bwz1@*NSBn6r z+Sfg)x<^{+j%pElRr``ZRlg{$`We-m9NADUq6%tX^|NXbjDY-e^}DizI^mh7N>S}mfmuy$9Azy;*0YLT*`_MKL}PJFYzQ>sN=LhT!_-X?9e)vrqx zsuuAJwQrwlk=U>HEw2^{9co{zdb8~3s}_kQYG1utMBdekz~5R^;(RIspSFqsqFQ0U z-w8Y$p4Od?>~0k)9co2qtB4w@6^mMBO|^=K zRuN25D~7ga#MiE3wIb9iVoGX7d8-J&s1;?cA~=Ju*D7L9YK7G*!YgWpw>2+E z(OX5X48BBbQk=};D6%+QO4qBwsFd1?!A2?7fx%Bvv2UUTHfRq_(_@qASESI4@$N`$u5KAv4wpGYg2T=lw?#&uQlD)-UHSIKMNNB308 z3EM}zzDnM`KI)39m*rvVSyl2*_fd^1Iive1hpOb%?4zWrM6QuqX$_XwuhKVIMCa5> z@8EsndsXU#<{W@Yo^aF9s5rL?@uSeKXdB2XZqPxYp z4G28kB4@yWz(Xx^iVV<~waC#2X#HA5piCWr#4kBb2PoYwa&8V#*0nf;DG#^Evmeme zBJciyg)Q%iGZ}DNi=0CPYFp$v4G6W!Z#kf>MFi>80d|WB=BWexE%J;9cw0ntQyrkU z$TdAm zh-3;_mqbJw0OaDx3TLoeBg-B6`^aOCyd@&1PtdwKA_A&7?52pke((=PL~aMHH$>Ju zhg~0$(;n`f$lZ?hx`<>LoJo-`$2uV*NdiAnU$iwuuh$Kl+D@NoT4{BFMB=_O?i%8rBH5!o<0$#g_ z$WVa;PmSC!2UGtUdEAk2MC5}Ae_iA$$NEC#5l21~k-tLlC`O)ltX&Z~KjE2+JSwfq zw-Gs2;Y5qv>sV8fwT_HO4TjSk<6e57e%&;hbXu(@)xP*M?@}_8oV$fksO>Ak-tR2=@F480Y73yET@4pGV-82 zc1lD(sKLpRKT6w#$V#b>iHHOOHF$L7VQD)uBI35!543itE`wFn6S!=KbxX zN6N>&zkSq5d7t`|0VCyf?5`$A%G=u?WfJ6s?yuZB@LNg!z+2y&pgvBg8gbg{Rppo?E7g8yz&pQe#%m>yh!~zz5B%{^(*(v zThg!0D{ojo+xwMlwY(xvM(yYIicA;`?v<$O>m}7&#kKD1HLG_x(x{eCYhSNkEvePl zt5t7d@&9>Rg027m($3nS*zekJ+ppLg@MgW*e!#xd{ynb%FwdU#YX-nDJB%6thuL0a z0DN!lv+}3{Al|ND;PwBy{w)LGOlyjDoE5VgtUA66pr5~Cf9)^%lm1=)?Z{r=h*|(o zVjsYJ{kQpVL=M1wRKfqxIRK{b$A8OU|JPao*U0*Rr}-xN#-SQO1l90^zH*=2`-}IG z_Y2em_y}3-uX}sE&w8KmKI~oYU5ttVtoGk5Z~Lzq0BkS7-pFLvJ^%20<;mlX`+Zpz zV6A7h=K*8@-0Zo=)8U!xIomVcbAo5IXN2cyPmQOq$Mz8SPwsErpSx4;-R|w~*WEq5 z>L1$;a0zxuxDvGi&O_C|Y3}3Qt?uFOqfi}yRsAzi_3vx!fRJ?UatU$j9Ve@;2Gb>;64K9wGOlR=`cj1GtRLMYVu-tfe@Pw2XJXqLNY=b;o!7VcS?uBBP-ot@_j(k#5QnmP|5s4U#G zXw+$zduQiq7mzIX&d%#cv+&NM7d&cN?w*}z?Vwrio}H)1X%_BTw3;u{EcegOL!H4a z_s`BV?xb1npPi>oFtaEJr*>4DSym0Mql08o4NmJI5t2nYIITl@!OXIHa2+8t%j&^( zc+D*8!KodcW|ozM>zGcmtQ=g2cZ-=tIXJb$HnXS(r*>ROvaA?f2i*Nx6oXSc0wl|7 z!F8Y*Nfx!>)Q&QeWu@RcP`ED3O2Ku&F`8wi;5w8WNtTs@>p%*s8^RksSa^>LCx zZ6$~uB*Tg;bto^H8CG1WLnj$lT&Y95z|5eylG-t!WLRyb4wS3Qu-Zx;C|8$ZwUs)Q zE;GYwD|MVrGOV^z2N^~(thQ2zk~A}{wo=Dbl0j`HoYY$+!-^|)SZ|XIE3VX`+)pwn zu7p$2Nd_A|!m@#6*iMff))tbP!!0kHnRD4N(?|wxR#m-Tr0bbXz!Yt(^;2u z%*<)*|8g^PD*M0D%uHwh`$^^$)=|HaWTr9U?r&zMvX)wsnZn2VkYrBgVi(Dr#Dtb6 znaNC8ZF_KU4~Pp>l~5+WzdFi$RX3^rx^~J zE`1Zp05WL9O#@>f7SRkxOcyGmWjJEGtk*~eh(RN67YGAk(F_j&bs@(l!vjEF%37M? z0iZ7RESf<82;ULgv1ND!sLT2*&F~0N7Xp$QM1atW(sdbxfY`OzNHT~4VPMQ=9s=q@ z3_im{KwV~@W_SpwOYNW;9s=r8A0`=ufN;Phl0gIr0?!o-0I6N|B*OwgYF7)%umF(S zHGpOi0K(@OBeB&jQ@Xy2WDo&TRisH}SO7@XJ4uEGfK(mVkOhEL-FTj4G;S)V8I_x? zS80YtfK(lE@-&M8srn$2Mg#~#r)dO$*ywvnnni$Ay$?;Z2#~6yQd62mfY7*sq*(+= z)d$ctB0w;?D`=X9fY5C$O(O&Zg*bnj#eh_O8cnkp5YFcdnr1N|buG?1jTn%st__hi zLO>91l12mw!b{RD0Hm(%BxwYIAf}Tv;y(~JO|$Tix|aB9nuUL$+DRJWA2d#(X%_ua z*IJutnni!0Hjy-3^na7X3lvOEk@*Kk8b{wKSqX=vGeBoJwmkKBv-J z>qU}2hqw7?`Zv5g;*IIEh5C@B&*F_1P0ti#-A2$k+qpu# zF@3sF>uLHl(b_}Or}E*hCF$v0;Fg@i+g$h2^fb}y6`GzZ)XOwIMX2AA^vV2ysWg2O zGi}oGp_92n`Ox$v*0?D|(+TYzUi^tgsV4(i$N~EE9`okZsFZ-L%uR@vr<;WOnx-4M!XuqNR@m;O=@DF^@L75|SL6+nj`BfpGa9(b>ZWOs3|GUq zm!>(&Hd)WpG*AW`YVoBx%Qjih&@@;EoAn$`17=L&DsY-@G6vB!r`aa;dy?if+XNG* z*(U7sn&vdyG>oP>%{GA$Y0!*~v5usHGhBJxN6-u=-9yqGXPf$wG{@PdNhDp(JK4UMaNuf^0?W{d za{1T7~$( zdaOQJ!FyLoR$Tu9Z(Vu)Z~A-Kq3vZva@Xi9@W!=R|DC=-zwpWU!JFFY6E3J#H zS=MRRiHN=rw~n+bt-~z0|7ZU<@C@uh?EPPA1pa%4K!2luh(CmN0Y1O#`xbiwq_8*M zcHe8h7k$rQRX~^TF5mBc*YN6qGkjCAJ6?;g!B^+2^!4_6;14+H{X13!eBj;UeHnWJ zJPB{W-B=HBjrUUT`QDk>2jFQOTiw^XFGJ=38SW|W@$P1K#68g67ajoJ z^}Xv$tN{4PwcYhs*9)#cxgK@hYm7j=yyZVu0q6~`cGqOrSl6+xqxHeax#**x;_|u_ zdI(ueN&2CFJa$8TmA*jN($(|ovE5T*lYIdzer$wBftd;q)2cJdl( z1wKO_Ctc(&atq%7=aV_)47~l1CnNDn6ea^uE6{EJf|~zdm}&DPy!pRw_L$G00__9l z9asZ!rFoG#3;P8+c>^_OU(+^C<45Cbqkt6v?;39!8&SdGapOT_nQ;@|^)EJN8>btS zj4^s|oxOj4r+ukqwNJF2+MC)Y?KxxsJfhvBVMadl-v&PaZ#4)<+I#xrCtM=@aPKWT z;bLLjS+;zl3@N==Hg95Bc6I%6Vy)A`JK;ic)HYA_Fsby0tZ076b5`>pDb>%K2Rm|W zvmELj<<{mS#Zm8E(_AOj!sc43rZtD8n%rC?Rc-T8QiYn2mP&6PD8}Au465uWj9c3( z2S_!pvcFWdl|iXOm6cNIm3^hsDvuDu?Cf>MxTA#J?W+mPAi!>4C@iA{yM5JR8F$<5 zs|w4A&2C?1SjK#I`;G`pcja#Hg0S?^@AibkGWxLFd^apT|GSM1Vd<9NZHx@dh|O-T zE-byoyVYIcx8>=mFNdXPcDHJTrDK1$@=;hUL{@iqhPQ~XvwKlk`i^%m2upwR?rGuG zvUO7UNvT3%=`!D49)3gG{9)-6-mQoKB0hRoAk-+o(yl;tqYS9*3RE@9knb+{oJJX! z+(lk%lrGv`=B`E=8QG;>)hHtkyVOvlj6Cg9zHOB8<6X+#joZZ;?CNYxN;SDrexqF{ zG|Cv=u45Zz+-}z~jWU+EE7B+%)+MhJbxZe9py!jz<(EClz4@)(?`Ch5&n(vpYw)qjMLd}m#)u;JBsmhyINToM- zNu@Qf6rcB=I~%;tk(uC4j!XydaAYcYy(5#sPDdt!H%Mv5gSSelKNVc&$cutYq|~kq z-Y%tjZt!L)m2B`%N8TD-EKcmbiNRZ>8WH@xROP|jr1A%sN~H&H6bJ7N{4REjBd?7~ zyzC5I6O-R?XJAq6E~mrQF&RqT8MrF;q+`7@w$zaeV=^?kGjK&r-jkiKb7Rh@(Iqh% zdE7}ph{-#(QxC>u^mC^+IVQi>POU9=n;cg=CMK`OPIXsIQfa69*OJ3C`C{-oTo882XmiB`HJ?cVw<%pCdnx1|7M(K|aFU$cItOv2KkTj@%M8 z9r!ZFyD#xb>wT&{*JsWsyXt~hJ#WX`x=Uld_L-N z$b%ZR*Sh`G?ImbznnI zc2F`6Upg|?AeppHS=I23W4%4@6yZ^Dw`bGAo_67D?c(b2qkG4nrnp;n-pR8}J&#koek+lPF z_ZzVbz!TQP)^cRmi}n9=tTU~t)s(f=c@YK!j#@NfG7yzCe2|5@z+2EUVEKgI9V zt~E{V}sQYL4A@>*VjQbP!PWPMG6W}@blX&O92a*3y z_d@qY*cISRy!9XFj=7I<*SRa*z1=>yhWGw`uAJ*r*SoH_TrXp1fHkg_SowcD-|g=b z*BsZG*c(8s{I7FWqK2XuTY0eE{&I4+Ke0Q&f4uKsO3$Y==_&LCItD8&>ggaFq-E4i zej$g*7YL+$Om>nt$xCD%d5Ww+%>Op*4{#N^1gk7&U^}`Ai1;^Phk#1bn|O(8esAtG zbJ*waUGpvTC3Btml(_<{1#ZJz|5ex@V2*jFIRzC9Tg(Qt&aA?E0cYiZ!T1dO`)x&> z{{>^MvD$b5Z~iwM*I<``3yiZ7v2T*H|ft| z-M|X{5BhET4f>V(CD`5X%>QNOzwjHdl>=<${}#s|KnifIs%rZpT7X|wQ`@o8Q-M2H z+kLda9joowd8fb~tL+voz_E&6wuctDXSJPF&^$b=u+hCV57#Pdr8E!UDzmMlc{o?0 zu(T)7y{qjup?P>$VN-4+dG20qH)$U3Rc2a6^W4AMj^*ch_*Y?rPc+XRtnCwNo;z6E zvDzmO2P-?Ehvea5#a9?a^Kh`jWE5$hdsy3%tdNI?6^&=nJa@3R8#8Gh4puhoK$3@t z6^%O0!@&xZb}G%o!wN+%r+K(op|CnO4<9R(?IU^SWL4WI&^(;1FzHv(JoB>RL(ipo zcv+zkz{@i?tJ;1x$-~VGF^S~iWre_L!^w(HE*Hr&FRR*qCC$Uj3X|<6dAM0&nn&{R zvO-Lwc{o|o=EX_C%c@}`zgZ*?H>-+m>S-QcR+#jKG|$|uYA?9y^UTeP&AlI_dAM2G z0iV-6_p@R{b(-gXR_vTk^4!nbD@5|#&)UmP^YF8>(GJo)ceG-+agyhb)?OOT!_kUH z8Wt!*S)?U~SEXWRv*?en(8Lw}hUOc&Vsq_SVcSphBe>Fkq50uL{e$MCTp2jFLG;U!{4xB) zFcXJylZiowiUS7Ie1t34VKiSaRBxIe!WI3N=8xvee2V6e;>vd%%^%5?{v^%UafOly z`N2YMB>6D^u*o!E%T2~Gk{`rP{b+t5H__cRU&ECiC;1R>#PzD?CJW!DiYu3w<}0~U z{z39b@NV;HegHRN6=^=mO_*@~g~=fKelRI(FwOeHq@ZFw%~uF@h~^LHimWI3KD=9q z=6iFKrjh(%+;l3*mveCj$(M0~ljtQzI6(3NZt5g?n~UirZ*gJMykB&}9q@5wUQP2} zu9Syq-oq7qxOq2M8t%7C*p9+VI??YT)NSFzmC-ySo3aLrP4gfd`z8lT9%#dt!#rhV zLv?hTXJk`QkDlZ~HkkZ0$H0aIm(d&p8yZnt7hpqUEzL2mDQmR5X^wFXqkczojB8Lo z(Hyu2MQ$WHfDH#MqB+JjWsUka%`vViD5+0#;2IQy4LJrj9Qse1V_?I;_t6}{#?*T> z$H;~w@Ue_+==VL%fo!aGE6D+E_=p8G$H=Cv@vfsekPQm)=o~{E4j4~!3~jJ|NOC|M z4zOsBkqzH#Bh7(qP)LmR%%6Ep|3vDU9?4s2uUTasgNQ`YD- z$KVFj&ol?PK_QJO2fCqg0?h$#FroZQ4s>JPzM(mWH=J-c%`v=TjJ+hs@TRN@k{s{` zF^%RJ-EbrZ1Km_5UP*HdZc5yW(;R~vRF>u#+?2Ta8qEQ2%=QJ%fo@FgqdA5*sK3)3 z!~05_O4nqzEJ;z*3i zF}5l3Hkt$5STBX<7~C*ehUOUDpgyKK1~;6>k0b}U;eaxd1KS`@pgD#%oOKt?F|;Xh z)V0Ymv_aiYa|~_RN$*~oV`#%@f1^2|jkVrGbBt}UJtjAvur@jd)@h*kEd*1~w(`qd5jP40b2UF|grC znqy$Yso^RBZ0x`zXpWODj(yQ`oNRHuAI)*H#Wmb_kPZE;0?l!>#jU+G2eiRPFvGz% zDE7brZcuJ~2B%wGT}yMI8*Cb;5yxA61kG98WbLFm&bPRgqdCsEIC4L7oNsZIImm%; zIOEYY$MF`oJ|j8c4W^0sD^`qAqB+nFAAp~q9LHPScp7!TdAC6{2fCqA-A{AC8NxGPDs9B^@CAI);W z#r63#3&7zB8lzcGxVY;e&2qxUt#@gb6E04t(JUui-1?AaIpN~&GMeRti<`gDEGJyt z+E25baB;GVW;x;F_({xOBF^d)k_F;$$~w(*!o~F!G|LGWM|FoRCtTe8gl0iFoRn5Y zvm9}83n$MJ7q>p3S&q24^(D=6#KpD8X_g}{uGP>iM_e2gtFjz%arFSr0-YMSMY zi~H`SSh>e;~+-XK{(4yI8g3&uepwG@bhXrWn2xZNZR!of6vW(D97YR?M55tU|7 z;$wN%(yRcSiIWB3Fut{iWEtVqc_Er*gj45Xad{SmV~M=akSs%-I+3~)H^6`BR$pxn6ijBrTky@O;K;naBnnq`DT1~9%ZBb+)9 zQ-Bc;rf+GM5f18hnq`E8dVpj>ICLwgSpW_uHA%9JaOyli%`(EN^E_FS1>s<-rCA0z zd?b1Sa4;>RS;jYvbt}n&Z!q~t7I=eLK(nA5YwIRihBtMdMYHw7w3KEU-eB5Jv%nh^ zYW-vx-*6VI+4}#V%^MYDrjIfoa7W!ox~s5ro%4p8MQyqr$V~5ct#z$3Z*<*0-y9T(*T$KJqzeb+;9rRy!uzQ-WM0L6)w3A-JGt*B;4S;d9 zkq)6D)TZ-Mm3)i$(-hf7-a$_K2C@ckr}vO0q?25M-RovyANmu?XfguX=pobqu!v#) z@T;#P{%<)5x7yd*m)YmrGwdn$c=Ho8ZoY0e+Yx)9-Ommn6X7T9SXe?OfcLGpt(UCl z;H!AZy34x7!mi!cdDe_yJr#AxMPQW*75^ds=UAoip?@pt0Ic^v<$uI~kAI23(|?8k zxBglF)BThE!v`+9tT@%<4s3h(ya>ieB_XAi&&XZ;qiMk z_jm5S?ljgVY(rhb=iN`6e?~QcKfpV2oqK_MuKO(aH018j!2A4oWbQ}Ifr#Q;sN?s& z@uiV5J~Fl&f5p4}pNvQUrHbFV#u>)R$k!if3^T%blP@!<{*(T-UO?8!yLgY^sQ(3d z`VZ>M^qcgn^o#Y``sw;)eVpE;NAy8@e?6d^+7GDSmqYA7uDzjc)SlIz!0P|yn2c@| z0C*Mu|IfewxdQ)BTmkMFR`zORju*~!WpCMx<3)@~*;_wBxb~I3#wFudimr#$XUE?r zrSjZ(5q(tl>y=}Lqg&ap^&Tt20Lp%K^;i+tP!4MS$BM|WvNy17>=5n)R`!>L6{!MY zRVq8INoCdkLn>eGk5YNVrc`>Z@aZdGx!e0)E>7ty_v!tvkWxRR-=(7KSJV1kBGr_B z3#798T_%;@Z@yGozYcNmKC{a&La53<^FhBn^L^$6ei8D8^?tty`9j|3msez;d9VL^ zXM{iaMKo2}XN>fVptiD4U+rHiJLs$Y_erUp;ujHeWuG?6f3LJ+HwF=}RQ9RQ`0sJ7 zXZhtt-=`$~H;XghH^?s{-O9cJ{u`yO+<&K3WquK?RrdM)%cRZi7eP~;lm8Ym_Lt@~ z?^;Jr^*$q|I@9|nN9tY?l2yKJ^gb&_`m)yh7pcm;&q?L>u9r&p{#h!`yG{(VHxO== z^I~tHw(%#&I;hc^Z{B@PA_}JL^&HtGf;*6hHHmhZO}llIq2)C6R}Xp%j&9~zL(a8967&E#7)uRk~$HkRStT;tdmdg zLGO|}5z&Qpew_$sD+h_cZjc<)AvSPCfw#RZpD=IVuOQtrMY6<=~_``5+yfSl3%zgM+noB5`IGZCsR>LI zC;T-D1&(uMbzrjSd_5vCN!mgIk-nmQT^^V$ZF=B%G2(vj&tdtCxZnHF+Wn68r&{@w zxnFs?R{oytS9)sYecG?AtCbggzw%7&SMo4rMXg9-Q1&ZbwIWdf^8VVd#pmwt49m;A ze^IUcjoQDkR$l1+3u=Fm{W`+(w`~9Pu)O5^r`5{evi&1!znA@LYk!t16sA&@*Z$)1 z7S(#~e&XGOocOKY&E5^(HHee{!MhaiXaB%%ZwsxA*6qE>JKNf8eXG5WiuseY9o{im z{jYdOc#rm0WA`@^IcIC;|As1cZ+l+$tVgE&O3%HX+dMaTuJl~&IoH#Un)zcr$702N zwWp8A>roIj|JJUyIyiV=X%2R zkn1kjEv`kb`G}UE;X27R&eiA|;tHW6p%1b0Z|N5(_Pq<4@tf%ex`wXcHS({g3+Y94 zHeVm#Mw{tSL?VK;7bWCJtd1{`&&d0~R>*&p+=rF%Hpz@jsit z?k|W4`E%wI=0oOP<}KzTbH0p^A7}S5N3uQr{>vTxUNruU`1t*(sCR?0(D*HU8popI z!fg9h`)F;oG0QmJenDHSWs!lg)_w;&Fif&f*X~EH!(Dc@!D<{{X{YQjw2$o@c|^S) ztLFO|0fXQ@{D5B46R5-Y4r=MYfEDwr^#|}KezROJKLhdf@p?1f#0TnqbxYTgy|Ep; zH@sl|$$Hef*IJ6)jmxbIt+TCDtmBcnaSV2D2wJ@?;{OqK5%c~}{X6|{V8_8{{Ezt` z@QYm=SjC1J{;B>6{uY0Ozs_Ij@9p45kxf?N}jX+mx4 z!?sM(X;aS)@RvURl&IsBo-w!bxvGu}wH_(e{MN(8Z;0AFVEldX7#NzWsmx!ei=;G;_RW=2 zTj0CMkr((bloBhO#T%wNR{7W`{+5O8_KCmS)UgYFzZIW4w#~Ots$+eZNj2PefmFx% zu9B+O*CAENcePXj-xX3>KJmt?j`jJ(TdX=(_sx^7n(s<+Vq?_L{N=(pW}#nRzcIF7 ze(^E7U;LG%j`sBrUn`Co?duo*og@2(#oyiNP!Se?OG6$Wp6_(%6P6z}+SfZQzxZh1 zVd1Ns4&`C-8i2#f!b_yp+ZdMDcC_d6@D0-Ho*I@HbhIlGUM#IxWYOWs9bxhMtd7<{ z3(H$FT3;IOlpXY|!}9Ko)*HgtI94Nkft1>FVe!taj@FFuEz+uf6u#M!W_Y2LN-8Wb z^61X+QgIbWPY%nAJbHY1fwZ-Se=k)mEN{^0+OWK7qeJ1_WNUd?yn3sn%fdHFn=gF1 zRC@Tg;)7d_A+gV-)Srswq*UUuJ&x>-CB#v!lVhJs)fh`lRU1o6H6ZqhROPXZRQ^~> zDn0f$skB&Ds8MabI;9Hrx>}xWEUF93R-}$hN?TjvNgRFFA5d;AKaS4s3U1Yv4IYjtac# z$dd2*mtx~E31J6sTWCI_IThX#8utlng z0r3u}w)76XCvD|{ccdx{Y?De4tQW(?yr*!5UL&89nD>+#iL;n@T8(@rW8SGX zbDYDb)X1kV<~_OQY-#nZu95JJk(X*DIAUaSjpRbiyrpKA?5kZ_BPUQyn^JSWw5ng% zTzib_4WS~ z-gM_niYqr>x!o3Tv+DRxyO+2!;}=;n-Fo~2OT6K#<1evQ*?PKdNj1e5{tI<{t@Vqv zg>3m_kFDS2UpeE;ZC$pO*;J~4ExZ=$cvK;mHp`NK){Xbt@(+dax^+OdYPMILbQ|d# zkbg6@k%~aTu^t}K9oZ+)*O9#geH?jMz;tAJKyzf7{jDQ=+2W;CZ6kpIb*y$^pd+oo zk&g5ShB(p}`1Q=Z0r_WK8}Zn`$PVV0fx{g6a6pmLSYQjEgW6_X67W0L3j;?x@`OOG zBaaPuq}2D?KRL2HFu;*>ZQ(mm+w?hsYR6g`IL474TlhWjm+0_7m9(mF1mx{%w#Gjs zE_CyV@m*3)9RHx`*i7e)e?Us}>GAgqIY!+&`UxS&X-4Znan!i-)*AWFG0tcWIqi41 z%Cj1$tZS8@KMreKD&k+c6vZ_^nt#L-AH7Kotb*=qn*M+U}cUKDa0OGDU;pbrM0v<)y1zQ(zH9Q?oJ;49ieZg`W^ar{h zY000__vse;3cMXpBYW>YdON+5UWI)Z=Fl_g6gq*9qEUJz{m(lBzD-_6`s*62-ug{#58|2zc!1g0{Ef1&3w&#(fkX%9uJ$#&Bf+*<`w2| z&DmzVd6L=2y&i+jBh150FZL1m9yH-WiyJxHx7A+-wKe6++ft9sNAXo+W5^%LH3ADsht9sO}w8T@ZdhBVmgw!f_L=P?T+^Qbz<5J?e zRXq!73At6QF-1#Au7WaSw8XQkdhFv#iDy^!=(NPMt9tB{NeS6i_&W1xi6>X}*r(7E zPp;~*C(;s6uIjN*pd}<%v2nXd3E5RR0O!V%tCSvlGAXg-Dy8RaQew$fO3#&~#FDF& zo@u0ni7a14#+FRjRto zO-ekqYMGamkXi*xCn+Jb3Sv4bA+ZX=CMBL%wG4NY=T$9Je?v>itHMZRAT9C4s%6O1 zD)GdsWo4v<#3~$EPD(tlYMGywcwW^qWg98+ysBlGBgm`52&m6g;)zwuP&%c=6RVbC zX7I$SW%hVdLShxh!hGO)Rm+fcS>kzB%h)|Vl8=Fv8>Kql?OIwIEQZ}kN?~ro_pcSE zf6~$*(Z7q926Ba@x>Aj>B}pm7512|y)m+rmQk7^sL`s$16eOi1xWJ_!z{ECO`XKAH zjeJZ?{kcL;aj73y+6G$cD{Sx3QUzDWC|Ww4D^j4PK3v%?wA5RuC@CGr2lmiXxiB@7 zQW-aO(o!#Oa-Bg+0d5M@k}Y~+B3fLL4@t?-8w0fD<0fRumAqVe7toT2D-?Arxp}v9 zNXf-TIW1A%hOJFYge$w1mQ1b)9xy{FJTAIu9Y#wUSLR)`q;jQSL`#Zj9Yu?s!WN{( z>x8X=7JtW;wviOClM7MfcyjrNyq<9tY<|D-`xv*$)A#Vc_idS$& zUZus$xdI!C3qrc3QUun}4JJl4n8uPKs0PzC zQshuuUrCC9nyRc1ks@c>`c6^=(_ooSia;8KO^P5IL>Vn|pshzmydnqM`f^eP(9qUM zi{P22toP}p$bq)LmKFgtnDFCJMu`rBq3aK$@nM$aY#}OjAl&D^g@kQ%de1 zX^}BaDVe8{B4e6TDyKy-4JM?N78%r(lAja-H3*zNn1(j{NLpl2Q%c$uqzI^?5jPo3 zg9)YBihvqSQ%R9Cts9pVOjFhF5G`_~brVX8KpISLQshMI_L3rq1`94X2U@pHiyUa( zzA{n-(9niy!+F+?tj;2M29rjL9B17DQsg-6#!cZk>$bzB$Z^(v4k>b+b>sU1XPVk= z?jS|*3)~&1}MGmuW9LizVZP$?^hgml+7Kd54el#fpX80(~d9aKPfztrYV46pYV414U z!Sw^mAaIR1$>v}ta+1x#Oa#f$bRj7MWDxky;1~oh8ZZWd@60JSN56;^K{1$cD>=mG z*qG&j7)%x^fMF0iDF9&*6KH`GY>qvU7CD@lPB z*p1qUn*|iuRihzNVD)vQ>N92m^>x*#+bpp1x=}AFu=2W5yTUB6^19JZQefqEqjohZ zu=2W5+@1o;>#9+k6i{7Pi_)V=ftA;dS|^bLE3X?>A2187ylyl=3aq?t)DDsYE3X^H zqgY_&b)z;;iIvxl(t5Li^15oYoD^7f-6-vC7EoPRjnNR zyN(oCaos5XR4bskF2sjsfmPRy;!2^qF2?Uq3aq?tRM|obD6b2#iWFFV-Kg>!DX{vw zQF{O>u==`D?EopDzAl<}lL89tYEjn^Qb2`W47`REP-0h$n&*=OtFaq(H<|_1*j1yr z7bvldVX8=h)!2=qer6i{PVo6T+titMVh(UaBKosA35YV6KN zxvv7Nu{(PvDWJwK#dwdoE zAP9{Vz#oVcNP*!;#h#r7;0L0S6c~L}?9^EReKd4VkOIfgX54My2W=xrfzt=uVHQ9i zbV7~R0>{s0+%S%x_DWjd_-WUnfFCS4)jDZ`^QYZ7ix$8i*pwG&0RUo4RsE#E3Dk}g z1%a?s6;qu9s2x+B1E_sEDF8rdvS|VQVTZYC0RVzB(2EnOeF`aX0<}j-0R%#Kd}RO# zB0vkAKkc@Q7C3*}_3^a8`P1$jLkpZg?N~Wb0Dmy5eiAKk0JUQ!YJmf&{TxyNfG}D) zEr37hrTm^003eteXaW3z34aI`03ayuOSAw2G22vH0D_==nEjkV?fBZ9LG863?Mvm5 zcE6#0>||p9nx)-Kr`kWYZ}=PE2j*6Dv-v!#zCUW-Yc4fA&CAUT&9lu@u>X6Dc?@FQ zL9>@hQ2T8^c7OlW*lE0B^q|uFV^{%x2lk9(d%yp$S>s~;_aXfYJ*|JF@6cb@U)2AM zX!ZU2?fMP+LjAY;Ir^!-op{UdL1n+kd=F^%yT`bXbq{gZpmv_^HhJ~@B60#gaBX#M zc0G^kd8=IayY6t^B;S>1xTd-$xLRDtxWcZW?+#ZlZMBQgAMv)Fr=QZD^bOiWpF!>X z2k0HX8}YV$C2|91(bMROT856M!|}FUNe`nQs$h-6UcQDtPTn9J$+P4M^3cCk%{z&V zBaP(W-jwZXd$@fRY9_SG>It{l*I<1@xBX|m&3?>&5PK_#nhPJ<+wH&FeON|?bqMto zlGcaVtMC+B`X6iMbsqk8i z^bGY3LL~zmwG02@-sjG`Ki2*5S-j@%cCU4>a^I&n>J{2YTDSI^`*!z@*vsG|_bm5m z?h{Ry@lWG`Q8E(7hsHa`zpwaTWL%26{xgkf#_{~U{z#+JILvVCKkMHhJ7JIhzW%oU zlK!0jg#M6zmwpR!6Xs*B{~7v8ilQA-yuyd5tgvPdd5^oTl$FZ2ZJ%JSa?h3WuwCq`c`A(ftv-=`5+NrW2&{Hk~b% z-ZWY&t!ai(5BI8hL8?H_CV5V)CmvVlK2f1?K8RCZp-&z1s+8KsAtLUitk5nV(&JeB zj~DJgWrh085D|)lymN>M@j)6xL_|zkp`?bqBo9-PLquo`*4u~d5NERDoFUt#nl?mU zk`+^j$P2Mz%8;G1b>xtZQZ)||Q7vUf!w?a{QdSHb^0I6_a>y>JYKOcf)u18rvacu~ zA|hSN3VX=Aveg>$x>WulTcz?1c~dI)koTq1hlp^T@<<@sG*f)3M*I(oyPC#G>HevySxWM0 zQM34DSaEZGD9cphbDq_J1W?Eq_TWum5YQbbm&C@JefLy}a2gtqbaB zIM(y)<^5S{omVgK&q`}f{T$iB`_KA`j@(}_XYWdHv0l#fmEQjKa^|dbzf~{i^h)}D z{YCOHGP{0?BY#sb=iW+leZ5HNP*$3c)yrA7(!9A|go%}v`nq}%M^;v9*Vc=OG2{jH zr^vyyQ|eEUQa!g`&b^gtpL!AR1!I4y7cpGOo_cw^S1Nz3myhF0rK?^(Vk?zf>qW#? zS=m`H;;PEZMfLw5d+!|{Rkiki@4D8MJ+mj72?hdWNJv6}1PMhn0qG$$AtG2n0Sh2a zL6IN`R_whXh-eVY*g-{9EZB~S4MiXjiddN5^eEVV-&N)u&-1*`?|RpJ|C z5BFMo&#vFS+I`;_ip#ieVYPhv)=jOREp6kf#c~d1-RSBu(l)eOK6C4aR8Nz(fz|Q} zU)R5SxU`j5i+N3DU0L-cX)CD~3qX{0#nti|UgxjASeE8j%O`xDuUgFKD(mcOu@ppE z=dG5Szs^%VLvCSJPnG1Z7PG?2I#=}-(&nrd>xPtdq*|;w!X>YsAWOCC1&X4dlpA^e z_uqeCfq!3t|JD_dibOvfDQ3E%JsU@?7S@No=TvQz==z{aw&fmnE~t7%TItJG??^Pi zsrpi)zN|_t6jGWUpA7Rh4M?%toJHx%2|sG@06&0R5)Lvnl4m7yja@e_0e%PATHicrHlG3aig@a`U<>M5}9GAl_ zh4S0ktUOvMzg^9C;Y~v6oAV2=lH@DAT2i~hiIV(<%OsT)-XW>D@NP*R3mYX>7mk%w zUMRmS&1Hr1o7CJ`I7F6?FFZ}sxWelt)fb*2sb`^VmNY956<(J+fi;E8b9i;(3R!hY zq5P0FpHX>)zvt z?*D`LfOi+xkZ(hL{};SZcpt_p@>{*vdYinLcxQO0cqe#AdIx#?q2F5W?SLr%Za)8? z_JlG2zsK`ABK^PR*^Kq%8$1tr?v*(JFY(Mk4|XCv?1y@4(TA<{bn>+I_&g5lPpm3W zTHjj-tX+Hsz#G;})-#Cv{}AE<-eO&2H6il<3~P#Yx?BOkashU*0+!2C+l4?zuGhH7{lkCpY`6eE_v2mlnEmhNs&o~*3S5>;|CcNPZ#iFaKI?qUxdwRvZbVGL z%VkW!@jM$~UuSn`3C1&gPU83-J`Q1-4e%Xg1ANZ0!SRse?tf$h6j1@|5p$uBqdPnu z3LRqhKg}a9d<9>Jcj#vNEPafwMmE43=u*0X&ZOtk2{I~R6)mOhs1M!_zmY5nlY@x5 z@G*G@nE;<9>yZcGF0ztbMJ_|!h3UvSG!~fv>PQWu0tU$mh`eB$znK{`Y#u}wz>m#$ zF#rFY`53$&?&9}VF4mZ=%XF#rD@j|<4=|6k^D0UtE(Fs?^j zzy-$4zr+R1c`;Co6a1v-;sU;>zpii8SzN&TbQTwIv5X5iUa!~t>%H`@dMEt^-Gc%1 zWAIt|PTMCxJ2cveVJ~Gr!stcEbF$Xc=s01!j7Cr6gitZjv79{HX>^PzP0;9QPM8vl zj=~t5vR^0BksNAiv_aILL8Bu$DSK(OUTk?jiDJG8^#{`^ri<9mpGTv7zG%O<3ylup zHb(~%9n7l@pixX1p_*qajq(|z{rcZX6f;Juvb}^x`GnDSeG`ph!bnrL+e=84&lqi= zK%#ucXuD0Le8yi(_OX~mF=`7_8ydx+Ei+w7qHNSw*ys`j@$ESl#Sae$CdXokZEdt#aH=qHN$6^=Xt1+$zU4 z#3;eQElf2eig8=OI1;(oWY4CNa~N%NZljU2IoTJ`$XT4o z`!sSUC;9=6OycA?i$*4La(Zaw3_&p(nZQZ;lSEEuKe5e6BTUiMZT5vU!W2#2hMBVn z6b*%b8exK_ZbL%L2m}o#Txh0e>NaZ92-7pv-%KJ*&(v+Wtk5%Nx|v3ppkYhg1}13u zff+Qy1Pyc%jX=;?y}L*RiiS;f5`mxr#*hf~4A725n4GEG+RzA-Gj*F|HH|Pi!&P{S zMj&TwUo%MrdZsE{OGpHA2Ec>H)od#sG_Gb_@qBSL+lt(z5vUm|;mLuR0dPWG%eLxQ zkqFnatvC&6nWk)IPY1*dWaIur&6w>v8sT!bRbNgcT+X(#=Y-4IRxF;1K+dq=MKr?I zY%6;>xSDOnIYP})HlIcyX4o0By+*j2ZB>3E5vZA}?8K$!Vzv_}1TljJCj>16;DjJ$ z0K7R|$#&W#0wse57Z*aNDLb|ENCZj-lSU&DGMJEmH3B7r31=;h%!gXvXdo`eAtaJ;Ba3R~dh(x%M z?OaMC5Hjo)F9z4Ko%S>ufsV22crmz;?X;)U2p6)Q>QWlvLbg+RfJV5G?NsnSa3R}? z_kj!9G4%ry;X-z-m`1pe9m51%gbUd*`#c(fkZH;>?_?U`N_Nb~O@NZA$}wC+2pM1k zjc^@1W)CM3u4Bh=HKAiDn?=KrG3-IPnueicjBX`iCS=MnKMh03V6xAlVJI1+u_Vl- zOgXlYhMANp$J8%Lm`NFqf`%bwFlj4jm}wbk4h=IcL$#M^7+MCxN}e#pjM?_nFjF(o z*E9?@1L4YtnViA)5e-Am7@beU&@+&IE(t@>@MB|XnCTfdc#(vmXD}@yVaORkCt;`= zU_K2qF~c5?(l8S<>|rViL(EWEPr^*glw)m37+MBsq+upys5FIyA!Vw%x0r;vlI_(< z7)l09ISq3m+slrg3)x2E!=H<*V-VB$q zzqpf3mDKVDB+OJvEiWNqs1m?Q!c3IZayJP>lmN>~m}!z)K7oXpCaLAP|4ftA@>wLz zG)XNVN5jx0O)XchCSfK@YB^p$CQ2~fK*A6un5L63Gzl<|hM6ScM-n6qNrDO2o+*-A zzJ!FCBB|w9k}y*wwR{>0Ly-Wuq7Wp&Y!ZeZ0h(x-$q{~J1qnlrV46e1P$K{yU?xUt z`BD;w7y+ixFtiA@ZJY|k2qrw-&?3P3=n-+al!T!~u;AT;5V3tfOv6wjw%r*d3@Jh( z9%ZIPYB{bkQzEq-i(jEcfUC$+2oV5FcA-O9Dhm-j3L(P6SS-rqI<&R2P+UxB5>|5-s z?Zx&yzW%=vnf(UXz3r};**?Mc+9q=QrP2Fu^?vEy?tR<48QJ|dAg113-W$DFc`x_Q zMt(oB`o9)lW5Ui%L@0OnZJtuw8$)=;a~>WS!j#a0{3V;SyW-5KQj zJLKMj2z#v0zuEnqdjoR*-Q&L5eKqm`%tzM0DeejGQRwxb?C$CAf;f9@)xY8T&6P#w zzi(W7U7sVOfmrwdm}`yeZr4qSX|UKeA9LtaToYWQ5Y^yh%%NAfIwG!t*JV0?bN(pv z0epcRfPd}%-{f53TR=g{-%IWjvyKiUIP4?5BUL|-%z_aK9efQNa0fDaLY@fC~( zJciW`cOwSl3SVXDhpmCDS7Z5PqhNd6megOycUHZrRJ6JLD93l;_(eKh% z>R0KP=@(qQ9v1H=3vuw2dZe1${~rr*N`AqluG+ElU&q1bssjCkZ-C z6MY38qKQ77$V`&x&3{a%iC)}fbf<|LPWGoH(UTXpqlpuR>2sRsAqdA?%?sPmL=`tV zf1?SsSaDkR7bJluE6%hJNub55sz*vlf;CvxBW{vl4OaDtO%klZsvcQH60E_h9??kx zUk1&zSCd3%4rh@>DFam_i4tzvW+pn}>tPm?M35W)MiRvwZX}7040QZd2L|K_Nwnuh zTS=mb!y1xk$G{yh6K&aUx{^d8Gbpc+#0k909VF3)frg?22Id21BEafmzkX&wMAt+< z1LH(9k;h7$B;jKQ@{O6WnZa!)yzK9CGvQ%>ajq7tpg%?uZVpeH2^TAwWG0;KZw*N} zSb@EsBq#&=0Z9;U*+CK}1MdowFc=_hYeHwBZ8j4c+j^XtP}$!eB%$zao+9z(46MsZ z{3-@$(Ki#1}Cz=9uxz zSzRBAU&c$`CULed(?ovi_yPv%Y7)PcTW%%sOL(1kNPIqrk4StT1MLbkK9}vrPvUc! zLET2;vw4+GBz`fs95myzSe1SxK9iTcMdC9UXiX%35r=7J{6bcx7l~iM43=)j&u50| zBtD%P5J)9Hje-3biBDyqZzS>a7?{_Y@pD;S4~b7<2JHe8pUmsNPU7eAy4dg844^&n zvluvwNc>D*=S>oy#6UY>#wW7fOg7_Zu)n8}_yk^X6^XNDnI=~9$615Zv~M!wXmF}# zIf=9OrfJ_#;;g-Cs)NlqYj2u$B#!nb4sI8Tqrr(PkDGDU;xw0#I9i-Agh(7sPF(Nf zB+lBLrt&L^qs@t;+ew@?I!*ggGd_%M)Xj{e(W#nek~rF&I22r5G&=G4UrFMu)oE%w z%{XgyVw5zFR;Ow%Bylu4QLvQ6(dxv`ULtYU>@?BZjI(B^>B049%}&$)gv431)3jeT z<7jrOrkBLg>cqo_Dy-RQ+FMARH9JksLE^00X`&$-XU$Gi*+b&2*=cHXNSrl0P4jaS zN3#>Za36`YcBg57NaC#BX{slaIBR#B-rGnV?M?u$FB+bx^FE2QmZxd2B5|}lv3b22 zXH8GjByraCG;Q2;G(A!BE{O|;nMC4TVYD73&K1Twjl{XaXqS;V6b1*_LgHLv^c5s7 zB<3L!=Mtl3%s3=QHF2IoVb+qkP?+~foGXm^G>JoDu$xawoJ)-TAc=E{aVJTfON@<6 z$|c6Wm&744I8r<;LSvfEI5b8z8%P`ygOUeGoNJ7dC2?pBEO(l5E;2ny93q2DQcU7p zWsE8k=PF}AL*h^w9K<&y4w(TQCULGa${{ljol#BPXdyFqkvNwb^ahWk= zBo3Lu9ZHcnbO!hAd=lqEgA~3oE;P-5EI%7XeVq9l5ABl0Dv7aL` zt~1Dx5aT-IdW6Kd&OlXT&>5WeY7*l@gV4?~E;Mu}iE*K^A2DNGXzEFf3yu0biE*LP zSCSYP8hbm5L1=K`w~`oF8pMQ-L1|#Q&5S{6RI@vYaiuW|NQ^6u{UV8RrLnO;C=JAO zrWu3OsAd}y<4U6(G-FU2)f`V^TxjfDNQ?`O-ArOaXx=3;E;RPbBnF|uFRn9VTxqIF zj4O?OABl0LasEbPTxkqkH7E`0zCdC^YH-?IYP=Vc7^DV88%T_6jr}Bvajmg-kr=cF zMIVru5Su4RjEjvuhs3zp*sqWn7aQxi8H3oUW(N|3*5D0&(u{GjX>Z0LHmcdjj6rKu zvysHO)Yu=B7^DUgd>x6g29CNOj|>_(02hg&eFIodVrbp~@<|M>8-Sn0(6|AVlNj1I zfF(4>nl|cs_`}4|w1H_Mjj@)Ex*qNoG1jtC*CSs|3@saweLan_rVVH%jj^VUx*iFZ zVrbeh+jTU?+BVqTAsSwM5@T%}b-hkwtZk#NM>?YzYujLh8%T_`ZPfJ_(-_(| zFuCF+#v3>5JJ1*!H!!INiSgDAVs*uM>juHYV`XeR;-WEhd^MHW%Sep(e2GS4yyr`X z(inQatn3;R<6U1emBe`0m-uN6U0;;Z;UvcUzGOO$q3;V5)~m9k|$ z`@%AW#CX>iuCy`U^@Ue$3|(Io^`tTMe6c+{d31e2#s(Tg-xp+GOJcn9OYkc5&Mz55 zW9a;{TBRh$d%vU|jq%dyhn_8f05EF#=E~Wa2t8|cLuH~@BYrvuB9<_ ze>DYR1aUh!VX1r!9bnj0yymP2tYq*=pa%>XM`Gvz1MuRr{x4$v(HQ!_Y!7FW80!El znQ0`-I>1WCOQYxjvoaTr@*Xfk5Yi}mz_7uuB8o0Bs$sH&_kaMqUZu+maUjZ(F4Zxne{P=q6-WYCUnpPhDmvqMtK)_ zzvoFB@0~NOUSUO{dZGxJf%eqvvw6 zm(%DJVLMEslX*3ZM$Zvj{!XH2a}%!dS=?m(MxtkO(>XLciJLGO9-YXE%{!eT=usM- zAWAU}b~-25Y?pVw+C#fr_g>&V3!eHzFi&6QEkRG+@~WP{d!m@5--UkqTb`FZPkA0j z{QDcxOJ9K5`6*am-rzaa(+7R@V)*7etv{@+b<}FLzO+8F-m+e{o`zrk{g{(q0k8av z{~7(B+)MrNH$O_Y+Plcj_$2JqHqkC5Lpx}1k|*smwYA7o-%5TbA8JoJN81O{i`)xO z^Sh9Hewn!v{ms+OHDm>PnsIZ1J;t1(-Hp8TBkaNEr~jASe^0pAqR)Smd%62^_iXt2 zPehM@pu3N|EBgBZx6}0pdizIRt*)Ku>%W0H{>RbNzY|&imY|=10sQ;Nx`rUsTqDbbjaD=lsI?p>wNqlk+LW)W6Spi}Px%kDu$D?ws`B^op2+NPiQN6>kuF zxm8A~(bljHQ~&ip#M0j&d$`N=h59W0JpBxPls-s5Nw3mN5yQ_$H2q(-H1mAdzSKT~ zk3?TY6bK^Epv&>6<43G0H~>rctP)d47`3(k{a@hG0>@Sa#rhj{Y?O$`6sxk;vEJaR(&h=)OR|E4B$`Kpc?V#z2pV+LBkiqbLV*6)%$)*q5|>$oJ%`cs_yXmg46d=8te%@XwzYl}p! z(%K|ZX|Z0+;Yw?x*w^R=>jg>W)=QE~tXCx!Tf#>`9bIHSBW)*G&q@kdFH7=R!Vf|n zty|BD9~tGGQg($z^KhA1_oj|A50#1abimfK*|`dn%fuotb(DT?nOOP->|3@}R?xPU zU6sQvWnv|oI!bF(CKiMNX_;8}q>fS#maUL=)lbUA(l1!wD-#RNfNz%FoU8C!*`+yr zw(K5>%AaLo-J3c}`KfGf&iYE(-8p=zOe{1*g%``j`aj^BGO+{>PwoDy@5QxgD5(<5 z;nfECcE~7D4O-O^v8x8<&ng+{slitzmaD4`{;ETAYfsfdN##{yS-aX$SJf(QR@Ht< z-l~0ahuYt&S|oa>RPB}Jdet6DZK`%l8ejFbSFB)G8ykzi64u7@V!2IYo8n#4<}cnS z$u5>h(daFfdu-H;`3j7v zsg;k}2(4B=dL#PPJ}ovGVP01o5}S?RtsMHnq(X$>Q2aWmUcQ5oy%B*RIQLHM#a-f#a3W^JEyG@ygabf6lrkuU!rw z&kN>obzYksK9Cp4;eC1Sb9i%JNAbJk7v;5;G%2rCQb}I9Bwt>MBs)(ABpUC{E0#8Q zUYR64?*u{P#<=CvHLk=hAH#8ew{WCT$LVhQ6rPsv&WM8<>v|_RAct=U#j;X$tm~~{ zkDT?*U|kNk2CH*;XHcx6RL43d22Yk&dO@(CMA9i(BhlCpJSm5@!EO@uSn$Lgz8e&4 zRMoNireI^v`eaZnAceJiuy@W{5}YVen-lDx!^)so^Qn$icLh(AR&{G|cn)6+_RZmQ z!P9eiXRs=VW>74S#U6}cS7}vt2Ycr5nP6=W*965HV0DCVM(tW*9i`k?CYBjPByKIc zR@{+M%ge;dP<7OjGU2zNj#^l@M3&AgTP|r**{zbsl?i_wbyRtoSYN7+Dk-~5mKK-Y zE6HDWwWRzqv079eX4F z0Toi(Mq2&5C^>6g#rHX^tvHy&Q@Xfwcyh(D9QLb-=J2G7UnDv&sW>Xp(a?oTq}hs} zbC|05DTl+ms5$J>#mZr~E@lqfRwN~o#x5?2Ms39*iTa~md=j-xMK*^ob@Ar#iHbjR zIG~G1qVj9SuQ`0Q;_o@UuOgMhTf68vyrGLGuIb376~Ylo9l4}Je)mUSQ6b;Lk<%;w zl=T`bq|S~UTOnMW)R7Gp!Z}GDIkXFr_4-%H_jY98iXWw|yh64fMwV5?rLDM&EvZ9= z)Pa%hDt?f*HWgA4M*6xK(q?yYNb*+5md8lUQAwL#5f&#`Z=Pq79G>fzSE^or*pg>o zudlV_vr(_Fa?7Smy?&pi$<6fJEctBI>o;2tX;mj%^3K*P_gM0G>l-Xn96^0&%aYW= zEzh^!V^L|-EqNaGnk8@gaMw%4@|F#EZ7P-rGTgPX_&4#B!(A^14lVP>mWzHr0zbG>P~ncmkc4{DgU&6d}9n6||mmld=&wtTFIY1Ec?XqbA? zmS;Fj{mLs}!(r+t-XG;=>U&;!hQri1ZTUV8Q(yDS7h{L!Z+rpeY#$^N$jRk8&E7|t5IEDykAPj7zg!-MZ}#A$xT0Yt8lg&w89p$4Y}YM5ICOxV;Mg@Hg1Y?1kLd z;0$||j5Sz>C?Sh%zwNSB?=Rk@_j{~2_{#h7fATh10w4LA-t)W@y`#N@F^W+QFZp&} zAL7>k=E)$|-~qYb;1$m^h%~s$b318+9D^1Kdam~@#fZjC_!~?>yupEdLsn+ymiL*Zbx&j8ANGgs&RiE@Tc?BLrM7WLfw-vj2VK+~fSz`QBfm5Z;LFf0sEgc20#S|7fg3=;y3Em=QGB4bM=n75r5;_Ck2xrjI$N+f??Mb^JzCr;H+}`mU;bn(wx2aa{)iUF+HlD5)zF;HqmU;KVvK z^l>y@l~`S&Fb%CcLBQ0yHUj*01p<221q68N`~oJ|f2CuMbL2(W6#Wp((x@*_P|M?|4shxiY; z6F;e*G@v@_~-VH#bh3Fuy@3g}n|O=6YwPixWAVdOkg`-dp(U;Dd&##*$DP=?ik zy?1iciFzkEOuLBuJWRX^-K`-Q#o#|#Fk~O6YUQ&b7YI^M8*)CUuI{oSQ|05M zyjlONINZVYXq&QAF*ntpOZF-(k1hKrO0^Nk!P3U-^-^v(7f8C*M9&G^_EK&!PnC4D zSubg&DITw0$~ETge0RN;n=c4hV$KrKWcCtph4H6=MP`M7h2}T`^G)%h_L^<>5teD@ zXaQ5r6#~vOHwu_!J|keFxmLg#<|YA+MpVE!^Kk)V&F%t5o8p!0Rd0%yw%1T|wJ18p zyhK1>v!8$p^AQ2%=3D_K<{JWv&36Q}H!K? zqyUe(NPuOYEx>KQD8OaDEWl~LBET>g3(!sRK=jhgb<|LuS})@}elu#c6~<$dmK&c) zy2`-NC2n7hw#-21mD5t=Nl8~4Xh?C}661bJO~z(Pi;brxU17W~X_4`wq|1%fk}fmW zNm^(;ENOv(VNbs2ON}QaU1Eqgq(+->JSuJTjOQiIHN=}#qs=jzrERwHjHHW=n#kDx*8t~ zC^w!HP-1KsP;7iEpuMqDKs)1Z0d0)i1o(|D0({2X0&L?$0bXN+0FNPbv&J%>5*D}d zkpR;W?^2CnyecfZA>N7_&3KnT#5D#+U~qwYDxayfyiU&swZDL&>OcYI>Hq;A^;7{) zb&vpEt>gRYsh-03(?j`O9U*C}Iz-ar>S#%;)uEE^Q-zlGP;OQm_|AGPSA{6`SfmaY zmWk>Z0TmdoV{dwoa&?q|617o)t)3>ptBM!Ahg%&lEV??3A6*Z1F#pwRb*+X`Eu3$) z`j94G%W8FvCLa50b+sm5qiXd*ZG)`0N)sXpaf-Xln#m z+5-Yyns}7465(!sqSe}M{J^T{1WXvR6Ro1B2QVnX$oxJanom{wQ%F|EZTg~sXnIwt zlaVlt+tkhh(Wa_W?g@DKFIANXECG5zw6eM@->4Vy`rVbo>V=XHsp7-fT{)ba7>R%c1trHYSlcjYT}swl(DRv*Po+)6cdZmED>Nx`XtCIwr ztj-b8PZb}N?tRoVgr%2yxqupVsetb4WC7jOO9gaQ#rLXvxw=4D%G4PGiq)$GbWkS> zXrqeHRCm96g|K+l`2sxZLIJuujXwb0)zkS2c5|lM#{|)C?f))F@6tXlNNZ}J5u~ne z|C1o)(e?>R54HbU(yi@(c0ceAj1sWpPB|P6Em)z%`4-ox-qvuJiEw~r4 z>sBE4{~UM#oaq@0&;L_ACnEBHd-TK|SY7a=6~X%dudN-{HtSVH1boa|ji~=OSWB%1 z)=cYMYXUs}2U>lt?pBFah=~7&`?x#h{@%Ucy%THy-{kTBA93IBz7_rL#qN3T3*2YB z$MI06WI^nMx?#x5FcQ*^G@dt&ZW);&Y8}0kzC>5|Neai{(S}heFgq~1^#^n{&!vh z-rVqMMI)~el)th;bZLG0OB+P<(wBc_gJ^j8@)tMEko7KU5DgSx{`>~f!1d+NYY+`w zU;csy(fIV`U(q0%u)h4J1~Dq*%b(jI8l=AbMGd0S>&su*Aeykg{5cJxapTKh(lA;6 z+NBL*=*gFVdBfS#c3FdHMEkUf!?z2Yy>R$Pobr^v56KfY{p7*D1m$%bTqDSsGDvhZ z^EwQAPMCbLfg>fw2R2Ab3>4k9Jd9n6hG3quRX@s0^N{=`DQSx?8jN|$X8oA7ZPb62 zv|1Ofx;*r=DR1cIEjL8hA#aH;2A}d4>7osox4_63b>{1F0n-gJkdrsn5F@sEHHJ$R zl^d#nGF>z?^GXa`SlZ~Ky_x4X3}NvZP64(d`YU-}U9?;CEd97BavNR&h9SnK@^n4H z8_#+A5Bz+5^zFdolHMxlEa}aH-jcQ!G)j6S@Q0+=17AvdE%3dhEdkL4_t94iM9<4d zHwX5}(pL(qCA}QjE$OAeCz3W5h%T#-ZVY@QZ7&vdkn}=9k)-DXVyweQp9_30ZO;b& zl=Mu2yyNugf?8<{75F4QRWMM}lLaSBdLpn^(&K^4C2a`YDCw~RkEHbh(FOL==D@Ym z_GsXGNsknWuD_423p^=p4+lhl%tzM-_DS1AfnAc;1a6SDI&hz)2Mc;gS`~O#(gT49 zCEZ`3NxCoat)zPck4d^G5SMg!;2lYK6*wf_Ss-5+dPhONwB24HUnhE7L3?StwZM>c zOFc9h%RupuU zw7fvRsr0JA6VkSjCmNcN?G)a|#m4ftGKnxN2 z^eur+(zdz4E$Oy`0g|o?2wnB*%L=+k+swcnlFki0E9tDjr;^48K9n@3pu41@1vQd- z6;Mevf&G%Y1U`_|Ij}}jalz@5+64{?(tZiNFX?dLXGsSNOi3#OKS-(%ES5Ah@TQ~z z1!E=kDJYgy6WA)Lx?q%~ia@iZfh&;Er(|EtH6#4$L-1q-$_YU_q%(=hdeq4I~uW(=Cp6fne_W%3y zY=6b>0=MPXT)(&yu5Vo}t}oyT@TTh}%(Oq^y5DuH>l*m{&x0?(*_dT#J^J3RuC5?F z{wHogtb;pZX znZMR?uj6LN3hw8BzT+&c%^&8db@W8;f({P9!%6?7KOz3tVY-`sLf=K^g6HW5x`y6G zSJGv4Ay(&4MdpIhbTI8lt7&J%`OBjeUKA|O-y!lf*#T$4SIKkSx1YuNTSgX=Sy;n= z1{p;Lk&{R@=}g)YAN=}Rl)t0q0iNaW9don!thwHN(7eOE-dt)ffH%gu<^*%3InX@G ztTIdC(Qlik@!NmO1h5|7{36ERr3Q=fH^CSQU;e&EccVmlIsB$)kPF~|{*}I6e_P*- z+z;#Z2lYFU4d6d9ZG7r~RC=cCZV+CgoX_Awq>_K&9FjHM~9c0NrrZ!D#i zUPsgL#sVSBMH=o{Any}24Sy_FuRl%0Aq%8FOVjYk0wEwm8ZKGP)=JaNCrfGdSv1Xj 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%0D^$D_5`OPb;3D%zU8jJz#1*2tAF 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.10.0" } + + /@alloc/quick-lru@5.2.0: + resolution: + { + integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==, + } + engines: { node: ">=10" } + dev: false + + /@babel/runtime@7.22.10: + resolution: + { + integrity: sha512-21t/fkKLMZI4pqP2wlmsQAWnYW1PDyKyyUV4vCi+B25ydmdaYTKXPwCj0BzSUnZf4seIiYvSA3jcZ3gdsMFkLQ==, + } + engines: { node: ">=6.9.0" } + dependencies: + regenerator-runtime: 0.14.0 + dev: false + + /@eslint-community/eslint-utils@4.4.0(eslint@8.47.0): + resolution: + { + integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + dependencies: + eslint: 8.47.0 + eslint-visitor-keys: 3.4.3 + + /@eslint-community/regexpp@4.6.2: + resolution: + { + integrity: sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==, + } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + + /@eslint/eslintrc@2.1.2: + resolution: + { + integrity: sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + ajv: 6.12.6 + debug: 4.3.4 + espree: 9.6.1 + globals: 13.21.0 + ignore: 5.2.4 + import-fresh: 3.3.0 + js-yaml: 4.1.0 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + /@eslint/js@8.47.0: + resolution: + { + integrity: sha512-P6omY1zv5MItm93kLM8s2vr1HICJH8v0dvddDhysbIuZ+vcjOHg5Zbkf1mTkcmi2JA9oBG2anOkRnW8WJTS8Og==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + /@hookform/resolvers@3.3.1(react-hook-form@7.46.1): + resolution: + { + integrity: sha512-K7KCKRKjymxIB90nHDQ7b9nli474ru99ZbqxiqDAWYsYhOsU3/4qLxW91y+1n04ic13ajjZ66L3aXbNef8PELQ==, + } + peerDependencies: + react-hook-form: ^7.0.0 + dependencies: + react-hook-form: 7.46.1(react@18.2.0) + dev: false + + /@humanwhocodes/config-array@0.11.10: + resolution: + { + integrity: sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==, + } + engines: { node: ">=10.10.0" } + dependencies: + "@humanwhocodes/object-schema": 1.2.1 + debug: 4.3.4 + minimatch: 3.1.2 + transitivePeerDependencies: + - supports-color + + /@humanwhocodes/module-importer@1.0.1: + resolution: + { + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, + } + engines: { node: ">=12.22" } + + /@humanwhocodes/object-schema@1.2.1: + resolution: + { + integrity: sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==, + } + + /@jridgewell/gen-mapping@0.3.3: + resolution: + { + integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==, + } + engines: { node: ">=6.0.0" } + dependencies: + "@jridgewell/set-array": 1.1.2 + "@jridgewell/sourcemap-codec": 1.4.15 + "@jridgewell/trace-mapping": 0.3.19 + dev: false + + /@jridgewell/resolve-uri@3.1.1: + resolution: + { + integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==, + } + engines: { node: ">=6.0.0" } + dev: false + + /@jridgewell/set-array@1.1.2: + resolution: + { + integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==, + } + engines: { node: ">=6.0.0" } + dev: false + + /@jridgewell/sourcemap-codec@1.4.15: + resolution: + { + integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, + } + dev: false + + /@jridgewell/trace-mapping@0.3.19: + resolution: + { + integrity: sha512-kf37QtfW+Hwx/buWGMPcR60iF9ziHa6r/CZJIHbmcm4+0qrXiVdxegAH0F6yddEVQ7zdkjcGCgCzUu+BcbhQxw==, + } + dependencies: + "@jridgewell/resolve-uri": 3.1.1 + "@jridgewell/sourcemap-codec": 1.4.15 + dev: false + + /@next/env@13.4.18: + resolution: + { + integrity: sha512-ZUG5Y/KSSerggdeD2LIYgiYziKTuSE9oE2RnW8bhNw6WunA8MrVfrWaCDTYSx/UG8qzPpSF+BiZNiHUiALxCdA==, + } + dev: false + + /@next/eslint-plugin-next@13.4.18: + resolution: + { + integrity: sha512-GlOmUjZYYTjKl782mKk5a0bYEmKaouGaxPhi6t9yDILqrppU7JTIyONzLKQPszRXDCVZge0NFd4gwRs1ARZsMg==, + } + dependencies: + glob: 7.1.7 + dev: false + + /@next/swc-darwin-arm64@13.4.18: + resolution: + { + integrity: sha512-d/73jvZe7dNTjLugDsIIy2AdQrwE2dFC9/QRr7yHmFm8mS5EiIHeDKzaqIsv9+JXKD9ZB1i/c0x7+F0PlKo1vQ==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-darwin-x64@13.4.18: + resolution: + { + integrity: sha512-PwfvxgxG5rvUJppF02IdVAVx4HTtbZrS/Nz9qHfYfeFOQ9a+PijL8Xr9BJ21jiIS+dPQjwzvpsOdsC+DOrlzhg==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-gnu@13.4.18: + resolution: + { + integrity: sha512-Nayn6yFeox9wKaRTLaWRvO3DjB8xEM3BnXu7QnQeZb0AgD484XmdxK13TYZW4jdNy3VJ5OyYIpL4mhkgWEVq/A==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-arm64-musl@13.4.18: + resolution: + { + integrity: sha512-sQzJ5DFPvGlKjI97R17v2RxKJYYzHw4lJZ4xhK6wvyYJYYcn9JfIMyKCvLtfLgpU1tOUcbkmx7i8XC28sB1BsQ==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-gnu@13.4.18: + resolution: + { + integrity: sha512-zqCLvGdz+T0V+set8zRHbkl3PQq0quUp5Dtuj1yGw0N9htp3beL1RVyhfSusbgxT82TRTXJe94IREgM8iYq6wg==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-linux-x64-musl@13.4.18: + resolution: + { + integrity: sha512-V/+dWy32eo3iiWkro+0M4/vNp1anGrVzNp90teVKG5tl5t5qNGc/qWOgmgTG8JhowdJAxj7+fp+WltrcezqsDA==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [linux] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-arm64-msvc@13.4.18: + resolution: + { + integrity: sha512-anytZjyD1tAgfA/crOrVcUlm0yrSNKYKpg53NQ+Y83nAungrghBthZZiA1/QvmIs1Igu0Rqw/O6hqCOH63o8pw==, + } + engines: { node: ">= 10" } + cpu: [arm64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-ia32-msvc@13.4.18: + resolution: + { + integrity: sha512-lgsZDjbU0FQQH2pDSYeKIbVX9g8dqA7fUtgcAcwbj4eEuVW/K41rKFQceMM1kt0ktVUZ4uF2qOHsgebOWpDJIw==, + } + engines: { node: ">= 10" } + cpu: [ia32] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@next/swc-win32-x64-msvc@13.4.18: + resolution: + { + integrity: sha512-cS72bVNqICglP/uEzqNy26lfRH30zf4AbqnnhPhe+UxRg6d+OTtRQpFX7C4xtBP09FKA+MSSflNVkrn2ZfaWrA==, + } + engines: { node: ">= 10" } + cpu: [x64] + os: [win32] + requiresBuild: true + dev: false + optional: true + + /@nodelib/fs.scandir@2.1.5: + resolution: + { + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + run-parallel: 1.2.0 + + /@nodelib/fs.stat@2.0.5: + resolution: + { + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, + } + engines: { node: ">= 8" } + + /@nodelib/fs.walk@1.2.8: + resolution: + { + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, + } + engines: { node: ">= 8" } + dependencies: + "@nodelib/fs.scandir": 2.1.5 + fastq: 1.15.0 + + /@orama/orama@1.2.3: + resolution: + { + integrity: sha512-KJ4lzTDluQOJu6l2xsmDjKdhU6EvldmshvsQgAvDORn/Db+EXaWOKSK4XdvUNIcpUeSbFAdkRB26NLlfSpWRGg==, + } + engines: { node: ">= 16.0.0" } + dev: false + + /@radix-ui/primitive@1.0.0: + resolution: + { + integrity: sha512-3e7rn8FDMin4CgeL7Z/49smCA3rFYY3Ha2rUQ7HRWFadS5iCRw08ZgVT1LaNTCNqgvrUiyczLflrVrF0SRQtNA==, + } + dependencies: + "@babel/runtime": 7.22.10 + dev: false + + /@radix-ui/primitive@1.0.1: + resolution: + { + integrity: sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==, + } + dependencies: + "@babel/runtime": 7.22.10 + dev: false + + /@radix-ui/react-avatar@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-9ToF7YNex3Ste45LrAeTlKtONI9yVRt/zOS158iilIkW5K/Apeyb/TUQlcEFTEFvWr8Kzdi2ZYrm1/suiXPajQ==, + } + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-context": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@radix-ui/react-primitive": 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-use-callback-ref": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@radix-ui/react-use-layout-effect": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@types/react": 18.2.20 + "@types/react-dom": 18.2.7 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-compose-refs@1.0.0(react@18.2.0): + resolution: + { + integrity: sha512-0KaSv6sx787/hK3eF53iOkiSLwAGlFMx5lotrqD2pTjB18KbybKoEIgkNZTKC60YECDQTKGTRcDBILwZVqVKvA==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + react: 18.2.0 + dev: false + + /@radix-ui/react-compose-refs@1.0.1(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==, + } + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@types/react": 18.2.20 + react: 18.2.0 + dev: false + + /@radix-ui/react-context@1.0.0(react@18.2.0): + resolution: + { + integrity: sha512-1pVM9RfOQ+n/N5PJK33kRSKsr1glNxomxONs5c49MliinBY6Yw2Q995qfBUUo0/Mbg05B/sGA0gkgPI7kmSHBg==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + react: 18.2.0 + dev: false + + /@radix-ui/react-context@1.0.1(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==, + } + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@types/react": 18.2.20 + react: 18.2.0 + dev: false + + /@radix-ui/react-dialog@1.0.0(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-Yn9YU+QlHYLWwV1XfKiqnGVpWYWk6MeBVM6x/bcoyPvxgjQGoeT35482viLPctTMWoMw0PoHgqfSox7Ig+957Q==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/primitive": 1.0.0 + "@radix-ui/react-compose-refs": 1.0.0(react@18.2.0) + "@radix-ui/react-context": 1.0.0(react@18.2.0) + "@radix-ui/react-dismissable-layer": 1.0.0(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-focus-guards": 1.0.0(react@18.2.0) + "@radix-ui/react-focus-scope": 1.0.0(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-id": 1.0.0(react@18.2.0) + "@radix-ui/react-portal": 1.0.0(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-presence": 1.0.0(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-primitive": 1.0.0(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-slot": 1.0.0(react@18.2.0) + "@radix-ui/react-use-controllable-state": 1.0.0(react@18.2.0) + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.4(@types/react@18.2.20)(react@18.2.0) + transitivePeerDependencies: + - "@types/react" + dev: false + + /@radix-ui/react-dialog@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-hJtRy/jPULGQZceSAP2Re6/4NpKo8im6V8P2hUqZsdFiSL8l35kYsw3qbRI6Ay5mQd2+wlLqje770eq+RJ3yZg==, + } + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-compose-refs": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@radix-ui/react-context": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@radix-ui/react-dismissable-layer": 1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-focus-guards": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@radix-ui/react-focus-scope": 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-id": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@radix-ui/react-portal": 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-presence": 1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-primitive": 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-slot": 1.0.2(@types/react@18.2.20)(react@18.2.0) + "@radix-ui/react-use-controllable-state": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@types/react": 18.2.20 + "@types/react-dom": 18.2.7 + aria-hidden: 1.2.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + react-remove-scroll: 2.5.5(@types/react@18.2.20)(react@18.2.0) + dev: false + + /@radix-ui/react-dismissable-layer@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-n7kDRfx+LB1zLueRDvZ1Pd0bxdJWDUZNQ/GWoxDn2prnuJKRdxsjulejX/ePkOsLi2tTm6P24mDqlMSgQpsT6g==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/primitive": 1.0.0 + "@radix-ui/react-compose-refs": 1.0.0(react@18.2.0) + "@radix-ui/react-primitive": 1.0.0(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-use-callback-ref": 1.0.0(react@18.2.0) + "@radix-ui/react-use-escape-keydown": 1.0.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-dismissable-layer@1.0.4(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-7UpBa/RKMoHJYjie1gkF1DlK8l1fdU/VKDpoS3rCCo8YBJR294GwcEHyxHw72yvphJ7ld0AXEcSLAzY2F/WyCg==, + } + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/primitive": 1.0.1 + "@radix-ui/react-compose-refs": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@radix-ui/react-primitive": 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-use-callback-ref": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@radix-ui/react-use-escape-keydown": 1.0.3(@types/react@18.2.20)(react@18.2.0) + "@types/react": 18.2.20 + "@types/react-dom": 18.2.7 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-focus-guards@1.0.0(react@18.2.0): + resolution: + { + integrity: sha512-UagjDk4ijOAnGu4WMUPj9ahi7/zJJqNZ9ZAiGPp7waUWJO0O1aWXi/udPphI0IUjvrhBsZJGSN66dR2dsueLWQ==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + react: 18.2.0 + dev: false + + /@radix-ui/react-focus-guards@1.0.1(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==, + } + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@types/react": 18.2.20 + react: 18.2.0 + dev: false + + /@radix-ui/react-focus-scope@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-C4SWtsULLGf/2L4oGeIHlvWQx7Rf+7cX/vKOAD2dXW0A1b5QXwi3wWeaEgW+wn+SEVrraMUk05vLU9fZZz5HbQ==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-compose-refs": 1.0.0(react@18.2.0) + "@radix-ui/react-primitive": 1.0.0(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-use-callback-ref": 1.0.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-focus-scope@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-upXdPfqI4islj2CslyfUBNlaJCPybbqRHAi1KER7Isel9Q2AtSJ0zRBZv8mWQiFXD2nyAJ4BhC3yXgZ6kMBSrQ==, + } + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-compose-refs": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@radix-ui/react-primitive": 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + "@radix-ui/react-use-callback-ref": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@types/react": 18.2.20 + "@types/react-dom": 18.2.7 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-id@1.0.0(react@18.2.0): + resolution: + { + integrity: sha512-Q6iAB/U7Tq3NTolBBQbHTgclPmGWE3OlktGGqrClPozSw4vkQ1DfQAOtzgRPecKsMdJINE05iaoDUG8tRzCBjw==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-use-layout-effect": 1.0.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@radix-ui/react-id@1.0.1(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==, + } + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-use-layout-effect": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@types/react": 18.2.20 + react: 18.2.0 + dev: false + + /@radix-ui/react-label@2.0.2(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==, + } + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-primitive": 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + "@types/react": 18.2.20 + "@types/react-dom": 18.2.7 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-portal@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-a8qyFO/Xb99d8wQdu4o7qnigNjTPG123uADNecz0eX4usnQEj7o+cG4ZX4zkqq98NYekT7UoEQIjxBNWIFuqTA==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-primitive": 1.0.0(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-portal@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-xLYZeHrWoPmA5mEKEfZZevoVRK/Q43GfzRXkWV6qawIWWK8t6ifIiLQdd7rmQ4Vk1bmI21XhqF9BN3jWf+phpA==, + } + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-primitive": 1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + "@types/react": 18.2.20 + "@types/react-dom": 18.2.7 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-presence@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-A+6XEvN01NfVWiKu38ybawfHsBjWum42MRPnEuqPsBZ4eV7e/7K321B5VgYMPv3Xx5An6o1/l9ZuDBgmcmWK3w==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-compose-refs": 1.0.0(react@18.2.0) + "@radix-ui/react-use-layout-effect": 1.0.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-presence@1.0.1(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==, + } + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-compose-refs": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@radix-ui/react-use-layout-effect": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@types/react": 18.2.20 + "@types/react-dom": 18.2.7 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-primitive@1.0.0(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-EyXe6mnRlHZ8b6f4ilTDrXmkLShICIuOTTj0GX4w1rp+wSxf3+TD05u1UOITC8VsJ2a9nwHvdXtOXEOl0Cw/zQ==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-slot": 1.0.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-primitive@1.0.3(@types/react-dom@18.2.7)(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==, + } + peerDependencies: + "@types/react": "*" + "@types/react-dom": "*" + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + "@types/react-dom": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-slot": 1.0.2(@types/react@18.2.20)(react@18.2.0) + "@types/react": 18.2.20 + "@types/react-dom": 18.2.7 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@radix-ui/react-slot@1.0.0(react@18.2.0): + resolution: + { + integrity: sha512-3mrKauI/tWXo1Ll+gN5dHcxDPdm/Df1ufcDLCecn+pnCIVcdWE7CujXo8QaXOWRJyZyQWWbpB8eFwHzWXlv5mQ==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-compose-refs": 1.0.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@radix-ui/react-slot@1.0.2(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==, + } + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-compose-refs": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@types/react": 18.2.20 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-callback-ref@1.0.0(react@18.2.0): + resolution: + { + integrity: sha512-GZtyzoHz95Rhs6S63D2t/eqvdFCm7I+yHMLVQheKM7nBD8mbZIt+ct1jz4536MDnaOGKIxynJ8eHTkVGVVkoTg==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-callback-ref@1.0.1(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==, + } + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@types/react": 18.2.20 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-controllable-state@1.0.0(react@18.2.0): + resolution: + { + integrity: sha512-FohDoZvk3mEXh9AWAVyRTYR4Sq7/gavuofglmiXB2g1aKyboUD4YtgWxKj8O5n+Uak52gXQ4wKz5IFST4vtJHg==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-use-callback-ref": 1.0.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@radix-ui/react-use-controllable-state@1.0.1(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==, + } + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-use-callback-ref": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@types/react": 18.2.20 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-escape-keydown@1.0.0(react@18.2.0): + resolution: + { + integrity: sha512-JwfBCUIfhXRxKExgIqGa4CQsiMemo1Xt0W/B4ei3fpzpvPENKpMKQ8mZSB6Acj3ebrAEgi2xiQvcI1PAAodvyg==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-use-callback-ref": 1.0.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@radix-ui/react-use-escape-keydown@1.0.3(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==, + } + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@radix-ui/react-use-callback-ref": 1.0.1(@types/react@18.2.20)(react@18.2.0) + "@types/react": 18.2.20 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-layout-effect@1.0.0(react@18.2.0): + resolution: + { + integrity: sha512-6Tpkq+R6LOlmQb1R5NNETLG0B4YP0wc+klfXafpUCj6JGyaUc8il7/kUZ7m59rGbXGczE9Bs+iz2qloqsZBduQ==, + } + peerDependencies: + react: ^16.8 || ^17.0 || ^18.0 + dependencies: + "@babel/runtime": 7.22.10 + react: 18.2.0 + dev: false + + /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==, + } + peerDependencies: + "@types/react": "*" + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@babel/runtime": 7.22.10 + "@types/react": 18.2.20 + react: 18.2.0 + dev: false + + /@reach/observe-rect@1.2.0: + resolution: + { + integrity: sha512-Ba7HmkFgfQxZqqaeIWWkNK0rEhpxVQHIoVyW1YDSkGsGIXzcaW4deC8B0pZrNSSyLTdIk7y+5olKt5+g0GmFIQ==, + } + dev: false + + /@rushstack/eslint-patch@1.3.3: + resolution: + { + integrity: sha512-0xd7qez0AQ+MbHatZTlI1gu5vkG8r7MYRUJAHPAHJBmGLs16zpkrpAVLvjQKQOqaXPDUBwOiJzNc00znHSCVBw==, + } + dev: false + + /@swc/helpers@0.5.1: + resolution: + { + integrity: sha512-sJ902EfIzn1Fa+qYmjdQqh8tPsoxyBz+8yBKC2HKUxyezKJFwPGOn7pv4WY6QuQW//ySQi5lJjA/ZT9sNWWNTg==, + } + dependencies: + tslib: 2.6.2 + dev: false + + /@tanstack/react-table@8.9.3(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-Ng9rdm3JPoSCi6cVZvANsYnF+UoGVRxflMb270tVj0+LjeT/ZtZ9ckxF6oLPLcKesza6VKBqtdF9mQ+vaz24Aw==, + } + engines: { node: ">=12" } + peerDependencies: + react: ">=16" + react-dom: ">=16" + dependencies: + "@tanstack/table-core": 8.9.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@tanstack/react-virtual@3.0.0-alpha.0(react@18.2.0): + resolution: + { + integrity: sha512-WpHU/dt34NwZZ8qtiE05TF+nX/b1W6qrWZarO+s8jJFpPVicrTbJKp5Bjt4eSJuk7aYw272oEfsH3ABBRgj+3A==, + } + engines: { node: ">=12" } + peerDependencies: + react: ">=16" + dependencies: + "@babel/runtime": 7.22.10 + "@reach/observe-rect": 1.2.0 + react: 18.2.0 + dev: false + + /@tanstack/table-core@8.9.3: + resolution: + { + integrity: sha512-NpHZBoHTfqyJk0m/s/+CSuAiwtebhYK90mDuf5eylTvgViNOujiaOaxNDxJkQQAsVvHWZftUGAx1EfO1rkKtLg==, + } + engines: { node: ">=12" } + dev: false + + /@types/json5@0.0.29: + resolution: + { + integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, + } + dev: false + + /@types/node@20.5.1: + resolution: + { + integrity: sha512-4tT2UrL5LBqDwoed9wZ6N3umC4Yhz3W3FloMmiiG4JwmUJWpie0c7lcnUNd4gtMKuDEO4wRVS8B6Xa0uMRsMKg==, + } + dev: false + + /@types/prop-types@15.7.5: + resolution: + { + integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==, + } + dev: false + + /@types/react-dom@18.2.7: + resolution: + { + integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==, + } + dependencies: + "@types/react": 18.2.20 + dev: false + + /@types/react@18.2.20: + resolution: + { + integrity: sha512-WKNtmsLWJM/3D5mG4U84cysVY31ivmyw85dE84fOCk5Hx78wezB/XEjVPWl2JTZ5FkEeaTJf+VgUAUn3PE7Isw==, + } + dependencies: + "@types/prop-types": 15.7.5 + "@types/scheduler": 0.16.3 + csstype: 3.1.2 + dev: false + + /@types/scheduler@0.16.3: + resolution: + { + integrity: sha512-5cJ8CB4yAx7BH1oMvdU0Jh9lrEXyPkar6F9G/ERswkCuvP4KQZfZkSjcMbAICCpQTN4OuZn8tz0HiKv9TGZgrQ==, + } + dev: false + + /@typescript-eslint/parser@6.4.0(eslint@8.47.0)(typescript@5.1.6): + resolution: + { + integrity: sha512-I1Ah1irl033uxjxO9Xql7+biL3YD7w9IU8zF+xlzD/YxY6a4b7DYA08PXUUCbm2sEljwJF6ERFy2kTGAGcNilg==, + } + engines: { node: ^16.0.0 || >=18.0.0 } + peerDependencies: + eslint: ^7.0.0 || ^8.0.0 + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/scope-manager": 6.4.0 + "@typescript-eslint/types": 6.4.0 + "@typescript-eslint/typescript-estree": 6.4.0(typescript@5.1.6) + "@typescript-eslint/visitor-keys": 6.4.0 + debug: 4.3.4 + eslint: 8.47.0 + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/scope-manager@6.4.0: + resolution: + { + integrity: sha512-TUS7vaKkPWDVvl7GDNHFQMsMruD+zhkd3SdVW0d7b+7Zo+bd/hXJQ8nsiUZMi1jloWo6c9qt3B7Sqo+flC1nig==, + } + engines: { node: ^16.0.0 || >=18.0.0 } + dependencies: + "@typescript-eslint/types": 6.4.0 + "@typescript-eslint/visitor-keys": 6.4.0 + dev: false + + /@typescript-eslint/types@6.4.0: + resolution: + { + integrity: sha512-+FV9kVFrS7w78YtzkIsNSoYsnOtrYVnKWSTVXoL1761CsCRv5wpDOINgsXpxD67YCLZtVQekDDyaxfjVWUJmmg==, + } + engines: { node: ^16.0.0 || >=18.0.0 } + dev: false + + /@typescript-eslint/typescript-estree@6.4.0(typescript@5.1.6): + resolution: + { + integrity: sha512-iDPJArf/K2sxvjOR6skeUCNgHR/tCQXBsa+ee1/clRKr3olZjZ/dSkXPZjG6YkPtnW6p5D1egeEPMCW6Gn4yLA==, + } + engines: { node: ^16.0.0 || >=18.0.0 } + peerDependencies: + typescript: "*" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@typescript-eslint/types": 6.4.0 + "@typescript-eslint/visitor-keys": 6.4.0 + debug: 4.3.4 + globby: 11.1.0 + is-glob: 4.0.3 + semver: 7.5.4 + ts-api-utils: 1.0.1(typescript@5.1.6) + typescript: 5.1.6 + transitivePeerDependencies: + - supports-color + dev: false + + /@typescript-eslint/visitor-keys@6.4.0: + resolution: + { + integrity: sha512-yJSfyT+uJm+JRDWYRYdCm2i+pmvXJSMtPR9Cq5/XQs4QIgNoLcoRtDdzsLbLsFM/c6um6ohQkg/MLxWvoIndJA==, + } + engines: { node: ^16.0.0 || >=18.0.0 } + dependencies: + "@typescript-eslint/types": 6.4.0 + eslint-visitor-keys: 3.4.3 + dev: false + + /acorn-jsx@5.3.2(acorn@8.10.0): + resolution: + { + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, + } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + dependencies: + acorn: 8.10.0 + + /acorn@8.10.0: + resolution: + { + integrity: sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==, + } + engines: { node: ">=0.4.0" } + hasBin: true + + /ajv@6.12.6: + resolution: + { + integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, + } + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + /ansi-regex@5.0.1: + resolution: + { + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, + } + engines: { node: ">=8" } + + /ansi-styles@4.3.0: + resolution: + { + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, + } + engines: { node: ">=8" } + dependencies: + color-convert: 2.0.1 + + /any-promise@1.3.0: + resolution: + { + integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, + } + dev: false + + /anymatch@3.1.3: + resolution: + { + integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, + } + engines: { node: ">= 8" } + dependencies: + normalize-path: 3.0.0 + picomatch: 2.3.1 + dev: false + + /arg@5.0.2: + resolution: + { + integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==, + } + dev: false + + /argparse@2.0.1: + resolution: + { + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, + } + + /aria-hidden@1.2.3: + resolution: + { + integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==, + } + engines: { node: ">=10" } + dependencies: + tslib: 2.6.2 + dev: false + + /aria-query@5.3.0: + resolution: + { + integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==, + } + dependencies: + dequal: 2.0.3 + dev: false + + /array-buffer-byte-length@1.0.0: + resolution: + { + integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==, + } + dependencies: + call-bind: 1.0.2 + is-array-buffer: 3.0.2 + dev: false + + /array-includes@3.1.6: + resolution: + { + integrity: sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + is-string: 1.0.7 + dev: false + + /array-union@2.1.0: + resolution: + { + integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, + } + engines: { node: ">=8" } + dev: false + + /array.prototype.findlastindex@1.2.2: + resolution: + { + integrity: sha512-tb5thFFlUcp7NdNF6/MpDk/1r/4awWG1FIz3YqDf+/zJSTezBb+/5WViH41obXULHVpDzoiCLpJ/ZO9YbJMsdw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + dev: false + + /array.prototype.flat@1.3.1: + resolution: + { + integrity: sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + dev: false + + /array.prototype.flatmap@1.3.1: + resolution: + { + integrity: sha512-8UGn9O1FDVvMNB0UlLv4voxRMze7+FpHyF5mSMRjWHUMlpoDViniy05870VlxhfgTnLbpuwTzvD76MTtWxB/mQ==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + dev: false + + /array.prototype.tosorted@1.1.1: + resolution: + { + integrity: sha512-pZYPXPRl2PqWcsUs6LOMn+1f1532nEoPTYowBtqLwAW+W8vSVhkIGnmOX1t/UQjD6YGI0vcD2B1U7ZFGQH9jnQ==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-shim-unscopables: 1.0.0 + get-intrinsic: 1.2.1 + dev: false + + /arraybuffer.prototype.slice@1.0.1: + resolution: + { + integrity: sha512-09x0ZWFEjj4WD8PDbykUwo3t9arLn8NIzmmYEJFpYekOAQjpkGSyrQhNoRTcwwcFRu+ycWF78QZ63oWTqSjBcw==, + } + engines: { node: ">= 0.4" } + dependencies: + array-buffer-byte-length: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + get-intrinsic: 1.2.1 + is-array-buffer: 3.0.2 + is-shared-array-buffer: 1.0.2 + dev: false + + /ast-types-flow@0.0.7: + resolution: + { + integrity: sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag==, + } + dev: false + + /asynciterator.prototype@1.0.0: + resolution: + { + integrity: sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==, + } + dependencies: + has-symbols: 1.0.3 + dev: false + + /autoprefixer@10.4.15(postcss@8.4.28): + resolution: + { + integrity: sha512-KCuPB8ZCIqFdA4HwKXsvz7j6gvSDNhDP7WnUjBleRkKjPdvCmHFuQ77ocavI8FT6NdvlBnE2UFr2H4Mycn8Vew==, + } + engines: { node: ^10 || ^12 || >=14 } + hasBin: true + peerDependencies: + postcss: ^8.1.0 + dependencies: + browserslist: 4.21.10 + caniuse-lite: 1.0.30001521 + fraction.js: 4.2.0 + normalize-range: 0.1.2 + picocolors: 1.0.0 + postcss: 8.4.28 + postcss-value-parser: 4.2.0 + dev: false + + /available-typed-arrays@1.0.5: + resolution: + { + integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==, + } + engines: { node: ">= 0.4" } + dev: false + + /axe-core@4.7.2: + resolution: + { + integrity: sha512-zIURGIS1E1Q4pcrMjp+nnEh+16G56eG/MUllJH8yEvw7asDo7Ac9uhC9KIH5jzpITueEZolfYglnCGIuSBz39g==, + } + engines: { node: ">=4" } + dev: false + + /axobject-query@3.2.1: + resolution: + { + integrity: sha512-jsyHu61e6N4Vbz/v18DHwWYKK0bSWLqn47eeDSKPB7m8tqMHF9YJ+mhIk2lVteyZrY8tnSj/jHOv4YiTCuCJgg==, + } + dependencies: + dequal: 2.0.3 + dev: false + + /balanced-match@1.0.2: + resolution: + { + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, + } + + /binary-extensions@2.2.0: + resolution: + { + integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==, + } + engines: { node: ">=8" } + dev: false + + /brace-expansion@1.1.11: + resolution: + { + integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, + } + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + /braces@3.0.2: + resolution: + { + integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==, + } + engines: { node: ">=8" } + dependencies: + fill-range: 7.0.1 + dev: false + + /browserslist@4.21.10: + resolution: + { + integrity: sha512-bipEBdZfVH5/pwrvqc+Ub0kUPVfGUhlKxbvfD+z1BDnPEO/X98ruXGA1WP5ASpAFKan7Qr6j736IacbZQuAlKQ==, + } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true + dependencies: + caniuse-lite: 1.0.30001521 + electron-to-chromium: 1.4.496 + node-releases: 2.0.13 + update-browserslist-db: 1.0.11(browserslist@4.21.10) + dev: false + + /busboy@1.6.0: + resolution: + { + integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==, + } + engines: { node: ">=10.16.0" } + dependencies: + streamsearch: 1.1.0 + dev: false + + /call-bind@1.0.2: + resolution: + { + integrity: sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==, + } + dependencies: + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + dev: false + + /callsites@3.1.0: + resolution: + { + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, + } + engines: { node: ">=6" } + + /camelcase-css@2.0.1: + resolution: + { + integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==, + } + engines: { node: ">= 6" } + dev: false + + /caniuse-lite@1.0.30001521: + resolution: + { + integrity: sha512-fnx1grfpEOvDGH+V17eccmNjucGUnCbP6KL+l5KqBIerp26WK/+RQ7CIDE37KGJjaPyqWXXlFUyKiWmvdNNKmQ==, + } + dev: false + + /chalk@4.1.2: + resolution: + { + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + } + engines: { node: ">=10" } + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + /chokidar@3.5.3: + resolution: + { + integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==, + } + engines: { node: ">= 8.10.0" } + dependencies: + anymatch: 3.1.3 + braces: 3.0.2 + glob-parent: 5.1.2 + is-binary-path: 2.1.0 + is-glob: 4.0.3 + normalize-path: 3.0.0 + readdirp: 3.6.0 + optionalDependencies: + fsevents: 2.3.2 + dev: false + + /class-variance-authority@0.7.0: + resolution: + { + integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==, + } + dependencies: + clsx: 2.0.0 + dev: false + + /client-only@0.0.1: + resolution: + { + integrity: sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==, + } + dev: false + + /clsx@2.0.0: + resolution: + { + integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==, + } + engines: { node: ">=6" } + dev: false + + /cmdk@0.2.0(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-JQpKvEOb86SnvMZbYaFKYhvzFntWBeSZdyii0rZPhKJj9uwJBxu4DaVYDrRN7r3mPop56oPhRw+JYWTKs66TYw==, + } + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + dependencies: + "@radix-ui/react-dialog": 1.0.0(@types/react@18.2.20)(react-dom@18.2.0)(react@18.2.0) + command-score: 0.1.2 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + transitivePeerDependencies: + - "@types/react" + dev: false + + /color-convert@2.0.1: + resolution: + { + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + } + engines: { node: ">=7.0.0" } + dependencies: + color-name: 1.1.4 + + /color-name@1.1.4: + resolution: + { + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + } + + /command-score@0.1.2: + resolution: + { + integrity: sha512-VtDvQpIJBvBatnONUsPzXYFVKQQAhuf3XTNOAsdBxCNO/QCtUUd8LSgjn0GVarBkCad6aJCZfXgrjYbl/KRr7w==, + } + dev: false + + /commander@4.1.1: + resolution: + { + integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, + } + engines: { node: ">= 6" } + dev: false + + /concat-map@0.0.1: + resolution: + { + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, + } + + /cross-spawn@7.0.3: + resolution: + { + integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, + } + engines: { node: ">= 8" } + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + /cssesc@3.0.0: + resolution: + { + integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, + } + engines: { node: ">=4" } + hasBin: true + dev: false + + /csstype@3.1.2: + resolution: + { + integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==, + } + dev: false + + /damerau-levenshtein@1.0.8: + resolution: + { + integrity: sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==, + } + dev: false + + /debug@3.2.7: + resolution: + { + integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, + } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.3 + dev: false + + /debug@4.3.4: + resolution: + { + integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, + } + engines: { node: ">=6.0" } + peerDependencies: + supports-color: "*" + peerDependenciesMeta: + supports-color: + optional: true + dependencies: + ms: 2.1.2 + + /deep-is@0.1.4: + resolution: + { + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, + } + + /define-properties@1.2.0: + resolution: + { + integrity: sha512-xvqAVKGfT1+UAvPwKTVw/njhdQ8ZhXK4lI0bCIuCMrp2up9nPnaDftrLtmpTazqd1o+UY4zgzU+avtMbDP+ldA==, + } + engines: { node: ">= 0.4" } + dependencies: + has-property-descriptors: 1.0.0 + object-keys: 1.1.1 + dev: false + + /dequal@2.0.3: + resolution: + { + integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==, + } + engines: { node: ">=6" } + dev: false + + /detect-node-es@1.1.0: + resolution: + { + integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==, + } + dev: false + + /didyoumean@1.2.2: + resolution: + { + integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==, + } + dev: false + + /dir-glob@3.0.1: + resolution: + { + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, + } + engines: { node: ">=8" } + dependencies: + path-type: 4.0.0 + dev: false + + /dlv@1.1.3: + resolution: + { + integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==, + } + dev: false + + /doctrine@2.1.0: + resolution: + { + integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==, + } + engines: { node: ">=0.10.0" } + dependencies: + esutils: 2.0.3 + dev: false + + /doctrine@3.0.0: + resolution: + { + integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, + } + engines: { node: ">=6.0.0" } + dependencies: + esutils: 2.0.3 + + /electron-to-chromium@1.4.496: + resolution: + { + integrity: sha512-qeXC3Zbykq44RCrBa4kr8v/dWzYJA8rAwpyh9Qd+NKWoJfjG5vvJqy9XOJ9H4P/lqulZBCgUWAYi+FeK5AuJ8g==, + } + dev: false + + /emoji-regex@9.2.2: + resolution: + { + integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, + } + dev: false + + /enhanced-resolve@5.15.0: + resolution: + { + integrity: sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==, + } + engines: { node: ">=10.13.0" } + dependencies: + graceful-fs: 4.2.11 + tapable: 2.2.1 + dev: false + + /es-abstract@1.22.1: + resolution: + { + integrity: sha512-ioRRcXMO6OFyRpyzV3kE1IIBd4WG5/kltnzdxSCqoP8CMGs/Li+M1uF5o7lOkZVFjDs+NLesthnF66Pg/0q0Lw==, + } + engines: { node: ">= 0.4" } + dependencies: + array-buffer-byte-length: 1.0.0 + arraybuffer.prototype.slice: 1.0.1 + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + es-set-tostringtag: 2.0.1 + es-to-primitive: 1.2.1 + function.prototype.name: 1.1.5 + get-intrinsic: 1.2.1 + get-symbol-description: 1.0.0 + globalthis: 1.0.3 + gopd: 1.0.1 + has: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + is-array-buffer: 3.0.2 + is-callable: 1.2.7 + is-negative-zero: 2.0.2 + is-regex: 1.1.4 + is-shared-array-buffer: 1.0.2 + is-string: 1.0.7 + is-typed-array: 1.1.12 + is-weakref: 1.0.2 + object-inspect: 1.12.3 + object-keys: 1.1.1 + object.assign: 4.1.4 + regexp.prototype.flags: 1.5.0 + safe-array-concat: 1.0.0 + safe-regex-test: 1.0.0 + string.prototype.trim: 1.2.7 + string.prototype.trimend: 1.0.6 + string.prototype.trimstart: 1.0.6 + typed-array-buffer: 1.0.0 + typed-array-byte-length: 1.0.0 + typed-array-byte-offset: 1.0.0 + typed-array-length: 1.0.4 + unbox-primitive: 1.0.2 + which-typed-array: 1.1.11 + dev: false + + /es-iterator-helpers@1.0.13: + resolution: + { + integrity: sha512-LK3VGwzvaPWobO8xzXXGRUOGw8Dcjyfk62CsY/wfHN75CwsJPbuypOYJxK6g5RyEL8YDjIWcl6jgd8foO6mmrA==, + } + dependencies: + asynciterator.prototype: 1.0.0 + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + es-set-tostringtag: 2.0.1 + function-bind: 1.1.1 + get-intrinsic: 1.2.1 + globalthis: 1.0.3 + has-property-descriptors: 1.0.0 + has-proto: 1.0.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + iterator.prototype: 1.1.0 + safe-array-concat: 1.0.0 + dev: false + + /es-set-tostringtag@2.0.1: + resolution: + { + integrity: sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==, + } + engines: { node: ">= 0.4" } + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + has-tostringtag: 1.0.0 + dev: false + + /es-shim-unscopables@1.0.0: + resolution: + { + integrity: sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==, + } + dependencies: + has: 1.0.3 + dev: false + + /es-to-primitive@1.2.1: + resolution: + { + integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, + } + engines: { node: ">= 0.4" } + dependencies: + is-callable: 1.2.7 + is-date-object: 1.0.5 + is-symbol: 1.0.4 + dev: false + + /escalade@3.1.1: + resolution: + { + integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==, + } + engines: { node: ">=6" } + dev: false + + /escape-string-regexp@4.0.0: + resolution: + { + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, + } + engines: { node: ">=10" } + + /eslint-config-next@13.4.18(eslint@8.47.0)(typescript@5.1.6): + resolution: + { + integrity: sha512-G15CYbsIHwV6Fzoly5SXo/Mj3pNqNkOzbf+wQcPod3LgVNviWVYlb9czjdiREXHq2VF6oV79Kv0Wunguj6RMEw==, + } + peerDependencies: + eslint: ^7.23.0 || ^8.0.0 + typescript: ">=3.3.1" + peerDependenciesMeta: + typescript: + optional: true + dependencies: + "@next/eslint-plugin-next": 13.4.18 + "@rushstack/eslint-patch": 1.3.3 + "@typescript-eslint/parser": 6.4.0(eslint@8.47.0)(typescript@5.1.6) + eslint: 8.47.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.0)(eslint@8.47.0) + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.47.0) + eslint-plugin-jsx-a11y: 6.7.1(eslint@8.47.0) + eslint-plugin-react: 7.33.2(eslint@8.47.0) + eslint-plugin-react-hooks: 4.6.0(eslint@8.47.0) + typescript: 5.1.6 + transitivePeerDependencies: + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-config-prettier@9.0.0(eslint@8.47.0): + resolution: + { + integrity: sha512-IcJsTkJae2S35pRsRAwoCE+925rJJStOdkKnLVgtE+tEpqU0EVVM7OqrwxqgptKdX29NUwC82I5pXsGFIgSevw==, + } + hasBin: true + peerDependencies: + eslint: ">=7.0.0" + dependencies: + eslint: 8.47.0 + dev: true + + /eslint-import-resolver-node@0.3.9: + resolution: + { + integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==, + } + dependencies: + debug: 3.2.7 + is-core-module: 2.13.0 + resolve: 1.22.4 + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-import-resolver-typescript@3.6.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.0)(eslint@8.47.0): + resolution: + { + integrity: sha512-QTHR9ddNnn35RTxlaEnx2gCxqFlF2SEN0SE2d17SqwyM7YOSI2GHWRYp5BiRkObTUNYPupC/3Fq2a0PpT+EKpg==, + } + engines: { node: ^14.18.0 || >=16.0.0 } + peerDependencies: + eslint: "*" + eslint-plugin-import: "*" + dependencies: + debug: 4.3.4 + enhanced-resolve: 5.15.0 + eslint: 8.47.0 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.47.0) + eslint-plugin-import: 2.28.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.47.0) + fast-glob: 3.3.1 + get-tsconfig: 4.7.0 + is-core-module: 2.13.0 + is-glob: 4.0.3 + transitivePeerDependencies: + - "@typescript-eslint/parser" + - eslint-import-resolver-node + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-module-utils@2.8.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.47.0): + resolution: + { + integrity: sha512-aWajIYfsqCKRDgUfjEXNN/JlrzauMuSEy5sbd7WXbtW3EH6A6MpwEh42c7qD+MqQo9QMJ6fWLAeIJynx0g6OAw==, + } + engines: { node: ">=4" } + peerDependencies: + "@typescript-eslint/parser": "*" + eslint: "*" + eslint-import-resolver-node: "*" + eslint-import-resolver-typescript: "*" + eslint-import-resolver-webpack: "*" + peerDependenciesMeta: + "@typescript-eslint/parser": + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true + dependencies: + "@typescript-eslint/parser": 6.4.0(eslint@8.47.0)(typescript@5.1.6) + debug: 3.2.7 + eslint: 8.47.0 + eslint-import-resolver-node: 0.3.9 + eslint-import-resolver-typescript: 3.6.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.28.0)(eslint@8.47.0) + transitivePeerDependencies: + - supports-color + dev: false + + /eslint-plugin-import@2.28.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-typescript@3.6.0)(eslint@8.47.0): + resolution: + { + integrity: sha512-B8s/n+ZluN7sxj9eUf7/pRFERX0r5bnFA2dCaLHy2ZeaQEAz0k+ZZkFWRFHJAqxfxQDx6KLv9LeIki7cFdwW+Q==, + } + engines: { node: ">=4" } + peerDependencies: + "@typescript-eslint/parser": "*" + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 + peerDependenciesMeta: + "@typescript-eslint/parser": + optional: true + dependencies: + "@typescript-eslint/parser": 6.4.0(eslint@8.47.0)(typescript@5.1.6) + array-includes: 3.1.6 + array.prototype.findlastindex: 1.2.2 + array.prototype.flat: 1.3.1 + array.prototype.flatmap: 1.3.1 + debug: 3.2.7 + doctrine: 2.1.0 + eslint: 8.47.0 + eslint-import-resolver-node: 0.3.9 + eslint-module-utils: 2.8.0(@typescript-eslint/parser@6.4.0)(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.0)(eslint@8.47.0) + has: 1.0.3 + is-core-module: 2.13.0 + is-glob: 4.0.3 + minimatch: 3.1.2 + object.fromentries: 2.0.6 + object.groupby: 1.0.0 + object.values: 1.1.6 + resolve: 1.22.4 + semver: 6.3.1 + tsconfig-paths: 3.14.2 + transitivePeerDependencies: + - eslint-import-resolver-typescript + - eslint-import-resolver-webpack + - supports-color + dev: false + + /eslint-plugin-jsx-a11y@6.7.1(eslint@8.47.0): + resolution: + { + integrity: sha512-63Bog4iIethyo8smBklORknVjB0T2dwB8Mr/hIC+fBS0uyHdYYpzM/Ed+YC8VxTjlXHEWFOdmgwcDn1U2L9VCA==, + } + engines: { node: ">=4.0" } + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + "@babel/runtime": 7.22.10 + aria-query: 5.3.0 + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + ast-types-flow: 0.0.7 + axe-core: 4.7.2 + axobject-query: 3.2.1 + damerau-levenshtein: 1.0.8 + emoji-regex: 9.2.2 + eslint: 8.47.0 + has: 1.0.3 + jsx-ast-utils: 3.3.5 + language-tags: 1.0.5 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + semver: 6.3.1 + dev: false + + /eslint-plugin-react-hooks@4.6.0(eslint@8.47.0): + resolution: + { + integrity: sha512-oFc7Itz9Qxh2x4gNHStv3BqJq54ExXmfC+a1NjAta66IAN87Wu0R/QArgIS9qKzX3dXKPI9H5crl9QchNMY9+g==, + } + engines: { node: ">=10" } + peerDependencies: + eslint: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 + dependencies: + eslint: 8.47.0 + dev: false + + /eslint-plugin-react@7.33.2(eslint@8.47.0): + resolution: + { + integrity: sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==, + } + engines: { node: ">=4" } + peerDependencies: + eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + dependencies: + array-includes: 3.1.6 + array.prototype.flatmap: 1.3.1 + array.prototype.tosorted: 1.1.1 + doctrine: 2.1.0 + es-iterator-helpers: 1.0.13 + eslint: 8.47.0 + estraverse: 5.3.0 + jsx-ast-utils: 3.3.5 + minimatch: 3.1.2 + object.entries: 1.1.6 + object.fromentries: 2.0.6 + object.hasown: 1.1.2 + object.values: 1.1.6 + prop-types: 15.8.1 + resolve: 2.0.0-next.4 + semver: 6.3.1 + string.prototype.matchall: 4.0.8 + dev: false + + /eslint-scope@7.2.2: + resolution: + { + integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + /eslint-visitor-keys@3.4.3: + resolution: + { + integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + /eslint@8.47.0: + resolution: + { + integrity: sha512-spUQWrdPt+pRVP1TTJLmfRNJJHHZryFmptzcafwSvHsceV81djHOdnEeDmkdotZyLNjDhrOasNK8nikkoG1O8Q==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + hasBin: true + dependencies: + "@eslint-community/eslint-utils": 4.4.0(eslint@8.47.0) + "@eslint-community/regexpp": 4.6.2 + "@eslint/eslintrc": 2.1.2 + "@eslint/js": 8.47.0 + "@humanwhocodes/config-array": 0.11.10 + "@humanwhocodes/module-importer": 1.0.1 + "@nodelib/fs.walk": 1.2.8 + ajv: 6.12.6 + chalk: 4.1.2 + cross-spawn: 7.0.3 + debug: 4.3.4 + doctrine: 3.0.0 + escape-string-regexp: 4.0.0 + eslint-scope: 7.2.2 + eslint-visitor-keys: 3.4.3 + espree: 9.6.1 + esquery: 1.5.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 6.0.1 + find-up: 5.0.0 + glob-parent: 6.0.2 + globals: 13.21.0 + graphemer: 1.4.0 + ignore: 5.2.4 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + is-path-inside: 3.0.3 + js-yaml: 4.1.0 + json-stable-stringify-without-jsonify: 1.0.1 + levn: 0.4.1 + lodash.merge: 4.6.2 + minimatch: 3.1.2 + natural-compare: 1.4.0 + optionator: 0.9.3 + strip-ansi: 6.0.1 + text-table: 0.2.0 + transitivePeerDependencies: + - supports-color + + /espree@9.6.1: + resolution: + { + integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + dependencies: + acorn: 8.10.0 + acorn-jsx: 5.3.2(acorn@8.10.0) + eslint-visitor-keys: 3.4.3 + + /esquery@1.5.0: + resolution: + { + integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==, + } + engines: { node: ">=0.10" } + dependencies: + estraverse: 5.3.0 + + /esrecurse@4.3.0: + resolution: + { + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, + } + engines: { node: ">=4.0" } + dependencies: + estraverse: 5.3.0 + + /estraverse@5.3.0: + resolution: + { + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, + } + engines: { node: ">=4.0" } + + /esutils@2.0.3: + resolution: + { + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, + } + engines: { node: ">=0.10.0" } + + /fast-deep-equal@3.1.3: + resolution: + { + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, + } + + /fast-glob@3.3.1: + resolution: + { + integrity: sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==, + } + engines: { node: ">=8.6.0" } + dependencies: + "@nodelib/fs.stat": 2.0.5 + "@nodelib/fs.walk": 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.5 + dev: false + + /fast-json-stable-stringify@2.1.0: + resolution: + { + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, + } + + /fast-levenshtein@2.0.6: + resolution: + { + integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, + } + + /fastq@1.15.0: + resolution: + { + integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==, + } + dependencies: + reusify: 1.0.4 + + /file-entry-cache@6.0.1: + resolution: + { + integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + flat-cache: 3.0.4 + + /fill-range@7.0.1: + resolution: + { + integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==, + } + engines: { node: ">=8" } + dependencies: + to-regex-range: 5.0.1 + dev: false + + /find-up@5.0.0: + resolution: + { + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, + } + engines: { node: ">=10" } + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + /flat-cache@3.0.4: + resolution: + { + integrity: sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==, + } + engines: { node: ^10.12.0 || >=12.0.0 } + dependencies: + flatted: 3.2.7 + rimraf: 3.0.2 + + /flatted@3.2.7: + resolution: + { + integrity: sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==, + } + + /for-each@0.3.3: + resolution: + { + integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, + } + dependencies: + is-callable: 1.2.7 + dev: false + + /fraction.js@4.2.0: + resolution: + { + integrity: sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==, + } + dev: false + + /fs.realpath@1.0.0: + resolution: + { + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, + } + + /fsevents@2.3.2: + resolution: + { + integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==, + } + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] + requiresBuild: true + dev: false + optional: true + + /function-bind@1.1.1: + resolution: + { + integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==, + } + dev: false + + /function.prototype.name@1.1.5: + resolution: + { + integrity: sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + functions-have-names: 1.2.3 + dev: false + + /functions-have-names@1.2.3: + resolution: + { + integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, + } + dev: false + + /get-intrinsic@1.2.1: + resolution: + { + integrity: sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw==, + } + dependencies: + function-bind: 1.1.1 + has: 1.0.3 + has-proto: 1.0.1 + has-symbols: 1.0.3 + dev: false + + /get-nonce@1.0.1: + resolution: + { + integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==, + } + engines: { node: ">=6" } + dev: false + + /get-symbol-description@1.0.0: + resolution: + { + integrity: sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + dev: false + + /get-tsconfig@4.7.0: + resolution: + { + integrity: sha512-pmjiZ7xtB8URYm74PlGJozDNyhvsVLUcpBa8DZBG3bWHwaHa9bPiRpiSfovw+fjhwONSCWKRyk+JQHEGZmMrzw==, + } + dependencies: + resolve-pkg-maps: 1.0.0 + dev: false + + /glob-parent@5.1.2: + resolution: + { + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + } + engines: { node: ">= 6" } + dependencies: + is-glob: 4.0.3 + dev: false + + /glob-parent@6.0.2: + resolution: + { + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, + } + engines: { node: ">=10.13.0" } + dependencies: + is-glob: 4.0.3 + + /glob-to-regexp@0.4.1: + resolution: + { + integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==, + } + dev: false + + /glob@7.1.6: + resolution: + { + integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==, + } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /glob@7.1.7: + resolution: + { + integrity: sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==, + } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + dev: false + + /glob@7.2.3: + resolution: + { + integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, + } + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.2 + once: 1.4.0 + path-is-absolute: 1.0.1 + + /globals@13.21.0: + resolution: + { + integrity: sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==, + } + engines: { node: ">=8" } + dependencies: + type-fest: 0.20.2 + + /globalthis@1.0.3: + resolution: + { + integrity: sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==, + } + engines: { node: ">= 0.4" } + dependencies: + define-properties: 1.2.0 + dev: false + + /globby@11.1.0: + resolution: + { + integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, + } + engines: { node: ">=10" } + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.1 + ignore: 5.2.4 + merge2: 1.4.1 + slash: 3.0.0 + dev: false + + /gopd@1.0.1: + resolution: + { + integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, + } + dependencies: + get-intrinsic: 1.2.1 + dev: false + + /graceful-fs@4.2.11: + resolution: + { + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, + } + dev: false + + /graphemer@1.4.0: + resolution: + { + integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, + } + + /has-bigints@1.0.2: + resolution: + { + integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==, + } + dev: false + + /has-flag@4.0.0: + resolution: + { + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, + } + engines: { node: ">=8" } + + /has-property-descriptors@1.0.0: + resolution: + { + integrity: sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==, + } + dependencies: + get-intrinsic: 1.2.1 + dev: false + + /has-proto@1.0.1: + resolution: + { + integrity: sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==, + } + engines: { node: ">= 0.4" } + dev: false + + /has-symbols@1.0.3: + resolution: + { + integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, + } + engines: { node: ">= 0.4" } + dev: false + + /has-tostringtag@1.0.0: + resolution: + { + integrity: sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==, + } + engines: { node: ">= 0.4" } + dependencies: + has-symbols: 1.0.3 + dev: false + + /has@1.0.3: + resolution: + { + integrity: sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==, + } + engines: { node: ">= 0.4.0" } + dependencies: + function-bind: 1.1.1 + dev: false + + /ignore@5.2.4: + resolution: + { + integrity: sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==, + } + engines: { node: ">= 4" } + + /import-fresh@3.3.0: + resolution: + { + integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, + } + engines: { node: ">=6" } + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + /imurmurhash@0.1.4: + resolution: + { + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, + } + engines: { node: ">=0.8.19" } + + /inflight@1.0.6: + resolution: + { + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, + } + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + /inherits@2.0.4: + resolution: + { + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + } + + /internal-slot@1.0.5: + resolution: + { + integrity: sha512-Y+R5hJrzs52QCG2laLn4udYVnxsfny9CpOhNhUvk/SSSVyF6T27FzRbF0sroPidSu3X8oEAkOn2K804mjpt6UQ==, + } + engines: { node: ">= 0.4" } + dependencies: + get-intrinsic: 1.2.1 + has: 1.0.3 + side-channel: 1.0.4 + dev: false + + /invariant@2.2.4: + resolution: + { + integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==, + } + dependencies: + loose-envify: 1.4.0 + dev: false + + /is-array-buffer@3.0.2: + resolution: + { + integrity: sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==, + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: false + + /is-async-function@2.0.0: + resolution: + { + integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==, + } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-bigint@1.0.4: + resolution: + { + integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, + } + dependencies: + has-bigints: 1.0.2 + dev: false + + /is-binary-path@2.1.0: + resolution: + { + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, + } + engines: { node: ">=8" } + dependencies: + binary-extensions: 2.2.0 + dev: false + + /is-boolean-object@1.1.2: + resolution: + { + integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-callable@1.2.7: + resolution: + { + integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, + } + engines: { node: ">= 0.4" } + dev: false + + /is-core-module@2.13.0: + resolution: + { + integrity: sha512-Z7dk6Qo8pOCp3l4tsX2C5ZVas4V+UxwQodwZhLopL91TX8UyyHEXafPcyoeeWuLrwzHcr3igO78wNLwHJHsMCQ==, + } + dependencies: + has: 1.0.3 + dev: false + + /is-date-object@1.0.5: + resolution: + { + integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==, + } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-extglob@2.1.1: + resolution: + { + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, + } + engines: { node: ">=0.10.0" } + + /is-finalizationregistry@1.0.2: + resolution: + { + integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==, + } + dependencies: + call-bind: 1.0.2 + dev: false + + /is-generator-function@1.0.10: + resolution: + { + integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==, + } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-glob@4.0.3: + resolution: + { + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + } + engines: { node: ">=0.10.0" } + dependencies: + is-extglob: 2.1.1 + + /is-map@2.0.2: + resolution: + { + integrity: sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==, + } + dev: false + + /is-negative-zero@2.0.2: + resolution: + { + integrity: sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==, + } + engines: { node: ">= 0.4" } + dev: false + + /is-number-object@1.0.7: + resolution: + { + integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==, + } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-number@7.0.0: + resolution: + { + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + } + engines: { node: ">=0.12.0" } + dev: false + + /is-path-inside@3.0.3: + resolution: + { + integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, + } + engines: { node: ">=8" } + + /is-regex@1.1.4: + resolution: + { + integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + has-tostringtag: 1.0.0 + dev: false + + /is-set@2.0.2: + resolution: + { + integrity: sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==, + } + dev: false + + /is-shared-array-buffer@1.0.2: + resolution: + { + integrity: sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==, + } + dependencies: + call-bind: 1.0.2 + dev: false + + /is-string@1.0.7: + resolution: + { + integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==, + } + engines: { node: ">= 0.4" } + dependencies: + has-tostringtag: 1.0.0 + dev: false + + /is-symbol@1.0.4: + resolution: + { + integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==, + } + engines: { node: ">= 0.4" } + dependencies: + has-symbols: 1.0.3 + dev: false + + /is-typed-array@1.1.12: + resolution: + { + integrity: sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==, + } + engines: { node: ">= 0.4" } + dependencies: + which-typed-array: 1.1.11 + dev: false + + /is-weakmap@2.0.1: + resolution: + { + integrity: sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==, + } + dev: false + + /is-weakref@1.0.2: + resolution: + { + integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==, + } + dependencies: + call-bind: 1.0.2 + dev: false + + /is-weakset@2.0.2: + resolution: + { + integrity: sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==, + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + dev: false + + /isarray@2.0.5: + resolution: + { + integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==, + } + dev: false + + /isexe@2.0.0: + resolution: + { + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + } + + /iterator.prototype@1.1.0: + resolution: + { + integrity: sha512-rjuhAk1AJ1fssphHD0IFV6TWL40CwRZ53FrztKx43yk2v6rguBYsY4Bj1VU4HmoMmKwZUlx7mfnhDf9cOp4YTw==, + } + dependencies: + define-properties: 1.2.0 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + has-tostringtag: 1.0.0 + reflect.getprototypeof: 1.0.3 + dev: false + + /jiti@1.19.3: + resolution: + { + integrity: sha512-5eEbBDQT/jF1xg6l36P+mWGGoH9Spuy0PCdSr2dtWRDGC6ph/w9ZCL4lmESW8f8F7MwT3XKescfP0wnZWAKL9w==, + } + hasBin: true + dev: false + + /js-tokens@4.0.0: + resolution: + { + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, + } + dev: false + + /js-yaml@4.1.0: + resolution: + { + integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, + } + hasBin: true + dependencies: + argparse: 2.0.1 + + /json-schema-traverse@0.4.1: + resolution: + { + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, + } + + /json-stable-stringify-without-jsonify@1.0.1: + resolution: + { + integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, + } + + /json5@1.0.2: + resolution: + { + integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, + } + hasBin: true + dependencies: + minimist: 1.2.8 + dev: false + + /jsx-ast-utils@3.3.5: + resolution: + { + integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==, + } + engines: { node: ">=4.0" } + dependencies: + array-includes: 3.1.6 + array.prototype.flat: 1.3.1 + object.assign: 4.1.4 + object.values: 1.1.6 + dev: false + + /language-subtag-registry@0.3.22: + resolution: + { + integrity: sha512-tN0MCzyWnoz/4nHS6uxdlFWoUZT7ABptwKPQ52Ea7URk6vll88bWBVhodtnlfEuCcKWNGoc+uGbw1cwa9IKh/w==, + } + dev: false + + /language-tags@1.0.5: + resolution: + { + integrity: sha512-qJhlO9cGXi6hBGKoxEG/sKZDAHD5Hnu9Hs4WbOY3pCWXDhw0N8x1NenNzm2EnNLkLkk7J2SdxAkDSbb6ftT+UQ==, + } + dependencies: + language-subtag-registry: 0.3.22 + dev: false + + /levn@0.4.1: + resolution: + { + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, + } + engines: { node: ">= 0.8.0" } + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + /lilconfig@2.1.0: + resolution: + { + integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, + } + engines: { node: ">=10" } + dev: false + + /lines-and-columns@1.2.4: + resolution: + { + integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, + } + dev: false + + /locate-path@6.0.0: + resolution: + { + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, + } + engines: { node: ">=10" } + dependencies: + p-locate: 5.0.0 + + /lodash.merge@4.6.2: + resolution: + { + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, + } + + /loose-envify@1.4.0: + resolution: + { + integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, + } + hasBin: true + dependencies: + js-tokens: 4.0.0 + dev: false + + /lru-cache@6.0.0: + resolution: + { + integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, + } + engines: { node: ">=10" } + dependencies: + yallist: 4.0.0 + dev: false + + /lucide-react@0.269.0(react@18.2.0): + resolution: + { + integrity: sha512-+ViEb/2eJJt43/CtxpTfvqu/8gzK49cSUdeuqRuFYiZmX9AvwfumtETM4plhXHymfHb6/mVbHg9uIlc13y+uew==, + } + peerDependencies: + react: ^16.5.1 || ^17.0.0 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /merge2@1.4.1: + resolution: + { + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, + } + engines: { node: ">= 8" } + dev: false + + /micromatch@4.0.5: + resolution: + { + integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==, + } + engines: { node: ">=8.6" } + dependencies: + braces: 3.0.2 + picomatch: 2.3.1 + dev: false + + /minimatch@3.1.2: + resolution: + { + integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, + } + dependencies: + brace-expansion: 1.1.11 + + /minimist@1.2.8: + resolution: + { + integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, + } + dev: false + + /ms@2.1.2: + resolution: + { + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, + } + + /ms@2.1.3: + resolution: + { + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + } + dev: false + + /mz@2.7.0: + resolution: + { + integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, + } + dependencies: + any-promise: 1.3.0 + object-assign: 4.1.1 + thenify-all: 1.6.0 + dev: false + + /nanoid@3.3.6: + resolution: + { + integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==, + } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true + dev: false + + /natural-compare@1.4.0: + resolution: + { + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, + } + + /next@13.4.18(react-dom@18.2.0)(react@18.2.0): + resolution: + { + integrity: sha512-V/IIFA/znYYnOFlZQegrlhlWRpyIuCLXLGuH6pzCjwyxThNBZl4ItqoE3ffUyYY9f0X6XIQ2dX6UUBpNVSKZ8A==, + } + engines: { node: ">=16.8.0" } + hasBin: true + peerDependencies: + "@opentelemetry/api": ^1.1.0 + react: ^18.2.0 + react-dom: ^18.2.0 + sass: ^1.3.0 + peerDependenciesMeta: + "@opentelemetry/api": + optional: true + sass: + optional: true + dependencies: + "@next/env": 13.4.18 + "@swc/helpers": 0.5.1 + busboy: 1.6.0 + caniuse-lite: 1.0.30001521 + postcss: 8.4.14 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + styled-jsx: 5.1.1(react@18.2.0) + watchpack: 2.4.0 + zod: 3.21.4 + optionalDependencies: + "@next/swc-darwin-arm64": 13.4.18 + "@next/swc-darwin-x64": 13.4.18 + "@next/swc-linux-arm64-gnu": 13.4.18 + "@next/swc-linux-arm64-musl": 13.4.18 + "@next/swc-linux-x64-gnu": 13.4.18 + "@next/swc-linux-x64-musl": 13.4.18 + "@next/swc-win32-arm64-msvc": 13.4.18 + "@next/swc-win32-ia32-msvc": 13.4.18 + "@next/swc-win32-x64-msvc": 13.4.18 + transitivePeerDependencies: + - "@babel/core" + - babel-plugin-macros + dev: false + + /node-releases@2.0.13: + resolution: + { + integrity: sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==, + } + dev: false + + /normalize-path@3.0.0: + resolution: + { + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, + } + engines: { node: ">=0.10.0" } + dev: false + + /normalize-range@0.1.2: + resolution: + { + integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, + } + engines: { node: ">=0.10.0" } + dev: false + + /object-assign@4.1.1: + resolution: + { + integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, + } + engines: { node: ">=0.10.0" } + dev: false + + /object-hash@3.0.0: + resolution: + { + integrity: sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==, + } + engines: { node: ">= 6" } + dev: false + + /object-inspect@1.12.3: + resolution: + { + integrity: sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==, + } + dev: false + + /object-keys@1.1.1: + resolution: + { + integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, + } + engines: { node: ">= 0.4" } + dev: false + + /object.assign@4.1.4: + resolution: + { + integrity: sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + has-symbols: 1.0.3 + object-keys: 1.1.1 + dev: false + + /object.entries@1.1.6: + resolution: + { + integrity: sha512-leTPzo4Zvg3pmbQ3rDK69Rl8GQvIqMWubrkxONG9/ojtFE2rD9fjMKfSI5BxW3osRH1m6VdzmqK8oAY9aT4x5w==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: false + + /object.fromentries@2.0.6: + resolution: + { + integrity: sha512-VciD13dswC4j1Xt5394WR4MzmAQmlgN72phd/riNp9vtD7tp4QQWJ0R4wvclXcafgcYK8veHRed2W6XeGBvcfg==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: false + + /object.groupby@1.0.0: + resolution: + { + integrity: sha512-70MWG6NfRH9GnbZOikuhPPYzpUpof9iW2J9E4dW7FXTqPNb6rllE6u39SKwwiNh8lCwX3DDb5OgcKGiEBrTTyw==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + dev: false + + /object.hasown@1.1.2: + resolution: + { + integrity: sha512-B5UIT3J1W+WuWIU55h0mjlwaqxiE5vYENJXIXZ4VFe05pNYrkKuK0U/6aFcb0pKywYJh7IhfoqUfKVmrJJHZHw==, + } + dependencies: + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: false + + /object.values@1.1.6: + resolution: + { + integrity: sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: false + + /once@1.4.0: + resolution: + { + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + } + dependencies: + wrappy: 1.0.2 + + /optionator@0.9.3: + resolution: + { + integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==, + } + engines: { node: ">= 0.8.0" } + dependencies: + "@aashutoshrathi/word-wrap": 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + + /p-limit@3.1.0: + resolution: + { + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, + } + engines: { node: ">=10" } + dependencies: + yocto-queue: 0.1.0 + + /p-locate@5.0.0: + resolution: + { + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, + } + engines: { node: ">=10" } + dependencies: + p-limit: 3.1.0 + + /parent-module@1.0.1: + resolution: + { + integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, + } + engines: { node: ">=6" } + dependencies: + callsites: 3.1.0 + + /path-exists@4.0.0: + resolution: + { + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, + } + engines: { node: ">=8" } + + /path-is-absolute@1.0.1: + resolution: + { + integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, + } + engines: { node: ">=0.10.0" } + + /path-key@3.1.1: + resolution: + { + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, + } + engines: { node: ">=8" } + + /path-parse@1.0.7: + resolution: + { + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, + } + dev: false + + /path-type@4.0.0: + resolution: + { + integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, + } + engines: { node: ">=8" } + dev: false + + /picocolors@1.0.0: + resolution: + { + integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==, + } + dev: false + + /picomatch@2.3.1: + resolution: + { + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, + } + engines: { node: ">=8.6" } + dev: false + + /pify@2.3.0: + resolution: + { + integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==, + } + engines: { node: ">=0.10.0" } + dev: false + + /pirates@4.0.6: + resolution: + { + integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==, + } + engines: { node: ">= 6" } + dev: false + + /postcss-import@15.1.0(postcss@8.4.28): + resolution: + { + integrity: sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==, + } + engines: { node: ">=14.0.0" } + peerDependencies: + postcss: ^8.0.0 + dependencies: + postcss: 8.4.28 + postcss-value-parser: 4.2.0 + read-cache: 1.0.0 + resolve: 1.22.4 + dev: false + + /postcss-js@4.0.1(postcss@8.4.28): + resolution: + { + integrity: sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==, + } + engines: { node: ^12 || ^14 || >= 16 } + peerDependencies: + postcss: ^8.4.21 + dependencies: + camelcase-css: 2.0.1 + postcss: 8.4.28 + dev: false + + /postcss-load-config@4.0.1(postcss@8.4.28): + resolution: + { + integrity: sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==, + } + engines: { node: ">= 14" } + peerDependencies: + postcss: ">=8.0.9" + ts-node: ">=9.0.0" + peerDependenciesMeta: + postcss: + optional: true + ts-node: + optional: true + dependencies: + lilconfig: 2.1.0 + postcss: 8.4.28 + yaml: 2.3.1 + dev: false + + /postcss-nested@6.0.1(postcss@8.4.28): + resolution: + { + integrity: sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==, + } + engines: { node: ">=12.0" } + peerDependencies: + postcss: ^8.2.14 + dependencies: + postcss: 8.4.28 + postcss-selector-parser: 6.0.13 + dev: false + + /postcss-selector-parser@6.0.13: + resolution: + { + integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==, + } + engines: { node: ">=4" } + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + dev: false + + /postcss-value-parser@4.2.0: + resolution: + { + integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, + } + dev: false + + /postcss@8.4.14: + resolution: + { + integrity: sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==, + } + engines: { node: ^10 || ^12 || >=14 } + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + + /postcss@8.4.28: + resolution: + { + integrity: sha512-Z7V5j0cq8oEKyejIKfpD8b4eBy9cwW2JWPk0+fB1HOAMsfHbnAXLLS+PfVWlzMSLQaWttKDt607I0XHmpE67Vw==, + } + engines: { node: ^10 || ^12 || >=14 } + dependencies: + nanoid: 3.3.6 + picocolors: 1.0.0 + source-map-js: 1.0.2 + dev: false + + /prelude-ls@1.2.1: + resolution: + { + integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, + } + engines: { node: ">= 0.8.0" } + + /prettier@3.0.3: + resolution: + { + integrity: sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg==, + } + engines: { node: ">=14" } + hasBin: true + dev: true + + /prop-types@15.8.1: + resolution: + { + integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==, + } + dependencies: + loose-envify: 1.4.0 + object-assign: 4.1.1 + react-is: 16.13.1 + dev: false + + /punycode@2.3.0: + resolution: + { + integrity: sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==, + } + engines: { node: ">=6" } + + /queue-microtask@1.2.3: + resolution: + { + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, + } + + /react-dom@18.2.0(react@18.2.0): + resolution: + { + integrity: sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==, + } + peerDependencies: + react: ^18.2.0 + dependencies: + loose-envify: 1.4.0 + react: 18.2.0 + scheduler: 0.23.0 + dev: false + + /react-hook-form@7.46.1(react@18.2.0): + resolution: + { + integrity: sha512-0GfI31LRTBd5tqbXMGXT1Rdsv3rnvy0FjEk8Gn9/4tp6+s77T7DPZuGEpBRXOauL+NhyGT5iaXzdIM2R6F/E+w==, + } + engines: { node: ">=12.22.0" } + peerDependencies: + react: ^16.8.0 || ^17 || ^18 + dependencies: + react: 18.2.0 + dev: false + + /react-is@16.13.1: + resolution: + { + integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, + } + dev: false + + /react-remove-scroll-bar@2.3.4(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==, + } + engines: { node: ">=10" } + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@types/react": 18.2.20 + react: 18.2.0 + react-style-singleton: 2.2.1(@types/react@18.2.20)(react@18.2.0) + tslib: 2.6.2 + dev: false + + /react-remove-scroll@2.5.4(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-xGVKJJr0SJGQVirVFAUZ2k1QLyO6m+2fy0l8Qawbp5Jgrv3DeLalrfMNBFSlmz5kriGGzsVBtGVnf4pTKIhhWA==, + } + engines: { node: ">=10" } + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@types/react": 18.2.20 + react: 18.2.0 + react-remove-scroll-bar: 2.3.4(@types/react@18.2.20)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.20)(react@18.2.0) + tslib: 2.6.2 + use-callback-ref: 1.3.0(@types/react@18.2.20)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.20)(react@18.2.0) + dev: false + + /react-remove-scroll@2.5.5(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==, + } + engines: { node: ">=10" } + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@types/react": 18.2.20 + react: 18.2.0 + react-remove-scroll-bar: 2.3.4(@types/react@18.2.20)(react@18.2.0) + react-style-singleton: 2.2.1(@types/react@18.2.20)(react@18.2.0) + tslib: 2.6.2 + use-callback-ref: 1.3.0(@types/react@18.2.20)(react@18.2.0) + use-sidecar: 1.1.2(@types/react@18.2.20)(react@18.2.0) + dev: false + + /react-style-singleton@2.2.1(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==, + } + engines: { node: ">=10" } + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@types/react": 18.2.20 + get-nonce: 1.0.1 + invariant: 2.2.4 + react: 18.2.0 + tslib: 2.6.2 + dev: false + + /react@18.2.0: + resolution: + { + integrity: sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==, + } + engines: { node: ">=0.10.0" } + dependencies: + loose-envify: 1.4.0 + dev: false + + /read-cache@1.0.0: + resolution: + { + integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==, + } + dependencies: + pify: 2.3.0 + dev: false + + /readdirp@3.6.0: + resolution: + { + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, + } + engines: { node: ">=8.10.0" } + dependencies: + picomatch: 2.3.1 + dev: false + + /reflect.getprototypeof@1.0.3: + resolution: + { + integrity: sha512-TTAOZpkJ2YLxl7mVHWrNo3iDMEkYlva/kgFcXndqMgbo/AZUmmavEkdXV+hXtE4P8xdyEKRzalaFqZVuwIk/Nw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + globalthis: 1.0.3 + which-builtin-type: 1.1.3 + dev: false + + /regenerator-runtime@0.14.0: + resolution: + { + integrity: sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==, + } + dev: false + + /regexp.prototype.flags@1.5.0: + resolution: + { + integrity: sha512-0SutC3pNudRKgquxGoRGIz946MZVHqbNfPjBdxeOhBrdgDKlRoXmYLQN9xRbrR09ZXWeGAdPuif7egofn6v5LA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + functions-have-names: 1.2.3 + dev: false + + /resolve-from@4.0.0: + resolution: + { + integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, + } + engines: { node: ">=4" } + + /resolve-pkg-maps@1.0.0: + resolution: + { + integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==, + } + dev: false + + /resolve@1.22.4: + resolution: + { + integrity: sha512-PXNdCiPqDqeUou+w1C2eTQbNfxKSuMxqTCuvlmmMsk1NWHL5fRrhY6Pl0qEYYc6+QqGClco1Qj8XnjPego4wfg==, + } + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: false + + /resolve@2.0.0-next.4: + resolution: + { + integrity: sha512-iMDbmAWtfU+MHpxt/I5iWI7cY6YVEZUQ3MBgPQ++XD1PELuJHIl82xBmObyP2KyQmkNB2dsqF7seoQQiAn5yDQ==, + } + hasBin: true + dependencies: + is-core-module: 2.13.0 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + dev: false + + /reusify@1.0.4: + resolution: + { + integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, + } + engines: { iojs: ">=1.0.0", node: ">=0.10.0" } + + /rimraf@3.0.2: + resolution: + { + integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, + } + hasBin: true + dependencies: + glob: 7.2.3 + + /run-parallel@1.2.0: + resolution: + { + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + } + dependencies: + queue-microtask: 1.2.3 + + /safe-array-concat@1.0.0: + resolution: + { + integrity: sha512-9dVEFruWIsnie89yym+xWTAYASdpw3CJV7Li/6zBewGf9z2i1j31rP6jnY0pHEO4QZh6N0K11bFjWmdR8UGdPQ==, + } + engines: { node: ">=0.4" } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + isarray: 2.0.5 + dev: false + + /safe-regex-test@1.0.0: + resolution: + { + integrity: sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==, + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-regex: 1.1.4 + dev: false + + /scheduler@0.23.0: + resolution: + { + integrity: sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==, + } + dependencies: + loose-envify: 1.4.0 + dev: false + + /semver@6.3.1: + resolution: + { + integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, + } + hasBin: true + dev: false + + /semver@7.5.4: + resolution: + { + integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==, + } + engines: { node: ">=10" } + hasBin: true + dependencies: + lru-cache: 6.0.0 + dev: false + + /shebang-command@2.0.0: + resolution: + { + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + } + engines: { node: ">=8" } + dependencies: + shebang-regex: 3.0.0 + + /shebang-regex@3.0.0: + resolution: + { + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + } + engines: { node: ">=8" } + + /side-channel@1.0.4: + resolution: + { + integrity: sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==, + } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + object-inspect: 1.12.3 + dev: false + + /slash@3.0.0: + resolution: + { + integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, + } + engines: { node: ">=8" } + dev: false + + /source-map-js@1.0.2: + resolution: + { + integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==, + } + engines: { node: ">=0.10.0" } + dev: false + + /streamsearch@1.1.0: + resolution: + { + integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==, + } + engines: { node: ">=10.0.0" } + dev: false + + /string.prototype.matchall@4.0.8: + resolution: + { + integrity: sha512-6zOCOcJ+RJAQshcTvXPHoxoQGONa3e/Lqx90wUA+wEzX78sg5Bo+1tQo4N0pohS0erG9qtCqJDjNCQBjeWVxyg==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + get-intrinsic: 1.2.1 + has-symbols: 1.0.3 + internal-slot: 1.0.5 + regexp.prototype.flags: 1.5.0 + side-channel: 1.0.4 + dev: false + + /string.prototype.trim@1.2.7: + resolution: + { + integrity: sha512-p6TmeT1T3411M8Cgg9wBTMRtY2q9+PNy9EV1i2lIXUN/btt763oIfxwN3RR8VU6wHX8j/1CFy0L+YuThm6bgOg==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: false + + /string.prototype.trimend@1.0.6: + resolution: + { + integrity: sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: false + + /string.prototype.trimstart@1.0.6: + resolution: + { + integrity: sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==, + } + dependencies: + call-bind: 1.0.2 + define-properties: 1.2.0 + es-abstract: 1.22.1 + dev: false + + /strip-ansi@6.0.1: + resolution: + { + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, + } + engines: { node: ">=8" } + dependencies: + ansi-regex: 5.0.1 + + /strip-bom@3.0.0: + resolution: + { + integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, + } + engines: { node: ">=4" } + dev: false + + /strip-json-comments@3.1.1: + resolution: + { + integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, + } + engines: { node: ">=8" } + + /styled-jsx@5.1.1(react@18.2.0): + resolution: + { + integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==, + } + engines: { node: ">= 12.0.0" } + peerDependencies: + "@babel/core": "*" + babel-plugin-macros: "*" + react: ">= 16.8.0 || 17.x.x || ^18.0.0-0" + peerDependenciesMeta: + "@babel/core": + optional: true + babel-plugin-macros: + optional: true + dependencies: + client-only: 0.0.1 + react: 18.2.0 + dev: false + + /sucrase@3.34.0: + resolution: + { + integrity: sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==, + } + engines: { node: ">=8" } + hasBin: true + dependencies: + "@jridgewell/gen-mapping": 0.3.3 + commander: 4.1.1 + glob: 7.1.6 + lines-and-columns: 1.2.4 + mz: 2.7.0 + pirates: 4.0.6 + ts-interface-checker: 0.1.13 + dev: false + + /supports-color@7.2.0: + resolution: + { + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, + } + engines: { node: ">=8" } + dependencies: + has-flag: 4.0.0 + + /supports-preserve-symlinks-flag@1.0.0: + resolution: + { + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, + } + engines: { node: ">= 0.4" } + dev: false + + /tailwind-merge@1.14.0: + resolution: + { + integrity: sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==, + } + dev: false + + /tailwindcss-animate@1.0.6(tailwindcss@3.3.3): + resolution: + { + integrity: sha512-4WigSGMvbl3gCCact62ZvOngA+PRqhAn7si3TQ3/ZuPuQZcIEtVap+ENSXbzWhpojKB8CpvnIsrwBu8/RnHtuw==, + } + peerDependencies: + tailwindcss: ">=3.0.0 || insiders" + dependencies: + tailwindcss: 3.3.3 + dev: false + + /tailwindcss@3.3.3: + resolution: + { + integrity: sha512-A0KgSkef7eE4Mf+nKJ83i75TMyq8HqY3qmFIJSWy8bNt0v1lG7jUcpGpoTFxAwYcWOphcTBLPPJg+bDfhDf52w==, + } + engines: { node: ">=14.0.0" } + hasBin: true + dependencies: + "@alloc/quick-lru": 5.2.0 + arg: 5.0.2 + chokidar: 3.5.3 + didyoumean: 1.2.2 + dlv: 1.1.3 + fast-glob: 3.3.1 + glob-parent: 6.0.2 + is-glob: 4.0.3 + jiti: 1.19.3 + lilconfig: 2.1.0 + micromatch: 4.0.5 + normalize-path: 3.0.0 + object-hash: 3.0.0 + picocolors: 1.0.0 + postcss: 8.4.28 + postcss-import: 15.1.0(postcss@8.4.28) + postcss-js: 4.0.1(postcss@8.4.28) + postcss-load-config: 4.0.1(postcss@8.4.28) + postcss-nested: 6.0.1(postcss@8.4.28) + postcss-selector-parser: 6.0.13 + resolve: 1.22.4 + sucrase: 3.34.0 + transitivePeerDependencies: + - ts-node + dev: false + + /tapable@2.2.1: + resolution: + { + integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==, + } + engines: { node: ">=6" } + dev: false + + /text-table@0.2.0: + resolution: + { + integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, + } + + /thenify-all@1.6.0: + resolution: + { + integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, + } + engines: { node: ">=0.8" } + dependencies: + thenify: 3.3.1 + dev: false + + /thenify@3.3.1: + resolution: + { + integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, + } + dependencies: + any-promise: 1.3.0 + dev: false + + /to-regex-range@5.0.1: + resolution: + { + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, + } + engines: { node: ">=8.0" } + dependencies: + is-number: 7.0.0 + dev: false + + /ts-api-utils@1.0.1(typescript@5.1.6): + resolution: + { + integrity: sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==, + } + engines: { node: ">=16.13.0" } + peerDependencies: + typescript: ">=4.2.0" + dependencies: + typescript: 5.1.6 + dev: false + + /ts-interface-checker@0.1.13: + resolution: + { + integrity: sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==, + } + dev: false + + /tsconfig-paths@3.14.2: + resolution: + { + integrity: sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==, + } + dependencies: + "@types/json5": 0.0.29 + json5: 1.0.2 + minimist: 1.2.8 + strip-bom: 3.0.0 + dev: false + + /tslib@2.6.2: + resolution: + { + integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==, + } + dev: false + + /type-check@0.4.0: + resolution: + { + integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, + } + engines: { node: ">= 0.8.0" } + dependencies: + prelude-ls: 1.2.1 + + /type-fest@0.20.2: + resolution: + { + integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, + } + engines: { node: ">=10" } + + /typed-array-buffer@1.0.0: + resolution: + { + integrity: sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + get-intrinsic: 1.2.1 + is-typed-array: 1.1.12 + dev: false + + /typed-array-byte-length@1.0.0: + resolution: + { + integrity: sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==, + } + engines: { node: ">= 0.4" } + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: false + + /typed-array-byte-offset@1.0.0: + resolution: + { + integrity: sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==, + } + engines: { node: ">= 0.4" } + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + has-proto: 1.0.1 + is-typed-array: 1.1.12 + dev: false + + /typed-array-length@1.0.4: + resolution: + { + integrity: sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==, + } + dependencies: + call-bind: 1.0.2 + for-each: 0.3.3 + is-typed-array: 1.1.12 + dev: false + + /typescript@5.1.6: + resolution: + { + integrity: sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==, + } + engines: { node: ">=14.17" } + hasBin: true + dev: false + + /unbox-primitive@1.0.2: + resolution: + { + integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==, + } + dependencies: + call-bind: 1.0.2 + has-bigints: 1.0.2 + has-symbols: 1.0.3 + which-boxed-primitive: 1.0.2 + dev: false + + /update-browserslist-db@1.0.11(browserslist@4.21.10): + resolution: + { + integrity: sha512-dCwEFf0/oT85M1fHBg4F0jtLwJrutGoHSQXCh7u4o2t1drG+c0a9Flnqww6XUKSfQMPpJBRjU8d4RXB09qtvaA==, + } + hasBin: true + peerDependencies: + browserslist: ">= 4.21.0" + dependencies: + browserslist: 4.21.10 + escalade: 3.1.1 + picocolors: 1.0.0 + dev: false + + /uri-js@4.4.1: + resolution: + { + integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, + } + dependencies: + punycode: 2.3.0 + + /use-callback-ref@1.3.0(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==, + } + engines: { node: ">=10" } + peerDependencies: + "@types/react": ^16.8.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@types/react": 18.2.20 + react: 18.2.0 + tslib: 2.6.2 + dev: false + + /use-sidecar@1.1.2(@types/react@18.2.20)(react@18.2.0): + resolution: + { + integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==, + } + engines: { node: ">=10" } + peerDependencies: + "@types/react": ^16.9.0 || ^17.0.0 || ^18.0.0 + react: ^16.8.0 || ^17.0.0 || ^18.0.0 + peerDependenciesMeta: + "@types/react": + optional: true + dependencies: + "@types/react": 18.2.20 + detect-node-es: 1.1.0 + react: 18.2.0 + tslib: 2.6.2 + dev: false + + /util-deprecate@1.0.2: + resolution: + { + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, + } + dev: false + + /watchpack@2.4.0: + resolution: + { + integrity: sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==, + } + engines: { node: ">=10.13.0" } + dependencies: + glob-to-regexp: 0.4.1 + graceful-fs: 4.2.11 + dev: false + + /which-boxed-primitive@1.0.2: + resolution: + { + integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==, + } + dependencies: + is-bigint: 1.0.4 + is-boolean-object: 1.1.2 + is-number-object: 1.0.7 + is-string: 1.0.7 + is-symbol: 1.0.4 + dev: false + + /which-builtin-type@1.1.3: + resolution: + { + integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==, + } + engines: { node: ">= 0.4" } + dependencies: + function.prototype.name: 1.1.5 + has-tostringtag: 1.0.0 + is-async-function: 2.0.0 + is-date-object: 1.0.5 + is-finalizationregistry: 1.0.2 + is-generator-function: 1.0.10 + is-regex: 1.1.4 + is-weakref: 1.0.2 + isarray: 2.0.5 + which-boxed-primitive: 1.0.2 + which-collection: 1.0.1 + which-typed-array: 1.1.11 + dev: false + + /which-collection@1.0.1: + resolution: + { + integrity: sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==, + } + dependencies: + is-map: 2.0.2 + is-set: 2.0.2 + is-weakmap: 2.0.1 + is-weakset: 2.0.2 + dev: false + + /which-typed-array@1.1.11: + resolution: + { + integrity: sha512-qe9UWWpkeG5yzZ0tNYxDmd7vo58HDBc39mZ0xWWpolAGADdFOzkfamWLDxkOWcvHQKVmdTyQdLD4NOfjLWTKew==, + } + engines: { node: ">= 0.4" } + dependencies: + available-typed-arrays: 1.0.5 + call-bind: 1.0.2 + for-each: 0.3.3 + gopd: 1.0.1 + has-tostringtag: 1.0.0 + dev: false + + /which@2.0.2: + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + } + engines: { node: ">= 8" } + hasBin: true + dependencies: + isexe: 2.0.0 + + /wrappy@1.0.2: + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + } + + /yallist@4.0.0: + resolution: + { + integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, + } + dev: false + + /yaml@2.3.1: + resolution: + { + integrity: sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==, + } + engines: { node: ">= 14" } + dev: false + + /yocto-queue@0.1.0: + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, + } + engines: { node: ">=10" } + + /zod@3.21.4: + resolution: + { + integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==, + } + dev: false diff --git a/frontend/postcss.config.js b/frontend/postcss.config.js new file mode 100644 index 0000000..12a703d --- /dev/null +++ b/frontend/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/frontend/public/next.svg b/frontend/public/next.svg new file mode 100644 index 0000000..5bb00d4 --- /dev/null +++ b/frontend/public/next.svg @@ -0,0 +1 @@ + diff --git a/frontend/public/vercel.svg b/frontend/public/vercel.svg new file mode 100644 index 0000000..1aeda7d --- /dev/null +++ b/frontend/public/vercel.svg @@ -0,0 +1 @@ + diff --git a/frontend/src/app/columns.tsx b/frontend/src/app/columns.tsx new file mode 100644 index 0000000..ba06803 --- /dev/null +++ b/frontend/src/app/columns.tsx @@ -0,0 +1,94 @@ +"use client"; +import { Badge } from "@/components/ui/badge"; +import { Button } from "@/components/ui/button"; +import { Repo } from "@/lib/schemas"; +import { ColumnDef } from "@tanstack/react-table"; +import { ArrowUpDown, MoreHorizontal } from "lucide-react"; + +export const columns: ColumnDef[] = [ + { + accessorKey: "url", + header: function () { + return ( +
+ Project + + 🚀 + +
+ ); + }, + cell: function ({ row }) { + return ( +
+ ); + }, + }, + { + accessorKey: "description", + header: function () { + return ( +
+ Description + + ✍️ + +
+ ); + }, + cell: function ({ row }) { + return ( +

+ {row.getValue("description") || "No description"} +

+ ); + }, + }, + { + accessorKey: "stars", + header: function ({ column }) { + return ( + + ); + }, + cell: function ({ row }) { + return ( + + {row.getValue("stars").toLocaleString("en-US")} + + ); + }, + }, +]; diff --git a/frontend/src/app/data-table.tsx b/frontend/src/app/data-table.tsx new file mode 100644 index 0000000..60af73a --- /dev/null +++ b/frontend/src/app/data-table.tsx @@ -0,0 +1,118 @@ +"use client"; + +import { + ColumnDef, + SortingState, + flexRender, + getCoreRowModel, + getPaginationRowModel, + getSortedRowModel, + useReactTable, +} from "@tanstack/react-table"; + +import { + Table, + TableBody, + TableCell, + TableHead, + TableHeader, + TableRow, +} from "@/components/ui/table"; +import { Button } from "@/components/ui/button"; +import { useState } from "react"; + +interface DataTableProps { + columns: ColumnDef[]; + data: TData[]; +} + +export function DataTable({ + columns, + data, +}: DataTableProps) { + const [sorting, setSorting] = useState([]); + const table = useReactTable({ + data, + columns, + getCoreRowModel: getCoreRowModel(), + getPaginationRowModel: getPaginationRowModel(), + onSortingChange: setSorting, + getSortedRowModel: getSortedRowModel(), + state: { + sorting, + }, + }); + + return ( +
+
+ + + {table.getHeaderGroups().map((headerGroup) => ( + + {headerGroup.headers.map((header) => { + return ( + + {header.isPlaceholder + ? null + : flexRender( + header.column.columnDef.header, + header.getContext(), + )} + + ); + })} + + ))} + + + {table.getRowModel().rows?.length ? ( + table.getRowModel().rows.map((row) => ( + + {row.getVisibleCells().map((cell) => ( + + {flexRender( + cell.column.columnDef.cell, + cell.getContext(), + )} + + ))} + + )) + ) : ( + + + No results. + + + )} + +
+
+
+ + +
+
+ ); +} diff --git a/frontend/src/app/dependencies-search-provider.tsx b/frontend/src/app/dependencies-search-provider.tsx new file mode 100644 index 0000000..8a32e5d --- /dev/null +++ b/frontend/src/app/dependencies-search-provider.tsx @@ -0,0 +1,31 @@ +"use client"; +import { + createDependenciesOrama, + prepareDependenciesOramaIndex, + DependenciesOramaContext, +} from "@/lib/search"; +import { PropsWithChildren } from "react"; +import { SearchProvider } from "./search-provider"; +import { DependenciesIndex } from "@/lib/schemas"; + +export function DependenciesSearchProvider({ + children, + dependencies, +}: PropsWithChildren<{ + dependencies: DependenciesIndex["dependencies"]; +}>) { + const prepareOramaIndex = async () => { + const orama = await createDependenciesOrama(); + await prepareDependenciesOramaIndex(orama, dependencies); + return orama; + }; + + return ( + + {children} + + ); +} diff --git a/frontend/src/app/favicon.ico b/frontend/src/app/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..718d6fea4835ec2d246af9800eddb7ffb276240c GIT binary patch literal 25931 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 LrJugUA?W`A8`#=m literal 0 HcmV?d00001 diff --git a/frontend/src/app/globals.css b/frontend/src/app/globals.css new file mode 100644 index 0000000..f647461 --- /dev/null +++ b/frontend/src/app/globals.css @@ -0,0 +1,59 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 240 10% 3.9%; + --card: 0 0% 100%; + --card-foreground: 240 10% 3.9%; + --popover: 0 0% 100%; + --popover-foreground: 240 10% 3.9%; + --primary: 142.1 76.2% 36.3%; + --primary-foreground: 355.7 100% 97.3%; + --secondary: 240 4.8% 95.9%; + --secondary-foreground: 240 5.9% 10%; + --muted: 240 4.8% 95.9%; + --muted-foreground: 240 3.8% 46.1%; + --accent: 240 4.8% 95.9%; + --accent-foreground: 240 5.9% 10%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 0 0% 98%; + --border: 240 5.9% 90%; + --input: 240 5.9% 90%; + --ring: 142.1 76.2% 36.3%; + --radius: 0.5rem; + } + + .dark { + --background: 20 14.3% 4.1%; + --foreground: 0 0% 95%; + --card: 24 9.8% 10%; + --card-foreground: 0 0% 95%; + --popover: 0 0% 9%; + --popover-foreground: 0 0% 95%; + --primary: 142.1 70.6% 45.3%; + --primary-foreground: 144.9 80.4% 10%; + --secondary: 240 3.7% 15.9%; + --secondary-foreground: 0 0% 98%; + --muted: 0 0% 15%; + --muted-foreground: 240 5% 64.9%; + --accent: 12 6.5% 15.1%; + --accent-foreground: 0 0% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 0 85.7% 97.3%; + --border: 240 3.7% 15.9%; + --input: 240 3.7% 15.9%; + --ring: 142.4 71.8% 29.2%; + } +} + +@layer base { + * { + @apply border-border; + } + body { + @apply bg-background text-foreground; + } +} diff --git a/frontend/src/app/layout.tsx b/frontend/src/app/layout.tsx new file mode 100644 index 0000000..ebcf30b --- /dev/null +++ b/frontend/src/app/layout.tsx @@ -0,0 +1,147 @@ +import { cn } from "@/lib/utils"; +import "./globals.css"; +import type { Metadata } from "next"; +import { Inter } from "next/font/google"; +import { buttonVariants } from "@/components/ui/button"; +import { Icons } from "@/components/ui/icons"; +import Link from "next/link"; +import { Card, CardHeader, CardTitle, CardContent } from "@/components/ui/card"; +import { FolderGit, Rocket } from "lucide-react"; + +const inter = Inter({ subsets: ["latin"] }); + +export const metadata: Metadata = { + title: "Awesome FastAPI projects", + description: "An automatically generated list of awesome FastAPI projects", +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { + return ( + + +
+
+
+ +
+
+
+
+

+ Awesome FastAPI projects{" "} + + 🎉 + +

+ {children} +
+
+ +
+ + + ); +} +// TODO: improve pagination - sync with the URL, add a "go to page" input +// TODO: refactor the layout and the components diff --git a/frontend/src/app/page.tsx b/frontend/src/app/page.tsx new file mode 100644 index 0000000..c27b37c --- /dev/null +++ b/frontend/src/app/page.tsx @@ -0,0 +1,22 @@ +import { + loadDependenciesIndexServerOnly, + loadReposIndexServerOnly, +} from "@/lib/indexes"; +import { ReposTable } from "./repos-table"; +import { ReposSearchProvider } from "./repos-search-provider"; +import { DependenciesSearchProvider } from "./dependencies-search-provider"; + +export default async function Home() { + const { repos } = await loadReposIndexServerOnly(); + const { dependencies } = await loadDependenciesIndexServerOnly(); + // refactor repos and dependencies to be loaded from the context + return ( +
+ + + + + +
+ ); +} diff --git a/frontend/src/app/repos-search-provider.tsx b/frontend/src/app/repos-search-provider.tsx new file mode 100644 index 0000000..465b7a9 --- /dev/null +++ b/frontend/src/app/repos-search-provider.tsx @@ -0,0 +1,31 @@ +"use client"; +import { + createReposOrama, + prepareReposOramaIndex, + ReposOramaContext, +} from "@/lib/search"; +import { PropsWithChildren } from "react"; +import { SearchProvider } from "./search-provider"; +import { RepoIndex } from "@/lib/schemas"; + +export function ReposSearchProvider({ + children, + repos, +}: PropsWithChildren<{ + repos: RepoIndex["repos"]; +}>) { + const prepareOramaIndex = async () => { + const orama = await createReposOrama(); + await prepareReposOramaIndex(orama, repos); + return orama; + }; + + return ( + + {children} + + ); +} diff --git a/frontend/src/app/repos-table.tsx b/frontend/src/app/repos-table.tsx new file mode 100644 index 0000000..482552c --- /dev/null +++ b/frontend/src/app/repos-table.tsx @@ -0,0 +1,82 @@ +"use client"; +import { Repo, Dependency } from "@/lib/schemas"; +import { search } from "@orama/orama"; +import { SearchForm } from "./search-form"; +import { columns } from "./columns"; +import { DataTable } from "./data-table"; +import { useReposOrama } from "@/lib/search"; +import { useState } from "react"; +import { useQuerySearchFormData } from "@/lib/hooks"; +import React from "react"; + +export function ReposTable({ + repos, + dependencies, +}: { + repos: Repo[]; + dependencies: Dependency[]; +}) { + const reposOrama = useReposOrama(); + const [searchedRepos, setSearchedRepos] = useState(repos); + const { searchQueryFromQueryParam, dependenciesQueryFromQueryParam } = + useQuerySearchFormData(dependencies); + + const onSearchSubmit = React.useCallback( + async ({ + search: description, + dependencies, + }: { + search: string; + dependencies: Dependency[]; + }) => { + if (!reposOrama.isIndexed || !reposOrama.orama) { + throw new Error("Repos Orama is not initialized"); + } + const results = await search(reposOrama.orama, { + term: description, + properties: ["description"], + limit: repos.length, + }); + const searchedRepos = results.hits.map((hit) => hit.document as Repo); + // Workaround because Orama doesn't support filtering by properties of objects in arrays + const filteredRepos = searchedRepos.filter((repo) => { + return dependencies.every((dependency) => { + return repo.dependencies.some( + (repoDependency) => repoDependency.id === dependency.id, + ); + }); + }); + setSearchedRepos(filteredRepos); + }, + [repos, reposOrama.isIndexed, reposOrama.orama], + ); + + const _ref = React.useCallback( + (node: HTMLDivElement | null) => { + if (node !== null) { + if (reposOrama.isIndexed && reposOrama.orama) { + onSearchSubmit({ + search: searchQueryFromQueryParam(), + dependencies: dependenciesQueryFromQueryParam(), + }); + } + } + }, + [ + dependenciesQueryFromQueryParam, + onSearchSubmit, + reposOrama.isIndexed, + reposOrama.orama, + searchQueryFromQueryParam, + ], + ); + + return ( + <> +
+ +
+ + + ); +} diff --git a/frontend/src/app/search-form.tsx b/frontend/src/app/search-form.tsx new file mode 100644 index 0000000..19849e5 --- /dev/null +++ b/frontend/src/app/search-form.tsx @@ -0,0 +1,125 @@ +"use client"; +import { zodResolver } from "@hookform/resolvers/zod"; +import { useForm } from "react-hook-form"; +import * as z from "zod"; + +import { Button } from "@/components/ui/button"; +import { + Form, + FormControl, + FormDescription, + FormField, + FormItem, + FormLabel, + FormMessage, +} from "@/components/ui/form"; +import { Input } from "@/components/ui/input"; +import { MultiSelect } from "@/components/ui/multiselect"; +import { Dependency, dependencySchema } from "@/lib/schemas"; +import { useSearchParams, useRouter, usePathname } from "next/navigation"; +import React from "react"; +import { useQuerySearchFormData } from "@/lib/hooks"; + +const FormSchema = z.object({ + search: z + .string() + .min(0) + .max(256, { message: "Search must be less than 256 characters" }) + .default(""), + dependencies: z.array(dependencySchema).default(() => []), +}); + +export interface SearchFormProps { + onSubmit: (data: z.infer) => void; + dependencies: Dependency[]; +} + +export function SearchForm({ onSubmit, dependencies }: SearchFormProps) { + const router = useRouter(); + const pathname = usePathname(); + const searchParams = useSearchParams(); + + const { + searchQueryFromQueryParam, + searchQueryToQueryParam, + dependenciesQueryFromQueryParam, + dependenciesQueryToQueryParam, + } = useQuerySearchFormData(dependencies); + + const form = useForm>({ + resolver: zodResolver(FormSchema), + defaultValues: { + search: searchQueryFromQueryParam(), + dependencies: dependenciesQueryFromQueryParam(), + }, + }); + + const createQueryString = React.useCallback( + ({ + searchQueryValue, + dependenciesQueryValue, + }: { + searchQueryValue: string; + dependenciesQueryValue: Dependency[]; + }) => { + const params = new URLSearchParams(searchParams); + params.set("search", searchQueryToQueryParam(searchQueryValue)); + params.set( + "dependencies", + dependenciesQueryToQueryParam(dependenciesQueryValue), + ); + + return params.toString(); + }, + [dependenciesQueryToQueryParam, searchParams, searchQueryToQueryParam], + ); + + const onSubmitWrapper = (data: z.infer) => { + onSubmit(data); + // update URL search params + const queryString = createQueryString({ + searchQueryValue: data.search, + dependenciesQueryValue: data.dependencies, + }); + router.replace(`${pathname}?${queryString}`); + }; + return ( +
+ + ( + + Search for a repository + + + + + The search is performed on the repository description. + + + + )} + /> + ( + + Dependencies + + + + + Filter by dependencies used in the repository. + + + + )} + /> + + + + ); +} diff --git a/frontend/src/app/search-provider.tsx b/frontend/src/app/search-provider.tsx new file mode 100644 index 0000000..e89a68d --- /dev/null +++ b/frontend/src/app/search-provider.tsx @@ -0,0 +1,38 @@ +"use client"; +import { IOramaContext } from "@/lib/search"; +import { Context, PropsWithChildren, useEffect, useState } from "react"; + +import { Orama, ProvidedTypes as OramaProvidedTypes } from "@orama/orama"; + +export type SearchProviderProps< + OramaParameters extends Partial = any, +> = PropsWithChildren<{ + OramaContext: Context>; + createIndex: () => Promise>; +}>; + +export function SearchProvider< + OramaParameters extends Partial, +>({ + children, + OramaContext, + createIndex, +}: SearchProviderProps) { + const [orama, setOrama] = useState | null>(null); + const [isIndexed, setIsIndexed] = useState(false); + + useEffect(() => { + async function initializeOrama() { + setIsIndexed(false); + await createIndex().then(setOrama); + setIsIndexed(true); + } + initializeOrama(); + }, [createIndex]); + + return ( + + {children} + + ); +} diff --git a/frontend/src/components/ui/badge.tsx b/frontend/src/components/ui/badge.tsx new file mode 100644 index 0000000..d3d5d60 --- /dev/null +++ b/frontend/src/components/ui/badge.tsx @@ -0,0 +1,36 @@ +import * as React from "react"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const badgeVariants = cva( + "inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2", + { + variants: { + variant: { + default: + "border-transparent bg-primary text-primary-foreground hover:bg-primary/80", + secondary: + "border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80", + destructive: + "border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80", + outline: "text-foreground", + }, + }, + defaultVariants: { + variant: "default", + }, + }, +); + +export interface BadgeProps + extends React.HTMLAttributes, + VariantProps {} + +function Badge({ className, variant, ...props }: BadgeProps) { + return ( +
+ ); +} + +export { Badge, badgeVariants }; diff --git a/frontend/src/components/ui/button.tsx b/frontend/src/components/ui/button.tsx new file mode 100644 index 0000000..29123a7 --- /dev/null +++ b/frontend/src/components/ui/button.tsx @@ -0,0 +1,56 @@ +import * as React from "react"; +import { Slot } from "@radix-ui/react-slot"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const buttonVariants = cva( + "inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50", + { + variants: { + variant: { + default: "bg-primary text-primary-foreground hover:bg-primary/90", + destructive: + "bg-destructive text-destructive-foreground hover:bg-destructive/90", + outline: + "border border-input bg-background hover:bg-accent hover:text-accent-foreground", + secondary: + "bg-secondary text-secondary-foreground hover:bg-secondary/80", + ghost: "hover:bg-accent hover:text-accent-foreground", + link: "text-primary underline-offset-4 hover:underline", + }, + size: { + default: "h-10 px-4 py-2", + sm: "h-9 rounded-md px-3", + lg: "h-11 rounded-md px-8", + icon: "h-10 w-10", + }, + }, + defaultVariants: { + variant: "default", + size: "default", + }, + }, +); + +export interface ButtonProps + extends React.ButtonHTMLAttributes, + VariantProps { + asChild?: boolean; +} + +const Button = React.forwardRef( + ({ className, variant, size, asChild = false, ...props }, ref) => { + const Comp = asChild ? Slot : "button"; + return ( + + ); + }, +); +Button.displayName = "Button"; + +export { Button, buttonVariants }; diff --git a/frontend/src/components/ui/card.tsx b/frontend/src/components/ui/card.tsx new file mode 100644 index 0000000..dc3b01d --- /dev/null +++ b/frontend/src/components/ui/card.tsx @@ -0,0 +1,86 @@ +import * as React from "react"; + +import { cn } from "@/lib/utils"; + +const Card = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +Card.displayName = "Card"; + +const CardHeader = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +CardHeader.displayName = "CardHeader"; + +const CardTitle = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)); +CardTitle.displayName = "CardTitle"; + +const CardDescription = React.forwardRef< + HTMLParagraphElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)); +CardDescription.displayName = "CardDescription"; + +const CardContent = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +

+)); +CardContent.displayName = "CardContent"; + +const CardFooter = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => ( +
+)); +CardFooter.displayName = "CardFooter"; + +export { + Card, + CardHeader, + CardFooter, + CardTitle, + CardDescription, + CardContent, +}; diff --git a/frontend/src/components/ui/command.tsx b/frontend/src/components/ui/command.tsx new file mode 100644 index 0000000..ee27a1a --- /dev/null +++ b/frontend/src/components/ui/command.tsx @@ -0,0 +1,155 @@ +"use client"; + +import * as React from "react"; +import { DialogProps } from "@radix-ui/react-dialog"; +import { Command as CommandPrimitive } from "cmdk"; +import { Search } from "lucide-react"; + +import { cn } from "@/lib/utils"; +import { Dialog, DialogContent } from "@/components/ui/dialog"; + +const Command = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +Command.displayName = CommandPrimitive.displayName; + +interface CommandDialogProps extends DialogProps {} + +const CommandDialog = ({ children, ...props }: CommandDialogProps) => { + return ( + + + + {children} + + + + ); +}; + +const CommandInput = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( +
+ + +
+)); + +CommandInput.displayName = CommandPrimitive.Input.displayName; + +const CommandList = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); + +CommandList.displayName = CommandPrimitive.List.displayName; + +const CommandEmpty = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>((props, ref) => ( + +)); + +CommandEmpty.displayName = CommandPrimitive.Empty.displayName; + +const CommandGroup = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); + +CommandGroup.displayName = CommandPrimitive.Group.displayName; + +const CommandSeparator = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +CommandSeparator.displayName = CommandPrimitive.Separator.displayName; + +const CommandItem = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); + +CommandItem.displayName = CommandPrimitive.Item.displayName; + +const CommandShortcut = ({ + className, + ...props +}: React.HTMLAttributes) => { + return ( + + ); +}; +CommandShortcut.displayName = "CommandShortcut"; + +export { + Command, + CommandDialog, + CommandInput, + CommandList, + CommandEmpty, + CommandGroup, + CommandItem, + CommandShortcut, + CommandSeparator, +}; diff --git a/frontend/src/components/ui/dialog.tsx b/frontend/src/components/ui/dialog.tsx new file mode 100644 index 0000000..aca1068 --- /dev/null +++ b/frontend/src/components/ui/dialog.tsx @@ -0,0 +1,123 @@ +"use client"; + +import * as React from "react"; +import * as DialogPrimitive from "@radix-ui/react-dialog"; +import { X } from "lucide-react"; + +import { cn } from "@/lib/utils"; + +const Dialog = DialogPrimitive.Root; + +const DialogTrigger = DialogPrimitive.Trigger; + +const DialogPortal = ({ + className, + ...props +}: DialogPrimitive.DialogPortalProps) => ( + +); +DialogPortal.displayName = DialogPrimitive.Portal.displayName; + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName; + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)); +DialogContent.displayName = DialogPrimitive.Content.displayName; + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+); +DialogHeader.displayName = "DialogHeader"; + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+); +DialogFooter.displayName = "DialogFooter"; + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogTitle.displayName = DialogPrimitive.Title.displayName; + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)); +DialogDescription.displayName = DialogPrimitive.Description.displayName; + +export { + Dialog, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +}; diff --git a/frontend/src/components/ui/form.tsx b/frontend/src/components/ui/form.tsx new file mode 100644 index 0000000..497718a --- /dev/null +++ b/frontend/src/components/ui/form.tsx @@ -0,0 +1,177 @@ +import * as React from "react"; +import * as LabelPrimitive from "@radix-ui/react-label"; +import { Slot } from "@radix-ui/react-slot"; +import { + Controller, + ControllerProps, + FieldPath, + FieldValues, + FormProvider, + useFormContext, +} from "react-hook-form"; + +import { cn } from "@/lib/utils"; +import { Label } from "@/components/ui/label"; + +const Form = FormProvider; + +type FormFieldContextValue< + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath, +> = { + name: TName; +}; + +const FormFieldContext = React.createContext( + {} as FormFieldContextValue, +); + +const FormField = < + TFieldValues extends FieldValues = FieldValues, + TName extends FieldPath = FieldPath, +>({ + ...props +}: ControllerProps) => { + return ( + + + + ); +}; + +const useFormField = () => { + const fieldContext = React.useContext(FormFieldContext); + const itemContext = React.useContext(FormItemContext); + const { getFieldState, formState } = useFormContext(); + + const fieldState = getFieldState(fieldContext.name, formState); + + if (!fieldContext) { + throw new Error("useFormField should be used within "); + } + + const { id } = itemContext; + + return { + id, + name: fieldContext.name, + formItemId: `${id}-form-item`, + formDescriptionId: `${id}-form-item-description`, + formMessageId: `${id}-form-item-message`, + ...fieldState, + }; +}; + +type FormItemContextValue = { + id: string; +}; + +const FormItemContext = React.createContext( + {} as FormItemContextValue, +); + +const FormItem = React.forwardRef< + HTMLDivElement, + React.HTMLAttributes +>(({ className, ...props }, ref) => { + const id = React.useId(); + + return ( + +
+ + ); +}); +FormItem.displayName = "FormItem"; + +const FormLabel = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => { + const { error, formItemId } = useFormField(); + + return ( +